ModBus通信協(xié)議,用于連接自動化設(shè)備(如PLC、溫度控制器等)和計(jì)算機(jī)。它被廣泛應(yīng)用于工業(yè)控制系統(tǒng),支持多種通信方式,包括ModBus RTU、ModBus ASCII和ModBus TCP協(xié)議等。本文將主要解釋這三種通信方式的區(qū)別和應(yīng)用場景。
所有ModBus協(xié)議的基本結(jié)構(gòu)
無論變體如何,所有標(biāo)準(zhǔn)ModBus通信都遵循相同的消息傳遞結(jié)構(gòu)。一切都圍繞著將值存儲在寄存器中然后讀取它們。這里有幾種數(shù)據(jù)類型在起作用。
例如,離散輸入可以存儲為單個(gè)位。更廣泛地說,輸入寄存器存儲基于ModBus的設(shè)備收集的值。將多個(gè)分立器件存儲為單個(gè)位,而模擬值甚至 ASCII 字符可能存儲在 8 位寄存器中(最低有效位為 0 位,最高有效位為 64 位)。
不同類型的寄存器按用于輪詢它們的功能代碼進(jìn)行分類。功能代碼字段中的“1”用于“讀取線圈”(檢查控制繼電器的狀態(tài))。“2”表示“讀取離散輸入”(檢查離散輸入的狀態(tài))?!?”是“讀保持寄存器”(從多用途讀/寫寄存器收集數(shù)據(jù))。ModBus 規(guī)范中還有更多。寄存器由其“起始地址”請求,起始地址是一個(gè) 16 位值,用于唯一標(biāo)識設(shè)備中的每個(gè)寄存器。對RTU或其他設(shè)備的主控請求將始終引用要報(bào)告的所需寄存器。
ModBus RTU通信協(xié)議
ModBus RTU(Remote Terminal Unit)是ModBus協(xié)議最常見的實(shí)現(xiàn)方式,采用二進(jìn)制數(shù)據(jù)傳輸,具有較高的傳輸效率和穩(wěn)定性。它使用串行通信,支持RS232和RS485兩種接口。在RTU模式下,每個(gè)字節(jié)可以傳輸兩位十六進(jìn)制字符。比如0xAB會直接以十六進(jìn)制0xAB(二進(jìn)制10101011)進(jìn)行發(fā)送。其消息幀格式由以下部分組成:
RTU模式采用16 位CRC校驗(yàn),后續(xù)的命令/數(shù)據(jù)帶有循環(huán)冗余校驗(yàn)的校驗(yàn)和。RTU模式比較常用,而ASCII一般很少用。
ModBus TCP通信協(xié)議
ModBus TCP(Transmission Control Protocol)是ModBus協(xié)議的一種擴(kuò)展,它使用TCP/IP協(xié)議進(jìn)行通信,可以在局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)之間傳輸數(shù)據(jù)。ModBus TCP支持多種網(wǎng)絡(luò)設(shè)備,包括計(jì)算機(jī)、服務(wù)器、交換機(jī)、路由器等。它適用于遠(yuǎn)程監(jiān)控和控制,常用于工業(yè)網(wǎng)絡(luò)和物聯(lián)網(wǎng)應(yīng)用。該協(xié)議的物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層都是基于TCP協(xié)議,它只是在應(yīng)用層將ModBus協(xié)議封裝進(jìn)去。然后接收端將該TCP數(shù)據(jù)包拆包后,重新獲得原始ModBus幀,然后按照ModBus協(xié)議規(guī)范進(jìn)行解析,并將要返回的數(shù)據(jù)包重新封裝到TCP協(xié)議中,發(fā)回至發(fā)送端。與串行通信的傳輸格式不同,TCP模式去除了附加地址和校驗(yàn),增加報(bào)文頭,如下圖所示。
Modbus協(xié)議通過以太網(wǎng)傳輸時(shí)使用TCP模式,不使用校驗(yàn),因?yàn)門CP協(xié)議是一個(gè)面向連接的可靠協(xié)議。
ModBus RTU和ModBus TCP作為ModBus協(xié)議的兩個(gè)主要變體,傳統(tǒng)上,ModBus RTU(需要將信息傳送回ModBus主站或SCADA HMI的RTU)被許多不同類型的設(shè)備使用。ModBus RTU通常通過RS485串行發(fā)送。這種菊花鏈通信通道允許多個(gè)設(shè)備在主從配置中向單個(gè)HMI端口報(bào)告。每個(gè)從設(shè)備都能夠通過向主設(shè)備發(fā)送流量來說話。這使得ModBus網(wǎng)絡(luò)結(jié)構(gòu)保持相當(dāng)簡單。
ModBus ASCII(American Standard Code for Information Interchange)采用ASCII碼傳輸文本信息,每個(gè)8Bit 字節(jié)都作為兩個(gè)ASCII字符發(fā)送。相對ModBus RTU而言,它的傳輸效率較低,但具有更好的可讀性。ModBus ASCII也使用串行通信,并支持RS232和RS485兩種接口,適用于短距離通信。在ASCII模式下,每個(gè)8位的字節(jié)拆分為兩個(gè)ASCII字符進(jìn)行發(fā)送,消息幀以英文冒號“:”開始,以回車和換行(CRLF)符號結(jié)束。例如十六進(jìn)制數(shù)0xAB,會被分解成ASCII字符“A”和“B”進(jìn)行發(fā)送。
ASCII模式允許兩個(gè)字符之間長達(dá)1s的間隔時(shí)間而不引發(fā)通信故障,ASCII格式采用縱向冗余校驗(yàn)(LRC)的校驗(yàn)和。
ModBus RTU和ModBus TCP的主要區(qū)別在于ModBus RTU使用菊花鏈網(wǎng)絡(luò),因此可以通過兩條線連接整個(gè)網(wǎng)絡(luò),并通過為每個(gè)節(jié)點(diǎn)提供唯一的地址來與每個(gè)設(shè)備進(jìn)行通信。ModBus TCP使用星形網(wǎng)絡(luò),其中每個(gè)節(jié)點(diǎn)都有一條稱為Cat 5或Cat 6的單獨(dú)電纜。它們可以使用路由器連接。它們還帶有網(wǎng)絡(luò)上每個(gè)節(jié)點(diǎn)唯一的個(gè)人地址。地址可以是 1 到 255,這意味著理論上,我們可以在同一網(wǎng)絡(luò)上擁有 254 臺設(shè)備。也可以通過互聯(lián)網(wǎng)使用ModBus TCP。
在ModBus RTU和ModBus ASCII中,通信是通過串行接口進(jìn)行的,這意味著它們只能在較短的距離內(nèi)進(jìn)行通信。因此,如果需要在較遠(yuǎn)的距離進(jìn)行通信,則需要使用ModBus TCP。另一方面,ModBus RTU和ModBus ASCII使用二進(jìn)制和ASCII碼分別進(jìn)行數(shù)據(jù)傳輸,因此它們的傳輸效率和可讀性存在差異。在選擇ModBus通信方式時(shí),需要考慮多種因素,包括通信距離、傳輸效率和可讀性。對于短距離通信,ModBus RTU和ModBus ASCII均可作為選擇。如果需要更高的傳輸效率,則可以選擇ModBus RTU;如果需要更好的可讀性,則可以選擇ModBus ASCII。對于遠(yuǎn)距離通信,則只能使用ModBus TCP。
今天的分享就到這里啦,億佰特人每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的官網(wǎng)進(jìn)行了解,還有客服小姐姐在線答疑哦!
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號-3