0102030405
MODBUS_TCP 通訊協定詳解
2026-02-08
我。協議概述
MODBUS TCP MODBUS TCP(傳輸控制協定)是一種廣泛應用於工業環境中的串行通訊協議,最初是為透過串行通訊線路連接的設備而設計的。然而,隨著時間的推移,MODBUS TCP 也逐漸成為透過網路(通常是乙太網路)連接的設備的主流通訊協定。 MODBUS TCP 允許設備透過網路進行通信,從而實現遠端監控和控制。
Modbus-TCP 是基於 TCP/IP 協定堆疊的乙太網路 Modbus 協定實作。它保留了 Modbus 的核心功能(例如資料模型和操作碼),但將資料封裝在 TCP/IP 資料包中,並利用 TCP 的可靠性來確保資料傳輸的準確性。
二、MODBUS TCP協定的基本結構
- 客戶端/伺服器模型:
- 客戶端(通常是 PC、PLC 或其他控制設備)發起連線並傳送請求。
- 伺服器(通常是受控設備或從屬設備)接收請求並回傳回應。
通訊採用客戶端-伺服器模型,其中客戶端(主站)主動發起請求,伺服器(從站)做出回應。預設連接埠為502。

2.交易結構:
- 交易 ID:用於區分不同的請求和回應。
- 協定 ID:通常為 0,用於識別 MODBUS 協定。
- 長度:資料長度欄位。
- 單元標識符:由設備的位址派生而來。
- 功能碼:指示請求類型(例如讀取/寫入暫存器)。
- 數據:與函數程式碼相關的具體數據。
- 錯誤驗證:用於驗證資料的完整性。
3.資料框結構:
資料封裝在 TCP/IP 封包中,由兩部分組成:MBAP 訊息頭和 PDU(協定資料單元)。
- MBAP 電報頭(7 位元組):交易標識符、協定標識符、長度和單元標識符。
交易識別碼(2 位元組):唯一標識請求-回應對,確保匹配。
協定標識符(2 位元組):固定為 0x0000,表示 Modbus-TCP。
長度欄位(2 位元組):指示後續 PDU 的位元組數(包括單元識別碼和功能代碼)。
單元識別碼(1 位元組):相當於從位址,用於標識網路上的裝置。
- PDU(協定資料單元):功能代碼和數據,與 Modbus-RTU 相同。
功能碼(1 位元組):定義操作類型(例如讀取/寫入線圈或暫存器)。
資料:長度可變,包含操作所需的位址和值。

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

四、常用功能碼
- 01:讀取線圈狀態(讀取離散輸入)
- 02:讀取輸入狀態(讀取輸入暫存器)
- 03:讀取持倉登記冊(讀取持倉登記冊的價值)
- 04:讀取輸入暫存器(讀取輸入暫存器的值)
- 05:寫入單線圈
- 06:寫入單一暫存器
- 15:編寫多個線圈
- 16:寫入多個暫存器
- 17:寫入多個暫存器(含掩碼)
五分之三預防措施
- 確保伺服器端的 MODBUS TCP 服務已啟動,並且正在監聽正確的連接埠(預設連接埠為 502)。
- 可能需要對防火牆和網路設定進行適當配置,以允許 TCP 流量通過指定連接埠。
- 使用正確的設備識別碼和功能代碼與設備通訊。
- 由於其簡單性和廣泛的兼容性,MODBUS TCP 已被廣泛應用於工業自動化和監控系統。透過正確的實施和配置,可以有效地實現設備間的遠端通訊和管理。










