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