当前位置:文档之家› 超声水表Modbusrtu通信协议V1.1

超声水表Modbusrtu通信协议V1.1

超声水表MODBUS-RTU通信协议V1.1

一.RTU模式

1.物理层

传输接口:RS-485

通信波特率:9600bps

2.RTU模式中每个字节的格式为

编码系统:8位二进制

每个8位域包含两个十六进制字符(0-9、A-F)

传输模式:异步主从半双工方式。

每个字节的位:1个起始位

8个数据位

奇偶不校验

1个停止位

3.帧校验域:循环冗余校验(CRC),对全部报文内容执行校验。

注:数据包的发送序列总是相同的,地址—功能码—数据—检验码,每个数据包必须作为一个连续的位流传输。

4.1 地址(Address)域

地址域在数据包的开始部分,由一个8bit数据组成,这个数据表明了从站的地址,而每一个从站的地址必须是唯一的,有效地址范围为:1~247。主站发送数据包后,只有与主站查询地址相同的从站才会响应。

4.2 功能(Function)域

功能域代码指定被寻址的从站执行何种功能,表1列出了所有的功能码。

数据域是由两个十六进制数集合构成的,范围00...FF。

从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代码所定义的所为。这包括了象不连续的寄存器地址,要处理项的数目,域中实际数据字节数。

例如,如果主设备需要从设备读取一组保持寄存器(功能代码03),数据域指定了起始寄存器以及要读的寄存器数量。

如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。

4.4 错误校验(CRC)域

错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。

CRC值有发送设备计算出来,然后附加到数据包上传送,接收设备在接收数据时重新计算CRC 值,然后与接收到的校验码(CRC)域中的值进行比较,如果这两个数据不相等,则说明数据在传输过程中发生了错误。

CRC码计算时,首先将一个16bits寄存器预置为全1,然后连续把数据包中的8bits字节与该寄存器的当前值进行运算,仅仅每个字节的8位数据进行计算,起始位和停止位与可能使用的奇偶校验位都不影响CRC。

生成CRC时,每个8bits字节与寄存器中的内容进行异或运算,结果向低位移位,高位则补0,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值进行一次异或运算,如果是0,则不进行任何处理。

上述处理重复进行,直到执行完8位移位操作为止,当最后移位移完后,下一个8bits字节与该寄存器进行异或,同样进行另一个8bits字节进行移位异或操作,当数据包中所有字节都处理了,生成的最终值就是CRC值。

CRC码生成流程:

1、将一个16bits寄存器(称之为CRC寄存器)置为FFFFH(全1);

2、把数据包中的第一个字节与CRC寄存器低字节相异或结果存回到CRC寄存器;

3、将CRC寄存器向右移一位,最高位(MSB)补以“0”,最低位(LSB)移出并检测;

4、如果移出位为“0”:重复地3步(下一次移位)

如果移出位为“1”:将CRC寄存器与一个预设的固定值(A001H)进行异或运算;

5、重复第3、4步直到8次移位结束,这样就处理完成8bits字节;

6、重复第2步至第5步处理下一个8bits字节,直到所有字节全部处理结束;

7、最终的CRC寄存器中的值就是CRC值。

二.寄存器地址及定义

三.功能代码

1.03读保持寄存器

说明:读从机保持寄存器的数据。

从站响应帧:

示例(假设地址为01)

读水表瞬时流量、总量与状态寄存器数据

主站请求帧:01 03 00 02 00 0B A5 CD

地址功能码起始地址数量CRC

从站响应帧:

01 03 16 ;地址、功能码、字节计数

00 00 00 00 ;体积(瞬时)流量:0.0 m3/h

3F F3 C0 CA 2A 5B 1D 5D ;正向总量:1.2345 m3

3F F3 C1 C5 B8 52 65 5D ;反向总量:1.2348 m3

00 02 ;仪表状态字:0002 (状态:空管)

01 CF ;CRC

读所有寄存器数据

主站请求帧:01 03 00 00 00 12 C5 C7

地址功能码起始地址数量CRC

从站响应帧:

01 03 24 ;地址、功能码、字节计数

13 08 80 12 ;仪表编号:13088012

00 00 00 00 ;体积(瞬时)流量:0.0 m3/h

3F F3 C0 CA 2A 5B 1D 5D ;正向总量:1.2345678 m3

3F F3 C1 C5 B8 52 65 5D ;反向总量:1.2348077 m3

00 02 ;仪表状态字:0002 (状态:空管)

07 DD ;日期:2013年

0A 12 ;日期:10月18日

04 00 ;时间:4时0分

0A 00 ;时间:10秒

05 A0 ;GPRS通信间隔时间:1440小时

42 19 ;CRC

2.预置单个寄存器值(功能码06H)

查询

响应

3.预置多个寄存器值(功能码10H)

四.备注

本通信协议只提供03、06、10功能码。

当主机发送的数据帧出错时,从机不应答。出错的原因包含以下几种:

1 地址不对;

2 CRC校验出错;

3 数据长度出错;

4 操作的数据地址超出;

5 数据帧不符合要求的。

相关主题