MODBUS功能碼簡介 服務器
代碼tcp |
中文名稱spa |
位操做/字操做.net |
操做數量server |
01hblog |
讀線圈狀態ip |
位操做ci |
單個或多個get |
02hio |
讀離散輸入狀態(只能讀到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 03 00 00 00 02(用戶數據)
返回值以下圖所示:
服務器返回值 01 02 00 00 00 07 01 03 04 04 7B 00 FF
示例-06功能碼寫單個寄存器(向寄存器03地址裏寫值)
客戶端發送 01 02 00 00 00 06 01 06 00 03 00 FF
01 02 00 00 00 06 (固定報文頭)
01 06 00 03 00 FF (用戶數據)
返回值以下圖所示:
服務器返回 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 0F 01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06
01 02 00 00 00 0F (固定報文頭)
01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06 (用戶數據)
返回值以下圖所示:
服務器返回 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