李 萌,楊 彬
(中環天儀股份有限公司,天津 300384)
EPA實時以太網是一種全新的適用于工業現場設備的開放型實時以太網標準[1],是我國第一個擁有自主知識產權并被國際標準化組織接受和采用的工業自動化標準[2],具有協議處理時間短,報文傳輸實時性高,可靠性與抗干擾能力強等特點[3]。
在工業控制領域,傳統的Web服務器結構復雜,實時性差。嵌入式Web服務器基于HTTP協議運作,具有標準的接口形式和通信協議,用戶只需要瀏覽器即可對現場設備進行控制和檢測,技術具有平臺獨立性和開放性,對軟件系統的設計維護更加容易,硬件成本低,安裝方便[4]。
本文以EPA通信模型為基礎,采用32位微處理器AT91SAM9G20作為CPU,搭建嵌入式Linux服務器軟件系統,實現具有現場總線通信能力的Web服務器,滿足EPA現場設備的遠程控制需求。
嵌入式Web服務器是EPA現場網絡設備與客戶端進行信息交互的樞紐,是現場設備層與過程監控層之間以及與遠程網絡互連的關鍵設備。其網絡系統結構圖如圖1所示。

圖1 網絡系統結構Fig.1 System structure of network
整個嵌入式網絡控制系統分為3層網絡結構,分別是信息層、控制層和設備層。信息層即是上位監控客戶機,主要通過Web瀏覽器的方式訪問控制層,主要負責監控現場設備;控制層即嵌入式Web服務器,為控制系統的核心部件,負責將控制節點采集的現場設備的運行狀態傳送至監控界面進行顯示,并且將監控界面的控制信息發送給控制節點,成為信息交互的樞紐;設備層即現場連接的EPA網絡設備。
嵌入式Web服務器的硬件結構如圖2所示。硬件構成的核心是微處理器,外圍連接電源時鐘電路、調試接口電路、存儲器擴展電路、網絡芯片電路。

圖2 嵌入式Web服務器的硬件結構Fig.2 Hardware structure of the embedded Web server
服務器承載了諸多通信任務,是嵌入式網絡控制系統的核心所在,選擇具有高性能、可移植嵌入式操作系統的ARM9微處理器。AT91SAM9G20基于ARM926EJ-S核心處理器,時鐘頻率為400MHz。本身帶有MMU(內存管理單元),可移植Linux等大型操作系統。CPU內置多種外設控制器,具有豐富的總線接口和強大的擴展能力,時鐘頻率可達400MHz。
系統采用以太網總線供電,通過EUP3410降壓模塊將工業交換機提供的24 V電源轉換為5 V電源,再通過LM1086-33和TPS60500降壓模塊分別將5 V電源轉換為3.3 V和1 V電源,為服務器的多種外圍芯片和微處理器內核供電。
實時時鐘(RTC)當硬件在斷電的情況下需要有后備電源給電路板的實時時鐘供電,保證時鐘系統的正常運行,采用32.768 kHz的無源晶振作為RTC時鐘。
服務器需要一個18.432MHz的無源晶振作為系統外部時鐘源,為芯片、片內總線及片內功能模塊提供時鐘。
SDRAM和NandFlash作為微處理器的存儲擴展,通過總線復用,分別擴展容量為64MB的SDRAM存儲器和容量為128 MB的NandFlash存儲器。
USB接口和DEBUG接口用于系統程序的下載和調試。
以太網通信部分采用工業級單口物理層收發器 DM9161BIEP,通過MII(介質無關接口)與微處理器AT91SAM9G20內部的以太網MAC層控制器相連。
為了增強EPA現場設備網絡的安全性,使Web服務器對Internet和EPA網絡之間起到隔離作用,Web服務器采用雙端口設計。另一個以太網端口通過總線擴展連接工業級以太網控制器DM9000CIEP。
嵌入式Web服務器的軟件體系結構如圖3所示。
啟動引導程序是Linux操作系統內核運行前的一小段程序,用于驅動設備、建立內存映射,并載入系統內核。移植時需要對與硬件結構相關的程序進行修改,并使其支持內核所使用的文件系統[5]。

