詳細解讀Modbus RTU、Modbus ASCII、Modbus TCP的區別


Modbus 是Modicon公司於1979年開發的串行通信協議。它最初設計用於公司的可編程邏輯控制器(PLC)。 Modbus是一種開放式協議,支持使用RS232/RS485/RS422協議的串行設備。 它的簡單性以及制造商可以免費將其納入其產品的事實使其成為連接工業電子設備的最流行的方法。

采用Modbus協議時,有兩種主要的傳輸方式。 它們是 Modbus RTU 和 Modbus ASCII. 本文旨在成為一個高級Modbus ASCII教程。 我們將首先概述與協議的ASCII和RTU實現相關的Modbus。

Modbus解決了通過串行線路在電子設備之間發送信息的問題。 該協議在遵循該協議的體系結構中實現 主/從模型. Modbus主站負責從其他設備請求信息。 標准Modbus網絡中有一個Modbus主站。

 

主設備從從設備請求信息,最多可達247個 . 每個從設備由1到247之間的從設備地址標識。主設備查詢從設備並接收從設備返回的信息的過程是 Modbus通信的意思. 除了從從設備請求信息之外,主設備還可以寫入從設備的內部寄存器。

串行數據在比特流中的設備之間交換,其中每個比特是電壓。 二進制數據用1表示,用負電壓表示,零用正電壓表示。

Modbus協議定義了功能代碼和編碼方案,用於將數據傳輸為單點(1位,線圈)或16位數據寄存器。 根據使用的傳輸方法封裝數據包。 Modbus協議使用四個不同的表來存儲從設備中的數據。 存在兩個存儲離散開或關值的線圈和兩個存儲數值的寄存器。 對於Modbus ASCII,消息使用ASCII字符集傳遞,使人們更容易閱讀。

MODBUS的ASCII協議和RTU協議相比,MODBUS ASCII協議擁有開始和結束標記,而MODBUS RTU卻沒有,所以ASCII協議的程序中對數據包的處理能更加方便。MODBUS ASCII協議的DATA域傳輸的都是可見的ASCII字符,因此在調試階段就顯得更加直觀,另外它的LRC校驗程序也比較容易編寫,這些都是MODBUS ASCII的優點。MODBUS ASCII的主要缺點是傳輸效率低,因為它傳輸的都是可見的ASCII字符,原來用RTU傳輸的數據每一個字節,用ASCII的話都要把這個字節拆分兩個字節,比如RTU傳輸一個十六進制數0xF9,ASCII就需要傳輸字符'F'和字符'9',對應的ASCII碼0x46和0x39兩個字節,這樣它的傳輸的效率肯定就比RTU低。所以一般來說,如果所需要傳輸的數據量較小可以考慮使用ASCII協議,如果所需傳輸的數據量比較大,最好能使用RTU協議。

還有一種Modbus要考慮的東西,那就是Modbus TCP。 這只是在TCP / IP網絡上運行的Modbus的實現。 Modbus ASCII和Modbus TCP之間的主要區別在於,Modbus ASCII所需的LRC錯誤檢查由IP層執行。

1、Modbus ASCII

在ASCII(AmericanStandard Code for Information Interchange)傳輸模式下,消息幀以英文冒號(“:”,ASCII3A Hex)開始,以回車和換號(CRLF,ASCII 0D and 0A Hex)符號結束,允許的傳輸的字符集為十六進制的0~9和A~F;網絡中的從設備監視傳輸通路上是否有英文冒號(“:”),如果有的話,就對消息幀進行解碼,查看消息中的地址是否與自己的地址相同,如果相同的話,就接收其中的數據;如果不同的話,則不予理會。

 

在ASCII模式下,每個8位的字節被拆分成兩個ASCII字符進行發送,比如十六進制數0xAF ,會被分解成ASCII字符“A”和“F”進行發送,發送的字符量比RTU增加一倍。ASCII模式的好處是允許兩個字符之間間隔的時間長達1s而不引發通信故障,該模式采用縱向冗余校驗(Longitudinal Redundancy Check ,LRC)) 的方法來檢驗錯誤.

2、Modbus RTU

在RTU(RemoteTerminal Unit)模式下,每個字節可以傳輸兩個十六進制字符,比如十六進制數0xAF,直接以十六進制0xAF(二進制:10101111)進行發送,因此它的發送密度比ASCII模式高一倍;RTU模式采用循環冗余校驗(CRC),下面是對RTU模式的總結:

具體格式如圖 所示。

 

3、Modbus TCP

modbus TCP和modbus RTU基本相同,但是也存在一些區別

a.從機地址變得不再重要,多數情況下忽略。從某種意義上說從機地址被IP地址取代

b.CRC校驗變得不再重要,甚至可以忽略。由於TCP數據包中已經存在校驗,為了不重復造輪子,modbus TCP干脆取消了CRC校驗。

TCP 模式是為了讓Modbus 數據順利在以太網上傳輸產生的,使用TCP502 端口。該協議物理層,數據鏈路層,網絡層,傳輸層都是基於TCP 協議,只在應用層,將Modbus 協議修改后封裝進去; 接收端將該TCP 數據包拆封后,重新獲得原始Modbus 幀,然后按照Modbus 協議規范進行解析,並將返回的數據包重新封裝進TCP 協議中,返回到發送端。與串行鏈路傳輸的數據格式不同,TCP 模式去除了附加地址和校驗,增加了報文頭

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM