18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> PLC基礎入門教程 >> 正文

MODBUS常用功能碼

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2022-11-27

1 簡述

Modbus寄存器分為(wei) 四種,如表1.1所示:

表1.1 寄存器分類

寄存器種類 數據類型 訪問類型 功能碼 PLC地址 寄存器地址
線圈寄存器 讀寫 01H 05H 0FH 00001-09999 0000H-FFFFH
離散輸入寄存器 隻讀 02H 10001-19999 0000H-FFFFH
輸入寄存器 隻讀 04H 30001-39999 0000H-FFFFH
保持寄存器 讀寫 03H 06H 10H 40001-49999 0000H-FFFFH

2 常用功能碼

Modbus中常用的功能碼有8個(ge) ,可以分為(wei) 位操作和字操作兩(liang) 類,如表2.1所示:

表2.1 常用功能碼

功能碼 描述 PLC地址 寄存器地址 位/字操作 操作數量
01H 讀線圈寄存器 00001-09999 0000H-FFFFH 位操作 單個或多個
02H 讀離散輸入寄存器 10001-19999 0000H-FFFFH 位操作 單個或多個
03H 讀保持寄存器 40001-49999 0000H-FFFFH 字操作 單個或多個
04H 讀輸入寄存器 30001-39999 0000H-FFFFH 字操作 單個或多個
05H 寫單個線圈寄存器 00001-09999 0000H-FFFFH 位操作 單個
06H 寫單個保持寄存器 40001-49999 0000H-FFFFH 字操作 單個
0FH 寫多個線圈寄存器 00001-09999 0000H-FFFFH 位操作 多個
10H 寫多個保持寄存器 40001-49999 0000H-FFFFH 字操作 多個

3 讀線圈寄存器(01H)

功能碼01H讀取Modbus從(cong) 機中線圈寄存器的狀態,可以是單個(ge) 寄存器,或者多個(ge) 連續的寄存器。

3.1 發送

假設從(cong) 機地址為(wei) 01H,讀取的線圈寄存器的起始地址為(wei) 0017H,讀取38個(ge) 寄存器,指令如表3.1所示:

表3.1 讀線圈寄存器指令:

從機地址 功能碼

起始地址
高位

起始地址

低位

寄存器數量

高位

寄存器數量

低位

CRC高位

CRC低位

01 01 00 17 00 26 0D D4

3.2 響應

各線圈的狀態與(yu) 數據內(nei) 容的每個(ge) bit對應,1代表ON,0代表OFF。如果查詢的線圈數量不是8的倍數,則在最後一個(ge) 字節的高位補0。

表3.2.1 讀線圈狀態的返回結果

從機地址 功能碼 返回字節數 數據1 數據2 數據3 數據4 數據5 CRC高位 CRC低位
01 01 05 CD 6B B2 0E 1B 44 EA

其中,第一個(ge) 字節CDH對應線圈0017H到001E的狀態,轉為(wei) 二進製是11001101,其中bit0對應0017H,bit7對應001E,如表3.2.2所示:

表3.2.2 線圈0017H到001EH的狀態

001EH 001DH 001CH 001BH 001AH 0019H 0018H 0017H
1 1 0 0 1 1 0 1
ON ON OFF OFF ON ON OFF ON

最後一個(ge) 字節為(wei) 1BH,對應線圈0037H到003CH的狀態,轉為(wei) 二進製是00011011,其中bit0對應0037H,bit5對應003CH,其餘(yu) 兩(liang) 位用0填充,如表3.2.3所示:

表3.2.3 線圈0037H到003CH的狀態

003CH 003BH 003AH 0039H 0038H 0037H 0036H 0035H
0 0 0 1 1 0 1 1
填充 填充 OFF ON ON OFF ON ON

4 讀離散輸入寄存器(02H)

功能碼02H讀取Modbus從(cong) 機中離散輸入寄存器的狀態,可以是單個(ge) 寄存器,或者多個(ge) 連續的寄存器。

4.1 發送

假設從(cong) 機地址為(wei) 01H,讀取的離散輸入寄存器的起始地址為(wei) 00C4H,讀取22個(ge) 寄存器,指令如表4.1所示:

表4.1 讀離散輸入寄存器指令:

從機地址 功能碼 起始地址高位 起始地址低位 寄存器數量高位 寄存器數量低位 CRC高位 CRC低位
01 02 00 C4 00 16 B8 39

4.2 響應

各個(ge) 離散輸入寄存器的狀態與(yu) 數據內(nei) 容的每個(ge) bit對應,1代表ON,0代表OFF。如果查詢的線圈數量不是8的倍數,則在最後一個(ge) 字節的高位補0。

表4.2.1 讀離散輸入寄存器的返回結果

從機地址 功能碼 返回字節數 數據1 數據2 數據3 CRC高位 CRC低位
01 02 03 AC DB 35 22 88

其中,第一個(ge) 字節ACH對應00C4H到00CBH寄存器的狀態,轉為(wei) 二進製是10101100,其中bit0對應00C4H,bit7對應00CB,如表4.2.2所示:

