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