MODBUS-RTU协议是一个公开协议,在网上很容易查到详细协议说明,本文主要介绍安科瑞常见仪表所涉及的MODBUS-RTU的读取报文、数据格式、数据计算等方法。
1、通讯接线与串口设置
仪表通常采用RS485作为串口的硬件连接,要求使用屏蔽双绞线手拉手将各仪表连成总线最终连接至主机、通信管理机、串口服务器等设备。一般一条总线不得多于32只表,根据通信情况可选择在最末端仪表A、B之间增加匹配电阻(一般120欧姆)。我司出厂的MODBUS协议仪表没有特殊要求时同一设置为波特率9600,无校验,仪表地址1-247循环设置。
2、03读命令举例
在一般系统中,03命令是最常用的,本节举例说明03读命令的报文格式(以DTSD1352 举例)
3、数据类型
1)常见数据类型分为∶无符号16位整型、有符号16位整型、无符号32位整型、有符号32位整型。
2)数据类型范围∶无符号16位整型数据范围为0~65535,有符号16位整型数据范围为-32768~32767,有符号32位整型数据范围为0~4294967295 有符号32位整型数据范围为-2147483648~2147483647。
3)无论何种数据类型都是高位在前低位在后。
4)注意有符号数据的负数表达方式是补码形式,如果使用组态软件注意仔细设置数据的类型,如果系统自主解析报文,注意此类数据的负数计算。
比如某有符号值通讯读出为FC80(16位整型),其数值应该是-896,而不是64640。有种简单的计算方法是∶首先判断读值X是否>32767(如果是32位应判断是否>2147483647)如果小于则是正数,如果大于则可以用X-65536(