字节序号 内容 说明 1 从机地址码(=1~254) 2 03H 读寄存器值功能码 3 要读的寄存器开始地址高字节 4 要读的寄存器开始地址低字节 5 要读的寄存器数量的高字节 6 要读的寄存器数量的低字节 7 从字节 1 到 6 的 CRC16 校验和的低字节 8 从字节 1 到 6 的 CRC16 校验和的高字节
智能变送器标准 ModBus-RTU 通讯协议(Ver 1.0)
1、ModBus-RTU 通讯协议概要
1) 本协议适用xxx电子 ZPM/ZLM/ZTM 系列采用 RS485/RS232 物理接口的智能型变送器;
2) 变送器(从机)工作在 ModBus-RTU 从机模式;
3) 默认通信速率为 9600bps;
4) 字帧格式:1 起始位, 8 数据位, 1 停止位, 无奇偶校验;
5) 出厂地址一般默认为 01H;
6) 地址 00H,表示广播地址,可用来获取从机的实际地址,为单机指令;
7) 在 RTU 模式中,新的信息以至少 3.5 个字符的静默时间开始。整帧信息必须以一个连续的数据流进行传输。如果信息结束前存在超过 1.5 个字符以上的间隔时间,则出错。
8) 为保证总线设备的安全,对通信过程中的参数错误、CRC 错误及其他错误,从机都做不应答处理。
2、功能码解析
字节序号 | 内容 | 说明 |
1 | 从机地址码(=1~254) | |
2 | 03H | 读寄存器值功能码 |
3 | 要读的寄存器开始地址高字节 | |
4 | 要读的寄存器开始地址低字节 | |
5 | 要读的寄存器数量的高字节 | |
6 | 要读的寄存器数量的低字节 | |
7 | 从字节 1 到 6 的 CRC16 校验和的低字节 | |
8 | 从字节 1 到 6 的 CRC16 校验和的高字节 |
2.1 功能码 03H,读寄存器值表 1:主机发送:
表 2:从机接收正确时,从机响应:
字节序号 | 内容 | 说明 |
1 | 从机地址码(=1~254) | |
2 | 03H | 返回读功能码 |
3 | 从字节 4 到 m(包括 4 和 m)的字节总数 | |
4,5 | 寄存器数据 | |
…… | ||
m-1,m | 寄存器数据 | |
m+1 | 从字节 1 到 m 的 CRC16 校验和的低字节 | |
m+2 | 从字节 1 到 m 的 CRC16 校验和的高字节 |
字节序号 | 内容 | 说明 |
1 | 从机地址码(=1~254) | |
2 | 06H | 写寄存器值功能码 |
3 | 要写的寄存器地址高字节 | |
4 | 要写的寄存器地址低字节 | |
5 | 寄存器数据的高字节 | |
6 | 寄存器数据的低字节 | |
7 | 从字节 1 到 6 的 CRC16 校验和的低字节 | |
8 | 从字节 1 到 6 的 CRC16 校验和的高字节 |
2.2 功能码 06H,写单个寄存器值表 3:主机发送:
从机接收正确时,从机返回与表 3 一致的数据。
3、寄存定义、单位代码表
3.1 表 4:寄存器定义表 (注:寄存器地址编码为 16 进制)
寄存器地 | 内容说明 | 属性 |
00 00H | 保留 | |
00 01H | 保留 | |
00 02H | 保留 | |
00 03H | 从机地址 | 读/写 |
00 04H | 压力值 | 只读 |
00 05H | 高字节为压力单位(见表 5),低字节小数点个数 | 只读 |
00 06H | 保留 | |
00 07H | 保留 | |
00 08H | 保留 | |
00 09H | 保留 |
3.2 表 5:单位代码代表的意义见下表:
值 | 01 | 02 | 03 | 保留 |
压力单位 | Pa | KPa | MPa | |
值 | 11 | 12 | 13 | 14 |
液位单位 | 毫米 mm | 厘米 cm | 分米 dm | x m |
值 | 21 | |||
温度单位 | ℃ |
4、应用举例
例 1 获取从机数据(读寄存器起始地址为 00 04H 的 2 个寄存器的内容)假设从机地址为 01H
发送指令如下图
主机发送:01 03 00 04 00 02 85 CA
从机返回:01 03 04 01 23 02 01 CA A5,
返回数据中的第 4 个字节 01H 和第 5 个字节 23H 即为数据 0123H,换成十进制为 291,注意,这是一个有符号数。返回数据中的第 6 个字节 02 表示该数据的单位为 KPa,返回数据
中的第 7 个字节 01 表示该数据有一位小数,综合以上信息,可知压力大小为 29.1KPa。
例 2 获取从机的地址(读寄存器起始地址为 00 03H 的 1 个寄存器的内容)当不清楚从机地址时,可以用广播获取从机地址。
主机发送:00 03 00 03 00 01 75 DB 或者 01 03 00 03 00 01 74 0A
从机返回:01 03 02 00 01 79 84 或者 01 03 02 00 01 79 84
返回数据中的第 5 个字节 01 表示从机地址。
例 3 把地址为 0x01 的从机地址修改为 0x02(写寄存器 00 03H)主机发送:01 06 00 03 00 02 F8 0B
如果修改成功,从机返回:01 06 00 03 00 02 F8 0B,修改地址失败则无响应。
例 4:把地址为 0x02 的从机地址修改为 0x01(写寄存器 00 03H)主机发送:02 06 00 03 00 01 B8 39
如果修改成功,从机返回:02 06 00 03 00 01 B8 39,修改地址失败则无响应。
5、CRC 校验码的计算
1) 预置 1 个全“1”的 16 位 CRC 寄存器(0xFFFF)(即全为 1);
2) 把第一个 8 位二进制数据(既信息帧的第一个字节)与 16 位的 CRC 寄存器的低 8 位相异或(XOR),把结果放于 CRC 寄存器的低 8 位;
3) 把 CRC 寄存器的内容右移一位,用 0 填补最高位,并检查右移后的移出位;
4) 如果移出位为 1,则CRC 寄存器与预置的值 A001H 相异或; 否则不进行。
5) 重复 8 次步骤 3 和 4,对整个 8 位数据全部进行处理;
6) 重复按步骤 2 到 5 的方法,进行通讯信息帧的下一个字节处理;
7) 将该通讯信息帧所有字节按上述步骤计算完成后,得到 16 位的 CRC 值;
8) CRC 添加到消息中时,低字节先加入,然后高字节。
联系信息
湖南泽天传感科技有限公司
HuNan ZT Sensor Technology Co.,Ltd
地址:xxxxxxxxxxxxxxxx00xxxxxxxxx00x000网址:xxx.xxxxx.xxx
电话:0000-00000000 83997992传真:0731-84782737