1.0 介紹
Modbus是由AEG-Modicon(莫迪康)公司開發(fā)的串行通信協(xié)議。它最初設(shè)計(jì)用于可編程邏輯控制器(PLC)。它是一種應(yīng)用層消息傳遞協(xié)議,運(yùn)行在開放系統(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è)串行總線的事實(shí)標(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)命令的機(jī)制。通過將Modbus協(xié)議作為數(shù)據(jù)包嵌入到其他網(wǎng)絡(luò)的協(xié)議中,通信可以在Modbus網(wǎng)絡(luò)上進(jìn)行,也可以在其他網(wǎng)絡(luò)(如以太網(wǎng))上進(jìn)行。
Modbus串行通信協(xié)議基于主/從原理,由主設(shè)備發(fā)起事務(wù)。該協(xié)議提供一個主設(shè)備和多達(dá)247個從設(shè)備。
Modbus的一些特性是固定的,一些特性是用戶可以選擇的。固定的特征是幀格式、幀序列、通信錯誤和異常條件的處理以及所執(zhí)行的功能??蛇x擇的特性是傳輸介質(zhì)和傳輸特性。用戶特征一旦設(shè)置,在系統(tǒng)運(yùn)行時就不能更改。
2.0 通信棧
Modbus的實(shí)現(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物理層實(shí)現(xiàn)Modbus通信棧的過程。
3.0 網(wǎng)絡(luò)結(jié)構(gòu)
Modbus網(wǎng)絡(luò)架構(gòu)方案如下圖所示。
不同的設(shè)備,如PLC、人機(jī)界面(HMI)、輸入/輸出(I/O)等,可以通過單獨(dú)的網(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àn)樗鼰o法收到從響應(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)功能碼在查詢中從主站到達(dá)從站時,從站就會知道它必須采取的操作。從站所采取的動作的例子可能包括:讀取輸入狀態(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ù)牟僮?。主站所采取的行動可能是重?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 錯誤校驗(yàn)段
錯誤校驗(yàn)字段允許主站確認(rèn)從從站接收到的消息的完整性。所采用的錯誤校驗(yàn)方法取決于所選擇的傳輸模式。在遠(yuǎn)程終端單元(RTU)模式下,可以采用循環(huán)冗余檢查(CRC),或者,對ASCII模式的傳輸采用LRC。
接收設(shè)備收到完整消息后,計(jì)算錯誤校驗(yàn)值,并與收到的消息中的錯誤校驗(yàn)值進(jìn)行比較。如果兩者一致,則沒有發(fā)生錯誤并采取相應(yīng)的行動。如果兩個值不一致,接收到的消息將被拒絕。
5.0 協(xié)議說明:PDU 和 ADU
Modbus可以在不同類型的總線和網(wǎng)絡(luò)上實(shí)現(xiàn),但Modbus部分協(xié)議數(shù)據(jù)單元(PDU)必須包含該總線和網(wǎng)絡(luò)中。PDU由兩個字段組成:功能碼和數(shù)據(jù)。
兩種最常見的Modbus實(shí)現(xiàn)類型是以太網(wǎng)(TCP/IP)和串行通信,串行通信通可以是RS232、RS422或RS485。最常見的Modbus串行協(xié)議是Modbus-RTU。無論用于特定應(yīng)用程序的協(xié)議類型是什么,特定于應(yīng)用程序的尋址和錯誤校驗(yàn)都附加到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é)以一個包含兩個十六進(jìn)制數(shù)字的8位二進(jìn)制數(shù)的形式發(fā)送。
通過將Modbus數(shù)據(jù)封裝在TCP/IP報文中,Modbus報文也可以在局域網(wǎng)和廣域網(wǎng)中傳輸。
7.0 消息分幀
對于消息的傳輸,在其最終傳輸之前構(gòu)造一個幀。幀由開始字符和結(jié)束字符、單播設(shè)備地址或廣播設(shè)備地址、功能碼、數(shù)據(jù)和錯誤校驗(yàn)碼組成。
7.1 ASCII 分幀
Modbus ASCII 幀由六個字段組成,如下圖所示。
幀以冒號(:)開頭,它是ASCII字符3Ah, h表示十六進(jìn)制。幀以一個end結(jié)束,它是一個回車換行符,用兩個ASCII字符 0Dh和0Ah表示。中間其余四個字段用十六進(jìn)制字符 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)點(diǎn),如簡單、使用標(biāo)準(zhǔn)以太網(wǎng)、開放等。在單個站點(diǎn)上可以輕松實(shí)現(xiàn)超過1 kB/秒的傳輸速率。
Modbus TCP/IP是一種互聯(lián)網(wǎng)協(xié)議。它是一個TCP包裝過的Modbus協(xié)議。因此,Modbus設(shè)備可以通過Modbus TCP/IP進(jìn)行通信。網(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位十六進(jìn)制字節(jié)(在RTU模式下),這里被替換為IP地址和設(shè)備網(wǎng)絡(luò)標(biāo)識符。此外,Modbus幀中的16位校驗(yàn)和被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文章
5551瀏覽量
174304 -
CRC校驗(yàn)
+關(guān)注
關(guān)注
0文章
84瀏覽量
15473 -
MODBUS總線
+關(guān)注
關(guān)注
0文章
24瀏覽量
10129 -
可編程邏輯控制器
+關(guān)注
關(guān)注
4文章
269瀏覽量
26171 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4420
發(fā)布評論請先 登錄
什么是Modbus通訊協(xié)議?Modbus通訊協(xié)議有什么特點(diǎn)?
無線ModBus實(shí)訓(xùn)套件應(yīng)用方案
Modbus TCP轉(zhuǎn)Modbus RTU的實(shí)現(xiàn)
基于Modbus RTU的串口調(diào)試軟件的實(shí)現(xiàn)
自動化行業(yè)的Modbus TCP和PROFINET
Labview的Modbus通信分享
亞信AX58200 EtherCAT轉(zhuǎn)Modbus TCP網(wǎng)關(guān)解決方案介紹視頻
Modbus是什么?Modbus協(xié)議有哪些優(yōu)點(diǎn)
Modbus on AT32 MCU
如何快速實(shí)現(xiàn)Modbus RTU和Modbus TCP協(xié)議轉(zhuǎn)換?
Modbus通訊協(xié)議的幾種實(shí)現(xiàn)方式
AB PLC 與MODBUS 網(wǎng)絡(luò)的通信The commun
Modbus通訊協(xié)議應(yīng)用架構(gòu)及案例介紹

評論