Modicon 公司首次推出了Modbus協(xié)議,Modbus RTU和Modbus ASCII誕生于此。后來施耐德電氣在1997年推出了ModbusTCP協(xié)議。2004年,中國國家標(biāo)準(zhǔn)委員會正式把Modbus作為了國家標(biāo)準(zhǔn),開啟了Modbus為中國工業(yè)通信做貢獻(xiàn)的時代。
通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其它設(shè)備之間可以通信。Modbus協(xié)議具有標(biāo)準(zhǔn)、開放,可以支持多種電氣接口,數(shù)據(jù)幀格式簡單緊湊,數(shù)據(jù)傳輸量大、實時性好等特點(diǎn),在工業(yè)控制系統(tǒng)中得到了廣泛的應(yīng)用,已經(jīng)成為通用工業(yè)標(biāo)準(zhǔn)。深入分析Modbus協(xié)議實現(xiàn)原理和其安全性對提高工控系統(tǒng)安全性有著重要的現(xiàn)實意義。Modbus RTU和Modbus ASCII主要用于串行通信領(lǐng)域,而Modbus TCP則常用于以太網(wǎng)通信。現(xiàn)在,Modbus已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議標(biāo)準(zhǔn),并且現(xiàn)在是工業(yè)電子設(shè)備之間相當(dāng)常用的連接方式。
Modbus使用一種簡單的Master and Slave主從協(xié)議(客戶機(jī)/服務(wù)器協(xié)議)進(jìn)行通信。客戶機(jī)作為主站,向服務(wù)器發(fā)送請求;服務(wù)器(從站)接到請求后,對請求進(jìn)行分析并作出應(yīng)答。其中使用的通信幀被稱為應(yīng)用數(shù)據(jù)單元(Application Data Unit,ADU),它包括通信地址段、功能代碼段、數(shù)據(jù)段和校驗段。
基于串口的Modbus-RTU 數(shù)據(jù)按照標(biāo)準(zhǔn)串口協(xié)議進(jìn)行編碼,是使用最廣泛的一種Modbus協(xié)議,采用CRC-16_Modbus校驗算法。
基于串口的Modbus-ASCII 所有數(shù)據(jù)都是ASCII格式,一個字節(jié)的原始數(shù)據(jù)需要兩個字符來表示,效率低,采用LRC校驗算法。
基于網(wǎng)口的Modbus-TCP Modbus-TCP基于TCP/IP協(xié)議,占用502端口,數(shù)據(jù)幀主要包括兩部分:MBAP(報文頭)+PDU(幀結(jié)構(gòu)),數(shù)據(jù)塊與串行鏈路是一致的。
所以當(dāng)我們提及Modbus協(xié)議時,要確定是哪種模式:RTU、ASCII或TCP,3種模式區(qū)別還是很大的。
ModBus RTU和ModBus TCP的主要區(qū)別在于ModBus RTU使用菊花鏈網(wǎng)絡(luò),因此可以通過兩條線連接整個網(wǎng)絡(luò),并通過為每個節(jié)點(diǎn)提供唯一的地址來與每個設(shè)備進(jìn)行通信。ModBus TCP使用星形網(wǎng)絡(luò),其中每個節(jié)點(diǎn)都有一條稱為Cat 5或Cat 6的單獨(dú)電纜。它們可以使用路由器連接。它們還帶有網(wǎng)絡(luò)上每個節(jié)點(diǎn)唯一的個人地址。地址可以是 1 到 255,這意味著理論上,我們可以在同一網(wǎng)絡(luò)上擁有 254 臺設(shè)備。也可以通過互聯(lián)網(wǎng)使用ModBus TCP。
在ModBus RTU和ModBus ASCII中,通信是通過串行接口進(jìn)行的,這意味著它們只能在較短的距離內(nèi)進(jìn)行通信。因此,如果需要在較遠(yuǎn)的距離進(jìn)行通信,則需要使用ModBus TCP。另一方面,ModBus RTU和ModBus ASCII使用二進(jìn)制和ASCII碼分別進(jìn)行數(shù)據(jù)傳輸,因此它們的傳輸效率和可讀性存在差異。在選擇ModBus通信方式時,需要考慮多種因素,包括通信距離、傳輸效率和可讀性。對于短距離通信,ModBus RTU和ModBus ASCII均可作為選擇。如果需要更高的傳輸效率,則可以選擇ModBus RTU;如果需要更好的可讀性,則可以選擇ModBus ASCII。對于遠(yuǎn)距離通信,則只能使用ModBus TCP。