引言
目前,嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)以其本身體積小、功能多、支持以太網(wǎng)技術(shù)等優(yōu)點(diǎn),已成為工控領(lǐng)域中的新熱點(diǎn)。網(wǎng)絡(luò)監(jiān)控系統(tǒng)的方式可分為B/S(瀏覽器/服務(wù)器)和C/S(客戶機(jī)/服務(wù)器)兩種。對(duì)于B/S形式,要求嵌入式服務(wù)器的存儲(chǔ)器容量足夠大,而且對(duì)于監(jiān)控設(shè)備結(jié)構(gòu)調(diào)整或?qū)ΡO(jiān)控內(nèi)容更改頻繁的應(yīng)用場合,就必須對(duì)嵌入式服務(wù)器中的網(wǎng)頁和CGI程序進(jìn)行更改,這無疑會(huì)使普通用戶在對(duì)服務(wù)器進(jìn)行維護(hù)和二次開發(fā)時(shí)遇到很大的困難。本文介紹的一種采用C/S結(jié)構(gòu)的系統(tǒng)設(shè)計(jì)可以克服以上問題。由于監(jiān)控對(duì)象和監(jiān)控頁面的設(shè)置都由客戶機(jī)完成,服務(wù)器只需進(jìn)行數(shù)據(jù)采集、響應(yīng)客戶請(qǐng)求、利用TCP/IP網(wǎng)絡(luò)發(fā)送客戶請(qǐng)求數(shù)據(jù)等工作,同時(shí)客戶機(jī)的監(jiān)控頁面采用通用的微軟Windows風(fēng)格,降低了對(duì)操作人員的要求,利于二次開發(fā)。
嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)的總體框架
以工廠生產(chǎn)自動(dòng)化中監(jiān)控PLC和CAN總線設(shè)備為例,為了實(shí)現(xiàn)工廠生產(chǎn)透明化,希望在任何地方都能通過網(wǎng)絡(luò)監(jiān)控生產(chǎn)情況,并能夠隨著工廠生產(chǎn)內(nèi)容的調(diào)整更換監(jiān)控內(nèi)容,因此,可采用C/S形式使監(jiān)控對(duì)象及監(jiān)控頁面由客戶自己根據(jù)具體要求定義。服務(wù)器由32位Freescale Coldfire系列中支持網(wǎng)絡(luò)通信的MCF5272芯片和專用于微控制的mClinux操作系統(tǒng)構(gòu)成。
。由客戶機(jī)發(fā)出對(duì)設(shè)備的監(jiān)控命令,嵌入式服務(wù)器接收并處理信息,根據(jù)客戶機(jī)請(qǐng)求對(duì)監(jiān)控對(duì)象發(fā)出控制命令,或通過串口和CAN接口獲得客戶機(jī)感興趣的狀態(tài),并將此信息通過網(wǎng)絡(luò)協(xié)議經(jīng)過網(wǎng)絡(luò)連接返回客戶端,由客戶端分析并與設(shè)計(jì)的監(jiān)控界面建立動(dòng)畫連接或?qū)F(xiàn)場設(shè)備的運(yùn)行狀態(tài)顯示在界面上,并將此信息存儲(chǔ)到客戶端歷史數(shù)據(jù)庫供用戶打印輸出或統(tǒng)計(jì)。
客戶端軟件設(shè)計(jì)
客戶端系統(tǒng)要完成的任務(wù)是監(jiān)控界面的制定和監(jiān)控任務(wù)的執(zhí)行,所以客戶端軟件有兩個(gè)功能模塊:界面開發(fā)環(huán)境和界面運(yùn)行環(huán)境。本系統(tǒng)使用的是由VC6.0開發(fā)的組態(tài)軟件,客戶可以自定義監(jiān)控界面風(fēng)格,也可與國內(nèi)生產(chǎn)組態(tài)軟件廠商合作設(shè)計(jì)通用的客戶端界面軟件。
其中界面開發(fā)環(huán)境的任務(wù)是生成監(jiān)控的人機(jī)界面,開發(fā)環(huán)境應(yīng)提供構(gòu)成現(xiàn)場畫面所需要的對(duì)象,如線、填充圖形、文本及可直接調(diào)用的圖庫,對(duì)于有實(shí)際意義的圖形運(yùn)行界面,還將提供會(huì)話式的對(duì)話框來使這些圖形與現(xiàn)場的控制單元建立動(dòng)畫連接。當(dāng)用戶通過開發(fā)環(huán)境自定義監(jiān)控界面后,開發(fā)環(huán)境會(huì)根據(jù)此界面建立一系列數(shù)據(jù)文件,并生成最終的圖形目標(biāo)應(yīng)用文件,供運(yùn)行環(huán)境使用。運(yùn)行環(huán)境將開發(fā)環(huán)境生成的目標(biāo)應(yīng)用文件裝入內(nèi)存并投入實(shí)時(shí)運(yùn)行,一般由多個(gè)線程來完成。界面運(yùn)行線程接收用戶請(qǐng)求事件,將用戶的請(qǐng)求按一定的數(shù)據(jù)格式發(fā)送到運(yùn)行與內(nèi)存的上行/ 下行消息隊(duì)列,實(shí)時(shí)消息管理線程將對(duì)消息隊(duì)列進(jìn)行管理并收發(fā)數(shù)據(jù)。為了滿足監(jiān)控對(duì)象的多樣性,消息收發(fā)線程在將用戶消息發(fā)送到服務(wù)器時(shí),就會(huì)根據(jù)開發(fā)環(huán)境提供的監(jiān)控PLC類型,在監(jiān)控設(shè)備協(xié)議解釋層將發(fā)送消息根據(jù)此設(shè)備的通信協(xié)議進(jìn)行組織。利用此方式可以方便地監(jiān)控各種設(shè)備。同時(shí),驅(qū)動(dòng)程序用動(dòng)態(tài)連接庫的形式給出,方便系統(tǒng)升級(jí)。
嵌入式服務(wù)器端系統(tǒng)設(shè)計(jì)
嵌入式服務(wù)器采用32位Freescale Coldfire 系列的MCF5272加mClinux微操作系統(tǒng)的方案,硬件結(jié)構(gòu)如圖3所示。5272是Freescale生產(chǎn)的基于68K第二代Coldfire內(nèi)核、可用于工業(yè)場合的嵌入式芯片,它集成以太網(wǎng)接口,運(yùn)算速度66MIPS。ColdFire 微處理器上可以運(yùn)行很多操作系統(tǒng),但是mClinux 可以說是最合適,性價(jià)比最高的操作系統(tǒng)。
本系統(tǒng)中服務(wù)器端運(yùn)行的mClinux系統(tǒng)的主要模塊有TCP/IP協(xié)議棧、PPPD模塊、以太網(wǎng)口、CAN驅(qū)動(dòng)和串口驅(qū)動(dòng),應(yīng)用程序有PPP撥號(hào)服務(wù)器模塊和經(jīng)過網(wǎng)絡(luò)通信響應(yīng)客戶機(jī)請(qǐng)求及與被控對(duì)象通信的服務(wù)程序。在編譯mClinux內(nèi)核時(shí)要加入所需組件,應(yīng)用程序編譯采用交叉編譯的方式,在運(yùn)行REDHAT9.0的PC機(jī)上用Freescale Coldfire系列 專用編譯器編譯后下載到服務(wù)器的FLASH中。在以太網(wǎng)接收及與PLC的通信驅(qū)動(dòng)程序中,服務(wù)器不斷監(jiān)聽網(wǎng)絡(luò)端口,將客戶機(jī)發(fā)來的消息通過網(wǎng)絡(luò)通信得到,并將其轉(zhuǎn)發(fā)到連接PLC的串口。定義客戶機(jī)端發(fā)向服務(wù)器的請(qǐng)求消息就是符合該監(jiān)控對(duì)象通信協(xié)議的請(qǐng)求消息,這樣服務(wù)器可連接任意系統(tǒng)支持的設(shè)備而不必設(shè)置監(jiān)控對(duì)象的類型,因?yàn)樵撊蝿?wù)已經(jīng)由客戶機(jī)在設(shè)計(jì)界面時(shí)完成。PPP服務(wù)器守護(hù)進(jìn)程主要在客戶機(jī)通過modem經(jīng)電話網(wǎng)撥入建立網(wǎng)絡(luò)連接時(shí)使用。
網(wǎng)絡(luò)通信及冗余技術(shù)
在監(jiān)控系統(tǒng)的客戶機(jī)上運(yùn)行的Windows操作系統(tǒng)中的客戶機(jī)監(jiān)控界面與嵌入式服務(wù)器之間的TCP/IP網(wǎng)絡(luò)通信編程方法是使用BSD Socket (套接口)界面編程。通過它,網(wǎng)絡(luò)端點(diǎn) (IP地址和端口地址)以套接口的形式出現(xiàn)。這種套接IPC(進(jìn)程間通訊)方式的設(shè)計(jì)是為了能讓網(wǎng)絡(luò)程序的設(shè)計(jì)獨(dú)立于不同的底層通信設(shè)施。本系統(tǒng)中客戶機(jī)和服務(wù)器之間的Socket通信是在異構(gòu)環(huán)境中進(jìn)行的,客戶機(jī)采用WinSocket,服務(wù)器采用Linux下的Socket。
為了保證通信暢通,在利用以太網(wǎng)端口進(jìn)行通信的基礎(chǔ)上,同時(shí)提供利用串口和modem撥號(hào)的方式作為與遠(yuǎn)端服務(wù)器建立通信鏈路的冗余。為了實(shí)現(xiàn)modem撥號(hào)連接,必須在客戶機(jī)端運(yùn)行撥號(hào)軟件,在服務(wù)器端運(yùn)行撥號(hào)服務(wù)器程序??蛻魴C(jī)可以使用Windows自帶的撥號(hào)軟件,而在服務(wù)器端就必須在后臺(tái)運(yùn)行撥號(hào)服務(wù)監(jiān)控程序。撥號(hào)通信采用的是PPP點(diǎn)對(duì)點(diǎn)協(xié)議,mClinux中帶有這個(gè)協(xié)議組件,同時(shí)通過PPPD協(xié)議例程來提供PPP連接時(shí)的LCP(鏈路控制協(xié)議)、用戶認(rèn)證、和IPCP(網(wǎng)絡(luò)協(xié)議配置)。
運(yùn)行在嵌入式服務(wù)器端的撥號(hào)服務(wù)器守護(hù)進(jìn)程的工作機(jī)理如下:對(duì)串口進(jìn)行設(shè)置并打開串口 ,發(fā)送AT指令檢查外部modem的存在;如modem正常,用標(biāo)準(zhǔn)AT指令設(shè)置自動(dòng)應(yīng)答模式,之后進(jìn)入檢測串口輸入循環(huán);當(dāng)有遠(yuǎn)程modem撥入的鈴流,即串口有RING字符收到后,軟件將強(qiáng)制摘機(jī),進(jìn)入物理鏈路建立連接階段;連接成功后,串口出現(xiàn)CONNECT字符,此時(shí)程序?qū)fork一個(gè)進(jìn)程,啟動(dòng)PPPD進(jìn)入PPP連接階段與撥入客戶機(jī)進(jìn)行握手協(xié)商協(xié)議,用戶認(rèn)證、配置遠(yuǎn)程計(jì)算機(jī)IP,成功后將建立PPP連接;PPPD在連接成功后,將更改mClinux系統(tǒng)的路由表添加新的直接到達(dá)的路由路徑,這樣就可以在客戶端和嵌入式服務(wù)器端通過串口收發(fā)IP包進(jìn)行網(wǎng)絡(luò)通信了。
結(jié)語
本文介紹的監(jiān)控系統(tǒng)的服務(wù)器端采用32位CPU加mClinux操作系統(tǒng)的嵌入式方案,利于設(shè)備的小型化,采用C/S形式將監(jiān)控界面交由客戶端設(shè)計(jì),并且系統(tǒng)對(duì)監(jiān)控對(duì)象無依賴性,可通過升級(jí)客戶機(jī)軟件來增加驅(qū)動(dòng)以滿足新的監(jiān)控任務(wù),這樣的設(shè)計(jì)模式增加了該系統(tǒng)的通用性、靈活性和產(chǎn)品生命周期,利于用戶的二次開發(fā)。在嵌入式網(wǎng)絡(luò)設(shè)備日益滲透到工業(yè)生產(chǎn)和各種監(jiān)控應(yīng)用中的趨勢下,這種系統(tǒng)將會(huì)有很好的利用前景?!?