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