表4.2.2 寄存器00C4H到00CBH的狀態

00CBH 00CAH 00C9H 00C8H 00C7H 00C6H 00C5H 00C4H
1 0 1 0 1 1 0 0
ON OFF ON OFF ON ON OFF OFF

最後一個(ge) 字節為(wei) 35H,對應寄存器00D4H到00D9H的狀態,轉為(wei) 二進製是00110101,其中bit0對應00D4H,bit5對應00D9H,其餘(yu) 兩(liang) 位用0填充,如表4.2.3所示:

表4.2.3 寄存器00D4H到00D9H的狀態

00DBH 00DAH 00D9H 00D8H 00D7H 00D6H 00D5H 00D4H
0 0 1 1 0 1 0 1
填充 填充 ON ON OFF ON OFF ON

5 讀保持寄存器(03H)

功能碼03H讀取Modbus從(cong) 機中保持寄存器的數據,可以是單個(ge) 寄存器,或者多個(ge) 連續的寄存器。

5.1 發送

假設從(cong) 機地址為(wei) 01H,讀取的保持寄存器的起始地址為(wei) 006BH,讀取3個(ge) 寄存器,指令如表5.1所示:

表5.1 讀保持寄存器指令:

從機地址 功能碼 起始地址高位 起始地址低位 寄存器數量高位 寄存器數量低位 CRC高位 CRC低位
01 03 00 6B 00 03 74 17

5.2 響應

每個(ge) 保持寄存器的長度為(wei) 2個(ge) 字節。保持寄存器之間,低地址寄存器先傳(chuan) 輸,高地址寄存器後傳(chuan) 輸。單個(ge) 保持寄存器,高字節數據先傳(chuan) 輸,低字節數據後傳(chuan) 輸。

表5.2.1 讀保持寄存器的返回結果

從機地址 功能碼 字節數 006BH高字節 006BH低字節 006CH高字節 006CH低字節 006DH高字節 006DH低字節 CRC高位 CRC低位
01 03 06 00 6B 00 13 00 00 F5 79

6 讀輸入寄存器(04H)

功能碼04H讀取Modbus從(cong) 機中輸入寄存器的數據,可以是單個(ge) 寄存器,或者多個(ge) 連續的寄存器。

6.1 發送

假設從(cong) 機地址為(wei) 01H,讀取的保持寄存器的起始地址為(wei) 0008H,讀取2個(ge) 寄存器,指令如表6.1所示:

表6.1 讀輸入寄存器指令:

從機地址 功能碼 起始地址高位 起始地址低位 寄存器數量高位 寄存器數量低位 CRC高位 CRC低位
01 04 00 6B 00 02 00 17

6.2 響應

每個(ge) 輸入寄存器的長度為(wei) 2個(ge) 字節。輸入寄存器之間,低地址寄存器先傳(chuan) 輸,高地址寄存器後傳(chuan) 輸。單個(ge) 輸入寄存器,高字節數據先傳(chuan) 輸,低字節數據後傳(chuan) 輸。

表6.2.1 讀輸入寄存器的返回結果

從機地址 功能碼 字節數 0008H高字節 0008H低字節 0009H高字節 0009H低字節 CRC高位 CRC低位
01 04 04 00 0A 00 0B 9A 41

7 寫單個線圈寄存器(05H)

功能碼05H寫(xie) 單個(ge) 線圈寄存器,FF00H請求線圈處於(yu) ON狀態,0000H請求線圈處於(yu) OFF狀態。

7.1 發送

假設從(cong) 機地址為(wei) 01H,線圈寄存器的地址為(wei) 00ACH,使其處於(yu) ON狀態的指令如表7.1所示:

表7.1 寫(xie) 單個(ge) 線圈指令:

從機地址 功能碼 寄存器地址高位 寄存器地址低位 數據高位 數據低位 CRC高位 CRC低位
01 05 00 AC FF 00 4C 1B

7.2 響應

如果寫(xie) 入成功,返回發送的指令,即010500ACFF004C1B。

8 寫單個保持寄存器(06H)

功能碼06H寫(xie) 單個(ge) 保持寄存器。

8.1 發送

假設從(cong) 機地址為(wei) 01H,保持寄存器的地址為(wei) 0001H,數據位0003H,指令如表8.1所示:

表8.1 寫(xie) 單個(ge) 保持寄存器指令:

從機地址 功能碼 寄存器地址高位 寄存器地址低位 數據高位 數據低位 CRC高位 CRC低位
01 06 00 01 00 03 98 0B

8.2 響應

如果寫(xie) 入成功,返回發送的指令,即010600010003980B。

9 寫多個線圈寄存器(0FH)

功能碼0FH寫(xie) 多個(ge) 線圈寄存器。如果對應的數據位為(wei) 1,表示線圈狀態為(wei) ON;如果對應的數據位為(wei) 0,表示線圈狀態為(wei) OFF。線圈寄存器之間,低地址寄存器先傳(chuan) 輸,高地址寄存器後傳(chuan) 輸。單個(ge) 線圈寄存器,高字節數據先傳(chuan) 輸,低字節數據後傳(chuan) 輸。如果寫(xie) 入的線圈寄存器的個(ge) 數不是8的倍數,則在最後一個(ge) 字節的高位補0。

