危阜勝,鄭曉光,黨三磊,楊勁鋒,陳玲君
(1.廣東電網公司 電力科學研究院,廣東 廣州 510080;2.杭州海興電力科技有限公司 浙江 杭州 310015)
智能用電是智能電網的重要組成部分,是建設智能電網的著力點和落腳點。智能用電是實現電網與用戶之間實時交互響應,增強電網綜合服務能力,滿足互動營銷需求,提升服務水平的重要手段。智能用電關系到提高電網的能源使用效率、經濟運行和有序用電水平,對電網建設、節能環保、電能質量管理具有深遠的影響。
適應于智能電網的智能用電交互終端,是智能用電技術及服務體系中最關鍵環節之一,符合智能電網技術“互動”的關鍵特點,是國家大力推進智能電網發展背景下出現的智能用電領域熱點問題,具有深遠的理論和工程應用價值。
當前,不少公司針對智能家居提出了很多解決方案,目前國內市場上很多企業或企業聯盟都提出了各種智能交互終端解決方案。這些方案有一個共同的特點,就是用戶都只能通過PC代理的模式登陸社區系統主站才能實現信息遠程雙向交互。這種系統模式一方面給用戶帶來了隱私泄漏的困擾;另一方面,一旦社區系統出現故障,整個系統將喪失服務能力。
隨著嵌入式系統技術的飛速發展,各種高性能嵌入式微處理器、高性能嵌入式系統的出現,使嵌入式Web server的實現成為現實。針對當前用戶側智能終端應用中的不足,筆者提出了一種基于嵌入式Web server技術的用戶側智能終端的方案,本方案的實現,使得用戶可以通過Internet遠程訪問家里的用戶側智能終端,實現遠程智能應用,在不提高總體建設成本的前提下完全拋棄了PC代理,采用用戶直管模式,是一種全新的智能用電應用模式。
系統整體架構如圖1所示。

圖1 系統整體結構圖Fig.1 Overall system structure diagram
系統從物理上可以分為智能用電信息交互平臺、通信信道、應用現場3部分。
智能用電信息交互平臺根據規模由數據庫服務器、磁盤陣列、web服務器、通訊服務器、接口服務器、應用工作站及GPS時鐘等相關設備組成。
通信信道包括遠程通信信道和本地通信信道。遠程通信信道主要是指智能用電信息交互平臺與計量自動化等系統之間的通信信道以及用戶和智能用電信息交互平臺與應用現場之間的通信信道。為獲得高速、穩定、可靠的通訊網絡,系統采用Internet作為遠程通訊的主要方式。這種通訊方式的主要優點在于零成本、高帶寬、擴展性強、靈活快速,可以很方便的進行管理等。采用以太網方式通信,主要由路由器及防火墻等設備組成。智能用電信息交互平臺與計量自動化等系統采用防火墻物理隔離,保證系統的信息安全。本地通信信道主要是指用戶側本地網絡,主要采用ZigBee、WIFI、低壓電力線載波(通訊接口模塊化設計,可互換)等通信方式
應用現場主要包括用戶側應用所涉及的用戶側智能終端(IHD)、智能電表、智能家電、智能安防、分布式電源以及溫濕壓記錄儀等相關設備。
本方案的硬件平臺采用ARM11為系統硬件核心[1],硬件設計框圖如圖2所示。系統硬件主要包括微處理器、電源系統、通信系統、外部設備接口、存儲系統、用戶接口6個部分。

圖2 硬件框架圖Fig.2 Hardware framework diagram
用戶側智能終端的核心模塊基于ARM11芯片,在其之上運行Android操作系統、嵌入式數據庫(SQLite)、Web server(I-Jetty)及業務處理模塊。外圍設備及擴展模塊要完成相關設備接口、地址譯碼并實現相應擴展。Data Flash負責配置處理器的結構、工作模式以及自動檢測系統的各個硬件是否工作正常。SDRAM負責處理軟件系統文件。系統經過初始化和自檢后,引導程序指向SDRAM首地址,系統開始運行。
本產品所采用的硬件平臺和軟件平臺都是通用的平臺,基于該平臺構建嵌入式Web server,只需考慮通用性、響應速度以及對于硬件的可操作性[1]。
用戶側智能終端系統軟件[2]由底層驅動、系統,協議棧、應用層四部分組成。底層驅動包括:WIFI接口、ZigBee接口、紅外通訊口、RJ45、TTL、Flash、TFT 液晶、 觸摸屏、USB、SD 卡等外圍設備驅動;系統:采用Android嵌入式系統;協議棧:TCP/IP協議棧、上行通訊協議、下行通訊協議、ZigBee協議棧;應用層:Web Server、業務處理模塊、GUI。整體架構如圖3所示。

