李 萌,楊 彬
(中環(huán)天儀股份有限公司,天津 300384)
EPA實(shí)時以太網(wǎng)是一種全新的適用于工業(yè)現(xiàn)場設(shè)備的開放型實(shí)時以太網(wǎng)標(biāo)準(zhǔn)[1],是我國第一個擁有自主知識產(chǎn)權(quán)并被國際標(biāo)準(zhǔn)化組織接受和采用的工業(yè)自動化標(biāo)準(zhǔn)[2],具有協(xié)議處理時間短,報(bào)文傳輸實(shí)時性高,可靠性與抗干擾能力強(qiáng)等特點(diǎn)[3]。
在工業(yè)控制領(lǐng)域,傳統(tǒng)的Web服務(wù)器結(jié)構(gòu)復(fù)雜,實(shí)時性差。嵌入式Web服務(wù)器基于HTTP協(xié)議運(yùn)作,具有標(biāo)準(zhǔn)的接口形式和通信協(xié)議,用戶只需要瀏覽器即可對現(xiàn)場設(shè)備進(jìn)行控制和檢測,技術(shù)具有平臺獨(dú)立性和開放性,對軟件系統(tǒng)的設(shè)計(jì)維護(hù)更加容易,硬件成本低,安裝方便[4]。
本文以EPA通信模型為基礎(chǔ),采用32位微處理器AT91SAM9G20作為CPU,搭建嵌入式Linux服務(wù)器軟件系統(tǒng),實(shí)現(xiàn)具有現(xiàn)場總線通信能力的Web服務(wù)器,滿足EPA現(xiàn)場設(shè)備的遠(yuǎn)程控制需求。
嵌入式Web服務(wù)器是EPA現(xiàn)場網(wǎng)絡(luò)設(shè)備與客戶端進(jìn)行信息交互的樞紐,是現(xiàn)場設(shè)備層與過程監(jiān)控層之間以及與遠(yuǎn)程網(wǎng)絡(luò)互連的關(guān)鍵設(shè)備。其網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)Fig.1 System structure of network
整個嵌入式網(wǎng)絡(luò)控制系統(tǒng)分為3層網(wǎng)絡(luò)結(jié)構(gòu),分別是信息層、控制層和設(shè)備層。信息層即是上位監(jiān)控客戶機(jī),主要通過Web瀏覽器的方式訪問控制層,主要負(fù)責(zé)監(jiān)控現(xiàn)場設(shè)備;控制層即嵌入式Web服務(wù)器,為控制系統(tǒng)的核心部件,負(fù)責(zé)將控制節(jié)點(diǎn)采集的現(xiàn)場設(shè)備的運(yùn)行狀態(tài)傳送至監(jiān)控界面進(jìn)行顯示,并且將監(jiān)控界面的控制信息發(fā)送給控制節(jié)點(diǎn),成為信息交互的樞紐;設(shè)備層即現(xiàn)場連接的EPA網(wǎng)絡(luò)設(shè)備。
嵌入式Web服務(wù)器的硬件結(jié)構(gòu)如圖2所示。硬件構(gòu)成的核心是微處理器,外圍連接電源時鐘電路、調(diào)試接口電路、存儲器擴(kuò)展電路、網(wǎng)絡(luò)芯片電路。
圖2 嵌入式Web服務(wù)器的硬件結(jié)構(gòu)Fig.2 Hardware structure of the embedded Web server
服務(wù)器承載了諸多通信任務(wù),是嵌入式網(wǎng)絡(luò)控制系統(tǒng)的核心所在,選擇具有高性能、可移植嵌入式操作系統(tǒng)的ARM9微處理器。AT91SAM9G20基于ARM926EJ-S核心處理器,時鐘頻率為400MHz。本身帶有MMU(內(nèi)存管理單元),可移植Linux等大型操作系統(tǒng)。CPU內(nèi)置多種外設(shè)控制器,具有豐富的總線接口和強(qiáng)大的擴(kuò)展能力,時鐘頻率可達(dá)400MHz。
系統(tǒng)采用以太網(wǎng)總線供電,通過EUP3410降壓模塊將工業(yè)交換機(jī)提供的24 V電源轉(zhuǎn)換為5 V電源,再通過LM1086-33和TPS60500降壓模塊分別將5 V電源轉(zhuǎn)換為3.3 V和1 V電源,為服務(wù)器的多種外圍芯片和微處理器內(nèi)核供電。
實(shí)時時鐘(RTC)當(dāng)硬件在斷電的情況下需要有后備電源給電路板的實(shí)時時鐘供電,保證時鐘系統(tǒng)的正常運(yùn)行,采用32.768 kHz的無源晶振作為RTC時鐘。
服務(wù)器需要一個18.432MHz的無源晶振作為系統(tǒng)外部時鐘源,為芯片、片內(nèi)總線及片內(nèi)功能模塊提供時鐘。
SDRAM和NandFlash作為微處理器的存儲擴(kuò)展,通過總線復(fù)用,分別擴(kuò)展容量為64MB的SDRAM存儲器和容量為128 MB的NandFlash存儲器。
USB接口和DEBUG接口用于系統(tǒng)程序的下載和調(diào)試。
以太網(wǎng)通信部分采用工業(yè)級單口物理層收發(fā)器 DM9161BIEP,通過MII(介質(zhì)無關(guān)接口)與微處理器AT91SAM9G20內(nèi)部的以太網(wǎng)MAC層控制器相連。
為了增強(qiáng)EPA現(xiàn)場設(shè)備網(wǎng)絡(luò)的安全性,使Web服務(wù)器對Internet和EPA網(wǎng)絡(luò)之間起到隔離作用,Web服務(wù)器采用雙端口設(shè)計(jì)。另一個以太網(wǎng)端口通過總線擴(kuò)展連接工業(yè)級以太網(wǎng)控制器DM9000CIEP。
嵌入式Web服務(wù)器的軟件體系結(jié)構(gòu)如圖3所示。
啟動引導(dǎo)程序是Linux操作系統(tǒng)內(nèi)核運(yùn)行前的一小段程序,用于驅(qū)動設(shè)備、建立內(nèi)存映射,并載入系統(tǒng)內(nèi)核。移植時需要對與硬件結(jié)構(gòu)相關(guān)的程序進(jìn)行修改,并使其支持內(nèi)核所使用的文件系統(tǒng)[5]。
圖3 嵌入式Web服務(wù)器的軟件體系結(jié)構(gòu)Fig.3 Software structure system of the em bedded Web server
內(nèi)核是Linux操作系統(tǒng)的主要軟件組件,具有硬件驅(qū)動、內(nèi)存管理、進(jìn)程調(diào)度、文件系統(tǒng)、網(wǎng)絡(luò)通信等功能。內(nèi)核的功能取決于內(nèi)核構(gòu)建時所設(shè)置的配置,需要進(jìn)行配置和裁剪[6]。
EPA設(shè)備接入以太網(wǎng),必須嵌入EPA協(xié)議棧,使用戶應(yīng)用程序使用通用的網(wǎng)絡(luò)編程技術(shù)與EPA設(shè)備實(shí)現(xiàn)通信。EPA報(bào)文采用UDP/IP封裝,EPA協(xié)議棧包括EPA系統(tǒng)管理實(shí)體、EPA應(yīng)用訪問實(shí)體、EPA套接字映射實(shí)體,并包括時鐘同步、通信調(diào)度,各模塊相輔相成、相互聯(lián)系。通信調(diào)度模塊實(shí)現(xiàn)整個系統(tǒng)的通信調(diào)度算法,保證了以太網(wǎng)通信時數(shù)據(jù)的通信順序和優(yōu)先級,保證服務(wù)器通信的實(shí)時性和確定性。時鐘同步模塊為通信調(diào)度模塊提供精確的網(wǎng)絡(luò)同步時鐘,保證了網(wǎng)絡(luò)上每個設(shè)備按照組態(tài)時間進(jìn)行數(shù)據(jù)的發(fā)送。
服務(wù)器移植嵌入式數(shù)據(jù)庫SQLite,SQLite具有簡單、小巧、穩(wěn)定的特點(diǎn),非常適用于中小型網(wǎng)站、嵌入式設(shè)備的應(yīng)用。嵌入式網(wǎng)絡(luò)控制系統(tǒng)中內(nèi)置數(shù)據(jù)庫主要用來存儲網(wǎng)絡(luò)節(jié)點(diǎn)的歷史數(shù)據(jù),并提供調(diào)用服務(wù)供監(jiān)控層的操作用戶讀取,通過SQLite對采集的現(xiàn)場數(shù)據(jù)進(jìn)行記錄,為定期查看現(xiàn)場設(shè)備的運(yùn)行狀態(tài)提供有力的參考數(shù)據(jù)。
EPA服務(wù)器應(yīng)用程序是Web服務(wù)器軟件架構(gòu)的核心,需要搭建適當(dāng)?shù)姆?wù)器模型,使其具有能夠快速對多網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行并發(fā)采集和控制的能力。
為了支持服務(wù)器的瀏覽器訪問,軟件體系結(jié)構(gòu)移植嵌入式Web服務(wù)器BOA,修改BOA配置文件,設(shè)置網(wǎng)絡(luò)訪問網(wǎng)頁[7-8]。
為了支持動態(tài)網(wǎng)頁,BOA服務(wù)器的鏈接網(wǎng)頁選擇將Java Applet嵌入到HTML網(wǎng)頁當(dāng)中,實(shí)現(xiàn)實(shí)時數(shù)據(jù)的動態(tài)刷新。
EPA服務(wù)器應(yīng)用程序采用并發(fā)服務(wù)器模型,建立線程池,實(shí)現(xiàn)多端口編程。Web服務(wù)器具有兩個以太網(wǎng)接口,分別連接Internet和EPA網(wǎng)絡(luò)設(shè)備,兩種網(wǎng)絡(luò)應(yīng)用的協(xié)議完全不同。Internet網(wǎng)絡(luò)應(yīng)用HTTP協(xié)議,底層采用TCP協(xié)議,EPA網(wǎng)絡(luò)遵循EPA協(xié)議。兩種網(wǎng)絡(luò)都要掛載多個連接對象,進(jìn)行實(shí)時數(shù)據(jù)交互。
針對兩種網(wǎng)絡(luò)協(xié)議,建立兩個網(wǎng)絡(luò)監(jiān)聽線程:Web端口監(jiān)聽線程和EPA模塊監(jiān)聽線程。Web端口監(jiān)聽線程建立TCP連接套接字,對TCP協(xié)議的固定端口進(jìn)行監(jiān)聽,當(dāng)有客戶端進(jìn)行連接時,建立客戶端連接線程,一個線程對應(yīng)一個客戶端,沒有客戶端連接時Web端口監(jiān)聽線程阻塞。服務(wù)器維護(hù)一個客戶端連接鏈表,記載在線的客戶端連接信息;EPA協(xié)議底層采用的是UDP協(xié)議進(jìn)行封裝,EPA模塊監(jiān)聽線程利用UDP接口函數(shù)綁定固定端口,等待EPA現(xiàn)場設(shè)備數(shù)據(jù)的輸入。當(dāng)有EPA設(shè)備連接時,產(chǎn)生EPA設(shè)備連接線程。同樣,服務(wù)器維護(hù)一個現(xiàn)場設(shè)備連接鏈表,記載在線的現(xiàn)場設(shè)備連接信息。
客戶端連接線程直接響應(yīng)所連接客戶端的控制信息,并將底層EPA設(shè)備的信息發(fā)送給客戶端。
EPA設(shè)備連接線程采集現(xiàn)場設(shè)備的信息,并將客戶端控制信息下達(dá)給現(xiàn)場設(shè)備。
Web端口監(jiān)聽線程和客戶端連接線程流程如圖4所示。
圖4 Web端口監(jiān)聽線程和客戶端連接線程流程Fig.4 Application program flow chart of the Web port listen thread and the client connection thread
當(dāng)客戶端連接線程接收到客戶端控制信息時,對請求信息的控制協(xié)議進(jìn)行解析,根據(jù)控制對象查找現(xiàn)場設(shè)備連接鏈表,建立消息隊(duì)列,將消息傳遞給對應(yīng)的EPA設(shè)備連接線程;EPA設(shè)備連接線程接收客戶端線程發(fā)送的消息隊(duì)列,進(jìn)行協(xié)議解析,轉(zhuǎn)換為EPA協(xié)議,發(fā)送給現(xiàn)場EPA設(shè)備。
EPA線程設(shè)備信息的采集過程與客戶端控制信息的下達(dá)過程相反,進(jìn)行EPA協(xié)議向TCP協(xié)議的轉(zhuǎn)換,同樣利用消息隊(duì)列進(jìn)行線程間信息的傳遞,并且將現(xiàn)場采集的設(shè)備信息保存至SQLite數(shù)據(jù)庫。
為了使用戶界面便捷、直觀、可視性更強(qiáng),具有可操作性,Web瀏覽器上顯示的圖形界面就需要與嵌入式Web服務(wù)器進(jìn)行實(shí)時通訊,獲得現(xiàn)場儀表的數(shù)據(jù)信息,并進(jìn)行動態(tài)刷新,本文采用Java Applet技術(shù)實(shí)現(xiàn)上述應(yīng)用。如圖5所示,為用戶界面實(shí)現(xiàn)原理圖。
圖5 用戶界面實(shí)現(xiàn)原理圖Fig.5 Principle diagram of the user interface im plementation
EPA服務(wù)器應(yīng)用程序與客戶端進(jìn)行TCP通信,并實(shí)時將采集數(shù)據(jù)保存于數(shù)據(jù)庫。
嵌入式Web服務(wù)器移植BOA服務(wù)器。BOA服務(wù)器開源,應(yīng)用廣泛,系統(tǒng)內(nèi)存消耗特別少,因此非常適合于嵌入式設(shè)備。移植后需要對BOA服務(wù)器進(jìn)行相應(yīng)配置,定義BOA服務(wù)器的文件根目錄和瀏覽主頁的索引文件名。設(shè)置嵌入式系統(tǒng)啟動后,自動運(yùn)行BOA服務(wù)器。
BOA服務(wù)器的文件根目錄當(dāng)中,存放HTML瀏覽器訪問頁面,在HTML文件中通過
客戶端通過瀏覽器訪問嵌入式Web服務(wù)器,當(dāng)BOA服務(wù)器接收到客戶端訪問信息時,通過Internet將BOA服務(wù)器當(dāng)中的HTML文件、Java Applet的類文件及其它相關(guān)文件傳送給客戶端,客戶端運(yùn)行HTML文件,調(diào)用Java Applet小程序,進(jìn)行與EPA服務(wù)器應(yīng)用程序的TCP通信和動態(tài)刷新,實(shí)現(xiàn)Web動態(tài)頁面交互。
當(dāng)瀏覽器載入包含Java Applet的Web頁面時,瀏覽器將生成一個Java Applet類的對象,根據(jù)此對象中的基本方法控制Java Applet的運(yùn)行。
Web動態(tài)頁面既要與服務(wù)器進(jìn)行實(shí)時通信,又要對屏幕進(jìn)行動態(tài)刷新,為了實(shí)現(xiàn)多種功能于一身,Java Applet采用多線程編程。
程序開始建立TCP套接字,建立輸入、輸出流,實(shí)現(xiàn)對套接字?jǐn)?shù)據(jù)的接收和發(fā)送,建立兩個線程,線程1實(shí)現(xiàn)對現(xiàn)場儀表參數(shù)和儀表數(shù)據(jù)的讀取,線程2實(shí)現(xiàn)對屏幕的定時刷新。
線程1每100ms運(yùn)行一次,發(fā)送指定儀表的讀取命令,接收服務(wù)器返回的采集數(shù)據(jù),并將數(shù)據(jù)進(jìn)行保存,以便用于界面的顯示。
線程2每20ms運(yùn)行一次,首先繪制樹形結(jié)構(gòu),之后根據(jù)采集數(shù)據(jù),定時重新繪制儀表參數(shù)組合框和儀表數(shù)據(jù)組合框。
Java Applet界面具有按鍵觸發(fā)功能,點(diǎn)擊樹形結(jié)構(gòu)節(jié)點(diǎn),會對儀表的顯示界面進(jìn)行切換;點(diǎn)擊參數(shù)設(shè)置按鈕,將參數(shù)信息發(fā)送給服務(wù)器,并對參數(shù)顯示組合框進(jìn)行刷新;點(diǎn)擊數(shù)據(jù)讀取按鈕,會手動讀取現(xiàn)場儀表信息,并將采集的最新數(shù)據(jù)顯示于組合框。
系統(tǒng)測試使用Web服務(wù)器采集EPA現(xiàn)場控制系統(tǒng)的儀表數(shù)據(jù),EPA控制系統(tǒng)具有EPA壓力、流量、執(zhí)行器、閥門定位器等儀表,現(xiàn)場儀表連接工業(yè)交換機(jī),Web服務(wù)器一個網(wǎng)口連接交換機(jī),一個連接Internet??蛻舳薖C機(jī)只要通過瀏覽器訪問Web服務(wù)器的IP地址,即可在瀏覽器中觀測到服務(wù)器的監(jiān)控界面。界面需要管理員身份登錄,登錄后即可實(shí)時查看現(xiàn)場設(shè)備運(yùn)行狀態(tài)。
如圖6所示,為嵌入式Web服務(wù)器監(jiān)控界面。左側(cè)顯示系統(tǒng)所連接的EPA儀表,點(diǎn)擊儀表節(jié)點(diǎn),可設(shè)置儀表所需的參數(shù),查看儀表運(yùn)行的當(dāng)前信息,每20ms對數(shù)據(jù)進(jìn)行一次動態(tài)刷新。
可見,嵌入式Web服務(wù)器的操作便捷,具有友好的界面,性能穩(wěn)定,實(shí)時可靠,方便用戶遠(yuǎn)程獲取節(jié)點(diǎn)信息。
圖6 嵌入式Web服務(wù)器監(jiān)控界面Fig.6 Monitoring interface o f the embedded Web server
本文介紹了一種基于EPA標(biāo)準(zhǔn)的嵌入式Web服務(wù)器的設(shè)計(jì)方案,實(shí)現(xiàn)了Internet與EPA工業(yè)以太網(wǎng)的互聯(lián),完成了對EPA工業(yè)以太網(wǎng)的監(jiān)測、控制和管理,各項(xiàng)測試符合相應(yīng)的性能指標(biāo),且工作穩(wěn)定。嵌入式Web服務(wù)器的設(shè)計(jì),實(shí)現(xiàn)了工業(yè)以太網(wǎng)的Web界面訪問,客戶端程序簡潔,訪問便捷,具有廣闊的應(yīng)用前景。
[1] 馮冬芹,金建祥,褚健.工業(yè)以太網(wǎng)關(guān)鍵技術(shù)初探[J].信息與控制,2003,32(3):221-224.
[2] 國家質(zhì)量技術(shù)監(jiān)督局.GB/T20171-2006用于工業(yè)測量與控制系統(tǒng)的EPA系統(tǒng)結(jié)構(gòu)與通信規(guī)范[S].北京:中國標(biāo)準(zhǔn)出版社,2006.
[3] 向敏,徐洋,程安宇,等.嵌入式EPA安全網(wǎng)橋的設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2008,29(2):289-294.
[4] 劉志東,紀(jì)金水,楊鋒英.嵌入式Web服務(wù)器技術(shù)探究[J].電腦知識與技術(shù),2011,7(27):6612-6613,6637.
[5] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.
[6] 楊水清,張劍,施云飛.ARM嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2009.
[7] 保川,班建民,陸衛(wèi)忠.基于嵌入式Web的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2005,21(7):58-60.
[8] 韓樹人,周賢娟.基于嵌入式Web服務(wù)器的遠(yuǎn)程實(shí)時數(shù)據(jù)采集[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(1):206-209. ■