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)符號結束,允許的傳輸的字符集為十六進制的09和AF;網路中的從設備監視傳輸通路上是否有英文冒號(“:”),如果有的話,就對訊息幀進行解碼,查看訊息中的地址是否與自己的地址相同,如果相同的話,就接收其中的資料;如果不同的話,則不予理會,

在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 模式去除了附加地址和校驗,增加了報文頭

多年從業積累的工控檔案資料供君免費下載
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/341852.html
標籤:其他