圖3 軟件框架圖Fig.3 Software framework diagram
Android是一個完整的嵌入式系統平臺,其包含底層內核(Linux)、中間件以及一些關鍵的應用。
Android創建了一套自己的系統來生成Makefile。Android build系統定義了一套自己的變量、宏等,開發人員可以使用這些變量編寫Android build系統的Makefile——Android.mk。每個模塊,如一個應用、一個共享庫等,都有自己的 Android.mk。在編譯的時候,Android.mk 中的宏就會被展開成相應的make規則,變量也會代入相應的規則。在整個Android源碼編譯完成后,生成的二進制文件以及image等都安裝在out/目錄下。
TCP/IP是一個內容十分復雜的協議簇,協議種類繁多,對嵌入式系統來說,要針對具體應用,對標準TCP/IP協議進行一定程度的精簡,使適用于嵌入式系統的應用。TCP/IP協議簇分為四層,主要包括IP、TCP、UDP和ICMP等協議。
本方案所涉及的用戶側智能交互終端主要針對家庭用戶開發,用戶連接數極少,具有應用數據量很小的特征。作為瘦服務器,在設計過程中需要在滿足應用的同時盡可能減少系統開銷。因而,本方案中所采用的TCP采用“停止等待算法”代替常規應用的“滑動窗口算法”[3]。由于本產品應用數據量小,對網絡擁塞不會產生大的影響,因而可以裁減掉TCP的流量控制功能。同時,采用停止等待算法不但降低了實現難度,提高了處理速度,同時可以取消TCP的發送緩沖區和接收緩沖區,減小了占用存儲。這樣既節省了系統開銷,同時也不影響數據段安全正確地到達目的端。
嵌入式Web Server技術的核心是HTTP引擎[4]。HTTP協議是Web應用的標準協議,HTTP1.1標準可以為多個HTTP事務在瀏覽器和服務器之間只保持一個TCP連接,從而大大提高了網絡和系統的性能。所以,采用HTTP1.1協議是瘦Web服務器的合適選擇。嵌入式WebServer通過Servlet接口等方法,可以在HTML文件中運行,供RAM讀/寫數據。HTML頁面內容一般是通過存儲ROM中的壓縮文件,由快速運行的代碼動態產生,利用Java、JavaScript等技術在客戶端生成應用代碼,而在服務端只是發布網頁,以減少在服務端的代碼和容量,提高服務器的性能。
由于嵌入式系統一般資源有限,因而對于嵌入式Web[5-6],一般設計成單任務模式,不對每個進入服務端的連接開辟進程,更不為處理多路復用而開辟進程,僅僅對正在進行的HTTP連接復用,而且也只為獨立用戶Servlet開辟進程。嵌入式Web Server的基本處理流程如圖4所示。Server對象添加一個默認的 Handler;

圖4 嵌入式Web Server的基本處理流程圖Fig.4 Embedded Web Server flow chart
3)用配置文件 jetty.xm l對這個 server進行設置;
4)用Java–jar start.jar命令啟動 Jetty服務器,啟動服務器后,即可遠程訪問并操作了。
JavaBean是一種基于JAVA語言的可重用組件,用戶使用JavaBean可以將功能、處理、值、數據庫訪問和其他任何可以用JAVA代碼創造的對象進行打包,并且其他的開發者可以通過內部的頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。
Servlet是一種服務器端的Java應用程序,具有獨立于平臺和協議的特性,可以生成動態的Web頁面。 Servlet擔當客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務器響應(HTTP服務器上的數據庫或應用程序)的中間層。 Servlet是位于Web服務器內部的服務器端的Java應用程序,與傳統的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載。
HTML和JavaBean+Servlet模型體系結構如圖5所示。這種模型是一種基于模型視圖控制器的設計模型,即MVC模型。該模型可以將Web程序分成3個部分:Model層、View層和Controller層。Model層實現業務邏輯,包括了Web使用程序功能的核心,負責存儲與使用程序有關的數據;View層用于用戶界面的現實,它可以訪問Model層的數據,但不能修改這些數據;Controller層主要負責Model和View層之間的控制聯系。

