一篇解讀 Modbus 協定:工業通訊的經典通用語言
在工業自動化領域,為了使不同品牌的PLC、感測器、變頻器和儀器等設備實現數據互通性和協同運行,統一的「通訊協定」至關重要——其中, Modbus協定 Modbus 是應用最廣泛、最經典的解決方案。從傳統工廠車間到現代工業物聯網系統,Modbus 因其簡潔性、開放性和穩定性,已成為工業設備的「通用語言」。
Ⅰ、什麼是 Modbus 協定?它的起源和核心目的是什麼?
Modbus協議由美國公司Modicon(現已被施耐德電氣收購)於1979年開發,用於其PLC產品之間的通訊。它是一種工業應用層通訊協議,其設計目標明確:解決不同製造商工業設備之間的互通性問題,使設備無需自訂驅動程式即可執行資料擷取和命令傳輸。從網路層角度來看,Modbus屬於OSI七層模型的應用層。它不指定底層實體傳輸介質,而是定義了資料交換訊框的格式、功能命令和回應規則。因此,它可以靈活地相容於RS-232、RS-485和乙太網路等各種實體層,滿足不同工業場景的通訊需求。
Ⅱ、Modbus核心架構:主從通訊模式
Modbus 採用主從架構,這是其核心通訊邏輯,也是其簡單易用的關鍵,更是理解幀格式的基礎——所有幀設計都是圍繞這種主從交互機制構建的。
罄主站:整個通訊網路的“指揮中心”,可以是PLC、工業PC、SCADA系統、物聯網閘道等,主動發起資料請求並發出控制命令。一個網路必須至少有一個主站(Modbus TCP支援多個主站),所有訊框均由主站啟動。
罄從設備:網路中的「執行器」(例如感測器、變頻器、儀器或執行器)被動地接收來自主站的命令,執行操作並返回回應訊框。網路中可以連接多個從設備,每個從設備都有一個唯一的位址(1-247),以便主站進行精確識別;非目標從設備將直接忽略接收到的訊框。
通訊過程極為簡單:主站發送請求訊框 → 對應的從站接收並解碼訊框內容 → 從站執行指令並傳回回應訊框。這種方法徹底消除了多設備通訊中的匯流排衝突,從而確保了最高的穩定性。
2.1 主站(主站)數量規則
Modbus RTU / ASCII(RS485 總線)
麋一輛公車上只能有一個主站。
罄不允許多個主站同時發送命令,因為這可能會導致匯流排衝突和資料損壞。
罄 主站會對所有從站進行輪詢,而從站永遠不會發起資料傳輸。
Modbus TCP(乙太網路)
麋理論上支援多個主站(多個客戶端同時連接到連接埠 502)。
霰在實際應用中,為了避免暫存器爭用和邏輯混亂,系統通常設計為只有一個主站進行控制。
罄多主場景通常透過網關、SCADA 系統或專用伺服器進行統一管理。
2.2 從屬數量規則
從屬設備的數量由其從屬位址(從屬 ID)決定:
罄位址範圍:1–247
罄位址 0:所有從裝置都已收到但未收到回應的廣播位址
罄位址 248–255:保留位址,通常不用於裝置識別。因此:
罄單一 Modbus RTU/ASCII 匯流排最多可支援 247 個從站
罄在實際應用中,由於485通訊能力、輪詢頻率和電纜長度等限制,從設備的最大數量通常限制在32個。
罄從機位址不能重複,因為重複會導致通訊異常和回應混亂。
2.3 實際工程中的典型數量配置
罄小規模採集場景:1個主站+4-16個從站(儀器設備/感測器)
罄中等規模現場應用:1 個主站 + 16-32 個從站(逆變器系統、PLC、電錶)
罄大規模多設備網路:採用多個485或序列埠伺服器,並採用擴充匯流排配置,每台伺服器包含1個主設備及多個從設備。
∗ Modbus TCP 應用場景:1 個伺服器 + 數十至數百個從設備
2.4 數量約束的基本局限性
麋串列匯流排(RS485)是一種半雙工共用匯流排,在任何給定時間只允許一個裝置傳送資料。
罄隨著從站數量的增加,主站的輪詢機制會導致刷新率降低。
悚固定的 1 位元組位址欄位將從裝置的最大數量限制為 247 個。
Ⅲ、Modbus三種主要變體的幀格式差異分析
根據底層傳輸介質和編碼方式的不同,Modbus 主要分為三種變體:RTU、ASCII 和 TCP。這些變體在應用層功能命令方面完全相容,其核心差異在於幀格式、編碼方式和奇偶校驗邏輯——這使得工程應用可以靈活選擇。下面,我們將詳細介紹每種變體的幀格式,並輔以實際範例以便於直觀理解。
3.1 Modbus RTU(最常用,主站金鑰)
Modbus RTU是工業領域應用最廣泛的串行通訊協定。它採用二進位編碼,具有資料傳輸緊湊、效率高、抗干擾能力強等優點,使其成為車間現場設備低成本、短距離聯網的理想選擇。
悚Transmission medium: RS-485 (主流), RS-232;
麋驗證方法:16 位元 CRC 驗證(確保資料傳輸完整性);
麋幀格式的核心特性:沒有開始/結束字元;幀邊界由幀間空閒時間(通常≥3.5個字元週期)決定。
Modbus RTU 幀格式(請求幀 + 回應幀):

