一種基于Modbus協(xié)議的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計
一.引言
本文引用地址:http://www.ex-cimer.com/article/247517.htm在生產(chǎn)和生活中監(jiān)控系統(tǒng)起到的作用越來重要,如在交通.銀行.電力等部門對監(jiān)控系統(tǒng)的要求越來越越高.需求也在不斷增大.在遠(yuǎn)程監(jiān)控系統(tǒng)中,作為一種種分布式控制系統(tǒng)和工業(yè)通信協(xié)議Modbus協(xié)議在工業(yè)領(lǐng)域得到很好的應(yīng)用,本文針對其含義.系統(tǒng)設(shè)計構(gòu)架和系統(tǒng)性能進行詳細(xì)的闡述.
二.淺析Modbus協(xié)議
(1)Modbus協(xié)議開發(fā)的Modbus協(xié)議是一種分布式控制系統(tǒng)和工業(yè)通信協(xié)議,在分布式控制系統(tǒng)和工業(yè)設(shè)備通訊中得到很好的應(yīng)用,采用RS485方式作為物理接口.控制器經(jīng)由網(wǎng)絡(luò).控制器相互之間.通訊協(xié)議等可以通訊,在工業(yè)生產(chǎn)中已經(jīng)成為通用標(biāo)準(zhǔn),可以連接不同的控制設(shè)備成為工業(yè)網(wǎng)絡(luò),實現(xiàn)集中控制和監(jiān)控.
(2)作為一種主從網(wǎng)絡(luò)Modbus網(wǎng)絡(luò)允許多個或一個從機和一個主機進行通信,其中應(yīng)答報文和命令報文是相對應(yīng)的關(guān)系,也就是采用命令/應(yīng)答方式.主機發(fā)出命令報文,當(dāng)收到主機發(fā)來的報文的時候,相應(yīng)的應(yīng)答報文發(fā)出對命令報文進行響應(yīng).每個從機在網(wǎng)絡(luò)中都擁有一個唯一的地址,訪問的從機地址包含在主機發(fā)出的命令中,對相應(yīng)的命令做出應(yīng)答的是具有該地址的從機.
(3)傳輸模式ASCII和RTU被應(yīng)用在Modbus協(xié)議中.沒有奇偶校驗位.2個停位.8個數(shù)據(jù)為是RTU的傳輸格式.依靠接收字符間應(yīng)用的時間RTU接收設(shè)備對一個幀的開始進行判斷,在時間為3個半字符之后沒有完成幀或沒有新的字符,該幀會被接收設(shè)備放棄,新幀的開始以設(shè)下一個字符為標(biāo)準(zhǔn).1字節(jié)的信息在RTU模式中被看作一個8為字符進行發(fā)送,而作為兩個ASCII字符在ASCII模式中被發(fā)送.
三.系統(tǒng)設(shè)計構(gòu)架
數(shù)據(jù)采集的RTU設(shè)備.數(shù)據(jù)交互的監(jiān)控設(shè)備.遠(yuǎn)程監(jiān)控的服務(wù)器是這個系統(tǒng)硬件的主要組成部分.應(yīng)用串口通信RTU設(shè)備與監(jiān)控設(shè)備之間通信并使Modbus TCP協(xié)議的轉(zhuǎn)換實現(xiàn),應(yīng)用TCP套接字技術(shù)服務(wù)器與監(jiān)控設(shè)備之間進行通信并使Modbus TCP協(xié)議的轉(zhuǎn)換實現(xiàn).
(1)設(shè)計協(xié)議轉(zhuǎn)換
在Modbus TCP協(xié)議中進行通信時候,是經(jīng)過何種網(wǎng)絡(luò)不需要考慮,因為它定義了一個消息結(jié)構(gòu)體,并且對消息域內(nèi)容和格局的公共公式進行了制定.在通信的時候這個協(xié)議對每個RTU設(shè)備的地址進行定義,對按地址發(fā)來的信息進行識別,并且對即將產(chǎn)生的行動進行決定.在需要回應(yīng)的情況下,反饋信息將在RTU設(shè)備中生成,采用Modbus TCP協(xié)議發(fā)出信息.相互轉(zhuǎn)換Modbus TCP協(xié)議與Modbus協(xié)議的時候,不需改變RTU,只需相應(yīng)的轉(zhuǎn)換MBAP報文頭.服務(wù)器的請求被接收到的時候,MBAP報文頭被Modbus TCP協(xié)議去掉并且被出送到RTU設(shè)備中.按照接收到的命令RTU設(shè)備進行數(shù)據(jù)讀取,而且對CRC進行差錯校驗;RTU設(shè)備的相應(yīng)被接收到的時候,相應(yīng)的MBAP報文頭被加在Modbus TCP協(xié)議上,CRC差錯校驗被去除并且傳送回服務(wù)器.通過這樣的過程實現(xiàn)兩個協(xié)議的相互轉(zhuǎn)換.
(2)實現(xiàn)設(shè)備參數(shù)讀寫
采用C/S模型實現(xiàn)設(shè)備參數(shù)讀寫模塊.
建立Socket通信是第一步,遠(yuǎn)程監(jiān)控終端與數(shù)據(jù)服務(wù)器建立連接是通過發(fā)送注冊包實現(xiàn)的,TCP?;顧C制被啟動,等候服務(wù)器發(fā)出命令,寫入或讀取設(shè)備參數(shù)命令由數(shù)據(jù)服務(wù)器發(fā)送的時候,按照Modbus TCP協(xié)議遠(yuǎn)程監(jiān)控終端接收命令,在傳入設(shè)備之前把它轉(zhuǎn)化為Modbus協(xié)議,根據(jù)其命令RTU設(shè)備對相應(yīng)設(shè)備參數(shù)進行寫入或讀取,并向遠(yuǎn)程監(jiān)控終端發(fā)送響應(yīng).在寫入或讀取成功的條件下,按照Modbus TCP協(xié)議接收到的響應(yīng)被遠(yuǎn)程監(jiān)控終端被封裝,并且發(fā)送給數(shù)據(jù)服務(wù)器;如果是失敗的寫入或讀取,按照Modbus TCP協(xié)議異常響應(yīng)被遠(yuǎn)程監(jiān)控終端發(fā)送到數(shù)據(jù)服務(wù)器.
(3)設(shè)計與實現(xiàn)套接字通信
監(jiān)控設(shè)備與服務(wù)器之間的數(shù)據(jù)交換是通過套接字通信層得以實現(xiàn)的,整個設(shè)計的核心是是串口同層并聯(lián).設(shè)計通信部分的流程如圖1所示.
(5)設(shè)計與實現(xiàn)串口通信
去除報文頭的Modbus數(shù)據(jù)的讀取來自于共享內(nèi)存.半雙工機制是串口采用的機制,不能同時進行接收數(shù)據(jù)與發(fā)送命令,串口數(shù)據(jù)的讀取是在發(fā)送完命令之后.自動方向切換芯片被采用之后就可以解決這一問題了.串口通信流程圖如圖2所示.
四.分析系統(tǒng)性能
(1)在監(jiān)控系統(tǒng)的作用和功能方面,在空壓機中對壓風(fēng)機房管理.操作效率低下以及人力物力浪費等問題進行解決,使處理.交換.傳遞信息的速度加快,使監(jiān)控系統(tǒng)的可靠性和安全性得到保證,使控制系統(tǒng)的人性化.智能化.自動化水平提高.主要功能在遠(yuǎn)程監(jiān)控系統(tǒng)中得以實現(xiàn)的有:使工作報表正常運行,各種故障中的報警得以實現(xiàn);供氣壓力參數(shù)可以遠(yuǎn)程設(shè)定,能夠在線修正參數(shù);實時監(jiān)測供氣壓力,供氣過壓和欠壓都會進行報警;供電系統(tǒng)的可靠性得以提高;等等.
(2)通過透明傳輸?shù)姆绞?,接收到的命令只需被遠(yuǎn)程監(jiān)控終端進行拆包,即協(xié)議解析不需要進行,MBAP報文頭被去掉;RTU響應(yīng)被收到之后,只需組裝接收到的響應(yīng),即CRC差錯校驗被去掉,加上MBAP報文頭,協(xié)議解析不需要進行,協(xié)議的透明化得以實現(xiàn).套接字通信性能的完善是通過Socket異常處理來實現(xiàn)的,對于數(shù)據(jù)服務(wù)在網(wǎng)絡(luò)中斷并自動重連能夠及時被系統(tǒng)檢測到.正常的網(wǎng)絡(luò)中斷很容易被套接字通信機制發(fā)現(xiàn),而像拔掉網(wǎng)線等不正的網(wǎng)絡(luò)中斷則不易被其發(fā)現(xiàn).
五.結(jié)束語
通過上述淺析Modbus協(xié)議.系統(tǒng)設(shè)計構(gòu)架.分析系統(tǒng)性能,可以得知,基于內(nèi)嵌Modbus協(xié)議的遠(yuǎn)程監(jiān)控系統(tǒng),可以實現(xiàn)設(shè)備參數(shù)讀寫和套接字通信,使處理.交換.傳遞信息的速度加快.總之,這一系統(tǒng)具有很多優(yōu)勢,需要我們加大這這方面的研究和應(yīng)用.
評論