圖5 HTML和JavaBean+Servlet模型體系結構Fig.5 HTML and JavaBean+Servletmodel architecture
I-Jetty是一個可運行在Android移動設備平臺上的Jetty。Jetty是一個100%由Java實現的、開源的HTTP服務器和javax.servlet容器,它不僅僅作為一個獨立服務軟件(如Tomcat)被使用,而且其優良的組件(Componet)設計、高內聚低耦合、高擴展性等特性使得Jetty非常易于作為嵌入式工具使用。
I-Jetty本著簡單不復雜的指導原則,一經推出就因為快速的部署和發布的優點受到廣大開發者的追捧。I-Jetty被設計成了可插拔和可擴展的特性,設計簡練而清晰,非常容易被嵌入到其它產品之中。在性能方面,I-Jetty主打小、快、輕,非常適合于嵌入式環境下的webserver開發。
I-Jetty的應用移植和部署十分的簡單,其流程如下:
1)將開發好的應用程序編譯,生成 WAR包,放到IJetty的 Webapps目錄下面;
2)創建一個 Server對象,并設置端口,然后為這個
本模型在具體實現時,JavaBean作為Model層,Servlet作為Controller層,HTML作為View層,負責各層的應用實現。
1)JavaBean作為Model層,實現各個具體的應用邏輯和功能。
2)Servlet作為Controller層,負責處理HTTP請求處理,包括:
①對輸入數據的檢查和轉換;
②通過JavaBean訪問數據庫;
③初始化HTML頁面中要用到的JavaBean或對象;
④ 根據處理中不同的分支和結果,決定轉向哪個HTML等。
3)HTML作為View層,負責獲取Servlet生成的對象或JavaBean,從中取出數據,生成交互后返回的頁面。
文中介紹了一種以ARM11微處理器為硬件基礎的用戶側智能終端嵌入式Web Server設計和實現的過程,介紹了嵌入式系統Android和嵌入式Web平臺I-Jetty在用戶側智能終端系統中的應用,并重點描述了HTTP協議實現和基于JavaBean+Servlet模型的動態頁面實現。本系統具有運行效率高、界面友好、接口設計合理、功能擴展方便等特點。
[1]崔永紅,馬德寶.基于ARM的嵌入式Web Server研究與實現[J].微計算機信息,2008,24(23):176-178.
CUIYong-hong,MA De-bao.Research and realization of the embedded Web server based on ARM[J].Microcomputer Informatlon,2008,24(23):176-178.
[2]丁蒼峰,薛寧靜,呂茂林.嵌入式Web服務器的設計研究[J].計算機工程與設計,2009,30(18):4188-4194.
DING Cang-feng,XUE Ning-jing,LV Mao-lin.Design and research on embedded web server[J].Computer Engineering and Design,2009,30(18):4188-4194.
[3]胡春光,高燕,李穎.一種擴展滑動窗口算法[J].微電子學與計算機,2007(8):106-109.
HU Chun-guang,GAO Yan,LI Ying.An extended sliding window method[J].Microelectronics & Computer,2007(8):106-109.
[4]陳建華,楊玲.基于PXA270嵌入式Web服務器的設計與實現[J].現代電子技術,2008,31(20):104-109
CHEN Jian-hua,YANG Ling.Design and implementation of embeddedWeb serverbased on PXA270[J].Modern Electronics Technique,2008,31(20):104-109.
[5]劉穎穎.基于嵌入式Web服務器的電量采集系統的設計與實現[D].濟南:山東大學,2008.
[6]許修磊.基于ARM嵌入式Web服務器系統的設計與研究[J].青海大學學報:自然科學版,2008(3):44-49.
XU Xiu-lei.Design and research on an embedded Web server system based on ARM[J].JournalofQinghaiUniversity:Nature Science,2008(3):44-49.