<object id="ayu7o"></object>

      <object id="ayu7o"></object>

    1. <menuitem id="ayu7o"></menuitem>
      <object id="ayu7o"></object>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      實用!ModbusTCP協議詳解
      發布時間: 2024-03-29 10:39 更新時間: 2024-12-02 08:00

      簡介



      Modbus由MODICON公司于1979年開發,是一種工業現場總線協議標準。1996年施耐德公司推出基于以太網TCP/IP的Modbus協議:ModbusTCP。Modbus協議是一項應用層報文傳輸協議,包括ASCII、RTU、TCP三種報文類型。標準的Modbus協議物理層接口有RS232、RS422、RS485和以太網接口,采用master/slave方式通信。

      Modbus TCP數據幀



      ModbusTCP的數據幀可分為兩部分:MBAP+PDU報文頭MBAPMBAP為報文頭,長度為7字節,組成如下:

      圖片

      圖片

      幀結構PDUPDU由功能碼+數據組成。功能碼為1字節,數據長度不定,由具體功能決定。功能碼Modbus的操作對象有四種:線圈、離散輸入、保持寄存器、輸入寄存器。

      圖片

      根據對象的不同,Modbus的功能碼有:

      圖片

      說明更詳細的表:

      圖片


      PDU詳細結構



      0x01:讀線圈在從站中讀1~2000個連續線圈狀態,ON=1,OFF=0

    2. 請求:MBAP 功能碼 起始地址H 起始地址L 數量H 數量L(共12字節)

    3. 響應:MBAP 功能碼 數據長度 數據(一個地址的數據為1位)

    4. 如:在從站0x01中,讀取開始地址為0x0002的線圈數據,讀0x0008位
      00 01 00 00 00 06 01 01 00 02 00 08

    5. 回:數據長度為0x01個字節,數據為0x01,第一個線圈為ON,其余為OFF
      00 01 00 00 00 04 01 01 01 01

    6. 0x05:寫單個線圈將從站中的一個輸出寫成ON或OFF,0xFF00請求輸出為ON,0x000請求輸出為OFF。

    7. 請求:MBAP 功能碼 輸出地址H 輸出地址L 輸出值H 輸出值L(共12字節)

    8. 響應:MBAP 功能碼 輸出地址H 輸出地址L 輸出值H 輸出值L(共12字節)

    9. 如:將地址為0x0003的線圈設為ON
      00 01 00 00 00 06 01 05 00 03 FF 00

    10. 回:寫入成功
      00 01 00 00 00 06 01 05 00 03 FF 00

    11. 0x0F:寫多個線圈將一個從站中的一個線圈序列的每個線圈都強制為ON或OFF,數據域中置1的位請求相應輸出位ON,置0的位請求響應輸出為OFF。

    12. 請求:MBAP 功能碼 起始地址H 起始地址L 輸出數量H 輸出數量L 字節長度 輸出值H 輸出值L

    13. 響應:MBAP 功能碼 起始地址H 起始地址L 輸出數量H 輸出數量L

    14. 0x02:讀離散量輸入從一個從站中讀1~2000個連續的離散量輸入狀態。

    15. 請求:MBAP 功能碼 起始地址H 起始地址L 數量H 數量L(共12字節)

    16. 響應:MBAP 功能碼 數據長度 數據(長度:9+ceil(數量/8))

    17. 如:從地址0x0000開始讀0x0012個離散量輸入
      00 01 00 00 00 06 01 02 00 00 00 12

    18. 回:數據長度為0x03個字節,數據為0x01 04 00,表示第一個離散量輸入和第11個離散量輸入為ON,其余為OFF
      00 01 00 00 00 06 01 02 03 01 04 00

    19. 0x04:讀輸入寄存器從一個遠程設備中讀1~2000個連續輸入寄存器。

    20. 請求:MBAP 功能碼 起始地址H 起始地址L 寄存器數量H 寄存器數量L(共12字節)

    21. 響應:MBAP 功能碼 數據長度 寄存器數據(長度:9+寄存器數量×2)

    22. 如:讀起始地址為0x0002,數量為0x0005的寄存器數據
      00 01 00 00 00 06 01 04 00 02 00 05

    23. 回:數據長度為0x0A,第一個寄存器的數據為0x0c,其余為0x00
      00 01 00 00 00 0D 01 04 0A 00 0C 00 00 00 00 00 00 00 00

    24. 0x03:讀保持寄存器從遠程設備中讀保持寄存器連續塊的內容。

    25. 請求:MBAP 功能碼 起始地址H 起始地址L 寄存器數量H 寄存器數量L(共12字節)

    26. 響應:MBAP 功能碼 數據長度 寄存器數據(長度:9+寄存器數量×2)

    27. 如:起始地址是0x0000,寄存器數量是 0x0003
      00 01 00 00 00 06 01 03 00 00 00 03

    28. 回:數據長度為0x06,第一個寄存器的數據為0x21,其余為0x00
      00 01 00 00 00 09 01 03 06 00 21 00 00 00 00

    29. 0x06:寫單個保持寄存器在一個遠程設備中寫一個保持寄存器。

    30. 請求:MBAP 功能碼 寄存器地址H 寄存器地址L 寄存器值H 寄存器值L(共12字節)

    31. 響應:MBAP 功能碼 寄存器地址H 寄存器地址L 寄存器值H 寄存器值L(共12字節)

    32. 如:向地址是0x0000的寄存器寫入數據0x000A
      00 01 00 00 00 06 01 06 00 00 00 0A

    33. 回:寫入成功
      00 01 00 00 00 06 01 06 00 00 00 0A

    34. 0x10:寫多個保持寄存器在一個遠程設備中寫連續寄存器塊(1~123個寄存器)。

    35. 請求:MBAP 功能碼 起始地址H 起始地址L 寄存器數量H 寄存器數量L 字節長度 寄存器值(13+寄存器數量×2)

    36. 響應:MBAP 功能碼 起始地址H 起始地址L 寄存器數量H 寄存器數量L(共12字節)

    37. 如:向起始地址為0x0000,數量為0x0001的寄存器寫入數據,數據長度為0x02,數據為0x000F
      00 01 00 00 00 09 01 10 00 00 00 01 02 00 0F

    38. 回:寫入成功
      00 01 00 00 00 06 01 10 00 00 00 01


    39. 聯系方式

      • 電  話:13922889745
      • 經理:向小姐
      • 手  機:18475208684
      • 微  信:18475208684