超声波明渠流量计MODBUS通讯协议
V1.4版
MODBUS—RTU方式通讯协议
- 硬件采用RS—485,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。
- 数据帧 10位,1个起始位,8个数据位,1个停止位,无校验。
波特率:1200 2400 4800 9600(默认为9600)
- 功能码03H:读寄存器值
主机发送:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ADR | 03H | 起始寄存器高字节 | 起始寄存器低字节 | 寄存器数量高字节 | 寄存器数量低字节 | CRC码低字节 | CRC码高字节 |
第1字节 ADR:从机地址码(=001~254)
第2字节 03H:读寄存器值功能码
第3、4字节: 要读的寄存器开始地址
第5、6字节: 要读的寄存器数量
第7、8字节: 从字节1到6的CRC16校验
当从机接收正确时,从机回送:
1 | 2 | 3 | 4、5 | 6、7 | M-1、M | M+1 | M+2 | |
ADR | 03H | 字节总数 | 寄存器数据1 | 寄存器数据2 | 。。。 | 寄存器数据M | CRC码低字节 | CRC码高字节 |
第1字节 ADR:从机地址码(=001~254)
第2字节 03H: 返回读功能码
第3字节 : 从4到M(包括4及M)的字节总数
第4到M字节: 寄存器数据
第M+1、M+2字节:从字节1到M的CRC16校验
当从机接收错误时,从机回送:
1 | 2 | 3 | 4 | 5 |
ADR | 83H | 信息码 | CRC码低字节 | CRC码高字节 |
第1字节 ADR:从机地址码(=001~254)
第1字节 83H: 读寄存器值出错
第3字节 信息码:见信息码表
第4、5字节:从字节1到3的CRC16校验
- 功能码06H:写单个寄存器值
主机发送:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ADR | 06 | 寄存器地址高字节 | 寄存器地址低字节 | 数据高字节 | 数据低字节 | CRC码低字节 | CRC码高字节 |
当从机接收正确时,从机回送:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ADR | 06 | 寄存器高字节 | 寄存器低字节 | 数据高字节 | 数据低字节 | CRC码低字节 | CRC码高字节 |
当从机接收错误时,从机回送:
1 | 2 | 3 | 4 | 5 |
ADR | 86H | 错误信息码 | CRC码低字节 | CRC码高字节 |
第1字节 ADR:从机地址码(=001~254)
第1字节 86H: 写寄存器值出错功能码
第3字节 信息码:见信息码表
第4、5字节:从字节1到3的CRC16校验
- 功能码10H:连续写多个寄存器值
主机发送:
1 | 2 | 3 | 4 | 5 | 6 | 7 |
ADR | 10H | 起始寄存器地址高字节 | 起始寄存器地址低字节 | 寄存器数量高字节 | 寄存器数量低字节 | 数据字节总数 |
8、9 | 10、11 | N、N+1 | N+2 | N+3 |
寄存器数据1 | 寄存器数据2 | 寄存器数据M | CRC码低字节 | CRC码高字节 |
当从机接收正确时,从机回送:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ADR | 10H | 起始寄存器地址高字节 | 起始寄存器地址低字节 | 寄存器数量高字节 | 寄存器数量低字节 | CRC码低字节 | CRC码高字节 |
当从机接收错误时,从机回送
1 | 2 | 3 | 4 | 5 |
ADR | 90H | 错误信息码 | CRC码低字节 | CRC码高字节 |
第1字节 ADR:从机地址码(=001~254)
第1字节 90H: 写寄存器值出错功能码
第3字节 信息码:见信息码表
第4、5字节:从字节1到3的CRC16校验
- 寄存器定义表:(注:寄存器地址编码为16进制)
寄 存
器 地 址 |
内容说明 | 只
读 |
寄存
器地 址 |
内容说明 | 只
读 |
0000 | 距离/物位瞬时值(4字节浮点数高2字节) | √ | 0001 | 距离/物位瞬时值(4字节浮点数低2字节) | √ |
0002 | 瞬时流量值(4字节浮点数高2字节) | √ | 0003 | 瞬时流量值(4字节浮点数低2字节) | √ |
0004 | 累积流量值整数部分(4字节长整型高2字节) | √ | 0005 | 累积流量值整数部分(4字节长整型低2字节) | √ |
0006 | 累积流量值小数部分(4字节浮点数高2字节) | √ | 0007 | 累积流量值小数部分(4字节浮点数低2字节) | √ |
0008 | 模拟输出瞬时值(4字节浮点数高2字节) | √ | 0009 | 模拟输出瞬时值(4字节浮点数低2字节) | √ |
000A | 温度瞬时值(4字节浮点数高2字节) | √ | 000B | 温度瞬时值(4字节浮点数高2字节) | √ |
000C | 保留 | 000D | 保留 | ||
000E
|
保留 | 000F | 保留 | ||
0012 | 保留 | 0013 | 保留 | ||
0014 | 保留 | 0015 | 保留 | ||
0016 | 保留 | 0017 | 保留 | ||
0018 | 保留 | 0019 | 保留 | ||
001A | 保留 | 001B | 保留 | ||
001C | 保留 | 001D | 保留 | ||
001E | 保留 | 001F | 保留 | ||
0020 | 保留 | 0021 | 保留 | ||
0022 | 报警1值(4字节浮点数高2字节) | 0023 | 报警1值(4字节浮点数低2字节) | ||
0024 | 报警1回差值(4字节浮点数高2字节) | 0025 | 报警1回差值(4字节浮点数低2字节) | ||
0026 | 报警2值(4字节浮点数高2字节) | 0027 | 报警2值(4字节浮点数低2字节) | ||
0028 | 报警2回差值(4字节浮点数高2字节) | 0029 | 报警2回差值(4字节浮点数低2字节) | ||
002A | 报警3值(4字节浮点数高2字节) | 002B | 报警3值(4字节浮点数低2字节) | ||
002C | 报警3回差值(4字节浮点数高2字节) | 002D | 报警3回差值(4字节浮点数低2字节) | ||
002E | 报警4值(4字节浮点数高2字节) | 002F | 报警4值(4字节浮点数低2字节) | ||
0030 | 报警4回差值(4字节浮点数高2字节) | 0031 | 报警4回差值(4字节浮点数低2字节) | ||
0032 | 参考零点(4字节浮点数高2字节) | 0033 | 参考零点(4字节浮点数低2字节) | ||
0034 | 量程高点(4字节浮点数高2字节) | 0035 | 量程高点(4字节浮点数低2字节) | ||
0036 | 量程低点(4字节浮点数高2字节) | 0037 | 量程低点(4字节浮点数低2字节) | ||
0038 | 设定电流(4字节浮点数高2字节) | 0039 | 设定电流(4字节浮点数低2字节) | ||
003A | 盲区设置(4字节浮点数高2字节) | 003B | 盲区设置(4字节浮点数低2字节) | ||
003C | 修工系数c(4字节浮点数高2字节) | 003D | 修工系数c(4字节浮点数低2字节) | ||
003E | 指数n(4字节浮点数高2字节) | 003F | 指数n(4字节浮点数低2字节) | ||
0040 | 20mA瞬时流量值(4字节浮点数高2字节) | 0041 | 20mA瞬时流量值(4字节浮点数低2字节) | ||
0042 | 4mA瞬时流量值(4字节浮点数高2字节) | 0043 | 4mA瞬时流量值(4字节浮点数低2字节) | ||
0044 | 累加水量整数部分(4字节长整型高2字节) | 0045 | 累加水量整数部分(4字节长整型低2字节) | ||
0046 | 累加水量小数部分(4字节浮点数高2字节) | 0047 | 累加水量小数部分(4字节浮点数低2字节) | ||
0048 | 堰口宽B(4字节浮点数高2字节) | 0049 | 堰口宽B(4字节浮点数低2字节) | ||
004A | 上游渠道宽b(4字节浮点数高2字节) | 004B | 上游渠道宽b(4字节浮点数低2字节) | ||
004C | 堰壁高p(4字节浮点数高2字节) | 004D | 堰壁高p(4字节浮点数低2字节) | ||
004E | 堰槛宽(4字节浮点数高2字节) | 004F | 堰槛宽(4字节浮点数低2字节) | ||
0050 | 保留 | 0051 | 保留 | ||
0052 | 保留 | 0053 | 保留 | ||
0054 | 保留 | 0055 | 保留 | ||
0056 | 保留 | 0057 | 保留 | ||
0058 | 保留 | 0059 | 保留 | ||
005A | 保留 | 005B | 保留 | ||
005C | 报警1模式 报警2模式 | 005D | 报警3模式 报警4模式 | ||
005E | 测量模式 单位选择 | 005F | 算法选择 安全物位 | ||
0060 | 探头类型 响应速度 | 0061 | 水量清零 流量单位 | ||
0062 | 界面切换 电流输出 | 0063 | 直角三角堰 矩形堰 | ||
0064 | 梯形堰 巴歇尔槽 | 0065 | 出厂复位 系统复位 | ||
0066 | 波特率 工作方式 | 0067 | 保留 | ||
0068 | 保留 | 0069 | 保留 | ||
006A | 保留 | 006B | 表型字 仪表地址 |
备注:
- 4字节浮点数:符合IEEE—754标准的单精度浮点数
字节地址 | +3 | +2 | +1 | +0 |
浮点数内容 | SEEEEEEE | EMMMMMMM | MMMMMMMM | MMMMMMMM |
S符号位,“1”表示负,“0”表示正。
E为阶码
M为尾数的小数点部分
例如:浮点数 124.75 = 42F94000H,在内存中的存放格式为:
字节地址 | +3 | +2 | +1 | +0 |
浮点数内容 | 0 1000010 | 1 1111001 | 01000000 | 00000000 |
8字节双精度(double型):符合IEEE—754标准
例如:浮点数 38414.4 =40E2C1CCCCCCCCCC H,在内存中的存放格式为:
字节地址 | +7 | +6 | +5 | +4 | +3 | +2 | +1 | +0 |
浮点数内容 | SEEEEEEE | EEEEMMMM | MMMMMMMM | MMMMMMMM | MMMMMMMM | MMMMMMMM | MMMMMMMM | MMMMMMMM |
②
测量模式:0 — 测量距离; 1 — 测量物位
安全物位:=0,保持; =55,最小值;=AA,最大值;=A5,设定值
报警1、2、3、4模式:0 — 关闭;1— 地位报警; 2 — 高位报警
单位选择:= 0,mm;=1,cm;=2,m
算法选择:0—特殊环境一;1—特殊环境二;2—特殊环境三;3—特殊环境四;4—特殊环境五;
5—特殊环境六;6—特殊环境七
探头类型:0—选择1;1—选择2;2—选择3;3—选择4;4—选择5;5—选择6;6—选择7;
7—选择8;8—选择9;
响应速度:0—慢速;1—中速;2—快速;
水量清零: 0—否;1—是;
流量单位:=0,t/h(吨/小时); =1,l/s(升/秒); =2,t/s(吨/秒);
界面切换:0—否;1—是;
电流输出:=0,流量输出;=1液位输出
直角三角堰:=0 ,不选用;=1,选用直角三角堰
矩形堰:=0 不选用;=1, 0.25米;=2,0.50米;=3,0.75米;=4,1.00米;=5,自定义
梯形堰:=0不选用,=1选用
巴歇尔槽:=0不选用,=1选用
出厂复位: 0—否;1—是;
系统复位: 0—否;1—是;
波特率: 0—2400;1—4800;2—9600;3—19200
工作方式:0—自动报告模式;1—查询模式
③
寄存器分区域执行读写操作
第一区域 0010 — 001D 只读
第二区域 0022 — 0033 读写
第三区域 0034 — 004B 读写
同一区域内,可单次读(或写)某一参数,也可以批读(或写)本区域内所有参数,不允许跨区域进行读写操作。
④ 所有保留寄存器目前无定义,保留将来升级兼容。
- 信息码表
信息码 | 表示意义 |
01H | 非法的功能码 |
02H | 非法的数据地址 |
03H | 非法的数据值 |
04H | CRC16校验错 |
05H | 接收正确 |
06H | 接收错误 |
07H | 参数错误 |
- 串口数据帧采集通讯协议范例
主机发送数据
站号 | 功能码 | 起始地址 | 读取点数 | 校验码 | 意义 |
01 | 03 | 0000 | 0002 | C40B | 读取水位值,单精度浮点数 |
01 | 03 | 0002 | 0002 | 65CB | 读取瞬时流量值,单精度浮点数 |
01 | 03 | 0004 | 0002 | 85CA | 读取累加流量值整数部分,长整型 |
01 | 03 | 0006 | 0002 | 240A | 读取累加流量值小数部分,单精度浮点数 |
9、PLC地址设置说明(以西门子S7-200 PLC为例子说明)
PLC设置时如果没有功能码设置项时,使用能码03 对应modbus RTU 寄存器基地址40001,
所以PLC设置寄存器地址时应在原地址上加1.
例:
超声波明渠流量计MODBUS寄存器地址为2(0x0002),MODBUS功能码为3时,PLC寄存器地址为40003。
PLC读取地址表
功能码:03
说明:读取保持寄存器的值
地址 | 描述 | 说明 |
40001 | 距离/物位瞬时值 | 单精度浮点数 |
40003 | 瞬时流量值 | 单精度浮点数 |
40005 | 累积流量值整数部分 | 长整型 |
40007 | 累积流量值小数部分 | 单精度浮点数 |
40009 | 模拟输出瞬时值 | 单精度浮点数 |
40011 | 温度瞬时值 | 单精度浮点数 |
评论