1、ASCII模式
當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以ASCII(美國標(biāo)準(zhǔn)信息交換代碼)模式通信,在消息中的每個8Bit
字節(jié)都作為兩個ASCII字符發(fā)送。這種方式的主要優(yōu)點(diǎn)是字符發(fā)送的時間間隔可達(dá)到1秒而不產(chǎn)生錯誤。
代碼系統(tǒng)
十六進(jìn)制,ASCII字符0...9,A...F
消息中的每個ASCII字符都是一個十六進(jìn)制字符組成
每個字節(jié)的位
1個起始位
7個數(shù)據(jù)位,最小的有效位先發(fā)送
1個奇偶校驗(yàn)位,無校驗(yàn)則無
1個停止位(有校驗(yàn)時),2個Bit(無校驗(yàn)時)
錯誤檢測域
LRC(縱向冗長檢測)
2、RTU模式
當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以RTU(遠(yuǎn)程終端單元)模式通信,在消息中的每個8Bit字節(jié)包含兩
個4Bit的十六進(jìn)制字符。這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。
代碼系統(tǒng)
8位二進(jìn)制,十六進(jìn)制數(shù)0...9,A...F
消息中的每個8位域都是一個兩個十六進(jìn)制字符組成
每個字節(jié)的位
1個起始位
8個數(shù)據(jù)位,最小的有效位先發(fā)送
1個奇偶校驗(yàn)位,無校驗(yàn)則無
1個停止位(有校驗(yàn)時),2個Bit(無校驗(yàn)時)
錯誤檢測域
CRC(循環(huán)冗長檢測)
MODBUS的ASCII協(xié)議和RTU協(xié)議相比,MODBUS ASCII協(xié)議擁有開始和結(jié)束標(biāo)記,而MODBUS RTU卻沒有,所以ASCII協(xié)議的程序中對數(shù)據(jù)包的處理能更加方便。
MODBUS ASCII協(xié)議的DATA域傳輸?shù)亩际强梢姷腁SCII字符,因此在調(diào)試階段就顯得更加直觀,另外它的LRC校驗(yàn)程序也比較容易編寫,這些都是MODBUS ASCII的優(yōu)點(diǎn)。
MODBUS ASCII的主要缺點(diǎn)是傳輸效率低,因?yàn)樗鼈鬏數(shù)亩际强梢姷腁SCII字符,原來用RTU傳輸?shù)臄?shù)據(jù)每一個字節(jié),用ASCII的話都要把這個字節(jié)拆分兩個字節(jié),比如RTU傳輸一個十六進(jìn)制數(shù)0xF9,ASCII就需要傳輸字符''F''和字符''9'',對應(yīng)的ASCII碼0x46和0x39兩個字節(jié),這樣它的傳輸?shù)男士隙ň捅萊TU低。
所以一般來說,如果所需要傳輸?shù)臄?shù)據(jù)量較小可以考慮使用ASCII協(xié)議,如果所需傳輸?shù)臄?shù)據(jù)量比較大,最好能使用RTU協(xié)議。
另外,由于ASCII協(xié)議有開始標(biāo)志和結(jié)束標(biāo)志,所以一個數(shù)據(jù)包之間的各字節(jié)間的傳輸間隔時間可以大于1秒,而MODBUS RTU方式下,由于沒有規(guī)定開始和結(jié)束標(biāo)記,所以協(xié)議規(guī)定每兩個字節(jié)之間發(fā)送或者接收的時間間隔不能超過3.5倍字符傳輸時間。如果兩個字符時間間隔超過了3.5倍的字符傳輸時間,就認(rèn)為一幀數(shù)據(jù)已經(jīng)接收,新的一幀數(shù)據(jù)傳輸開始,所以RTU方式下兩個字節(jié)間傳輸間隔有時間要求。
MODBUS 的ASCII和RTU兩種協(xié)議的這一區(qū)別可能決定某些應(yīng)用場合只能選用其中一種協(xié)議
四信公眾號
四信方案庫
服務(wù)電話