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中的每個查詢,都會有一個響應。
-
以太網
+關注
關注
41文章
5682瀏覽量
176227 -
CRC校驗
+關注
關注
0文章
84瀏覽量
15618 -
MODBUS總線
+關注
關注
0文章
25瀏覽量
10184 -
可編程邏輯控制器
+關注
關注
4文章
271瀏覽量
26319 -
TCP通信
+關注
關注
0文章
146瀏覽量
4567
發布評論請先 登錄
什么是Modbus通訊協議?Modbus通訊協議有什么特點?
無線ModBus實訓套件應用方案
Modbus TCP轉Modbus RTU的實現
基于Modbus RTU的串口調試軟件的實現
自動化行業的Modbus TCP和PROFINET
Labview的Modbus通信分享
亞信AX58200 EtherCAT轉Modbus TCP網關解決方案介紹視頻
Modbus on AT32 MCU
如何快速實現Modbus RTU和Modbus TCP協議轉換?
Modbus通訊協議的幾種實現方式
AB PLC 與MODBUS 網絡的通信The commun
Modbus通訊協議應用架構及案例介紹

評論