常用的MODBUS通訊規(guī)約有兩種,一種是MODBUS ASCII模式,一種是MODBUS RTU模式。每個設備必須都有相同的傳輸模式。所有設備都支持RTU模式,ASCII傳輸模式是選項,那么ASCII模式和RTU模式有什么區(qū)別呢?
Modbus協議特點:
(1)標準、開放,用戶可以免費、放心地使用Modbus協議,不需要交納許可證費,也不會侵犯知識產權。目前,支持Modbus的廠家超過400家,支持Modbus的產品超過600種。
(2)Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質上傳送,如雙絞線、光纖、無線等。
(3)Modbus的幀格式簡單、緊湊,通俗易懂。用戶使用容易,廠商開發(fā)簡單。
1、ASCII模式
Modbus串行鏈路的設備被配置為使用ASCII模式通信時,報文中的每8位字節(jié)以兩個ASCII字符發(fā)送。例:字節(jié)0X5B會被編碼為兩個字符:0x35和0x42進行傳送(ASCII編碼0x35="5",0x42="B"),這樣傳輸效率會降低。
在ASCII模式,報文用特殊的字符區(qū)分幀起始和幀結束。一個報文必須以一個‘冒號’(:)(ASCII十六進制3A)起始,以‘回車-換行’(CRLF)對(ASCII十六進制0D和0A)結束。設備連續(xù)的監(jiān)視總線上的‘冒號’字符。當收到這個字符后,每個設備解碼后續(xù)的字符一直到幀結束。報文中字符間的時間間隔可以達一秒。如果有更大的間隔,則接受設備認為發(fā)生了錯誤。
當控制器設為在Modbus網絡上以ASCII(美國標準信息交換代碼)模式通信,在消息中的每個8Bit字節(jié)都作為兩個ASCII字符發(fā)送。這種方式的主要優(yōu)點是字符發(fā)送的時間間隔可達到1秒而不產生錯誤。
代碼系統(tǒng)
十六進制,ASCII字符0...9,A...F
消息中的每個ASCII字符都是一個十六進制字符組成
每個字節(jié)地位
1個起始位
7個數據位,最小的有效位先發(fā)送
1個奇偶校驗位,無校驗則無
1個停止位(有校驗時),2個Bit(無校驗時)
錯誤檢測域
LRC(縱向冗長檢測)
2、RTU模式
當設備使用RTU(RemoteTerminalUnit)模式在Modbus串行鏈路通信,報文中每個8位字節(jié)含有兩個4位十六進制字符。這種模式的主要優(yōu)點是較高的數據密度,在相同的波特率下比ASCII模式有更高的傳輸效率。每個報文必須以連續(xù)的字符流傳送。
當控制器設為在Modbus網絡上以RTU(遠程終端單元)模式通信,在消息中的每個8Bit字節(jié)包含兩個4Bit的十六進制字符。這種方式的主要優(yōu)點是:在同樣的波特率下,可比ASCII方式傳送更多的數據。
代碼系統(tǒng)
8位二進制,十六進制數0...9,A...F
消息中的每個8位域都是一個兩個十六進制字符組成
每個字節(jié)地位
1個起始位
8個數據位,最小的有效位先發(fā)送
1個奇偶校驗位,無校驗則無
1個停止位(有校驗時),2個Bit(無校驗時)
錯誤檢測域
CRC(循環(huán)冗長檢測)
RTU傳輸模式應用有自報、兼容、查詢、以及調試四種工作模式。
RTU傳輸模式:
a)自報工作模式
事件觸發(fā)(被測要素值發(fā)生一定變化)時,遙測站主動發(fā)送數據;定時觸發(fā)時,遙測站應按規(guī)定的時間主動上報發(fā)送數據;
自報工作模式下RTU在整點上報和預警加報時上線,完成數據傳輸后又自動下線。自報主要應用于短時間通訊、長時間待機,因此在功耗上遠遠低于兼容式工作模式。自報模式下GPRS通訊模塊處于休眠狀態(tài),可以通過短信進行遠程修改配置參數。
b)兼容工作模式
表示同時包括查詢和自報兩種工作模式,兼容式工作模式下RTU一開機啟動就會自動連接服務中心,并且一直保持在線;如果出現網絡故障RTU設備就會自動重新連接。此模式下,水文監(jiān)測管理平臺可以進行召測、召拍等操作。
由于無線通信模塊是一個比較耗電的單元,在自報模式下,RTU只在小時報或加報報時候才會上線,否則會關閉其電源。在兼容模式下則會一直保持在線,此時功耗會較高。
c)查詢工作模式
中心站發(fā)出指令主要用于對遙測站進行數據查詢、參數(狀態(tài))設置或設備控制;
遙測站應響應指令發(fā)送所查詢的數據或狀態(tài)、設置參數或執(zhí)行控制設備指令并返回執(zhí)行結果。
d) 調試工作模式
調試模式下,主要用于RTU外接水位、雨量、攝像頭等設備的安裝測試。
安裝測試作用:一是測試通信線路是否正常,二是用于驗證遙測站采集傳輸的正確性,并告訴中心站,測試數據只做檢查用,不存儲。
MODBUS的ASCII協議和RTU協議相比,MODBUS ASCII協議擁有開始和結束標記,而MODBUS RTU卻沒有,所以ASCII協議的程序中對數據包的處理能更加方便。
MODBUS ASCII協議的DATA域傳輸的都是可見的ASCII字符,因此在調試階段就顯得更加直觀,另外LRC校驗程序也比較容易編寫,這些都是MODBUS ASCII的優(yōu)點。
MODBUS ASCII的主要缺點是傳輸效率低,因為傳輸的都是可見的ASCII字符,原來用RTU傳輸的數據每一個字節(jié),用ASCII的話都要把這個字節(jié)拆分兩個字節(jié),比如RTU傳輸一個十六進制數0xF9,ASCII就需要傳輸字符''F''和字符''9'',對應的ASCII碼0x46和0x39兩個字節(jié),這樣傳輸的效率肯定就比RTU低。
所以一般來說,如果所需要傳輸的數據量較小可以考慮使用ASCII協議,如果所需傳輸的數據量比較大,最好能使用RTU協議。
另外,由于ASCII協議有開始標志和結束標志,所以一個數據包之間的各字節(jié)間的傳輸間隔時間可以大于1秒,而MODBUS RTU方式下,由于沒有規(guī)定開始和結束標記,所以協議規(guī)定每兩個字節(jié)之間發(fā)送或者接收的時間間隔不能超過3.5倍字符傳輸時間。如果兩個字符時間間隔超過了3.5倍的字符傳輸時間,就認為一幀數據已經接收,新的一幀數據傳輸開始,所以RTU方式下兩個字節(jié)間傳輸間隔有時間要求。MODBUS 的ASCII和RTU兩種協議的這一區(qū)別,可能決定某些應用場合只能選用其中一種協議。