Modbus-TCP
通信报文
image.png请求报文:
00 00 00 00 00 06 01 03 00 01 00 03
前6个字节为头字节。
00 00 00 00 00 06:
00 00: 两个字节是Client发出的检验信息,Sever端只是需要将这两个字节的内容copy以后再放到response的报文的相应位子就可以了
00 00:第三个第四个:两个字节是表示tcp/ip 的协议的modbus的协议;
00 06:两个字节表示的是header handle后面还有多长的字节,即表示的是该字节以后的字节长度(lengch),可以看到在00 06后面还有 “01 03 00 01 00 03”六个字节,所以这两个字节表示的就是6
PDU:
01 03 00 01 00 03
01: 一个字节表示slave address;
03:Fuction code ;
00 01:表示Client request的寄存器地址;
00 03: 表示request 寄存器的长度;(寄存器个数)
返回报文:
00 00 00 00 00 09 01 03 06 00 00 00 00 00 00
头字节(前6个字节为):
00 00 00 00 00 09:
00 00:前两位为Server返回的检验码,copy from Client request。
其它的:表示与客户端的表示相同。
PDU:
01 03 06 00 00 00 00 00 00
01:是Slave address,从地址数;
03: 是Function code
06:表示了回复给Client request的需要读的寄存器的值的个数,这里因为主地址向从地址读了3个寄存器即3个16位的寄存器(个字)所以这里为3个字节,因为3个字为6个字节,而06这个字节表示的就是从地址要回复给主地址的寄存器字节长度。
00 00 00 00 00 00:表示了6个字节的值。
modbus功能码 Function code
https://wenku.baidu.com/view/5b6f902fb4daa58da0114a48.html
网友评论