MODBUS功能碼簡介 代碼 中文名稱 位操作/字操作 操作數量 01h 讀線圈狀態 位操作 單個或多個 02h 讀離散輸入狀態(只能讀到0或1) 位操作 單個或多個 03h 讀保持寄存器(保持寄存器可以通過06h功能寫入) 字操作 單個或多個 04h 讀輸入寄存器(輸入寄存器只能讀取,不能通過06 ...
MODBUS功能碼簡介
代碼 |
中文名稱 |
位操作/字操作 |
操作數量 |
01h |
讀線圈狀態 |
位操作 |
單個或多個 |
02h |
讀離散輸入狀態(只能讀到0或1) |
位操作 |
單個或多個 |
03h |
讀保持寄存器(保持寄存器可以通過06h功能寫入) |
字操作 |
單個或多個 |
04h |
讀輸入寄存器(輸入寄存器只能讀取,不能通過06h功能寫入) |
字操作 |
單個或多個 |
05h |
寫單個線圈(線圈表示用來控制輸出IO控制) |
位操作 |
單個 |
06h |
寫單個保持寄存器 |
字操作 |
單個 |
0Fh |
寫多個線圈 |
位操作 |
多個 |
10h |
寫多個保持寄存器 |
字操作 |
多個 |
Modbus TCP介紹
示例-通過03功能碼讀寄存器(從寄存器00開始,讀取兩個值,讀到01寄存器結束)
客戶端發送 01 02 00 00 00 06 01 03 00 00 00 02
01 02 00 00 00 06 (固定報文頭)
- 01 02: 客戶端發出的檢驗信息, server端會將這兩個位元組內容複製到回應的報文第一二位.一般我們會將第一二位進行不停遞加,然後根據伺服器返回的相應內容, 來驗證伺服器回應信息的時效性
- 00 00: 表示tcp/ip 的協議的modbus的協議
- 00 06: 表示客戶端發送的後面帶了多少位元組.
01 03 00 00 00 02(用戶數據)
- 01: 表示設備地址
- 03: 表示讀保持寄存器功能碼
- 00 00: 表示客戶端讀取的寄存器起始地址
- 00 02: 表示讀取的寄存器值個數(由於為02,所以會讀出寄存器00h和01h的值)
返回值如下圖所示:
伺服器返回值 01 02 00 00 00 07 01 03 04 04 7B 00 FF
- 01 02: 伺服器回應的檢驗信息
- 00 00: 表示tcp/ip 的協議的modbus的協議
- 00 07: 表示伺服器發送的後面帶了多少位元組.
- 01: 表示設備地址
- 03: 表示功能碼
- 04: 表示後面發送的寄存器00的位元組長度
- 04 7B: 表示寄存器00的值
- 00 FF: 表示寄存器01的值
示例-06功能碼寫單個寄存器(向寄存器03地址里寫值)
客戶端發送 01 02 00 00 00 06 01 06 00 03 00 FF
01 02 00 00 00 06 (固定報文頭)
- 01 02: 客戶端發出的檢驗信息
- 00 00: 表示tcp/ip 的協議的modbus的協議
- 00 06: 表示客戶端發送的後面帶了多少位元組.
01 06 00 03 00 FF (用戶數據)
- 01: 表示設備地址
- 06: 表示寫單個保持寄存器功能碼
- 00 FF: 表示寫入寄存器03h的值為0xFF
返回值如下圖所示:
伺服器返回 01 02 00 00 00 06 01 06 00 03 00 FF
後面的06 00 03 00 FF:表示客戶端使用06功能碼成功向寄存器03h分別寫入了0xFF值
示例-10功能碼寫多個寄存器(向寄存器03~06地址里寫不同值)
客戶端發送 01 02 00 00 00 10 01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06
01 02 00 00 00 10 (固定報文頭)
- 01 02: 客戶端發出的檢驗信息
- 00 00: 表示tcp/ip 的協議的modbus的協議
- 00 10: 表示客戶端發送的後面帶了多少位元組.
01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06 (用戶數據)
- 01: 表示設備地址
- 10: 表示寫多個保持寄存器功能碼
- 00 03: 表示客戶端寫入的寄存器起始地址
- 00 04: 表示寫入的寄存器值個數(由於為04,所以會寫入寄存器03h~06h的值)
- 08: 表示後面寫入的位元組個數
- FF FF: 表示寫入寄存器03h的值
- 00 0A: 表示寫入寄存器04h的值
- 00 0F: 表示寫入寄存器05h的值
- 00 06: 表示寫入寄存器06h的值
返回值如下圖所示:
伺服器返回 01 02 00 00 00 06 01 10 00 03 00 04
後面的10 00 03 00 04:表示客戶端使用10功能碼成功向寄存器03h~06h分別寫入了值
部分參考內容:https://blog.csdn.net/mikasoi/article/details/81782159