圖3 嵌入式Web服務器的軟件體系結構Fig.3 Software structure system of the em bedded Web server
內核是Linux操作系統的主要軟件組件,具有硬件驅動、內存管理、進程調度、文件系統、網絡通信等功能。內核的功能取決于內核構建時所設置的配置,需要進行配置和裁剪[6]。
EPA設備接入以太網,必須嵌入EPA協議棧,使用戶應用程序使用通用的網絡編程技術與EPA設備實現通信。EPA報文采用UDP/IP封裝,EPA協議棧包括EPA系統管理實體、EPA應用訪問實體、EPA套接字映射實體,并包括時鐘同步、通信調度,各模塊相輔相成、相互聯系。通信調度模塊實現整個系統的通信調度算法,保證了以太網通信時數據的通信順序和優先級,保證服務器通信的實時性和確定性。時鐘同步模塊為通信調度模塊提供精確的網絡同步時鐘,保證了網絡上每個設備按照組態時間進行數據的發送。
服務器移植嵌入式數據庫SQLite,SQLite具有簡單、小巧、穩定的特點,非常適用于中小型網站、嵌入式設備的應用。嵌入式網絡控制系統中內置數據庫主要用來存儲網絡節點的歷史數據,并提供調用服務供監控層的操作用戶讀取,通過SQLite對采集的現場數據進行記錄,為定期查看現場設備的運行狀態提供有力的參考數據。
EPA服務器應用程序是Web服務器軟件架構的核心,需要搭建適當的服務器模型,使其具有能夠快速對多網絡節點進行并發采集和控制的能力。
為了支持服務器的瀏覽器訪問,軟件體系結構移植嵌入式Web服務器BOA,修改BOA配置文件,設置網絡訪問網頁[7-8]。
為了支持動態網頁,BOA服務器的鏈接網頁選擇將Java Applet嵌入到HTML網頁當中,實現實時數據的動態刷新。
EPA服務器應用程序采用并發服務器模型,建立線程池,實現多端口編程。Web服務器具有兩個以太網接口,分別連接Internet和EPA網絡設備,兩種網絡應用的協議完全不同。Internet網絡應用HTTP協議,底層采用TCP協議,EPA網絡遵循EPA協議。兩種網絡都要掛載多個連接對象,進行實時數據交互。
針對兩種網絡協議,建立兩個網絡監聽線程:Web端口監聽線程和EPA模塊監聽線程。Web端口監聽線程建立TCP連接套接字,對TCP協議的固定端口進行監聽,當有客戶端進行連接時,建立客戶端連接線程,一個線程對應一個客戶端,沒有客戶端連接時Web端口監聽線程阻塞。服務器維護一個客戶端連接鏈表,記載在線的客戶端連接信息;EPA協議底層采用的是UDP協議進行封裝,EPA模塊監聽線程利用UDP接口函數綁定固定端口,等待EPA現場設備數據的輸入。當有EPA設備連接時,產生EPA設備連接線程。同樣,服務器維護一個現場設備連接鏈表,記載在線的現場設備連接信息。
客戶端連接線程直接響應所連接客戶端的控制信息,并將底層EPA設備的信息發送給客戶端。
EPA設備連接線程采集現場設備的信息,并將客戶端控制信息下達給現場設備。
Web端口監聽線程和客戶端連接線程流程如圖4所示。

圖4 Web端口監聽線程和客戶端連接線程流程Fig.4 Application program flow chart of the Web port listen thread and the client connection thread
當客戶端連接線程接收到客戶端控制信息時,對請求信息的控制協議進行解析,根據控制對象查找現場設備連接鏈表,建立消息隊列,將消息傳遞給對應的EPA設備連接線程;EPA設備連接線程接收客戶端線程發送的消息隊列,進行協議解析,轉換為EPA協議,發送給現場EPA設備。
EPA線程設備信息的采集過程與客戶端控制信息的下達過程相反,進行EPA協議向TCP協議的轉換,同樣利用消息隊列進行線程間信息的傳遞,并且將現場采集的設備信息保存至SQLite數據庫。
為了使用戶界面便捷、直觀、可視性更強,具有可操作性,Web瀏覽器上顯示的圖形界面就需要與嵌入式Web服務器進行實時通訊,獲得現場儀表的數據信息,并進行動態刷新,本文采用Java Applet技術實現上述應用。如圖5所示,為用戶界面實現原理圖。

