您的当前位置:首页正文

Modbus RTU协议解析

2024-11-12 来源:个人技术集锦

1.Modbus RTU一般是通过RS485/RS232物理接口采用的数据通信协议。

2.报文格式

主站询问报文格式
byte[0]byte[1]byte[2] byte[3]byte[4] byte[5]byte[n] byte[n+1]
站号功能码起始地址寄存器数量/线圈个数校验码
从站响应报文格式
byte[0]byte[1]byte[2] byte[3] byte[4]...byte[n] byte[n+1]
站号功能码响应字节个数数据校验码

3.功能码01报文解析

Rx:000004-01 01 00 00 00 0A BC 0D

主站询问报文格式
byte[0] byte[1]byte[2] byte[3]byte[4] byte[5]byte[6] byte[7]
010100 0000 0ABC 0D
站号1功能码01起始地址010个线圈数量校验码

Tx:000005-01 01 02 30 00 AD FC

从站响应报文格式
byte[0] byte[1]byte[2] byte[3] byte[4]byte[5] byte[6]
01010230 00AD FC
站号1功能码012个字节长度2个字节开关量校验码

从站响应数据30 00,转为二进制为0011 0000/0000 0000,2字节分别逆序排列0000 1100/0000 0000,因此返回的10个开关量数据为00001100

4.功能码03报文解析

Rx:000000-01 03 00 00 00 0A C5 CD

主站询问报文格式
byte[0] byte[1]byte[2] byte[3]byte[4] byte[5]byte[6] byte[7]
010300 0000 0AC5 CD
站号1功能码03起始地址010个寄存器数量校验码

Tx:000001-01 03 14 00 00 00 17 00 00 00 2D 00 00 00 00 00 11 00 00 00 00 00 00 71 BF

从站响应报文格式
byte[0] byte[1]byte[2] byte[3] byte[4]...byte[23] byte[24]
01031400 00 00 17 00 00 00 2D 00 00 00 00 00 11 00 00 00 00 00 0071 BF
站号1功能码0320个字节长度20个字节寄存器数据校验码

从站1号响应20个字节的数据,00 00 00 17 00 00 00 2D 00 00 00 00 00 11 00 00 00 00 00 00,对应10进制:0 23 0 45 0 0 17 0 0 0

4.功能码10报文解析

Rx:000002-01 10 00 00 00 0A 14 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 5C 8F

主站询问报文格式
byte[0] byte[1]byte[2] byte[3]byte[4] byte[5]byte[6]byte[7] byte[8]..byte[27] byte[28]
011000 0000 0A1400 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A5C 8F
站号1功能码10起始地址010个寄存器数量20个字节长度批量写入的20字节数据校验码

Tx:000003-01 10 00 00 00 0A 40 0E

从站响应报文格式
byte[0] byte[1]byte[2] byte[3]  byte[4] byte[5]byte[6] byte[7]
011000 0000 0A40 0E
站号1功能码10起始地址0写入寄存器的个数校验码

从站1号响应报文,与询问报文前6个字节保持一致。

5.功能码04报文解析

Rx:000004-01 04 00 00 00 0A 70 0D

主站询问报文格式
byte[0] byte[1]byte[2] byte[3]byte[4] byte[5]byte[6] byte[7]
010400 0000 0A70 0D
站号1功能码04起始地址010个保持寄存器数量校验码

Tx:000005-01 04 14 00 00 00 04 00 00 00 08 00 05 00 00 00 09 00 00 00 00 00 00 40 C4

从站响应报文格式
byte[0] byte[1]byte[2] byte[3] byte[4]..byte[23] byte[24]
01041400 00 00 04 00 00 00 08 00 05 00 00 00 09 00 00 00 00 00 0040 C4
站号1功能码0420个字节的数据读取的20字节数据校验码

从站响应20个字节的数据,对应10进制:0 4 0 8 5 0 9 0 0 0 

6.功能码02报文解析

Rx:000000-01 02 00 00 00 0A F8 0D

主站询问报文格式
byte[0] byte[1]byte[2] byte[3]byte[4] byte[5]byte[6] byte[7]
010200 0000 0AF8 0D
站号1功能码02起始地址010个离散量校验码

Tx:000001-01 02 02 56 01 47 D8

从站响应报文格式
byte[0] byte[1]byte[2] byte[3] byte[4]byte[5] byte[6]
01020256 0147 D8
站号1功能码02字节长度响应的数据校验码

从站响应2个字节数据56 01,翻译为二进制 0101 0110/0000 0001,字节分别逆序排列0110101010

显示全文