modbus帧格式
整理出 modbus-rtu (基于RS485) 和 modbus-tcp(基于tcpip) 的帧格式便于日后查找。
modbus-rtu
frame format
Start Time | Slave Addr | Func Code | Data | CRC16 | End Time |
---|
>= 3.5 * 8bit | 8 bit | 8 bit | N * 8 bit | 16 bit | >= 3.5 * 8bit |
function code
Reg Type | Start Addr | Data type | func code® | func code(W) |
---|
线圈值 | 10001~1FFFF | 1 bit | 0x01 | 0x05, 0x15 |
离散量 | 00001~0FFFF | 1 bit | 0x02 | |
保持寄存器 | 40001~4FFFF | 16 bit | 0x03 | 0x06, 0x16 |
输入寄存器 | 30001~3FFFF | 16 bit | 0x04 | |
master write format
Slave Addr | Func Code | Reg Addr(W) | Data(W) | CRC16 |
---|
0x01 | 0x06 | 0x0001 | 0x1234 | 0xXXYY |
master read format
Slave Addr | Func Code | Reg Addr® | Reg Count® | CRC16 |
---|
0x01 | 0x03 | 0x0002 | 0x0001 | 0xXXYY |
slave response format
Slave Addr | Func Code | Data Bytes® | data® | CRC16 |
---|
0x01 | 0x03 | 0x0002 | 0x5678 | 0xXXYY |
modbus-tcp
frame format
和 modbus-rtu 相比:
- 使用 MBAP head 代替 slave addr
- 并且没有 crc 校验
Type | MBAP Head | slave Addr | Func Code | … | CRC16 |
---|
modbus-rtu | - | 0x?? | same | same | same |
modbus-tcp | 1234 0000 000? | 0x?? | same | same | - |
MBAP Head
MBAP Head | seq | protocol | length | slave addr |
---|
MBAP Head | 12 34 | 00 00 | 00 09 | FF |
参数解释
Variable | notes |
---|
seq | 通信事务处理标识符 |
protocol | 0=modbus tcp 协议 |
length | 后面数据的长度 |
slave addr | 设备地址(不关心的情况下可以填0) |