9.1 發送

假設從(cong) 機地址為(wei) 01H,線圈寄存器的起始地址為(wei) 0013H,寫(xie) 入10個(ge) 寄存器,指令如表9.1.1所示:

表9.1.1 寫(xie) 入多個(ge) 線圈寄存器指令

從機地址 功能碼 起始地址高位 起始地址低位 數量高位 數量低位 字節數 數據1 數據2 CRC高位 CRC低位
01 0F 00 13 00 0A 02 CD 01 72 CB

其中,CDH對應線圈0013H到001AH的內(nei) 容,01H對應線圈001B到001CH的內(nei) 容,未使用位用0填充。

此時,線圈寄存器的內(nei) 容如表9.1.2所示:

表9.1.2 線圈寄存器0013H到001CH的內(nei) 容

001AH 0019H 0018H 0017H 0016H 0015H 0014H 0013H
1 1 0 0 1 1 0 1
0022H 0021H 0020H 001FH 001EH 001DH 001CH 001BH
0 0 0 0 0 0 0 1

9.2 響應

如果寫(xie) 入成功,返回寫(xie) 入的寄存器數量,如表9.2所示:

表9.2 寫(xie) 多個(ge) 線圈寄存器的返回結果

從機地址 功能碼 起始地址高位 起始地址低位 數量高位 數量低位 CRC高位 CRC低位
01 0F 00 13 00 0A 24 09

10 寫多個保持寄存器(10H)

功能碼10H寫(xie) 多個(ge) 保持寄存器,其中每個(ge) 保持寄存器的長度為(wei) 兩(liang) 個(ge) 字節。

10.1 發送

假設從(cong) 機地址為(wei) 01H,保持寄存器的起始地址為(wei) 0001H,寫(xie) 入2個(ge) 寄存器,指令如表10.1所示:

表10.1 寫(xie) 入多個(ge) 保持寄存器指令

從機地址 功能碼 起始地址高位 起始地址低位 數量高位 數量低位 字節數 0001H高位 0001H低位 0002H高位 0002H低位 CRC高位 CRC低位
01 10 00 01 00 02 04 00 0A 01 02 92 30

10.2 響應

如果寫(xie) 入成功,返回寫(xie) 入的寄存器數量,如表10.2所示:

表10.2 寫(xie) 多個(ge) 保持寄存器的返回結果

從機地址 功能碼 起始地址高位 起始地址低位 數量高位 數量低位 CRC高位 CRC低位
01 10 00 01 00 02 10 08
Tags:功能碼,modbus,通訊  
責任編輯:admin
相關文章列表
西門子PLC S7-200Smart實現Modbus-RTU通信實例 多功能電表 溫控表
西門子plc S7-200 SMART與丹佛斯變頻器之間Modbus通信
西門子plc S7-200 SMART與變頻器MODBUS-RTU通信例程
RS232、RS485標準以及在DB9公頭、母頭上的接線定義_Modbus通訊接
PLC控製伺服電機運動的完整案例(PLC設置伺服驅動參數)_ 絲杠運
Modbus寄存器分類及地址分配表 寄存器分類及說明 寄存器的地址
西門子plc S7-200smart 與台達變頻器通訊Modbus梯形圖編程實例
Modbus調試軟件--ModbusPoll、ModbusSlave使用詳解
【ModBus】modbus之poll/slave工具使用教程(3)
modbus poll 使用教程  Modbus通訊
20種PLC對應Modbus地址表
西門子plc S7-200SMART通過MODBUS通信控製變頻器啟停如何看電流頻
深度剖析西門子PLC的開放式TCP通信梯形圖 TCP通訊
觸摸屏與PLC之間無線通訊步驟詳解,PLC與觸摸屏通訊
西門子plc梯形圖編程實例 西門子200smart與電流表Modbus RTU通訊
使用西門子plc的Modbus通訊 串口調試助手與S7-200SMART PLC從站通
西門子PLC串口通訊方法 RS485 串口通訊
Modbus 調試助手的使用(一) Modsim32使用詳解Modbus Poll
【工具使用】Modsim32軟件使用詳解 串口調試軟件
什麽是Modbus網關?modbus網關有什麽作用?
西門子S7-200PLC ModbusTCP通訊,ModScan32使用
Modbus協議詳解 科普Modbus通訊協議
Modbus通訊簡單測試—Modscan32使用簡介
Modbus Scan32模擬軟件使用,Modscan32使用教程
Modbus協議的數據模型和地址模型
西門子PLC通信編程MODBUS通信梯形圖實例編程 modbus地址掃描
西門子plc Modbus 地址和 S7-200 存儲區地址的映射,從站地址與S
Modbus RTU 從站常見問題
Modbus RTU與Modbus TCP的區別
如何看懂Modbus數據幀?Modbus RTU數據幀格式
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
推薦文章
最新推薦
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