危阜勝,鄭曉光,黨三磊,楊勁鋒,陳玲君
(1.廣東電網(wǎng)公司 電力科學(xué)研究院,廣東 廣州 510080;2.杭州海興電力科技有限公司 浙江 杭州 310015)
智能用電是智能電網(wǎng)的重要組成部分,是建設(shè)智能電網(wǎng)的著力點(diǎn)和落腳點(diǎn)。智能用電是實(shí)現(xiàn)電網(wǎng)與用戶之間實(shí)時交互響應(yīng),增強(qiáng)電網(wǎng)綜合服務(wù)能力,滿足互動營銷需求,提升服務(wù)水平的重要手段。智能用電關(guān)系到提高電網(wǎng)的能源使用效率、經(jīng)濟(jì)運(yùn)行和有序用電水平,對電網(wǎng)建設(shè)、節(jié)能環(huán)保、電能質(zhì)量管理具有深遠(yuǎn)的影響。
適應(yīng)于智能電網(wǎng)的智能用電交互終端,是智能用電技術(shù)及服務(wù)體系中最關(guān)鍵環(huán)節(jié)之一,符合智能電網(wǎng)技術(shù)“互動”的關(guān)鍵特點(diǎn),是國家大力推進(jìn)智能電網(wǎng)發(fā)展背景下出現(xiàn)的智能用電領(lǐng)域熱點(diǎn)問題,具有深遠(yuǎn)的理論和工程應(yīng)用價值。
當(dāng)前,不少公司針對智能家居提出了很多解決方案,目前國內(nèi)市場上很多企業(yè)或企業(yè)聯(lián)盟都提出了各種智能交互終端解決方案。這些方案有一個共同的特點(diǎn),就是用戶都只能通過PC代理的模式登陸社區(qū)系統(tǒng)主站才能實(shí)現(xiàn)信息遠(yuǎn)程雙向交互。這種系統(tǒng)模式一方面給用戶帶來了隱私泄漏的困擾;另一方面,一旦社區(qū)系統(tǒng)出現(xiàn)故障,整個系統(tǒng)將喪失服務(wù)能力。
隨著嵌入式系統(tǒng)技術(shù)的飛速發(fā)展,各種高性能嵌入式微處理器、高性能嵌入式系統(tǒng)的出現(xiàn),使嵌入式Web server的實(shí)現(xiàn)成為現(xiàn)實(shí)。針對當(dāng)前用戶側(cè)智能終端應(yīng)用中的不足,筆者提出了一種基于嵌入式Web server技術(shù)的用戶側(cè)智能終端的方案,本方案的實(shí)現(xiàn),使得用戶可以通過Internet遠(yuǎn)程訪問家里的用戶側(cè)智能終端,實(shí)現(xiàn)遠(yuǎn)程智能應(yīng)用,在不提高總體建設(shè)成本的前提下完全拋棄了PC代理,采用用戶直管模式,是一種全新的智能用電應(yīng)用模式。
系統(tǒng)整體架構(gòu)如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)圖Fig.1 Overall system structure diagram
系統(tǒng)從物理上可以分為智能用電信息交互平臺、通信信道、應(yīng)用現(xiàn)場3部分。
智能用電信息交互平臺根據(jù)規(guī)模由數(shù)據(jù)庫服務(wù)器、磁盤陣列、web服務(wù)器、通訊服務(wù)器、接口服務(wù)器、應(yīng)用工作站及GPS時鐘等相關(guān)設(shè)備組成。
通信信道包括遠(yuǎn)程通信信道和本地通信信道。遠(yuǎn)程通信信道主要是指智能用電信息交互平臺與計量自動化等系統(tǒng)之間的通信信道以及用戶和智能用電信息交互平臺與應(yīng)用現(xiàn)場之間的通信信道。為獲得高速、穩(wěn)定、可靠的通訊網(wǎng)絡(luò),系統(tǒng)采用Internet作為遠(yuǎn)程通訊的主要方式。這種通訊方式的主要優(yōu)點(diǎn)在于零成本、高帶寬、擴(kuò)展性強(qiáng)、靈活快速,可以很方便的進(jìn)行管理等。采用以太網(wǎng)方式通信,主要由路由器及防火墻等設(shè)備組成。智能用電信息交互平臺與計量自動化等系統(tǒng)采用防火墻物理隔離,保證系統(tǒng)的信息安全。本地通信信道主要是指用戶側(cè)本地網(wǎng)絡(luò),主要采用ZigBee、WIFI、低壓電力線載波(通訊接口模塊化設(shè)計,可互換)等通信方式
應(yīng)用現(xiàn)場主要包括用戶側(cè)應(yīng)用所涉及的用戶側(cè)智能終端(IHD)、智能電表、智能家電、智能安防、分布式電源以及溫濕壓記錄儀等相關(guān)設(shè)備。
本方案的硬件平臺采用ARM11為系統(tǒng)硬件核心[1],硬件設(shè)計框圖如圖2所示。系統(tǒng)硬件主要包括微處理器、電源系統(tǒng)、通信系統(tǒng)、外部設(shè)備接口、存儲系統(tǒng)、用戶接口6個部分。
圖2 硬件框架圖Fig.2 Hardware framework diagram
用戶側(cè)智能終端的核心模塊基于ARM11芯片,在其之上運(yùn)行Android操作系統(tǒng)、嵌入式數(shù)據(jù)庫(SQLite)、Web server(I-Jetty)及業(yè)務(wù)處理模塊。外圍設(shè)備及擴(kuò)展模塊要完成相關(guān)設(shè)備接口、地址譯碼并實(shí)現(xiàn)相應(yīng)擴(kuò)展。Data Flash負(fù)責(zé)配置處理器的結(jié)構(gòu)、工作模式以及自動檢測系統(tǒng)的各個硬件是否工作正常。SDRAM負(fù)責(zé)處理軟件系統(tǒng)文件。系統(tǒng)經(jīng)過初始化和自檢后,引導(dǎo)程序指向SDRAM首地址,系統(tǒng)開始運(yùn)行。
本產(chǎn)品所采用的硬件平臺和軟件平臺都是通用的平臺,基于該平臺構(gòu)建嵌入式Web server,只需考慮通用性、響應(yīng)速度以及對于硬件的可操作性[1]。
用戶側(cè)智能終端系統(tǒng)軟件[2]由底層驅(qū)動、系統(tǒng),協(xié)議棧、應(yīng)用層四部分組成。底層驅(qū)動包括:WIFI接口、ZigBee接口、紅外通訊口、RJ45、TTL、Flash、TFT 液晶、 觸摸屏、USB、SD 卡等外圍設(shè)備驅(qū)動;系統(tǒng):采用Android嵌入式系統(tǒng);協(xié)議棧:TCP/IP協(xié)議棧、上行通訊協(xié)議、下行通訊協(xié)議、ZigBee協(xié)議棧;應(yīng)用層:Web Server、業(yè)務(wù)處理模塊、GUI。整體架構(gòu)如圖3所示。
圖3 軟件框架圖Fig.3 Software framework diagram
Android是一個完整的嵌入式系統(tǒng)平臺,其包含底層內(nèi)核(Linux)、中間件以及一些關(guān)鍵的應(yīng)用。
Android創(chuàng)建了一套自己的系統(tǒng)來生成Makefile。Android build系統(tǒng)定義了一套自己的變量、宏等,開發(fā)人員可以使用這些變量編寫Android build系統(tǒng)的Makefile——Android.mk。每個模塊,如一個應(yīng)用、一個共享庫等,都有自己的 Android.mk。在編譯的時候,Android.mk 中的宏就會被展開成相應(yīng)的make規(guī)則,變量也會代入相應(yīng)的規(guī)則。在整個Android源碼編譯完成后,生成的二進(jìn)制文件以及image等都安裝在out/目錄下。
TCP/IP是一個內(nèi)容十分復(fù)雜的協(xié)議簇,協(xié)議種類繁多,對嵌入式系統(tǒng)來說,要針對具體應(yīng)用,對標(biāo)準(zhǔn)TCP/IP協(xié)議進(jìn)行一定程度的精簡,使適用于嵌入式系統(tǒng)的應(yīng)用。TCP/IP協(xié)議簇分為四層,主要包括IP、TCP、UDP和ICMP等協(xié)議。
本方案所涉及的用戶側(cè)智能交互終端主要針對家庭用戶開發(fā),用戶連接數(shù)極少,具有應(yīng)用數(shù)據(jù)量很小的特征。作為瘦服務(wù)器,在設(shè)計過程中需要在滿足應(yīng)用的同時盡可能減少系統(tǒng)開銷。因而,本方案中所采用的TCP采用“停止等待算法”代替常規(guī)應(yīng)用的“滑動窗口算法”[3]。由于本產(chǎn)品應(yīng)用數(shù)據(jù)量小,對網(wǎng)絡(luò)擁塞不會產(chǎn)生大的影響,因而可以裁減掉TCP的流量控制功能。同時,采用停止等待算法不但降低了實(shí)現(xiàn)難度,提高了處理速度,同時可以取消TCP的發(fā)送緩沖區(qū)和接收緩沖區(qū),減小了占用存儲。這樣既節(jié)省了系統(tǒng)開銷,同時也不影響數(shù)據(jù)段安全正確地到達(dá)目的端。
嵌入式Web Server技術(shù)的核心是HTTP引擎[4]。HTTP協(xié)議是Web應(yīng)用的標(biāo)準(zhǔn)協(xié)議,HTTP1.1標(biāo)準(zhǔn)可以為多個HTTP事務(wù)在瀏覽器和服務(wù)器之間只保持一個TCP連接,從而大大提高了網(wǎng)絡(luò)和系統(tǒng)的性能。所以,采用HTTP1.1協(xié)議是瘦Web服務(wù)器的合適選擇。嵌入式WebServer通過Servlet接口等方法,可以在HTML文件中運(yùn)行,供RAM讀/寫數(shù)據(jù)。HTML頁面內(nèi)容一般是通過存儲ROM中的壓縮文件,由快速運(yùn)行的代碼動態(tài)產(chǎn)生,利用Java、JavaScript等技術(shù)在客戶端生成應(yīng)用代碼,而在服務(wù)端只是發(fā)布網(wǎng)頁,以減少在服務(wù)端的代碼和容量,提高服務(wù)器的性能。
由于嵌入式系統(tǒng)一般資源有限,因而對于嵌入式Web[5-6],一般設(shè)計成單任務(wù)模式,不對每個進(jìn)入服務(wù)端的連接開辟進(jìn)程,更不為處理多路復(fù)用而開辟進(jìn)程,僅僅對正在進(jìn)行的HTTP連接復(fù)用,而且也只為獨(dú)立用戶Servlet開辟進(jìn)程。嵌入式Web Server的基本處理流程如圖4所示。Server對象添加一個默認(rèn)的 Handler;
圖4 嵌入式Web Server的基本處理流程圖Fig.4 Embedded Web Server flow chart
3)用配置文件 jetty.xm l對這個 server進(jìn)行設(shè)置;
4)用Java–jar start.jar命令啟動 Jetty服務(wù)器,啟動服務(wù)器后,即可遠(yuǎn)程訪問并操作了。
JavaBean是一種基于JAVA語言的可重用組件,用戶使用JavaBean可以將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用JAVA代碼創(chuàng)造的對象進(jìn)行打包,并且其他的開發(fā)者可以通過內(nèi)部的頁面、Servlet、其他JavaBean、applet程序或者應(yīng)用來使用這些對象。
Servlet是一種服務(wù)器端的Java應(yīng)用程序,具有獨(dú)立于平臺和協(xié)議的特性,可以生成動態(tài)的Web頁面。 Servlet擔(dān)當(dāng)客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序)的中間層。 Servlet是位于Web服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載。
HTML和JavaBean+Servlet模型體系結(jié)構(gòu)如圖5所示。這種模型是一種基于模型視圖控制器的設(shè)計模型,即MVC模型。該模型可以將Web程序分成3個部分:Model層、View層和Controller層。Model層實(shí)現(xiàn)業(yè)務(wù)邏輯,包括了Web使用程序功能的核心,負(fù)責(zé)存儲與使用程序有關(guān)的數(shù)據(jù);View層用于用戶界面的現(xiàn)實(shí),它可以訪問Model層的數(shù)據(jù),但不能修改這些數(shù)據(jù);Controller層主要負(fù)責(zé)Model和View層之間的控制聯(lián)系。
圖5 HTML和JavaBean+Servlet模型體系結(jié)構(gòu)Fig.5 HTML and JavaBean+Servletmodel architecture
I-Jetty是一個可運(yùn)行在Android移動設(shè)備平臺上的Jetty。Jetty是一個100%由Java實(shí)現(xiàn)的、開源的HTTP服務(wù)器和javax.servlet容器,它不僅僅作為一個獨(dú)立服務(wù)軟件(如Tomcat)被使用,而且其優(yōu)良的組件(Componet)設(shè)計、高內(nèi)聚低耦合、高擴(kuò)展性等特性使得Jetty非常易于作為嵌入式工具使用。
I-Jetty本著簡單不復(fù)雜的指導(dǎo)原則,一經(jīng)推出就因?yàn)榭焖俚牟渴鸷桶l(fā)布的優(yōu)點(diǎn)受到廣大開發(fā)者的追捧。I-Jetty被設(shè)計成了可插拔和可擴(kuò)展的特性,設(shè)計簡練而清晰,非常容易被嵌入到其它產(chǎn)品之中。在性能方面,I-Jetty主打小、快、輕,非常適合于嵌入式環(huán)境下的webserver開發(fā)。
I-Jetty的應(yīng)用移植和部署十分的簡單,其流程如下:
1)將開發(fā)好的應(yīng)用程序編譯,生成 WAR包,放到IJetty的 Webapps目錄下面;
2)創(chuàng)建一個 Server對象,并設(shè)置端口,然后為這個
本模型在具體實(shí)現(xiàn)時,JavaBean作為Model層,Servlet作為Controller層,HTML作為View層,負(fù)責(zé)各層的應(yīng)用實(shí)現(xiàn)。
1)JavaBean作為Model層,實(shí)現(xiàn)各個具體的應(yīng)用邏輯和功能。
2)Servlet作為Controller層,負(fù)責(zé)處理HTTP請求處理,包括:
①對輸入數(shù)據(jù)的檢查和轉(zhuǎn)換;
②通過JavaBean訪問數(shù)據(jù)庫;
③初始化HTML頁面中要用到的JavaBean或?qū)ο螅?/p>
④ 根據(jù)處理中不同的分支和結(jié)果,決定轉(zhuǎn)向哪個HTML等。
3)HTML作為View層,負(fù)責(zé)獲取Servlet生成的對象或JavaBean,從中取出數(shù)據(jù),生成交互后返回的頁面。
文中介紹了一種以ARM11微處理器為硬件基礎(chǔ)的用戶側(cè)智能終端嵌入式Web Server設(shè)計和實(shí)現(xiàn)的過程,介紹了嵌入式系統(tǒng)Android和嵌入式Web平臺I-Jetty在用戶側(cè)智能終端系統(tǒng)中的應(yīng)用,并重點(diǎn)描述了HTTP協(xié)議實(shí)現(xiàn)和基于JavaBean+Servlet模型的動態(tài)頁面實(shí)現(xiàn)。本系統(tǒng)具有運(yùn)行效率高、界面友好、接口設(shè)計合理、功能擴(kuò)展方便等特點(diǎn)。
[1]崔永紅,馬德寶.基于ARM的嵌入式Web Server研究與實(shí)現(xiàn)[J].微計算機(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服務(wù)器的設(shè)計研究[J].計算機(jī)工程與設(shè)計,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]胡春光,高燕,李穎.一種擴(kuò)展滑動窗口算法[J].微電子學(xué)與計算機(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服務(wù)器的設(shè)計與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),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服務(wù)器的電量采集系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2008.
[6]許修磊.基于ARM嵌入式Web服務(wù)器系統(tǒng)的設(shè)計與研究[J].青海大學(xué)學(xué)報:自然科學(xué)版,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.