| 場地 | 位元組計數 | 字段描述 | 範例(請求幀) |
| 從地址 | 1 位元組 | 從屬設備的唯一標識符,範圍從 1 到 247;0 是廣播位址(所有從屬設備都會收到,但不會做出回應)。 | 0x01(從站 1) |
| 功能代碼 | 1 位元組 | 定義主站操作類型,例如讀取暫存器和寫入線圈(稍後詳細解釋)。 | 0x03(讀取保持暫存器) |
| 資料欄位 | N 位元組(變數) | 請求幀:暫存器位址、讀取/寫入次數;回應幀:返回資料、狀態資訊 | 0x00 0x00(起始暫存器位址 0),0x00 0x02(讀取兩個暫存器) |
| 大腸直腸癌 | 2 位元組 | 16 位元循環冗餘校驗,覆蓋從從機位址到資料欄位的所有位元組,低位元在前,高位元在後。 | 0x95 0xCB(對應上述欄位的 CRC 校驗值) |
完整範例分解:請求幀【0x01 0x03 0x00 0x00 0x00 0x02 0x95 0xCB】
分析:主站向位址為 1 的從站發送「讀取保持暫存器」指令,從位址 0 開始讀取兩個暫存器,得到 CRC 校驗和為 0x95CB。如果從站響應正常,則傳回一個回應幀,其中包含其位址、功能碼、資料長度、暫存器資料和 CRC 校驗和。
3.2 Modbus ASCII Modbus ASCII 採用 ASCII 字元編碼,訊息以冒號 (:) 開頭,以回車符 (CRLF,0x0D 0x0A) 結尾。它具有極佳的可讀性,並且可以透過串列埠檢視器直接查看,以便於除錯。然而,由於其數據冗餘度高且傳輸效率低,因此在實際工業部署中很少使用。
驗證方法:LRC 驗證(垂直奇偶校驗);
幀格式:

| 場地 | 位元組計數 | 字段描述 | 範例(對應於RTU範例) |
| 開始 | 1 位元組 | 修復冒號(:,0x3A) | : |
| 車站地址
| 2位元組(ASCII碼) | 一個 1 位元組的十六進位數,轉換為 2 個 ASCII 字符 | 01(對應於 0x01) |
| 功能代碼 | 2位元組(ASCII碼) | 一個 1 位元組的十六進位數,轉換為 2 個 ASCII 字符 | 03(對應於 0x03) |
| 資料欄位 | 2N 位元組(ASCII 碼) | 將每個位元組的資料轉換為 2 個 ASCII 字符 | 00000002(對應於 0x00 0x00 0x00 0x02) |
| 學習資源中心 | 2位元組(ASCII碼) | 8 位元 LRC 校驗,涵蓋從站點位址到資料欄位的 ASCII 字符,轉換為 2 個 ASCII 字符 | 38(對應 LRC 校驗和 0x38) |
| 結尾 | 2位元組 | 固定為回車符 (0x0D) + 換行符號 (0x0A) | CR+LF |
顯然,ASCII 幀比 RTU 幀包含更多的冗餘數據(對於相同的數據,ASCII 幀需要的位元組數幾乎是 RTU 幀的兩倍),因此它們只適用於調試、故障排除和低速通訊場景。
3.3 Modbus TCP(工業互聯網的主流)
Modbus TCP 是基於乙太網路 TCP/IP 協議,是工業互聯網時代的首選協定。它具有傳輸速度快、傳輸距離不受限制、相容於區域網路和互聯網、預設使用 502 連接埠以及支援多主站通訊等優點。
主要特性:無需CRC/LRC校驗(因為它依賴TCP層的可靠傳輸機制)。傳統的RTU訊框增加了一個「MBAP幀頭」(Modbus應用協定幀頭),用於在TCP通訊中識別Modbus幀。
Modbus TCP 幀格式(MBAP 頭部 + RTU 核心幀):

