时间:2021-07-01 10:21:17 帮助过:20人阅读
调试modbus tcp 整理百度文库文档如下
《modbus-tcp-报文举例分析》
《MODBUSTCP通讯报文》
Client request:
19 B2 00 00 00 06 06 03 00 27 00 02
上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( header handle);
19 B2 00 00 00 06
19 B2 两个字节是Client发出的检验信息,Sever端只是需要将这两个字节的内容copy以后再放到response的报文的相应位子就可以了
00 00 两个字节是表示tcp/ip 的协议的modbus的协议;
00 06 两个字节表示的是header handle后面还有多长的字节,即表示的是该字节以后的字节长度(lengch),可以看到在00 06后面还有 “06 03 00 27 00 02”六个字节,所以这两个字节表示的就是6;
PDU:
“06 03 00 27 00 02”
06 一个字节表示slave address;
03 为Fuction code ;
00 27 表示Client request的寄存器地址;
00 02 表示request 寄存器的长度;(寄存器个数)
Server response:
19 B2 00 00 00 07 06 03 04 00 00 00 00
Header handle : “ 19 B2 00 00 00 07”
19 B2 为Server返回的检验码,copy from Client request;
其它的表示与客户端的表示相同
PDU:
“ 06 03 04 00 00 00 00”
06 是Slave address,从地址数;
03是Function code ;
04表示了回复给Client request的需要读的寄存器的值的个数,这里因为主地址向从地址读了2个寄存器即2个16位的寄存器(2个字)所以这里为4个字节,因为2个字为4个字节,而04这个字节表示的就是从地址要回复给主地址的寄存器字节长度,
00 00 00 00 表示了4个字节的值
ModBusTcp与串行链路Modbus的数据域是一致的,具体数据域可以参考串行modbus。这里给出几个ModbusTcp的链路解析说明,辅助新人分析报文。
1、数据请求
|
97 76 00 00 00 06 04 04 00 7D 00 7D |
||||
|
|
示例 |
长度 |
说明 |
备注 |
|
Map报文头 |
0x97 |
1 |
事务处理标识符Hi |
客户机发起,服务器复制,用于事务处理配对 |
|
0x96 |
1 |
事务处理标识符Lo |
||
|
0x0000 |
2 |
协议标识符号 |
客户机发起,服务器复制 Modbus协议 = 0. |
|
|
0x0006 |
2 |
长度 |
从本字节下一个到最后
|
|
|
0x04 |
1 |
单元标识符 |
客户机发起,服务器复制 串口链路或其他总线上远程终端标识 |
|
|
功能码 |
0x04 |
1 |
功能码,读寄存器 |
参考标准modbus协议 |
|
数据 |
0x007D |
2 |
起始地址 |
|
|
0x 007D |
2 |
寄存器数量 |
|
|
|
校验 |
|
|||
2、数据请求回复
|
97 76 00 00 00 FD 04 04 FA AB 9E 41 18 7A E1 3F 94 7A E1 3F 94 0A 3D 3F 97 51 EC 3F 98 CC CD C0 6C 33 33 C0 E3 CC CD C0 EC EB 85 41 F1 D7 0A 41 E9 47 AE 41 ED EB 85 41 F1 19 9A 43 D0 E6 66 43 C9 4C CD 43 CF EB 85 41 F3 66 66 42 0F CC CD 41 C2 E6 66 44 0A 1E B8 41 FB A3 D7 42 0C CC CD 41 BC C0 00 44 0A B8 52 41 F6 5C 29 42 0F 47 AE 41 D1 C6 66 44 0A 00 00 00 00 C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 0A 00 0A 00 0A 00 04 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F |
||||
|
|
示例 |
长度 |
说明 |
备注 |
|
Map报文头 |
0x97 |
1 |
事务处理标识符Hi |
客户机发起,服务器复制,用于事务处理配对 |
|
0x96 |
1 |
事务处理标识符Lo |
||
|
0x0000 |
2 |
协议标识符号 |
客户机发起,服务器复制 Modbus协议 = 0. |
|
|
0x00FD |
2 |
长度 |
从本字节下一个到最后
|
|
|
0x04 |
1 |
单元标识符 |
客户机发起,服务器复制 串口链路或其他总线上远程终端标识 |
|
|
功能码 |
0x04 |
1 |
功能码,读寄存器 |
参考标准modbus协议 |
|
数据 |
0x FA |
1 |
字节个数 |
|
|
0x---- |
|
数据 |
||
|
校验 |
|
|||
3、写多个寄存器
|
97 79 00 00 00 09 04 10 00 00 00 01 02 00 01 |
||||
|
|
示例 |
长度 |
说明 |
备注 |
|
Map报文头 |
0x97 |
1 |
事务处理标识符Hi |
客户机发起,服务器复制,用于事务处理配对 |
|
0x79 |
1 |
事务处理标识符Lo |
||
|
0x0000 |
2 |
协议标识符号 |
客户机发起,服务器复制 Modbus协议 = 0. |
|
|
0x0009 |
2 |
长度 |
从本字节下一个到最后
|
|
|
0x04 |
1 |
单元标识符 |
客户机发起,服务器复制 串口链路或其他总线上远程终端标识 |
|
|
功能码 |
0x10 |
1 |
功能码,读寄存器 |
参考标准modbus协议 |
|
数据 |
0x0000 |
2 |
起始地址 |
|
|
0x 0001 |
2 |
写寄存器数量 |
|
|
|
0x 02 |
1 |
写字节的个数 |
|
|
|
00 01 |
2 |
目标值 |
|
|
|
校验 |
|
|||
4、写多个寄存器响应
|
97 79 00 00 00 06 04 10 00 00 00 01 |
||||
|
|
示例 |
长度 |
说明 |
备注 |
|
Map报文头 |
0x97 |
1 |
事务处理标识符Hi |
客户机发起,服务器复制,用于事务处理配对 |
|
0x79 |
1 |
事务处理标识符Lo |
||
|
0x0000 |
2 |
协议标识符号 |
客户机发起,服务器复制 Modbus协议 = 0. |
|
|
0x0006 |
2 |
长度 |
从本字节下一个到最后
|
|
|
0x04 |
1 |
单元标识符 |
客户机发起,服务器复制 串口链路或其他总线上远程终端标识 |
|
|
功能码 |
0x10 |
1 |
功能码,读寄存器 |
参考标准modbus协议 |
|
数据 |
0x0000 |
2 |
起始地址 |
|
|
0x 0001 |
2 |
寄存器个数 |
|
|
|
校验 |
|
|||
来源:https://www.cnblogs.com/DreamRecorder/p/9081134.html
Modbus TCP 示例报文
标签:ali modbus 个数 code rowspan 请求 cells order 标识