Modbus RTU與Modbus ASCII之間的區(qū)別
? ? ? ? Modbus是一種應(yīng)用層協(xié)議,它定義了與基礎(chǔ)網(wǎng)絡(luò)無關(guān)的數(shù)據(jù)單元(ADU),可以在以太網(wǎng)(TCP/IP)或串行鏈路上(RS232、RS485等)進(jìn)行通信(以太網(wǎng)ADU和串行ADU略有不同)。

? ? ? ??在串行鏈路上,Modbus協(xié)議有兩種傳輸模式——ASCII模式和RTU模式。
? ? ? ??首先,讓我們來看看Modbus的工作原理。
? ? ? ??Modbus采用主從(Master-Salve)通信模式,僅有主設(shè)備(Master)能對傳輸進(jìn)行初始化,從設(shè)備(Slave)根據(jù)主設(shè)備的請求進(jìn)行應(yīng)答。典型的主設(shè)備包括現(xiàn)場儀表和顯示面板,典型的從設(shè)備為可編程邏輯控制器(PLC)。
? ? ? ??在串行鏈路的主從通信中,Modbus主設(shè)備可以連接一個或N(最大為247)個從設(shè)備,主從設(shè)備之間的通信包括單播模式和廣播模式。
? ? ? ??在廣播模式中,Modbus主設(shè)備可同時向多個從設(shè)備發(fā)送請求(設(shè)備地址0用于廣播模式),從設(shè)備對廣播請求不進(jìn)行響應(yīng)。
? ? ? ??在單播模式中,主設(shè)備發(fā)送請求至某個特定的從設(shè)備(每個Modbus從設(shè)備具有唯一地址),請求的消息幀中會包含功能代碼和數(shù)據(jù),比如功能代碼“01”用來讀取離散量線圈的狀態(tài)。從設(shè)備接到請求后,進(jìn)行應(yīng)答并把消息反饋主設(shè)備。

?? ? ? ??在主從設(shè)備的通信中,可以使用ASCII模式或者RTU模式。
? ? ? ??在ASCII(AmericanStandard Code for Information Interchange)傳輸模式下,消息幀以英文冒號(“:”,ASCII3A Hex)開始,以回車和換號(CRLF,ASCII 0D and 0A Hex)符號結(jié)束,允許的傳輸?shù)淖址癁槭M(jìn)制的0~9和A~F;網(wǎng)絡(luò)中的從設(shè)備監(jiān)視傳輸通路上是否有英文冒號(“:”),如果有的話,就對消息幀進(jìn)行解碼,查看消息中的地址是否與自己的地址相同,如果相同的話,就接收其中的數(shù)據(jù);如果不同的話,則不予理會。
? ? ? ??在ASCII模式下,每個8位的字節(jié)被拆分成兩個ASCII字符進(jìn)行發(fā)送,發(fā)送的字符量比RTU增加一倍。ASCII模式的好處是允許兩個字符之間間隔的時間長達(dá)1s而不引發(fā)通信故障,該模式采用縱向冗余校驗(Longitudinal Redundancy Check ,LRC)) 的方法來檢驗錯誤,
? ? ? ??當(dāng)控制器設(shè)為在Modbus 網(wǎng)絡(luò)上以RTU 模式通信,消息中的每個8Bit 字節(jié)都包含兩個4 Bit 的十六進(jìn)制字符,這種模式?jīng)]有開始和結(jié)束標(biāo)記。其優(yōu)點是: 在同樣的波特率下,可比傳送更多的數(shù)據(jù)。
? ? ? ??在RTU(RemoteTerminal Unit)模式下,每個字節(jié)可以傳輸兩個十六進(jìn)制字符,因此它的發(fā)送密度比ASCII模式高一倍;RTU模式采用循環(huán)冗余校驗(CRC)。
? ? ? ??下面是對ASCII、RTU模式的總結(jié):
