modbus帧格式

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 相比:

  1. 使用 MBAP head 代替 slave addr
  2. 并且没有 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)

你可能感兴趣的:(protocol)