...
ModBusTCP无校验码,头部6个长度,数据区(pdu)读请求为6个字节,读应答根据请求寄存器长度而定。
- 从地址1开始读取10个AO寄存器的请求,固定12个字节,蓝色为请求头部,红色为数据负荷pdu:
03 6D 00 00 00 06 01 03 00 00 00 0A
解释:
03 6D两个字节是主机发出的检验信息(事务号)。从机(即设备)只需将这两个字节的内容copy以后再放到response的报文相应位置,头部
00 00 两个字节表示tcp/ip的协议是modbus协议,头部
00 06表示该字节以后的长度。读固定为6个字节,头部
01 站号,缺省为1,头部
03 功能码,读取AO为03,读取AI为04,读取DI为02,读取DO为01,头部
00 起始地址高字节,PDU部分数据
00 起始地址低字节,PDU部分数据
00 读取寄存器个数,高字节,PDU部分数据
0A 读取寄存器个数,低字节,PDU部分数据
设备返回的从地址1开始读取10个AO寄存器的请求的应答(29个字节)。蓝色为头部,红色为pdu数据负荷。AI和AO的正常长度应等于 6+3+寄存器个数*2。即寄存器个数=(总长度-9)/2
03 6D 00 00 00 17 01 03 14 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
03 6D检验信息,事务号,必须和请求相同
00 00 tcp/ip为modbus协议
00 17 表示该字节后的长度
01 设备地址
03 功能码
14 该字节后的字节数(20),10个寄存器共20个字节
- 向线圈地址DO:46写1。注意:控制时请求和应答内容可能相同。
请求:00 03 00 00 00 06 01 05 00 2D FF 00
应答:00 03 00 00 00 06 01 05 00 2D FF 00
六、 ModBusRTU协议分析
ModBusRTU有校验码,请求的数据长度是8个字节。