ModBus常用功能碼 (功能碼爲10進制)
01 READ COIL STATUS 讀線圈寄存器
02 READ INPUT STATUS 讀狀態寄存器
03 READ HOLDING REGISTER 讀保持寄存器
04 READ INPUT REGISTER 讀輸入寄存器
05 WRITE SINGLE COIL 寫單線圈寄存器
06 WRITE SINGLE REGISTER 寫單保持寄存器
15 WRITE MULTIPLE COIL 寫多線圈寄存器
16 WRITE MULTIPLE REGISTER 寫多保持寄存器
Modbus Function Code說明
01 Read Coil Status (output relay)
02 Read Input Status (input relay)
03 Read Holding Registers (output register)
04 Read Input Registers
05 Force Single Coil
06 Preset Single Register
07 Read Exception Status
08 Diagnostics
09 Program 484
10 Poll 484
11 Fetch Comm. Event Ctr.
12 Fetch Comm. Event Log
13 Program Controller
14 Poll Controller
15 Force Multiple Coils
16 Preset Multiple Registers
17 Report Slave ID
18 Program 884/M84
19 Reset Comm. Link
20 Read General Reference
21 Write General Reference
22 Mask Write 4x Register
23 Read/Write 4x Register
24 Read FIFO Queue
43 Read Device Identication
65 to 72 開放給一般使用者定義
100 to 110 開放給一般使用者定義
modbus 錯誤碼說明
功能碼 說明
01 非法功能。對於服務器(或從站)來說,詢問中接收到的功能碼是不可允許的操作,可能是因爲功能碼僅適用於新設備而被選單元中不可實現同時,還指出服務器(或從站)在錯誤狀態中處理這種請求,例如:它是未配置的,且要求返回寄存器值。
02 非法數據地址。對於服務器(或從站)來說,詢問中接收的數據地址是不可允許的地址,特別是參考號和傳輸長度的組合是無效的。對於帶有100個寄存器的控制器來說,偏移量96和長度4的請求會成功,而偏移量96和長度5的請求將產生異常碼02。
03 非法數據值。對於服務器(或從站)來說,詢問中包括的值是不可允許的值。該值指示了組合請求剩餘結構中的故障。例如:隱含長度是不正確的。modbus協議不知道任何特殊寄存器的任何特殊值的重要意義,寄存器中被提交存儲的數據項有一個應用程序期望之外的值。
04 從站設備故障。當服務器(或從站)正在設法執行請求的操作時,產生不可重新獲得的差錯。
05 確認。與編程命令一起使用,服務器(或從站)已經接受請求,並且正在處理這個請求,但是需要長持續時間進行這些操作,返回這個響應防止在客戶機(或主站)中發生超時錯誤,客戶機(或主機)可以繼續發送輪詢程序完成報文來確認是否完成處理。
06 從屬設備忙。與編程命令一起使用。服務器(或從站)正在處理長持續時間的程序命令。張服務器(或從站)空閒時,用戶(或主站)應該稍後重新傳輸報文。
08 存儲奇偶差錯。與功能碼20和21以及參考類型6一起使用,指示擴展文件區不能通過一致性校驗。服務器(或從站)設法讀取記錄文件,但是在存儲器中發現一個奇偶校驗錯誤。客戶機(或主方)可以重新發送請求,但可以在服務器(或從站)設備上要求服務。
10 不可用網關路徑。與網關一起使用,指示網關不能爲處理請求分配輸入端口至輸出端口的內部通信路徑。通常意味着網關是錯誤配置的或過載的。
11 網關目標設備響應失敗。與網關一起使用,指示沒有從目標設備中獲得響應。通常意味着設備未在網絡中。