1.0 介紹
Modbus是由AEG-Modicon(莫迪康)公司開發的串行通信協議。它最初設計用于可編程邏輯控制器(PLC)。它是一種應用層消息傳遞協議,運行在開放系統互連(OSI)協議模型的第7層,提供連接在不同類型網絡上的設備之間的客戶端-服務器通信。
Modbus協議層如下圖所示,它定義了一種通過另一設備訪問和控制設備的方法,而不考慮所涉及的物理網絡的類型。
Modbus不需要接口,就像許多其他總線一樣。用戶可以選擇RS-422, RS-485或20 mA電流回路。與其他總線相比,Modbus速度相對較慢,但在控制儀表制造商和用戶中被廣泛接受,具有決定性優勢。
自1979年以來,Modbus成為工業串行總線的事實標準。Modbus沒有正式的認證方式,制造商的責任是確認他們的產品與Modbus設備兼容。協議描述了一個設備訪問另一個設備的方式,如何接收信息,以及如何響應查詢。在出現錯誤的情況下,協議提供了一種向用戶發送相應命令的機制。通過將Modbus協議作為數據包嵌入到其他網絡的協議中,通信可以在Modbus網絡上進行,也可以在其他網絡(如以太網)上進行。
Modbus串行通信協議基于主/從原理,由主設備發起事務。該協議提供一個主設備和多達247個從設備。
Modbus的一些特性是固定的,一些特性是用戶可以選擇的。固定的特征是幀格式、幀序列、通信錯誤和異常條件的處理以及所執行的功能。可選擇的特性是傳輸介質和傳輸特性。用戶特征一旦設置,在系統運行時就不能更改。
2.0 通信棧
Modbus的實現方法如下:
- 以太網上的傳輸控制協議(TCP)/互聯網協議(IP)。
- 異步串行傳輸在不同的媒質,如:EIA/TIA-232E, EIA-422, EIA/TIA-485-A; 光纖, 無線通信等.
- Modbus Plus — 一種高速令牌傳遞方法。
下圖,展示了使用TCP/IP、主/從和Modbus Plus物理層實現Modbus通信棧的過程。
3.0 網絡結構
Modbus網絡架構方案如下圖所示。
不同的設備,如PLC、人機界面(HMI)、輸入/輸出(I/O)等,可以通過單獨的網關連接到Modbus TCP/IP。不同的Modbus協議,即MB+上的Modbus, RS-232上的Modbus,RS-485上的Modbus通過TCP/IP發起遠程通信。
4.0 通信事務
Modbus串行通信采用主/從協議。主站發起查詢,從站通過向主站提供必要的數據或根據請求采取適當的操作來響應。 從站的響應如下:
- 采取適當的行動
- 向主站提供必要的數據/信息
- 通知主站,必要的行動無法執行。
當從站無法按照主站的請求執行所需的操作時,將向主站發送一條錯誤消息(稱為異常響應)。對主站的異常響應包含以下內容:
- 響應從站的地址
- 從站被請求執行的動作和
- 說明行動為什么不能執行。
如果消息包含錯誤,從站會忽略它。在這種情況下,因為它無法收到從響應的響應,主站將查詢重發給從站。
4.1. 主/從和廣播通信
主站可以一個一個地對從站尋址(單播模式),也可以同時給所有從站尋址(廣播模式)。從站響應單播消息,但不響應多播消息。主/從通信和廣播通信方式分別如下圖所示:
4.2 查詢響應周期
查詢由主站發起,從站響應它。查詢響應周期是Modbus網絡中所有通信事務的基礎。來自主站的查詢包含四部分:設備地址、功能碼、數據/消息和錯誤檢查碼。從站的響應結構與主站的響應結構相同。下圖顯示了查詢響應周期。
4.2.1 地址段
主站在其查詢中發送的地址字段包含消息所指向的從站的地址。取值范圍為 1到247。當從站發送它的響應時,它將自己的地址放在它的地址字段中,以便主站可以知道正確的從站正在響應。地址0指定用于廣播。所有從站都讀取它們,但不向來自主站的查詢提供任何響應。
4.2.2 功能段
雖然不是所有設備都支持所有的功能碼,但是功能碼的取值范圍是1 ~ 255。當功能碼在查詢中從主站到達從站時,從站就會知道它必須采取的操作。從站所采取的動作的例子可能包括:讀取輸入狀態,讀取寄存器內容,改變從站內的狀態,操作繼電器線圈等。
當從站向主站發送響應時,它重復接收到的佛南功能碼。它表示從站已經理解了來自主站的查詢并采取了相應的行動。如果從站無法執行指令,則生成異常響應,從站使用功能碼和數據字段將異常的原因告知主站。
在生成異常響應的情況下,從站將原始功能碼返回給主站,但將MSB設置為1。在這種情況下,從站的響應消息的數據字段向主站指示所發生的錯誤的性質。因此,主站可以基于此采取適當的操作。主站所采取的行動可能是重復原始消息,或嘗試診斷問題,或設置警報等。
4.2.3 數據段
查詢中從站接收到的數據字段通常包括寄存器值、寄存器地址或寄存器范圍。有些功能不需要數據字段,此時,來自主站的查詢中不包含d數據字段。
如果沒有發生錯誤,則從站使用響應的數據字段將數據傳遞回主主站。當錯誤發生時,從站的數據字段傳遞更多的信息,告知主站所檢測到的錯誤的性質。
Modbus本身不編碼數據,因此可以采用許多編碼方案。用戶可以就網絡通訊協議做出選擇。
4.2.4 錯誤校驗段
錯誤校驗字段允許主站確認從從站接收到的消息的完整性。所采用的錯誤校驗方法取決于所選擇的傳輸模式。在遠程終端單元(RTU)模式下,可以采用循環冗余檢查(CRC),或者,對ASCII模式的傳輸采用LRC。
接收設備收到完整消息后,計算錯誤校驗值,并與收到的消息中的錯誤校驗值進行比較。如果兩者一致,則沒有發生錯誤并采取相應的行動。如果兩個值不一致,接收到的消息將被拒絕。
5.0 協議說明:PDU 和 ADU
Modbus可以在不同類型的總線和網絡上實現,但Modbus部分協議數據單元(PDU)必須包含該總線和網絡中。PDU由兩個字段組成:功能碼和數據。
兩種最常見的Modbus實現類型是以太網(TCP/IP)和串行通信,串行通信通可以是RS232、RS422或RS485。最常見的Modbus串行協議是Modbus-RTU。無論用于特定應用程序的協議類型是什么,特定于應用程序的尋址和錯誤校驗都附加到PDU上,從而產生應用程序數據單元(ADU)。如下圖所示,ADU表示Modbus幀。
6.0 傳輸模式
在Modbus網絡中傳輸串行數據有兩種傳輸方式:RTU和ASCII。它們在許多方面有所不同:在消息字段中包裝信息的方式、解釋消息的比特內容的方式、解碼消息的方式以及在給定波特率下的操作速度。
不同的模式不能同時使用,用戶可以為特定的應用程序選擇特定的模式。RTU模式比ASCII模式更快、更健壯。因此,在消息傳輸方面,它比ASCII形式有更多的應用
RTU傳輸模式有時被稱為Modbus-B, ASCII傳輸模式被稱為Modbus-A。ASCII模式下的典型消息長度大約是等效RTU消息長度的兩倍。 在ASCII傳輸模式下,消息中的每個字節以兩個ASCII字符的形式傳輸,在RTU傳輸模式下,消息中的每個字節以一個包含兩個十六進制數字的8位二進制數的形式發送。
通過將Modbus數據封裝在TCP/IP報文中,Modbus報文也可以在局域網和廣域網中傳輸。
7.0 消息分幀
對于消息的傳輸,在其最終傳輸之前構造一個幀。幀由開始字符和結束字符、單播設備地址或廣播設備地址、功能碼、數據和錯誤校驗碼組成。
7.1 ASCII 分幀
Modbus ASCII 幀由六個字段組成,如下圖所示。
幀以冒號(:)開頭,它是ASCII字符3Ah, h表示十六進制。幀以一個end結束,它是一個回車換行符,用兩個ASCII字符 0Dh和0Ah表示。中間其余四個字段用十六進制字符 0-9和A-F表示。
ASCII模式允許兩個連續傳輸之間的間隔為1秒,而不會產生任何錯誤。連接到Modbus網絡的所有設備持續監視冒號字符,冒號字符將代表ASCII字符的開始。如果一個特定的設備發現與它自己的地址匹配,那么它將開始解碼功能代碼和其他字段,并采取相應的行動。
7.2 RTU 分幀
在這種模式下,消息幀以至少3.5倍字符長度的靜默時間間隔開始。消息以相同的3.5倍字符長度的時間間隔結束。在開始字段之后,接收設備將監聽地址字段,以了解消息是否要發送到該設備。RTU幀格式如下圖所示。整個消息幀必須在一個連續流中傳輸,否則將產生錯誤。
8.0 Modbus TCP/IP
開放的Modbus TCP/IP規范于1999年引入。使用Modbus TCP/IP協議有幾個優點,如簡單、使用標準以太網、開放等。在單個站點上可以輕松實現超過1 kB/秒的傳輸速率。
Modbus TCP/IP是一種互聯網協議。它是一個TCP包裝過的Modbus協議。因此,Modbus設備可以通過Modbus TCP/IP進行通信。網關設備只需要從物理層(RS-232、RS-485或其他)轉換到以太網,并將Modbus協議轉換為Modbus TCP/IP。
下圖 (a,b)顯示了Modbus TCP/IP協議層以及OSI層,以及分別封裝在Modbus TCP/IP框架中的Modbus幀:
常規的Modbus幀包含設備地址的任意兩個ASCII碼(在ASCII模式下)或8位十六進制字節(在RTU模式下),這里被替換為IP地址和設備網絡標識符。此外,Modbus幀中的16位校驗和被Modbus TCP/IP幀中的TCP的32位CRC所取代。
將Modbus協議的主/從架構修改為Modbus TCP/IP中的客戶端-服務器架構。由于TCP是面向連接的協議,對于Modbus TCP/IP中的每個查詢,都會有一個響應。
-
以太網
+關注
關注
40文章
5458瀏覽量
172344 -
CRC校驗
+關注
關注
0文章
84瀏覽量
15253 -
MODBUS總線
+關注
關注
0文章
22瀏覽量
10041 -
可編程邏輯控制器
+關注
關注
4文章
268瀏覽量
25966 -
TCP通信
+關注
關注
0文章
146瀏覽量
4269
發布評論請先 登錄
相關推薦
評論