非常感谢各位同学,我的
modbus同学说明被评为精华帖。看来该说明对大家还是有用的。
modbus通讯说明补充如下:
采用
modbus通讯读写数据时,数据内容中并不包含数据的地址,数据地址包含在
modbus读写的请求中。如下所示:
通讯时读请求格式如下:
从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)。
因此,需要注意如下内容:
1. 从
modbus地址编码来说,最小地址为1,如1***、0***、3***、4***地址中最小地址都为1,如10001,00001,30001,40001等。但是很多厂家的设备在编码时都是按照最小地址为0来编码的,所以,写设备的数据区地址时必须加1,这就是“瘦锅”提到的问题;
2. 另外有的SCADA软件读取
modbus设备数据时,有的要求地址长度必须为6位(如ifix,所有地址必须为6位),而有的要求为5为(如intouch软件,读施耐德Quantum PLC时为6位,其它中端PLC为5位)。其实,从
modbus响应来说,所有数据中不包含地址,因此,在显示时输入6位或5位地址没有任何区别。ifix或intouch软件中要求的6位或5位只是各自厂家按照自己的习惯来要求的。
常见的测试
modbus通讯的软件除了常见的串口调试工具以外,最常用的是Modscan,可以测试
modbus和
modbus TCP/IP。