一、簡介
ModBus是Modicon公司為其PLC通訊而開發(fā)的一種通訊協(xié)議。如今Modicon公司已經(jīng)被施耐德收購成為了施耐德旗下品牌。從1979年問世至今,已經(jīng)成為工業(yè)通訊領(lǐng)域的業(yè)界標準,最初的ModBus僅支持串口,分為RTU和ACSII兩種信號傳輸模式(一般基于RS485串口通信媒介)。而隨著時代的變遷,ModBus新增了TCP版本,可以通過以太網(wǎng)進行通訊,此外ModBus還有一個Modicon專用的ModBus Plus版本。
和其他工業(yè)通信協(xié)議相比,ModBus主要的優(yōu)點包括內(nèi)容公開,無版權(quán)要求,不用支付額外的費用,硬件簡單,容易部署。
ModBus采用半雙工的通訊方式,由1個子站和多個從站組成,允許多個設(shè)備連接在同一個網(wǎng)絡(luò)上進行通訊。
上述三類對應(yīng)的物理層:
ModBus TCP,以太網(wǎng),RJ45。
ModBus RTU/ASCII,異步串行通訊,RS232/485/422、光纖、無線
ModBus Plus,高速令牌傳遞網(wǎng)絡(luò),同軸電纜或光纜。
二、信號傳輸模式對比
A、RTU與ASCII
1、ModBus ASCII協(xié)議擁有開始和結(jié)束標記,ModBus RTU沒有。
這就使得ASCII協(xié)議中對數(shù)據(jù)包的處理能夠更加的方便。
例如:
ASCII協(xié)議中一個數(shù)據(jù)包之間的傳輸間隔可以高達1s(一般不超過1s,超過1s接收設(shè)備認為出錯)。
RTU協(xié)議中規(guī)定每兩個字節(jié)中之間發(fā)送或接收時間不得超過3.5倍的字符傳輸時間,否則超過這一規(guī)定時間則會認為是新幀的開始。
2、ASCII協(xié)議的可讀性強、傳輸效率低。
由于ASCII協(xié)議傳輸?shù)亩际强梢姷腁SCII字符,所以調(diào)試階段會顯得更加直觀。
但是這同時也是它的缺點,可讀性的增加帶來的就是通訊傳輸效率低。例如傳輸1個十六進制數(shù)0xF9,ASCII就要傳送“F”和“9”兩個字符,其對應(yīng)的ASCII碼是0x46和0x39兩個字節(jié),而RTU只需要1個字節(jié)就可以完成傳輸。
而ModBus作為應(yīng)用于工業(yè)領(lǐng)域的通信協(xié)議,面向的主要是技術(shù)工人和工程師,不需要很強的可讀性,反而傳輸?shù)臄?shù)據(jù)量一般會比較大,所以在工業(yè)現(xiàn)場很少會采用ASCII協(xié)議。
3、校驗程序不同
RTU采用CRC校驗,而ASCII采用LRC校驗。LRC校驗程序相對CRC校驗程序簡單。兩種校驗方法會在后續(xù)文章中詳細介紹。
用下表總結(jié)一下上述內(nèi)容:

B、RTU與TCP
1、從機地址變得不在重要,多數(shù)情況可以忽略。從某種意義上來說從機地址被IP地址取代。
2、CRC校驗不再重要,甚至可以忽略。由于TCP數(shù)據(jù)包中已經(jīng)存在校驗,是可靠的數(shù)據(jù)傳輸網(wǎng)絡(luò),故不再有校驗數(shù)據(jù)。
3、TCP與RTU的PDU(協(xié)議數(shù)據(jù)單元)與RTU非常類似,少了地址碼與CRC碼,TCP多了一個報文頭。其中的詳細情況后續(xù)文章會繼續(xù)介紹。
C、ModBus Plus
大家想象一下這種情況:
如果從站有緊急事項需要主站來服務(wù),可是MODBUS規(guī)定了輪詢規(guī)則,等到自己的時候,可能會太遲了。于是許多現(xiàn)場總線就發(fā)明了一個特殊的東西,叫做令牌。令牌很短,只有一個字節(jié),它可以很快地在總線上傳遞。令牌在各站點中傳遞,誰拿到令牌,誰就是主站,就可以發(fā)布信息。如果本站沒有事情需要發(fā)布,就把令牌交給下一個站點,由此解決了總線占用問題。
ModBus Plus正是這樣的現(xiàn)場總線,網(wǎng)上的節(jié)點均為對等邏輯關(guān)系,通過獲得令牌來傳遞網(wǎng)絡(luò)信息。網(wǎng)絡(luò)中的每一個節(jié)點均分配有一個惟一的地址,一個節(jié)點擁有令牌就可以與所選的目標進行信息傳遞,或與網(wǎng)絡(luò)上所有節(jié)點交換信息。
D、ModBus 功能碼表
下表是ModBus所有的功能碼,之后的文章會選取常用的功能碼,結(jié)合實際報文進行講解。

