Modbus續篇二:Modbus TCP、Modbus RTU及Modbus ASCII的區別

Modbus續篇二:Modbus TCP、Modbus RTU及Modbus ASCII的區別

Modbus協議包括ASCII、RTU、TCP,TCP和RTU協議非常類似,只要把RTU協議的兩個字節的校驗碼去掉,然後在RTU協議的開始加上5個0和一個6並通過TCP/IP網絡協議發送出去即可。

MBAP Header長度共7個字節,分別為Transaction identifier(事務標識符),Protocol identifier(協議標識符),Length(長度),

Unitidentifier(單元標識符)組成,具體如下表所示:

Modbus續篇二:Modbus TCP、Modbus RTU及Modbus ASCII的區別

Modbus TCP、Modbus RTU和Modbus ASCII的區別

對於不同類型的網絡,Modbus的第7層實現是一樣的,區別在於下層的實現方式,常見的有TCP/IP和串行通訊兩種。

Modbus TCP基於以太網和TCP/IP協議,Modbus RTU和Modbus ASCII則是使用異步串行傳輸(通常是RS-232/422/485)。

Modbus續篇二:Modbus TCP、Modbus RTU及Modbus ASCII的區別

對於Modbus TCP而言,主站通常稱為 Client,從站稱為 Server;而對於Modbus RTU和 Modbus ASCII來說,主站是 Master,從站是Slave。

如上圖所示,串行傳輸的物理層是 RS-485或 RS-232,數據鏈路層是Modbus的串行傳輸協議;Modbus TCP的1、2、3、4層實現和日常所見的以太網、因特網一樣。Modbus默認採用的TCP端口號是502。

RTU 和 ASCII 的區別

RTU模式下,一個字節的數據,傳輸的就是一個字節。ASCII模式下,同樣一個字節數據用了兩個字節來傳輸。

例如,要傳輸數字0x5B,RTU傳輸的是0101 1011(二進制),而ASCII傳輸的是00110101和01000010。可見,ASCII傳輸的速率是RTU的一半。

ASCII模式採用LRC校驗,RTU模式採用16位CRC校驗,由此可見:

1、Modbus協議需要對數據進行校驗,串行協議中除有奇偶校驗外,ASCII模式採用LRC校驗,RTU模式採用16位CRC校驗。

2、ModbusTCP 模式沒有額外規定校驗,因為TCP協議是一個面向連接的可靠協議。

二者相同的地方是:應用數據單元是一致的;

差別是:Modbus TCP是傳輸在 TCP/IP網絡上的,多了一個報文頭,少了CRC校驗,採用TCP的502端口,RTU多了設備地址和CRC校驗。

關於 Modbus協議,就 po到這了,更多專業的 Modbus 相關知識,有連接,在評論第一條,感謝大家的關注支持,歡迎轉發!


分享到:


相關文章: