ModBus網絡是一個工業通信系統,由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。
其系統結構既包括硬件、亦包括軟件,可應用于各種數據采集和過程監控。
Modbus之所以使用廣泛,是有他的優點的,Modbus協議標準開放、公開發表且無版權要求。
Modbus協議支持多種電氣接口,包括RS232、RS485、TCP/IP等,還可以在各種介質上傳輸,如雙絞線、光纖、紅外、無線等。Modbus協議消息幀格式簡單、緊湊、通俗易懂。用戶理解和使用簡單,廠商容易開發和集成,方便形成工業控制網絡。
ModBus網絡只有一個主機,所有通信都由他發出。網絡可支持247個之多的遠程從屬控制器,但實際所支持的從機數要由所用通信設備決定。
采用這個系統,各PC可以和中心主機交換信息而不影響各PC執行本身的控制任務。Modbus是一主多從的通信協議,通信過程為:
Modbus通信中只有一個設備可以發送請求。其他從設備接收主機發送的數據來進行響應,從機是任何外圍設備,如I/O傳感器,閥門,網絡驅動器,或其他測量類型的設備。從站處理信息和使用Modbus將其數據發送給主站。
也就是說,不能Modbus同步進行通信,主機在同一時間內只能向一個從機發送請求,總線上每次只有一個數據進行傳輸,即主機發送,從機應答,主機不發送,總線上就沒有數據通信。
從機不會自己發送消息給主站,只能回復從主機發送的消息請求。Modbus并沒有忙機制判斷,比方說主機給從機發送命令, 從機沒有收到或者正在處理其他東西,這時候就不能響應主機,因為modbus的總線只是傳輸數據,沒有其他仲裁機制,所以需要通過軟件的方式來判斷是否正常接收。

Modbus協議包括ASCII、RTU、TCP等,并沒有規定物理層。此協議定義了控制器能夠認識和使用的消息結構,而不管它們是經過何種網絡進行通信的。
協議類型
在上面我們已經說明了Modbus可以在各種介質上傳輸,包括ASCII、RTU(遠程終端控制系統)、TCP三種報文類型。
串行端口存在多個版本的Modbus協議,而最常見的是下面四種:Modbus-Rtu,Modbus-Ascii,Modbus-Tcp,ModbusPlus。Modbus RTU是一種緊湊的,十六進制表示數據的方式,Modbus ASCII是一種采用Ascii碼表示數據,并且每個8Bit 字節都作為兩個ASCII字符發送的表示方式。RTU格式后續的命令/數據帶有循環冗余校驗的校驗和,而ASCII格式采用縱向冗余校驗的校驗和。
Modbus協議使用串口傳輸時可以選擇RTU或ASCII模式,并規定了消息、數據結構、命令和應答方式并需要對數據進行校驗。ASCII 模式采用LRC校驗,RTU模式采用16 位CRC校驗。通過以太網傳輸時使用TCP,這種模式不使用校驗,因為TCP協議是一個面向連接的可靠協議。
標準的Modicon控制器使用RS232C實現串行的Modbus。
Modbus的ASCII、RTU協議規定了消息、數據的結構、命令和就答的方式,數據通訊采用Maser/Slave方式,Master端發出數據請求消息,Slave端接收到正確消息后就可以發送數據到Master端以響應請求;
Master端也可以直接發消息修改Slave端的數據,實現雙向讀寫。
Modbus協議需要對數據進行校驗,串行協議中除有奇偶校驗外,ASCII模式采用LRC校驗,RTU模式采用16位CRC校驗,但TCP模式沒有額外規定校驗,因為TCP協議是一個面向連接的可靠協議。
另外,Modbus采用主從方式定時收發數據,在實際使用中如果某Slave站點斷開后(如故障或關機),Master端可以診斷出來,而當故障修復后,網絡又可自動接通。
Modbus協議的可靠性較好。對于Modbus的ASCII、RTU和TCP協議來說,其中TCP和RTU協議非常類似,只要把RTU協議的兩個字節的校驗碼去掉,在RTU協議的開始加上5個0和一個6并通過TCP/IP網絡協議發送出去即可。