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