| 場地 | 位元組計數 | 字段描述 | 例子 |
| 交易 ID | 2 位元組 | 用於標識通訊事務,當主站發起通訊時,此值遞增;當從站回應時,此值保持不變。 | 0x00 0x01 |
| 協議 ID | 2 位元組 | 設定為 0x00 0x00,表示 Modbus TCP 協定 | 0x00 0x00 |
| 長度 | 2 位元組 | 表示後續位元組數(從機位址+功能碼+資料欄位),即「1+1+N」。 | 0x00 0x06(後續 6 個位元組:1+1+4) |
| 從地址 | 1 位元組 | 與RTU一致,範圍1-247 | 0x01 |
| 功能代碼 | 1位元組 | 與RTU一致,定義操作類型 | 0x03 |
| 資料欄位 | N 位元組(變數) | 與RTU一致,請求幀/回應幀的資料格式相同。 | 0x00 0x00 0x00 0x02 |
完整範例分解:TCP幀【0x00 0x01 0x00 0x00 0x00 0x06 0x01 0x03 0x00 0x00 0x00 0x02】
分析:交易 ID 為 0x0001,協定 ID 為 0x0000,後續資料長度為 6 位元組。向位址 1 的從裝置發送「讀取保持暫存器」指令,從位址 0 開始讀取兩個暫存器。從裝置回應後,MBAP 頭部中的交易 ID 和協定 ID 與請求匹配,長度欄位根據傳回的資料進行調整。
Ⅳ、Modbus核心訊息:功能代碼和資料欄位的詳細說明
在所有Modbus協定中,訊框的核心都由「功能碼+資料欄位」構成:功能碼指定操作類型,而資料欄位提供操作細節。它們共同實現了主設備和從設備之間的精確通訊。本節重點介紹高頻實用功能碼,並輔以資料欄位格式,協助您快速上手開發與除錯。
4.1 常用功能代碼(開發必備)
功能碼為 1 字節,範圍從 0x01 到 0xFF。值 0x01–0x10 表示常見的標準功能碼,而高於 0x80 的程式碼表示異常回應碼(最高有效位元為 1,表示從裝置指令執行失敗)。
| 功能代碼 | 函數聲明 | 適用資料型 | 資料欄位格式(請求框架) |
| 0x01(讀取線圈) | 讀取從動線圈的狀態(數位輸出) | 開關值(0 = 打開,1 = 關閉) | 起始線圈位址(2 位元組)+ 讀取次數(2 位元組) |
| 0x02(讀取輸入狀態) | 讀取從站輸入狀態(數位輸入) | 開關值(唯讀) | 初始輸入位址(2 位元組)+ 讀取次數(2 位元組) |
| 0x03(讀取保持暫存器) | 讀取從機保持暫存器資料(最常用) | 類比量、設備參數(可讀寫) | 起始暫存器位址(2 位元組)+ 讀取計數(2 位元組) |
| 0x04(讀取輸入暫存器) | 從從屬輸入暫存器讀取數據 | 模擬值(唯讀,例如感測器讀數) | 起始暫存器位址(2 位元組)+ 讀取計數(2 位元組) |
| 0x05(寫入一個單線圈) | 控制單一線圈的開/關狀態 | 切換輸出 | 線圈位址(2 位元組)+ 控制值(2 位元組:0x0000 = 打開,0xFF00 = 關閉) |
| 0x06(寫入單一保持暫存器) | 設定單一保持暫存器的值 | 設備參數(例如,逆變器頻率、感測器閾值) | 暫存器位址(2 位元組)+ 設定值(2 位元組) |
| 0x10(寫入多個保持暫存器) | 批量設定保留暫存器的多個值 | 批量配置多個設備參數 | 起始位址(2 位元組)+ 數量(2 位元組)+ 資料長度(1 位元組)+ 批次資料(2 × 數量位元組) |
4.2 異常響應幀格式
當從站無法執行主站的指令時(例如,由於位址不正確、不支援的功能碼或資料超出範圍),它會傳回一個異常回應幀,其特點是“功能碼位置 1 最高”,並在資料欄位中攜帶一個異常碼。
異常回應訊框結構(以 RTU 為例):站點位址(1 位元組)+ 異常功能碼(1 位元組,原始功能碼 + 0x80)+ 異常碼(1 位元組)+ CRC 校驗碼(2 位元組)。
常見錯誤代碼:0x01(功能不支援)、0x02(暫存器位址不存在)、0x03(資料長度錯誤)、0x04(從裝置故障)。
Ⅴ、Modbus協定的優勢及應用場景
為什麼工業應用偏愛 Modbus?關鍵在於其「簡單、通用、低成本」的特點,以及簡潔的幀格式和極低的開發調試複雜度。
核心優勢:
麋簡單易實現:框架結構簡潔,嵌入式開發適配所需的程式碼量極少,無需複雜的協定棧開發;
罄開源且免費:不收取專利費,中小型製造商和專案可以免費使用,從而降低設備整合成本;
罄 優秀的兼容性:市場上超過 90% 的工業設備原生支援 Modbus,可實現跨品牌無縫整合;
罄廣泛的適應性:序列版本(RTU/ASCII)適用於現場匯流排,而TCP版本專為乙太網路連接而設計,涵蓋從設備層到管理階層的所有場景;
麋穩定可靠:主從模式可防止通訊衝突,奇偶校驗機制(CRC/LRC)可確保資料準確性,使其適用於複雜的工業電磁環境。
常見應用場景:
罄工業自動化生產線:PLC透過Modbus RTU收集溫度、濕度和壓力感測器數據,控制變頻器和繼電器。
罄智慧樓宇自動化:樓宇系統透過 Modbus 監控空調、抽水機和電錶,實現能耗監控和設備控制。
悚新能源領域:光電逆變器和充電站透過 Modbus TCP 傳輸運作數據,以便進行遠端監控。
罄物聯網數據收集:工業閘道透過 Modbus 收集現場設備數據,對其進行轉換,然後將其上傳到雲端平台。
Ⅵ、Modbus協議的限制和發展趨勢
雖然 Modbus 具有顯著優勢,但也存在一些局限性,主要體現在安全性和即時效能方面:
罄安全性不足:傳統的 Modbus 缺乏加密機制,以明文形式傳輸數據,容易被篡改和竊取,因此不適合高安全性的場景;
罄平均即時效能:序列版本(RTU/ASCII)採用主站輪詢方法,導致多從配置中的回應延遲增加。
為了滿足現代工業的需求,Modbus 不斷升級:
罄Modbus 安全協定:採用加密和認證機制,增強通訊安全性,降低明文傳輸帶來的風險;
麋整合解決方案:Modbus + MQTT/OPC UA 可實現傳統 Modbus 設備與工業互聯網的無縫集成,從而實現基於雲端的管理;
罄硬體優化:越來越多的MCU現在都內建了Modbus控制器,顯著降低了開發複雜性並提高了通訊效率。
儘管工業乙太網路協定(例如 Profinet、EtherNet/IP)層出不窮,但由於 Modbus 具有簡單、通用和低成本等優點,它仍然是中小型工業專案和設備資料收集的首選協議,並因此贏得了工業通訊領域「常青」解決方案的美譽。
Ⅶ、概括
對於工業自動化和物聯網開發領域的專業人員來說,Modbus協議是一項必須掌握的基本技能,而其幀格式則是核心組成部分。透過理解RTU、ASCII和TCP這三種變體的幀結構,並掌握功能碼和資料欄位的含義,可以輕鬆應對設備調試、訊息解析和開發適配等任務。










