1.ADU
Application Data Unit:应用数据单元;
2.PDU
Protocol Data Unit:协议数据单元;由功能码+数据组成。
功能码是一个字节,数据长度不定,由具体功能码的具体功能决定。
3.MBAP
报文头,长度7个字节。
MBAP组成 | 字节个数 | 说明 |
事物处理标识 | 2 | 可以理解为报文的序列号,一般每次通信后就要加1以区别不同的通信数据报文;由客户端生成;应答时复制该值 |
协议标识 | 2 | 00 00:表示ModbusTCP协议;由客户端生成;应答时复制该值 |
长度 | 2 | 表示该字节后面的数据长度,单位为字节; |
单元标识符 | 1 | 设备地址;由客户端生成;应答时复制该值 |
4.modbus tcp和modbus rtu协议格式
modbus tcp数据帧(ADU)由MBAP+PDU组成;物理层为以太网接口。
modbus rtu数据帧(ADU)由地址+PDU+校验组成;物理层为串口,RS232、RS422、RS485。
modbus tcp 和modbus rtu数据帧中的PDU部分是相同的。
MBAP | 地址 | 功能码 | 数据 | CRC16校验 | |
Modbus RTU | 无 | 1字节 | 1字节 | n字节 | 2字节 |
Modbus TCP | 7字节 | 无 | 1字节 | n字节 | 无 |
5.示例
以下表格中的数据都是十六进制。
1)01H-读线圈
含义:读从机线圈寄存器,位操作,可读单个或者多个。返回数据中一个地址的数据为1位,data1的最低位代表最低地址的线圈状态。
例:从机地址01,寄存区开始地址0x23,总共读取21个线圈: