ModBus是一種通信協議,用于連接自動化設備(如PLC、溫度控制器等)和計算機。它被廣泛應用于工業控制系統,支持多種通信方式,包括ModBus RTU、ModBus ASCII和ModBus TCP等。本文將主要解釋這三種通信方式的區別和應用場景。
所有ModBus協議的基本結構
無論變體如何,所有標準ModBus通信都遵循相同的消息傳遞結構。一切都圍繞著將值存儲在寄存器中然后讀取它們。這里有幾種數據類型在起作用。例如,離散輸入可以存儲為單個位。更廣泛地說,輸入寄存器存儲基于 ModBus 的設備收集的值。將多個分立器件存儲為單個位,而模擬值甚至 ASCII 字符可能存儲在 8 位寄存器中(最低有效位為 0 位,最高有效位為 64 位)。不同類型的寄存器按用于輪詢它們的功能代碼進行分類。功能代碼字段中的“1”用于“讀取線圈”(檢查控制繼電器的狀態)。“2”表示“讀取離散輸入”(檢查離散輸入的狀態)。“3”是“讀保持寄存器”(從多用途讀/寫寄存器收集數據)。ModBus 規范中還有更多。寄存器由其“起始地址”請求,起始地址是一個 16 位值,用于唯一標識設備中的每個寄存器。對RTU或其他設備的主控請求將始終引用要報告的所需寄存器。
ModBus RTU
ModBus RTU(Remote Terminal Unit)是ModBus協議最常見的實現方式,采用二進制數據傳輸,具有較高的傳輸效率和穩定性。它使用串行通信,支持RS232和RS485兩種接口。在RTU模式下,每個字節可以傳輸兩位十六進制字符。比如0xAB會直接以十六進制0xAB(二進制10101011)進行發送。其消息幀格式由以下部分組成:
RTU模式采用16 位CRC校驗,后續的命令/數據帶有循環冗余校驗的校驗和。RTU模式比較常用,而ASCII一般很少用。
ModBus TCP
ModBus TCP(Transmission Control Protocol)是ModBus協議的一種擴展,它使用TCP/IP協議進行通信,可以在局域網(LAN)和廣域網(WAN)之間傳輸數據。ModBus TCP支持多種網絡設備,包括計算機、服務器、交換機、路由器等。它適用于遠程監控和控制,常用于工業網絡和物聯網應用。該協議的物理層、數據鏈路層、網絡層、傳輸層都是基于TCP協議,它只是在應用層將ModBus協議封裝進去。然后接收端將該TCP數據包拆包后,重新獲得原始ModBus幀,然后按照ModBus協議規范進行解析,并將要返回的數據包重新封裝到TCP協議中,發回至發送端。與串行通信的傳輸格式不同,TCP模式去除了附加地址和校驗,增加報文頭,如下圖所示。
通過以太網傳輸時使用TCP模式,不使用校驗,因為TCP協議是一個面向連接的可靠協議。ModBus RTU和ModBus TCP作為ModBus協議的兩個主要變體,傳統上,ModBus RTU(需要將信息傳送回ModBus主站或SCADA HMI的RTU)被許多不同類型的設備使用。ModBus RTU通常通過RS485串行發送。這種菊花鏈通信通道允許多個設備在主從配置中向單個HMI端口報告。每個從設備都能夠通過向主設備發送流量來說話。這使得ModBus網絡結構保持相當簡單。
ModBus ASCII
ModBus ASCII(American Standard Code for Information Interchange)采用ASCII碼傳輸文本信息,每個8Bit 字節都作為兩個ASCII字符發送。相對ModBus RTU而言,它的傳輸效率較低,但具有更好的可讀性。ModBus ASCII也使用串行通信,并支持RS232和RS485兩種接口,適用于短距離通信。在ASCII模式下,每個8位的字節拆分為兩個ASCII字符進行發送,消息幀以英文冒號“:”開始,以回車和換行(CRLF)符號結束。例如十六進制數0xAB,會被分解成ASCII字符“A”和“B”進行發送。
ASCII模式允許兩個字符之間長達1s的間隔時間而不引發通信故障,ASCII格式采用縱向冗余校驗(LRC)的校驗和。
三者的區別
ModBus RTU和ModBus TCP的主要區別在于ModBus RTU使用菊花鏈網絡,因此可以通過兩條線連接整個網絡,并通過為每個節點提供唯一的地址來與每個設備進行通信。ModBus TCP使用星形網絡,其中每個節點都有一條稱為Cat 5或Cat 6的單獨電纜。它們可以使用路由器連接。它們還帶有網絡上每個節點唯一的個人地址。地址可以是 1 到 255,這意味著理論上,我們可以在同一網絡上擁有 254 臺設備。也可以通過互聯網使用ModBus TCP。在ModBus RTU和ModBus ASCII中,通信是通過串行接口進行的,這意味著它們只能在較短的距離內進行通信。因此,如果需要在較遠的距離進行通信,則需要使用ModBus TCP。另一方面,ModBus RTU和ModBus ASCII使用二進制和ASCII碼分別進行數據傳輸,因此它們的傳輸效率和可讀性存在差異。在選擇ModBus通信方式時,需要考慮多種因素,包括通信距離、傳輸效率和可讀性。對于短距離通信,ModBus RTU和ModBus ASCII均可作為選擇。如果需要更高的傳輸效率,則可以選擇ModBus RTU;如果需要更好的可讀性,則可以選擇ModBus ASCII。對于遠距離通信,則只能使用ModBus TCP。
-
MODBUS
+關注
關注
28文章
1765瀏覽量
76849 -
TCP
+關注
關注
8文章
1351瀏覽量
78995
發布評論請先 登錄
相關推薦
評論