Modbus 是一種基于主/從或客戶端/服務(wù)器架構(gòu)的請求-響應(yīng)協(xié)議。在主從關(guān)系中,通信總是成對發(fā)生的。一個設(shè)備必須發(fā)起請求,然后等待響應(yīng)。發(fā)起設(shè)備(稱為主設(shè)備)負(fù)責(zé)發(fā)起每個交互。通常,主設(shè)備是HMI或SCADA系統(tǒng),從設(shè)備是傳感器、可編程邏輯控制器(PLC)或可編程自動控制器(PAC)。該標(biāo)準(zhǔn) Modbus 網(wǎng)絡(luò)中,有一個主站和多達 247 個從站。每個從站都有一個從 1 到 247 的唯一從站地址。
2. Modbus 協(xié)議
目前modbus協(xié)議主要用于串口和以太網(wǎng)版本。對于串口連接,有modbus RTU和mobus ASCII兩種協(xié)議,在數(shù)據(jù)和協(xié)議細(xì)節(jié)上略有不同。對于 modbus TCP 等以太網(wǎng)連接,不需要驗證和計算。
2.1 Modb us 數(shù)據(jù)傳輸模式
1) Modbus RTU
它用于串行通信,并利用緊湊的二進制數(shù)據(jù)來表示協(xié)議通信。RTU 格式遵循命令/數(shù)據(jù),帶有循環(huán)冗余校驗校驗和作為錯誤校驗機制,以確保數(shù)據(jù)的可靠性。Modbus RTU 是可用于 Modbus 的最常見實現(xiàn)。Modbus RTU 消息必須連續(xù)傳輸,字符間沒有猶豫。Modbus 消息由空閑(靜默)時段構(gòu)成(分隔)。
2) Modbus ASCII
它用于串行通信,并利用 ASCII 字符進行協(xié)議通信。ASCII 格式使用縱向冗余校驗和。Modbus ASCII 消息由前導(dǎo)冒號 (":") 和尾隨換行符 (CR/LF) 構(gòu)成。
3) Modbus TCP
它是一種 Modbus 變體,用于通過 TCP/IP 網(wǎng)絡(luò)進行通信,通過端口 502 連接。它不需要校驗和計算,因為較低層已經(jīng)提供校驗和保護。
2.2 Modbus ASCII、RTU 和 TCP 的區(qū)別
Modbus RTU 和 Modbus ASCII 使用相同的協(xié)議。唯一的區(qū)別是通過線路傳輸?shù)淖止?jié)在 RTU 中以二進制形式呈現(xiàn),而在 ASCII 中以可讀 ASCII 形式呈現(xiàn)。關(guān)于 RTU 需要注意的重要一點是 RTU 消息沒有 Start_of_text 指示。通信中的接收方使用“靜默”時間來確定新消息的開始。ASCII 確實有一個文本開始標(biāo)記。二進制消息比 ASCII 短,因此理論上傳輸/接收更快。
Modbus TCP 基本上是在以太網(wǎng)網(wǎng)絡(luò)中使用 TCP 接口的 Modbus RTU 協(xié)議。Modbus 數(shù)據(jù)結(jié)構(gòu)是使用 TCP/IP 協(xié)議中使用的是應(yīng)用層定義的。TCP協(xié)議,用于保證數(shù)據(jù)的正確接收和發(fā)送,IP是地址和路由信息。Modbus TCP 命令是以太網(wǎng) TCP/IP 包裝器中包含的 Modbus RTU 命令。Modbus TCP 的優(yōu)勢在于使用現(xiàn)有的以太網(wǎng)設(shè)備,這些設(shè)備部署廣泛且具有成本效益。