Leave Your Message
新聞類別
專題新聞

MODBUS_TCP 通訊協定詳解

2026-02-08

我。協議概述

MODBUS TCP MODBUS TCP(傳輸控制協定)是一種廣泛應用於工業環境中的串行通訊協議,最初是為透過串行通訊線路連接的設備而設計的。然而,隨著時間的推移,MODBUS TCP 也逐漸成為透過網路(通常是乙太網路)連接的設備的主流通訊協定。 MODBUS TCP 允許設備透過網路進行通信,從而實現遠端監控和控制。

Modbus-TCP 是基於 TCP/IP 協定堆疊的乙太網路 Modbus 協定實作。它保留了 Modbus 的核心功能(例如資料模型和操作碼),但將資料封裝在 TCP/IP 資料包中,並利用 TCP 的可靠性來確保資料傳輸的準確性。

二、MODBUS TCP協定的基本結構

  1. 客戶端/伺服器模型:
  • 客戶端(通常是 PC、PLC 或其他控制設備)發起連線並傳送請求。
  • 伺服器(通常是受控設備或從屬設備)接收請求並回傳回應。

通訊採用客戶端-伺服器模型,其中客戶端(主站)主動發起請求,伺服器(從站)做出回應。預設連接埠為502。

圖片1-1.jpg

2.交易結構:

  • 交易 ID:用於區分不同的請求和回應。
  • 協定 ID:通常為 0,用於識別 MODBUS 協定。
  • 長度:資料長度欄位。
  • 單元標識符:由設備的位址派生而來。
  • 功能碼:指示請求類型(例如讀取/寫入暫存器)。
  • 數據:與函數程式碼相關的具體數據。
  • 錯誤驗證:用於驗證資料的完整性。

3.資料框結構:

資料封裝在 TCP/IP 封包中,由兩部分組成:MBAP 訊息頭和 PDU(協定資料單元)。

  • MBAP 電報頭(7 位元組):交易標識符、協定標識符、長度和單元標識符。

交易識別碼(2 位元組):唯一標識請求-回應對,確保匹配。

協定標識符(2 位元組):固定為 0x0000,表示 Modbus-TCP。

長度欄位(2 位元組):指示後續 PDU 的位元組數(包括單元識別碼和功能代碼)。

單元識別碼(1 位元組):相當於從位址,用於標識網路上的裝置。

  • PDU(協定資料單元):功能代碼和數據,與 Modbus-RTU 相同。

功能碼(1 位元組):定義操作類型(例如讀取/寫入線圈或暫存器)。

資料:長度可變,包含操作所需的位址和值。

圖2-1.jpg

三、溝通流程

  • 建立連線:客戶端和伺服器之間建立 TCP 連線。客戶端透過 TCP 連線(連接埠 502)發起請求,伺服器監聽並回應該請求。
  • 傳送請求:客戶端發送一個包含功能碼和必要資料的 MODBUS TCP 訊框。
  • 接收回應:伺服器處理請求,執行操作(例如讀取暫存器),並傳回回應訊息。如果操作失敗,伺服器將傳回異常回應(功能碼的最高位元設定為 1,並附帶異常代碼)。
  • 關閉連線(選用):您可以根據需要關閉 TCP 連線。

圖片3-1.jpg

四、常用功能碼

  • 01:讀取線圈狀態(讀取離散輸入)
  • 02:讀取輸入狀態(讀取輸入暫存器)
  • 03:讀取持倉登記冊(讀取持倉登記冊的價值)
  • 04:讀取輸入暫存器(讀取輸入暫存器的值)
  • 05:寫入單線圈
  • 06:寫入單一暫存器
  • 15:編寫多個線圈
  • 16:寫入多個暫存器
  • 17:寫入多個暫存器(含掩碼)

五分之三預防措施

  • 確保伺服器端的 MODBUS TCP 服務已啟動,並且正在監聽正確的連接埠(預設連接埠為 502)。
  • 可能需要對防火牆和網路設定進行適當配置,以允許 TCP 流量通過指定連接埠。
  • 使用正確的設備識別碼和功能代碼與設備通訊。
  • 由於其簡單性和廣泛的兼容性,MODBUS TCP 已被廣泛應用於工業自動化和監控系統。透過正確的實施和配置,可以有效地實現設備間的遠端通訊和管理。