Modbus通信如何調(diào)試?它廣泛應(yīng)用在哪些方面?
Modbus是一種串行通信協(xié)議,是Modicon(現(xiàn)在的施耐德電氣Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發(fā)表。它應(yīng)用在電子控制器上,作為一種通用語言,使得控制器之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng)、485總線)和其他設(shè)備之間可以通信。自從1979年成為工業(yè)串行鏈路的事實標(biāo)準(zhǔn)以來,Modbus使得成千上萬的自動化設(shè)備能夠通信。
Modbus是一種請求/應(yīng)答協(xié)議,并且提供功能碼規(guī)定的服務(wù)。功能碼是Modbus請求/應(yīng)答PDU(協(xié)議數(shù)據(jù)單元)的元素。本文件的作用是描述Modbus事務(wù)處理框架內(nèi)使用的功能碼。目前Modbus已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn),并且現(xiàn)在是工業(yè)電子設(shè)備之間常用的連接方式。
Modbus協(xié)議包括ASCII、RTU、TCP等,并沒有規(guī)定物理層。此協(xié)議定義了控制器能夠認(rèn)識和使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。標(biāo)準(zhǔn)的Modicon控制器使用RS232C實現(xiàn)串行的Modbus。Modbus的ASCII、RTU協(xié)議規(guī)定了消息、數(shù)據(jù)的結(jié)構(gòu)、命令和就答的方式,數(shù)據(jù)通訊采用Maser/Slave方式,Master端發(fā)出數(shù)據(jù)請求消息,Slave端接收到正確消息后就可以發(fā)送數(shù)據(jù)到Master端以響應(yīng)請求;Master端也可以直接發(fā)消息修改Slave端的數(shù)據(jù),實現(xiàn)雙向讀寫。
Modbus協(xié)議需要對數(shù)據(jù)進(jìn)行校驗,串行協(xié)議中除有奇偶校驗外,ASCII模式采用LRC校驗,RTU模式采用16位CRC校驗,但TCP模式?jīng)]有額外規(guī)定校驗,因為TCP協(xié)議是一個面向連接的可靠協(xié)議。另外,Modbus采用主從方式定時收發(fā)數(shù)據(jù),在實際使用中如果某Slave站點斷開后(如故障或關(guān)機(jī)),Master端可以診斷出來,而當(dāng)故障修復(fù)后,網(wǎng)絡(luò)又可自動接通。因此,Modbus協(xié)議的可靠性較好。
對于Modbus的ASCII、RTU和TCP協(xié)議來說,其中TCP和RTU協(xié)議非常類似,我們只要把RTU協(xié)議的兩個字節(jié)的校驗碼去掉,然后在RTU協(xié)議的開始加上5個0和一個6并通過TCP/IP網(wǎng)絡(luò)協(xié)議發(fā)送出去即可。
Modbus調(diào)試
首先要對安裝Modbus設(shè)備的串口通信參數(shù)進(jìn)行配置,連接參數(shù),串口選擇串口通信的串口,這里選擇上面一對虛擬串口中的COM4。
點擊協(xié)議選擇按鈕,在彈出對話框中設(shè)置Modbus傳輸模式,我們選擇RTU進(jìn)行測試。
通信參數(shù)設(shè)置
通信參數(shù)包括:起始地址(Address)、Device Id、寄存器長度(Length)及讀取的功能代碼。
其中MODBUS Point Type(Modbus數(shù)據(jù)模型)包括以下四種:
· 01:COIL STATUS:讀寫開關(guān)量類型(DO),位操作,可用于設(shè)定端口輸出狀態(tài),或者讀取該位的輸出狀態(tài),常用于電磁閥輸出、MOSFET輸出、LED顯示等;
· 02:INPUT STATUS:讀開關(guān)量類型(DI),位操作,通過外部設(shè)定改變輸入狀態(tài),可讀但是不可寫,常用于撥碼開關(guān)、接近開關(guān)等;
· 03:HOLDING REGISTER:保持寄存器,讀寫WORD類型,字操作,輸出參數(shù)或者保持參數(shù),控制器運(yùn)行時被設(shè)定的某些參數(shù),可讀可寫,常用于模擬量輸出設(shè)定值、PID運(yùn)行參數(shù)、變量閥輸出大小、傳感器報警上下限等;
· 04:INPUT REGISTER:輸入寄存器,讀WORD類型,字操作,輸入?yún)?shù),控制器運(yùn)行時從外部設(shè)備獲得的參數(shù),可讀但是不可寫,常用于模擬量輸入。
連接
點擊菜單“連接設(shè)置”中的“連接”,彈出的界面中配置好通訊參數(shù)之后,點擊“確定”,建立連接。
使用串口助手調(diào)試
查詢
主機(jī)ModScan32軟件發(fā)送讀從機(jī)線圈寄存器當(dāng)前狀態(tài)的指令,從機(jī)(串口助手模擬從機(jī))收到的數(shù)據(jù)為:01 01 00 00 00 64 3D E1
應(yīng)答
正常主機(jī)發(fā)送一個數(shù)據(jù)包,我們要在一定時間內(nèi),發(fā)送一個固定格式的數(shù)據(jù)包作為應(yīng)答,否則會提示超時“MODBUS Message TIME-OUT”或者接收的應(yīng)答格式不正確“Received Invalid Response to MODBUS Query”或者提示校驗錯誤“Checksum Error in Response Message”等提示。
Modbus通信主要應(yīng)用在以下幾個方面:
工業(yè)自動化控制:Modbus被廣泛應(yīng)用于工業(yè)自動化控制系統(tǒng)中,用于連接PLC、modbus傳感器、執(zhí)行器等設(shè)備,實現(xiàn)監(jiān)控和控制。
智能家居:Modbus也可以應(yīng)用于智能家居系統(tǒng)中,用于連接各種傳感器和執(zhí)行器,實現(xiàn)遠(yuǎn)程控制和監(jiān)測。
能源監(jiān)控:Modbus協(xié)議還可以用于能源監(jiān)控系統(tǒng),連接電表、燃?xì)獗?、水表等設(shè)備,實現(xiàn)能源數(shù)據(jù)的采集和分析。
環(huán)境監(jiān)測:Modbus協(xié)議可以應(yīng)用于環(huán)境監(jiān)測系統(tǒng)中,連接各種傳感器和儀器,監(jiān)測環(huán)境參數(shù)如溫度、濕度、氣壓等。
智能交通:Modbus也可以應(yīng)用于智能交通系統(tǒng)中,用于連接交通控制設(shè)備、車輛檢測器等,實現(xiàn)交通信號的控制和管理。
工業(yè)物聯(lián)網(wǎng):在工業(yè)物聯(lián)網(wǎng)領(lǐng)域,Modbus可以用于連接各種工業(yè)設(shè)備,實現(xiàn)數(shù)據(jù)采集和監(jiān)控,助力工廠智能化升級。
電力行業(yè):在電力行業(yè)中,Modbus被用于監(jiān)控電力設(shè)備的運(yùn)行狀態(tài),實現(xiàn)電力數(shù)據(jù)的采集和分析。
物流行業(yè):在物流行業(yè)中,Modbus可以連接各種物流設(shè)備,實現(xiàn)物流信息的采集和傳輸,提高物流效率。