Modbus關於ASCII模式和RTU模式兩種傳輸方式的區別
1、ASCII模式
當控制器設為在Modbus網絡請添加鏈接描述上以ASCII(美國標準信息交換代碼)模式通信,在消息中的每個8Bit
字節都作為兩個ASCII字符發送。這種方式的主要優點是字符發送的時間間隔可達到1秒而不產生錯誤。
代碼系統
十六進制,ASCII字符0...9,A...F
消息中的每個ASCII字符都是一個十六進制字符組成
每個字節的位
1個起始位
7個數據位,最小的有效位先發送
1個奇偶校驗位,無校驗則無
1個停止位(有校驗時),2個Bit(無校驗時)
錯誤檢測域
LRC(縱向冗長檢測)
2、RTU模式
當控制器設為在Modbus網絡上以RTU(遠程終端單元)模式通信,在消息中的每個8Bit字節包含兩
個4Bit的十六進制字符。這種方式的主要優點是:在同樣的波特率下,可比ASCII方式傳送更多的數據。
代碼系統
8位二進制,十六進制數0...9,A...F
消息中的每個8位域都是一個兩個十六進制字符組成
每個字節的位
1個起始位
8個數據位,最小的有效位先發送
1個奇偶校驗位,無校驗則無
1個停止位(有校驗時),2個Bit(無校驗時)
錯誤檢測域
CRC(循環冗長檢測)
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協議。
另外,由於ASCII協議有開始標誌和結束標誌,所以一個數據包之間的各字節間的傳輸間隔時間可以大於1秒,而MODBUS RTU方式下,由於沒有規定開始和結束標記,所以協議規定每兩個字節之間發送或者接收的時間間隔不能超過3.5倍字符傳輸時間。如果兩個字符時間間隔超過了3.5倍的字符傳輸時間,就認為一幀數據已經接收,新的一幀數據傳輸開始,所以RTU方式下兩個字節間傳輸間隔有時間要求。
MODBUS 的ASCII和RTU兩種協議的這一區別可能決定某些應用場合只能選用其中一種協議
Modbus關於ASCII模式和RTU模式兩種傳輸方式的區別