晉江網(wǎng)站有什么職業(yè)做百度網(wǎng)站站長工具
目錄
1、簡介
2、消息格式
3、Modbus寄存器種類說明
4、功能碼01H
5、功能碼02H
6、功能碼03H
7、功能碼04H
8、功能碼05H
9、功能碼06H
10、功能碼0FH
11、功能碼10H
1、簡介
- ?Modbus-RTU(Remote Terminal Unit)是一種串行通信協(xié)議,廣泛用于工業(yè)自動化領(lǐng)域,特別是在監(jiān)控和控制設(shè)備之間進(jìn)行數(shù)據(jù)通信。
- Modbus-RTU是無狀態(tài)協(xié)議,每次通信都是獨立的,不維護(hù)通信狀態(tài)信息。
- Modbus-RTU的通信結(jié)構(gòu)是基于主從(Master-Slave)模式的。一個主設(shè)備(Master)可以控制多個從設(shè)備(Slave),只允許主設(shè)備發(fā)起請求,從機被動響應(yīng)。
2、消息格式
- 高字節(jié)在前,低字節(jié)在后
3、Modbus寄存器種類說明
- 線圈寄存器(Coils)
- 功能:表示單個位的輸出狀態(tài),常用于DO數(shù)字量輸出,常用場景有控制繼電器、晶體管或其他二進(jìn)制輸出設(shè)備。
- 地址范圍:00001到09999
- 讀/寫方式:可讀可寫
- 數(shù)據(jù)類型:單個位(1位)按位操作
- 功能碼:
- 讀線圈狀態(tài):功能碼 01H
- 寫單個線圈:功能碼 05H
- 寫多個線圈:功能碼 0FH
- 離散輸入寄存器(Discrete Inputs)
- 功能:表示單個位的輸入狀態(tài),常用于DI數(shù)字量輸入,通過外部設(shè)置改變輸入狀態(tài)。常用場景有按鈕開關(guān)、光電開關(guān)等。
- 地址范圍:10001到19999
- 讀/寫方式:只讀
- 數(shù)據(jù)類型:單個位(1位)按位操作
- 功能碼:
- 讀離散輸入狀態(tài):功能碼 02H
- 輸入寄存器(Input Registers)
- 功能:存儲連續(xù)的16位數(shù)據(jù),常用于AI模擬量輸入,控制器運行時從外部設(shè)備獲取的參數(shù)。常用場景有傳感器或測量設(shè)備的輸入。
- 地址范圍:30001到39999
- 讀/寫方式:只讀
- 數(shù)據(jù)類型:16位(2字節(jié))按字節(jié)操作
- 功能碼:
- 讀輸入寄存器:功能碼 04H
- 保持寄存器(Holding Registers)
- 功能:存儲連續(xù)的16位數(shù)據(jù),常用于AO模擬量輸出,輸出參數(shù)或保持參數(shù)。常用場景有存儲設(shè)備的配置參數(shù)或輸出數(shù)據(jù)。
- 地址范圍:40001到49999
- 讀/寫方式:可讀可寫
- 數(shù)據(jù)類型:16位(2字節(jié))按字節(jié)操作
- 功能碼:
- 讀保持寄存器:功能碼 03H
- 寫單個保持寄存器:功能碼 06H
- 寫多個保持寄存器:功能碼 10H
4、功能碼01H
- 01H:讀線圈狀態(tài)。讀取一組線圈的狀態(tài),返回一個字節(jié)數(shù)組,其中每個位表示一個線圈的狀態(tài)。
- 發(fā)送報文
- 含義:從機地址為01H,寄存器地址為0000H,讀取寄存器數(shù)量0008H為8個,最后兩位為校驗位。
- 響應(yīng)報文
- 含義:返回字節(jié)數(shù)量01H為1個字節(jié),01功能碼為按位讀取,需要把返回的數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制。
- 數(shù)據(jù)1為0FH,轉(zhuǎn)換為二進(jìn)制為:(線圈0007H-0000H)
5、功能碼02H
- 02H:讀離散輸入狀態(tài)。讀取一組離散輸入的狀態(tài),返回一個字節(jié)數(shù)組,其中每個位表示一個輸入的狀態(tài)。
- 發(fā)送報文
- 含義:從機地址為01H,寄存器地址為0000H,讀取寄存器數(shù)量0008H為8個,最后兩位為校驗位。
- 【注】這里的寄存器地址為偏移地址,邏輯地址是從10001開始的。
- 響應(yīng)報文
- 含義:返回字節(jié)數(shù)量01H為1個字節(jié),02功能碼為按位讀取,需要把返回的數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制。
- 數(shù)據(jù)1為0FH,轉(zhuǎn)換為二進(jìn)制為:(線圈0007H-0000H)
6、功能碼03H
- 03H:讀保持寄存器。讀取一組保持寄存器的值,每個寄存器返回16位(2字節(jié))數(shù)據(jù)。
- 發(fā)送報文
- 含義:0000H寄存器開始,讀取2個寄存器。
- 響應(yīng)報文
- 含義:返回字節(jié)數(shù)04H為4個字節(jié)(2個寄存器,一個寄存器返回2個字節(jié)),數(shù)據(jù)1為0001H(通道1),數(shù)據(jù)2為0000H(通道2)。
7、功能碼04H
- 04H:讀輸入寄存器。讀取一組輸入寄存器的值,每個寄存器返回16位(2字節(jié))數(shù)據(jù)。
- 發(fā)送報文
- 含義:0000H寄存器開始,讀取2個寄存器。
- 響應(yīng)報文
- 含義:返回4個字節(jié),數(shù)據(jù)1為0001H,數(shù)據(jù)2為0000H。
8、功能碼05H
- 05H:寫單個線圈。設(shè)置一個線圈的狀態(tài),寫入一個位(0或1)。
- 發(fā)送報文和響應(yīng)報文一致
- 含義:寄存器地址為0000H,向寄存器寫入FF00H控制線圈吸合(寫入0000H控制線圈斷開)。
9、功能碼06H
- 06H:寫單個保持寄存器。設(shè)置一個保持寄存器的值,寫入16位(2字節(jié))數(shù)據(jù)。
- 發(fā)送報文和響應(yīng)報文一致
- 含義:寄存器地址為0000H,向寄存器寫入值為0001H。
10、功能碼0FH
- 0FH:寫多個線圈。設(shè)置多個線圈的狀態(tài),寫入一個字節(jié)數(shù)組,其中每個位表示一個線圈的狀態(tài)。
- 發(fā)送報文
- 含義:寄存器起始地址為0000H,線圈寄存器數(shù)量為0004H,寫入字節(jié)數(shù)為01H,寫入數(shù)據(jù)為0FH(需要轉(zhuǎn)換為二進(jìn)制)
- 這意味著從起始地址開始的四個線圈都要設(shè)置為1(打開)。
- 響應(yīng)報文
- 含義:寄存器起始地址為0000H,線圈寄存器數(shù)量為0004H。
11、功能碼10H
- 10H:寫多個保持寄存器。設(shè)置多個保持寄存器的值,寫入多個16位(2字節(jié))數(shù)據(jù)。
- 發(fā)送報文
- ???????
- 含義:寄存器起始地址為0000H,寄存器數(shù)量為2個,寫2個保持寄存器需要4個字節(jié),數(shù)據(jù)1為0001H,數(shù)據(jù)2為0001H。
- ???????
- 響應(yīng)報文
- 含義:寄存器起始地址為0000H,保持寄存器數(shù)量為2個。