Modbus協議整理

01 讀線圈狀態

讀取從機的線圈狀態(ON/OFF),位操作。

例:請求從機設備17讀00020-00056線圈。其中00020-00056爲線圈的寄存器信息地址,這些線圈的寄存器尋址地址爲0019 – 0055,共訪問37個線圈。

描述 Hex
從機地址 11
功能碼 01
寄存器起始地址(高) 00
寄存器起始地址(低) 13
寄存器數量(高) 00
寄存器數量(低) 14
CRC校驗(高)
CRC校驗(低)

響應:響應信息中的各線圈的狀態與數據區的每一位的值相對應,1代表ON;0代表OFF。若返回的線圈數不是8的倍數,則在最後的數據字節未使用的位中全部填充0,字節數區說明全部數據的字節數。

描述 Hex
從機地址 11
功能碼 01
返回字節數 05
數據1(線圈00027-線圈00020) CD
數據2(線圈00035-線圈00028) 6B
數據3(線圈00043-線圈00036) B2
數據4(線圈00051-線圈00044) 0E
數據5(線圈00056-線圈00052) 1B
CRC校驗(高)
CRC校驗(低)

02 讀輸入位狀態

讀取從機的輸入狀態(ON/OFF),位操作。

用法同上

03 讀保持寄存器

讀取從機的保持寄存器,一個寄存器兩個字節,字操作。

例:請求從機設備17的0x13,0x14,0x15三個寄存器的數據

描述 Hex
從機地址 11
功能碼 03
寄存器起始地址(高) 00
寄存器起始地址(低) 13
寄存器數量(高) 00
寄存器數量(低) 03
CRC校驗(高)
CRC校驗(低)

響應:

描述 Hex
從機地址 11
功能碼 03
返回字節數 06
數據1(寄存器0x13高位) CD
數據1(寄存器0x13高位) 6B
數據2(寄存器0x14高位) 6B
數據2(寄存器0x14高位) 6B
數據3(寄存器0x15高位) 6B
數據3(寄存器0x15高位) 6B
CRC校驗(高)
CRC校驗(低)

04 讀輸入寄存器

讀取從機的輸入寄存器,一個寄存器兩個字節,字操作。

用法同上

05 寫單個線圈

ff00h爲寫1,0000h爲寫0。

例:把地址爲0的線圈寫1

描述 Hex
從機地址 11
功能碼 05
寄存器起始地址(高) 00
寄存器起始地址(低) 00
線圈值(高) ff
線圈值(低) 00
CRC校驗(高)
CRC校驗(低)

響應:

描述 Hex
從機地址 11
功能碼 05
寄存器起始地址(高) 00
寄存器起始地址(低) 00
線圈值(高) ff
線圈值(低) 00
CRC校驗(高)
CRC校驗(低)

06 寫單個保持寄存器

寫從機的保持寄存器,一個寄存器兩個字節,字操作。

例:往地址爲0的寄存器寫1

描述 Hex
從機地址 11
功能碼 06
寄存器起始地址(高) 00
寄存器起始地址(低) 00
寄存器值(高) 00
寄存器值(低) 01
CRC校驗(高)
CRC校驗(低)

響應:

描述 Hex
從機地址 11
功能碼 06
寄存器起始地址(高) 00
寄存器起始地址(低) 00
寄存器值(高) 00
寄存器值(低) 01
CRC校驗(高)
CRC校驗(低)

15 寫多個線圈

寫從機的多個線圈,位操作。

例:請求從機設備17寫00020-00030線圈,未使用位補0。

描述 Hex
從機地址 11
功能碼 0f
寄存器起始地址(高) 00
寄存器起始地址(低) 13
寄存器數量(高) 00
寄存器數量(低) 0a
數據1(線圈27-20) 00
數據2(線圈29-28) 00
CRC校驗(高)
CRC校驗(低)

響應:

描述 Hex
從機地址 11
功能碼 0f
寄存器起始地址(高) 00
寄存器起始地址(低) 13
寄存器數量(高) 00
寄存器數量(低) 0a
字節數 02
CRC校驗(高)
CRC校驗(低)

16 寫多個保持寄存器

寫從機的保持寄存器,一個寄存器兩個字節,字操作。
例:往地址0x13,0x14的寄存器寫值

描述 Hex
從機地址 11
功能碼 10
寄存器起始地址(高) 00
寄存器起始地址(低) 13
寄存器數量(高) 00
寄存器數量(低) 02
字節數 04
數據1(高位) 00
數據1(低位) 00
數據2(高位) 00
數據2(低位) 00
CRC校驗(高)
CRC校驗(低)

響應:

描述 Hex
從機地址 11
功能碼 10
寄存器起始地址(高) 00
寄存器起始地址(低) 13
寄存器數量(高) 00
寄存器數量(低) 02
CRC校驗(高)
CRC校驗(低)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章