圖5 用戶界面實現原理圖Fig.5 Principle diagram of the user interface im plementation
EPA服務器應用程序與客戶端進行TCP通信,并實時將采集數據保存于數據庫。
嵌入式Web服務器移植BOA服務器。BOA服務器開源,應用廣泛,系統內存消耗特別少,因此非常適合于嵌入式設備。移植后需要對BOA服務器進行相應配置,定義BOA服務器的文件根目錄和瀏覽主頁的索引文件名。設置嵌入式系統啟動后,自動運行BOA服務器。
BOA服務器的文件根目錄當中,存放HTML瀏覽器訪問頁面,在HTML文件中通過
客戶端通過瀏覽器訪問嵌入式Web服務器,當BOA服務器接收到客戶端訪問信息時,通過Internet將BOA服務器當中的HTML文件、Java Applet的類文件及其它相關文件傳送給客戶端,客戶端運行HTML文件,調用Java Applet小程序,進行與EPA服務器應用程序的TCP通信和動態刷新,實現Web動態頁面交互。
當瀏覽器載入包含Java Applet的Web頁面時,瀏覽器將生成一個Java Applet類的對象,根據此對象中的基本方法控制Java Applet的運行。
Web動態頁面既要與服務器進行實時通信,又要對屏幕進行動態刷新,為了實現多種功能于一身,Java Applet采用多線程編程。
程序開始建立TCP套接字,建立輸入、輸出流,實現對套接字數據的接收和發送,建立兩個線程,線程1實現對現場儀表參數和儀表數據的讀取,線程2實現對屏幕的定時刷新。
線程1每100ms運行一次,發送指定儀表的讀取命令,接收服務器返回的采集數據,并將數據進行保存,以便用于界面的顯示。
線程2每20ms運行一次,首先繪制樹形結構,之后根據采集數據,定時重新繪制儀表參數組合框和儀表數據組合框。
Java Applet界面具有按鍵觸發功能,點擊樹形結構節點,會對儀表的顯示界面進行切換;點擊參數設置按鈕,將參數信息發送給服務器,并對參數顯示組合框進行刷新;點擊數據讀取按鈕,會手動讀取現場儀表信息,并將采集的最新數據顯示于組合框。
系統測試使用Web服務器采集EPA現場控制系統的儀表數據,EPA控制系統具有EPA壓力、流量、執行器、閥門定位器等儀表,現場儀表連接工業交換機,Web服務器一個網口連接交換機,一個連接Internet。客戶端PC機只要通過瀏覽器訪問Web服務器的IP地址,即可在瀏覽器中觀測到服務器的監控界面。界面需要管理員身份登錄,登錄后即可實時查看現場設備運行狀態。
如圖6所示,為嵌入式Web服務器監控界面。左側顯示系統所連接的EPA儀表,點擊儀表節點,可設置儀表所需的參數,查看儀表運行的當前信息,每20ms對數據進行一次動態刷新。
可見,嵌入式Web服務器的操作便捷,具有友好的界面,性能穩定,實時可靠,方便用戶遠程獲取節點信息。

圖6 嵌入式Web服務器監控界面Fig.6 Monitoring interface o f the embedded Web server
本文介紹了一種基于EPA標準的嵌入式Web服務器的設計方案,實現了Internet與EPA工業以太網的互聯,完成了對EPA工業以太網的監測、控制和管理,各項測試符合相應的性能指標,且工作穩定。嵌入式Web服務器的設計,實現了工業以太網的Web界面訪問,客戶端程序簡潔,訪問便捷,具有廣闊的應用前景。
[1] 馮冬芹,金建祥,褚健.工業以太網關鍵技術初探[J].信息與控制,2003,32(3):221-224.
[2] 國家質量技術監督局.GB/T20171-2006用于工業測量與控制系統的EPA系統結構與通信規范[S].北京:中國標準出版社,2006.
[3] 向敏,徐洋,程安宇,等.嵌入式EPA安全網橋的設計[J].儀器儀表學報,2008,29(2):289-294.
[4] 劉志東,紀金水,楊鋒英.嵌入式Web服務器技術探究[J].電腦知識與技術,2011,7(27):6612-6613,6637.
[5] 韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.
[6] 楊水清,張劍,施云飛.ARM嵌入式Linux系統開發技術詳解[M].北京:電子工業出版社,2009.
[7] 保川,班建民,陸衛忠.基于嵌入式Web的遠程監控系統設計[J].微計算機信息,2005,21(7):58-60.
[8] 韓樹人,周賢娟.基于嵌入式Web服務器的遠程實時數據采集[J].計算機技術與發展,2008,18(1):206-209. ■