MODBUS水表通讯协议
(RTU模式)
一、通讯设置
1. 波特率:9600
2. 校验:无校验
3. 数据位:8
4. 停止位:1
二、modbus协议
1、读操作(03H)
地址功能码第一个寄存
器高位地址
第一个寄存
器低位地址
寄存器的数
量的高位
寄存器的数
量的低位
CRC校
验低位
CRC校
验高位
XX 03 XX XX XX XX XX XX 2、读操作回复(03H)
地址功能码字节数数据高字节……数据低字节CRC校
验低位
CRC校
验高位
XX 03 XX XX ……XX XX XX 3、写操作(06H)
地址功能码第一个寄存
器高位地址
第一个寄存
器低位地址
数据高字节数据低字节
CRC校
验低位
CRC校
验高位
XX 06 XX XX XX XX XX XX 4、写操作回复(06H)
地址功能码第一个寄存
器高位地址
第一个寄存
器低位地址
数据高字节数据低字节
CRC校
验低位
CRC校
验高位
XX 06 XX XX XX XX XX XX 5、写操作(10H)
地址功
能
码
第一个
寄存器
高位地
第一个寄
存器低位
地址
寄存器
的数量
的高位
寄存器
的数量
的低位
字
节
数
数据
高字
节
…
数据
低字
节
CRC
校验
低位
CRC
校验
高位
址
XX 10 XX XX XX XX XX XX …XX XX XX 6、写操作回复(10H)
地址功能码第一个寄存
器高位地址
第一个寄存
器低位地址
寄存器的数
量的高位
寄存器的数
量的低位
CRC校
验低位
CRC校
验高位
XX 10 XX XX XX XX XX XX 7、异常码
地址功能码异常码CRC校验低位CRC校验高位
XX
XX
(注3)
01H 非法功能
02H 非法数据地址
03H 非法数据值
XX XX
注3 异常码是正常功能码的最高位加1,如读操作03H的异常功能码为83H,写单个字06H的异常功能码为86H,写多个字的10H的异常功能码为90H。
8、寄存器地址
名称寄存器地址字节数操作备注
设备地址0200H 2 读00H为单只读地址
累计流量0202H 4 读/写注1
表具状态0206H 2 读注2
倍率值0208H 2 读/写见注1中的解释
注1:
累计流量为4个字节的十六进制数,高位在前,低位在后,
累计流量采用无符号的32 位数据(2个字)
如:实际数据为123456,则高位字保存0x0001,低位字保存0xE240。
单位:根据您写入的倍率值计算,本水表不参与计算,只记录实际脉冲值。
比如,您写入的倍率值为分别表示为00H代表1个脉冲只为1立方、01H代表0.1立方、02H代表0.01立方,那么数据123456分别为123456立方;12345.6立方;1234.56立方,由您在上位机程序中进行计算和处理。
注2:
表具状态位
7 6 5 4 3 2 1 0
无意义无意义无意义无意义无意义0为现在电
无意义无意义
池不缺电
1为现在
电池缺电
三、举例说明:
假设表地址为01(表地址范围1-247)
写表底数123456(16进制: 01E240H)
01 10 02 02 00 02 04 00 01 E2 40 73 86 13个字节
写表底数返回: 01 10 02 02 00 02 E1 B0 8个字节
异常时返回: 01 90 03 0C 01 5个字节(非法数据值)
----------------------------------------------------------------------------------------------
读表累计: 01 03 02 02 00 02 64 73 8个字节
读累计返回: 01 03 04 00 01 E2 40 E2 A3 9个字节
异常时返回: 01 83 03 01 31 5个字节
-----------------------------------------------------------------------------------------------
读表地址: 00 03 02 00 00 01 84 63 8个字节
返回: 01 03 02 00 01 79 84 7个字节
注意!读表地址时,总线上只能连接1只表。
----------------------------------------------------------------------------------------------
写倍率:01 06 02 07 00 10 38 7F 8个字节 (设倍率值为10H)