modbus-tcp協議講解

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 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 03 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 0F 01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06

01 02 00 00 00 0F (固定報文頭)

  • 01 02:  客戶端發出的檢驗信息
  • 00 00:  表示tcp/ip 的協議的modbus的協議
  • 00 0F:  表示客戶端發送的後面帶了多少字節.

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

相關文章
相關標籤/搜索