下面記錄下常用modbus常用功能碼,以備後面查詢。
日常開發常用的功能碼就那幾個,基本都是讀取感測器資料,配置引數。其它的功能很少用。對主裝置來說,外部輸入的變數,如開關量,感測器的資料都是唯讀的,因為這些取決於外部條件。但對從裝置來說是可以讀寫的(寫暫存器變數),因為主裝置和具體的執行裝置之間還隔了一層從裝置,主裝置獲取資料,需要經過從裝置。從裝置對資料想改就改,可以蒙蔽主裝置。
功能碼(十進位制)
名稱位操作/字操作
運算元量
主裝置訪問許可權
從裝置訪問許可權
01讀線圈狀態
位操作(bool)
單個或多個
讀/寫讀/寫
02讀離散輸入狀態
位操作(bool)
單個或多個
只讀讀/寫
03讀保持暫存器
字操作單個或多個
讀/寫讀/寫
04讀輸入暫存器
字操作單個或多個
只讀讀/寫
05寫單個線圈
位操作(bool)
單個讀/寫
讀/寫06
寫單個保持暫存器
字操作單個
讀/寫讀/寫
15寫多個線圈
位操作(bool)
多個讀/寫
讀/寫16
寫多個保持暫存器
字操作多個
讀/寫讀/寫
下面完整功能碼統計資訊,只是方便後續查閱方便。其實在實際開發過程中常用的就那幾個。當然使用者也可以修改協議格式,支援更多的模組。
下表中的資料引用自:
功能碼名稱
作用01
讀取線圈狀態
取得一組邏輯線圈的當前狀態(on/off)
02讀取輸入狀態
取得一組開關輸入的當前狀態(on/off)
03讀取保持暫存器
在乙個或多個保持暫存器中取得當前的二進位制值
04讀取輸入暫存器
在乙個或多個輸入暫存器中取得當前的二進位制值
05強置單線圈
強置乙個邏輯線圈的通斷狀態
06預置單暫存器
把具體二進值裝入乙個保持暫存器
07讀取異常狀態
取得8個內部線圈的通斷狀態,這8個線圈的位址由控制器決定,使用者邏輯可以將這些線圈定義,以說明從機狀態,短報文適宜於迅速讀取狀態
08回送診斷校驗
把診斷校驗報文送從機,以對通訊處理進行評鑑
09程式設計(只用於484)
使主機模擬程式設計器作用,修改pc從機邏輯
10控詢(只用於484)
可使主機與一台正在首席執行官程式任務從機通訊,探詢該從機是否已完成其操作任務,僅在含有功能碼9的報文傳送後,本功能碼才傳送
11讀取事件計數
可使主機發出單詢問,並隨即判定操作是否成功,尤其是該命令或其他應答產生通訊錯誤時
12讀取通訊事件記錄
可是主機檢索每台從機的modbus事務處理通訊事件記錄。如果某項事務處理完成,記錄會給出有關錯誤
13程式設計(184/384 484 584)
可使主機模擬程式設計器功能修改pc從機邏輯
14探詢(184/384 484 584)
可使主機與正在執行任務的從機通訊,定期控詢該從機是否已完成其程式操作,僅在含有功能13的報文傳送後,本功能碼才得傳送
15強置多線圈
強置一串連續邏輯線圈的通斷
16預置多暫存器
把具體的二進位制值裝入一串連續的保持暫存器
17報告從機標識
可使主機判斷編址從機的型別及該從機執行指示燈的狀態
18(884和micro 84)
可使主機模擬程式設計功能,修改pc狀態邏輯
19重置通訊鏈路
發生非可修改錯誤後,是從機復位於已知狀態,可重置順序位元組
20讀取通用引數(584l)
顯示擴充套件儲存器檔案中的資料資訊
21寫入通用引數(584l)
把通用引數寫入擴充套件儲存檔案,或修改之
22~64
保留作擴充套件功能備用
65~72
保留以備使用者功能所用
留作使用者功能的擴充套件編碼
73~119
非法功能
120~127
保留留作內部作用
128~255
保留用於異常應答
Modbus常用功能碼協議詳解
01h 讀線圈狀態 1 描述 讀從機線圈暫存器,位操作,可讀單個或者多個 2 傳送指令 假設從機位址位0x01,暫存器開始位址0x0023,暫存器結束抵制0x0038,總共讀取21個線圈。協議圖如下 3 響應 返回資料的每一位對應線圈狀態,1 on,0 off,如下圖 上表中data1表示0x002...
ModBus常用功能碼 功能碼為10進製
modbus常用功能碼 功能碼為10進製 01 read coil status 讀線圈暫存器 02 read input status 讀狀態暫存器 03 read holding register 讀保持暫存器 04 read input register 讀輸入暫存器 05 write sin...
MODBUS常用功能碼學習及例項
雖然modbus支援諸多功能碼,但其中只涉及到四種暫存器 線圈暫存器 離散輸入暫存器 保持暫存器 輸入暫存器。只要搞清楚暫存器的本質和功能碼的聯絡,其實理解功能碼就很簡單。暫存器種類 讀寫狀態 位操作字操作 適用功能碼 線圈暫存器 讀 寫位 01h 讀 05h 寫單個位 0fh 寫多個位 離散輸入暫...