Modbus協(xié)議,作為當(dāng)今工業(yè)控制領(lǐng)域的通用通訊協(xié)議,在無(wú)數(shù)物聯(lián)網(wǎng)產(chǎn)品中得到應(yīng)用,工業(yè)、農(nóng)業(yè)等物聯(lián)網(wǎng)解決方案中都有其身影。
通過(guò)Modbus協(xié)議,控制器相互之間、或控制器經(jīng)由網(wǎng)絡(luò)(如以太網(wǎng))可以和其它設(shè)備之間進(jìn)行通信。Modbus協(xié)議使用的是主從通訊技術(shù),即由主設(shè)備主動(dòng)查詢和操作從設(shè)備。一般將主控設(shè)備方所使用的協(xié)議稱為Modbus Master,從設(shè)備方使用的協(xié)議稱為Modbus Slave。典型的主設(shè)備包括工控機(jī)和工業(yè)控制器等;典型的從設(shè)備如PLC可編程控制器等。Modbus通訊物理接口可以選用串口(包括RS232和RS485),也可以選擇以太網(wǎng)口。
常用的MODBUS通訊規(guī)約有兩種,一種是MODBUS ASCII,一種是MODBUS RTU。每個(gè)設(shè)備必須都有相同的傳輸模式。所有設(shè)備都支持RTU模式,ASCII傳輸模式是選項(xiàng)。
(1)ASCII傳輸方式
Modbus串行鏈路的設(shè)備被配置為使用ASCII模式通信時(shí),報(bào)文中的每8位字節(jié)以兩個(gè)ASCII字符發(fā)送。例:字節(jié)0X5B會(huì)被編碼為兩個(gè)字符:0x35和0x42進(jìn)行傳送(ASCII編碼0x35="5",0x42="B"),這樣傳輸效率會(huì)降低。
在ASCII模式,報(bào)文用特殊的字符區(qū)分幀起始和幀結(jié)束。一個(gè)報(bào)文必須以一個(gè)‘冒號(hào)’(:)(ASCII十六進(jìn)制3A)起始,以‘回車-換行’(CRLF)對(duì)(ASCII十六進(jìn)制0D和0A)結(jié)束。設(shè)備連續(xù)的監(jiān)視總線上的‘冒號(hào)’字符。當(dāng)收到這個(gè)字符后,每個(gè)設(shè)備解碼后續(xù)的字符一直到幀結(jié)束。報(bào)文中字符間的時(shí)間間隔可以達(dá)一秒。如果有更大的間隔,則接受設(shè)備認(rèn)為發(fā)生了錯(cuò)誤。
(2)RTU傳輸方式
當(dāng)設(shè)備使用RTU(RemoteTerminalUnit)模式在Modbus串行鏈路通信,報(bào)文中每個(gè)8位字節(jié)含有兩個(gè)4位十六進(jìn)制字符。這種模式的主要優(yōu)點(diǎn)是較高的數(shù)據(jù)密度,在相同的波特率下比ASCII模式有更高的傳輸效率。每個(gè)報(bào)文必須以連續(xù)的字符流傳送。