一種實用的嵌入式Web服務器設計
摘要:數(shù)字化變電站越來越多地采用以太網技術,針對各種保護和控制IED(Integlrated Drive Electronlcs)的參數(shù)配置以及狀態(tài)監(jiān)測問題,本文通過對Linux平臺上的BOA服務器和CGIC的源碼進行研究和修改,設計了一種實用的嵌入式Web服務器。它可方便地在支持TCP/IP協(xié)議的非Linux的嵌入式系統(tǒng)上運行,在不影響IED原有功能的前提下對用戶提供Web服務,同時提出了一種適合嵌入式系統(tǒng)使用的訪問權限認證和對Web頁面的管理及動態(tài)生成機制,并支持Web方式下文件的上傳與下載。它為變電站現(xiàn)場嵌入式IED的遠端訪問與控制提供了一種新的思路和方法。
關鍵詞:數(shù)字化變電站;嵌入式IED;TCP/IP;嵌入式Web服務器;BOA;CGIC
引言
數(shù)字化變電站是建立在網絡通信技術和電子技術基礎上的一種新型變電站自動化系統(tǒng),其中一個重要特征就是二次設備的網絡化。目前在國內的數(shù)字化變電站試點中,已經出現(xiàn)了大批支持以太網和TCP/IP協(xié)議的嵌入式IED,在具體開發(fā)和應用中發(fā)現(xiàn),由于現(xiàn)場環(huán)境的復雜多變以及客戶需求的多樣性,經常需要對這些IED進行參數(shù)的配置和修改。但廠家多采用專門的配置軟件來進行,操作界面不夠統(tǒng)一,給現(xiàn)場操作帶來諸多不便。而采用Web服務器技術,則只需要瀏覽器便可實現(xiàn)對IED參數(shù)的在線修改與配置,從而極大地方便了對設備的維護和管理。目前,Web服務器功能在數(shù)字化變電站中,多用于調度與監(jiān)控端設計,單純在IED上實現(xiàn)Web服務器功能的報道尚不多見。本文通過對Linux平臺上運行的BoA Web服務器和CGIC的研究,將原本兩個獨立運行的程序整合為多任務系統(tǒng)中的一個任務實體,并對其進行相應的精簡和修改;設計并實現(xiàn)了一種可在一般嵌入式系統(tǒng)上運行的,既相對簡單又響應快速的嵌入式Web服務器。目前已在相關裝置上得到應用,取得了較好的使用效果。
BOA和CGIC是兩個基于Linux的開源軟件,代碼采用C語言實現(xiàn),程序小巧靈活、執(zhí)行高效,非常適合于嵌入式系統(tǒng)的應用環(huán)境。但目前多用于Linux或μClinux的系統(tǒng)平臺上。鮮見有用于其他系統(tǒng)的相關報道。
其中BOA是一個單任務的HTTP服務器,它的設計目標主要是速度和安全。因此,它不像傳統(tǒng)的Web服務器,為每個訪問連接單獨開啟一個進程,也不會為處理多個連接而開啟多個自身的拷貝。BOA對所有活動的HTTP在內部進行連接處理,只為每個CGI連接啟動新的進程,在同等硬件下相比其他服務器具有更快的訪問速度。而CGIC是一個為支持通用網關接口CGI(Common Gateway Interface)而開發(fā)的C語言庫,通常和BOA聯(lián)合使用,它可接收由瀏覽器通過GET或POST方法傳輸過來的表單及文件數(shù)據(jù),并提供了對這些數(shù)據(jù)進行解析的方法,使用非常方便,且源碼也易通過因特網獲得。
基于以上原因,本文主要基于這兩種技術來實現(xiàn)IED裝置內部的嵌入式web服務器功能。
1 系統(tǒng)概述
嵌入式Web服務器EWS(Embedded Web Server)是指將Web服務器引入到現(xiàn)場測試和控制設備中,在相應的硬件平臺和軟件系統(tǒng)的支持下,使傳統(tǒng)的測試和控制設備轉變?yōu)榫邆淞艘訲CP/IP為底層通信協(xié)議,Web技術為核心的基于互聯(lián)網的網絡測試和控制設備。其中,Web瀏覽器和EWS的交互過程如圖1所示。
首先由Web瀏覽器發(fā)出HTTP請求報文,并建立TCP連接,然后由EWS根據(jù)其請求報文來提供相應的狀態(tài)和頁面信息,若只是請求靜態(tài)頁面,則無需通過CGI,直接返回該對應頁面即可;反之則需要通過CGI來進行相關報文數(shù)據(jù)的解析,并根據(jù)解析結果來生成動態(tài)頁面以返回給客戶端瀏覽器。這樣,完成一次交互過程后,即可釋放該TCP連接。
本文的設計目標是將Web服務器的功能僅作為DSP/BROS中的一個任務,只在監(jiān)聽到HTTP協(xié)議對應端口(通常為80)上的TCP連接請求時,才運行該任務。但是傳統(tǒng)的BOA并沒有對用戶訪問權限的控制對頁面的管理也依賴于Linux系統(tǒng),因此,結合變電站運行的特殊性,本文所設計的EWS系統(tǒng)結構框圖如圖2所示。
系統(tǒng)運行時,由HTTP連接管理模塊負責對網絡端口進行監(jiān)聽,當監(jiān)聽到有連接請求到達后,即進入HTTP報文解析模塊進行處理,如果解析錯誤,則直接返回HTTP連接管理模塊,發(fā)出相應的響應報文并關閉該連接;否則,則根據(jù)對報文解析的結果,提取出本次要訪問的URL,并將其交給訪問權限管理模塊,以查看該客戶端是否具有足夠的權限;然后再轉由頁面文檔管理模塊進行處理,根據(jù)對報文的初步解析以及對訪問權限的判斷,由頁面文檔管理模塊來決定是否調用CGI,以實現(xiàn)文件的下載上傳及響應文檔的生成,從而將正確的響應報文及頁面文檔轉交給HTTP連接管理模塊進行網絡數(shù)據(jù)的應答回送。
評論