電話:0755-84805790
傳真:0755-89258770
業(yè)務咨詢:13632638280
郵箱: 602566016@qq.com
QQ:602566016
單片機開發(fā)線路板設計中使用的Modbus-RTU常用功能碼通信數(shù)據(jù)
一,主機讀數(shù)據(jù)(功能碼:0X03)
1,主機發(fā)送命令格式
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器首地址高字節(jié)(1BYTE) |
寄存器首地址低字節(jié)(1BYTE) |
寄存器個數(shù)高字節(jié)(1BYTE) |
寄存器個數(shù)低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
2,從機返回命令格式
設備地址(1BYTE) |
功能碼(1BYTE) |
有效數(shù)據(jù)個數(shù)高字節(jié) |
有效數(shù)據(jù)個數(shù)低字節(jié) |
有效數(shù)據(jù) 1 高字節(jié) |
有效數(shù)據(jù) 1 低字節(jié) |
有效數(shù)據(jù) n 高字節(jié) |
有效數(shù)據(jù) n 低字節(jié) |
CRC校驗高字節(jié) |
CRC校驗低字節(jié) |
例:主機要讀取01號設備的0X0000,0X0001,0X0002,0X0003四個寄存器中的數(shù)據(jù):
主機發(fā)送:
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器首地址高字節(jié)(1BYTE) |
寄存器首地址低字節(jié)(1BYTE) |
寄存器個數(shù)高字節(jié)(1BYTE) |
寄存器個數(shù)低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
01 |
03 |
00 |
00 |
00 |
04 |
44 |
09 |
從機返回
寄存器0x0000中的數(shù)據(jù)(0x0004)
寄存器0x0001中的數(shù)據(jù)(0x0005)
寄存器0x0002中的數(shù)據(jù)(0x0001)
寄存器0x0003中的數(shù)據(jù)(0x0002)
0x01 0x03 0x08 0x00 0x04 0x00 0x05 0x00 0x01 0x00 0x02 0xcc 0x16
一, 主機寫(修改從機)數(shù)據(jù)(功能碼:0X06)
1,主機發(fā)送命令格式
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器地址高字節(jié)(1BYTE) |
寄存器地址低字節(jié)(1BYTE) |
寄存器值高字節(jié)(1BYTE) |
寄存器值低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
2,從機返回命令格式
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器地址高字節(jié)(1BYTE) |
寄存器地址低字節(jié)(1BYTE) |
寄存器值高字節(jié)(1BYTE) |
寄存器值低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
例:主機要修改01號設備的0X0000寄存器,將寄存器中的值改為0x0008:
主機發(fā)送:
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器地址高字節(jié)(1BYTE) |
寄存器地址低字節(jié)(1BYTE) |
寄存器值高字節(jié)(1BYTE) |
寄存器值低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
01 |
06 |
00 |
00 |
00 |
08 |
88 |
0C |
從機返回:
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器地址高字節(jié)(1BYTE) |
寄存器地址低字節(jié)(1BYTE) |
寄存器值高字節(jié)(1BYTE) |
寄存器值低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
01 |
06 |
00 |
00 |
00 |
08 |
88 |
0C |
10 寫多個保持寄存器
上位機發(fā)送數(shù)據(jù)格式
“:”ADDRESS Ox10 ADDRH ADDRL NUMH NUML BYTECOUNT DATAHI DATALI DATA2H DATA2L------DATANH DATANL LRC OXOD OXOA
注:ADDR: 0----OXFFFF; NUM:0-125 (NUM為要寫的保持寄存器的數(shù)量)
正確時變頻器返回數(shù)據(jù)格式
“:” ADDRESS Ox10 ADDRH ADDRL NUMH NUML LRC OXOD OXOA
二. 功能碼 10寫連續(xù)地址寄存器
例:主機要修改01號設備的0X1200寄存器,將寄存器中的值改為連續(xù)前3個地址改為0xff00:
主機發(fā)送:
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器地址高字節(jié)(1BYTE) |
寄存器地址低字節(jié)(1BYTE) |
連續(xù)寫個數(shù) 高字節(jié)(1BYTE) |
連續(xù)寫個數(shù) 低字節(jié)(1BYTE) |
發(fā)送的數(shù)據(jù)總數(shù)(1BYTE) |
數(shù)據(jù)1高字節(jié)(1BYTE) |
數(shù)據(jù)1低字節(jié)(1BYTE) |
數(shù)據(jù)2高字節(jié)(1BYTE) |
數(shù)據(jù)2低字節(jié)(1BYTE) |
數(shù)據(jù)3高字節(jié)(1BYTE) |
數(shù)據(jù)3低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
01 |
10 |
00 |
00 |
00 |
03 |
06 |
ff |
00 |
ff |
00 |
ff |
00 |
DC |
13 |
從機返回:
設備地址碼(1BYTE) |
功能碼(1BYTE) |
寄存器地址高字節(jié)(1BYTE) |
寄存器地址低字節(jié)(1BYTE) |
連續(xù)寫個數(shù) 高字節(jié)(1BYTE) |
連續(xù)寫個數(shù) 低字節(jié)(1BYTE) |
CRC校驗高字節(jié)(1BYTE) |
CRC校驗低字節(jié)(1BYTE) |
01 |
10 |
12 |
00 |
00 |
03 |
85 |
70 |