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