单片机开发线路板设计中使用的Modbus-RTU常用功能码通信数据
一,主机读数据(功能码:0X03)
1,主机发送命令格式
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器首地址高字节(1BYTE) |
寄存器首地址低字节(1BYTE) |
寄存器个数高字节(1BYTE) |
寄存器个数低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
2,从机返回命令格式
设备地址(1BYTE) |
功能码(1BYTE) |
有效数据个数高字节 |
有效数据个数低字节 |
有效数据 1 高字节 |
有效数据 1 低字节 |
有效数据 n 高字节 |
有效数据 n 低字节 |
CRC校验高字节 |
CRC校验低字节 |
例:主机要读取01号设备的0X0000,0X0001,0X0002,0X0003四个寄存器中的数据:
主机发送:
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器首地址高字节(1BYTE) |
寄存器首地址低字节(1BYTE) |
寄存器个数高字节(1BYTE) |
寄存器个数低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
01 |
03 |
00 |
00 |
00 |
04 |
44 |
09 |
从机返回
寄存器0x0000中的数据(0x0004)
寄存器0x0001中的数据(0x0005)
寄存器0x0002中的数据(0x0001)
寄存器0x0003中的数据(0x0002)
0x01 0x03 0x08 0x00 0x04 0x00 0x05 0x00 0x01 0x00 0x02 0xcc 0x16
一, 主机写(修改从机)数据(功能码:0X06)
1,主机发送命令格式
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器地址高字节(1BYTE) |
寄存器地址低字节(1BYTE) |
寄存器值高字节(1BYTE) |
寄存器值低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
2,从机返回命令格式
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器地址高字节(1BYTE) |
寄存器地址低字节(1BYTE) |
寄存器值高字节(1BYTE) |
寄存器值低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
例:主机要修改01号设备的0X0000寄存器,将寄存器中的值改为0x0008:
主机发送:
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器地址高字节(1BYTE) |
寄存器地址低字节(1BYTE) |
寄存器值高字节(1BYTE) |
寄存器值低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
01 |
06 |
00 |
00 |
00 |
08 |
88 |
0C |
从机返回:
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器地址高字节(1BYTE) |
寄存器地址低字节(1BYTE) |
寄存器值高字节(1BYTE) |
寄存器值低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
01 |
06 |
00 |
00 |
00 |
08 |
88 |
0C |
10 写多个保持寄存器
上位机发送数据格式
“:”ADDRESS Ox10 ADDRH ADDRL NUMH NUML BYTECOUNT DATAHI DATALI DATA2H DATA2L------DATANH DATANL LRC OXOD OXOA
注:ADDR: 0----OXFFFF; NUM:0-125 (NUM为要写的保持寄存器的数量)
正确时变频器返回数据格式
“:” ADDRESS Ox10 ADDRH ADDRL NUMH NUML LRC OXOD OXOA
二. 功能码 10写连续地址寄存器
例:主机要修改01号设备的0X1200寄存器,将寄存器中的值改为连续前3个地址改为0xff00:
主机发送:
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器地址高字节(1BYTE) |
寄存器地址低字节(1BYTE) |
连续写个数 高字节(1BYTE) |
连续写个数 低字节(1BYTE) |
发送的数据总数(1BYTE) |
数据1高字节(1BYTE) |
数据1低字节(1BYTE) |
数据2高字节(1BYTE) |
数据2低字节(1BYTE) |
数据3高字节(1BYTE) |
数据3低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
01 |
10 |
00 |
00 |
00 |
03 |
06 |
ff |
00 |
ff |
00 |
ff |
00 |
DC |
13 |
从机返回:
设备地址码(1BYTE) |
功能码(1BYTE) |
寄存器地址高字节(1BYTE) |
寄存器地址低字节(1BYTE) |
连续写个数 高字节(1BYTE) |
连续写个数 低字节(1BYTE) |
CRC校验高字节(1BYTE) |
CRC校验低字节(1BYTE) |
01 |
10 |
12 |
00 |
00 |
03 |
85 |
70 |