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