許春杰,杜 仲,2
(1.武漢郵電科學研究院,湖北 武漢430074;2.光纖通信技術和網絡國家重點實驗室,湖北 武漢430074)
Internet和嵌入式技術在過去的十幾年里飛速發展,影響深遠,二者結合的產物——嵌入式Web服務器應運而生,在最近幾年的時間中影響逐步擴大,發展勢頭良好,在實際生產中有廣泛的應用。本文研究的嵌入式無線Web將無線技術融入其中,為管理、監控嵌入式產品提供了一種基于無線IP的方法。在嵌入式終端中,可以通過嵌入式Web實現對設備的遠程連網控制,無線技術將使遠程控制變得更為靈活。通過本設計能夠實現:1)在互聯網的任意地點查看或控制設備的運行狀態;2)讓設備主動上報自己的運行狀態。
Linux操作系統在嵌入式設備開發中被廣泛使用,它擁有穩定的性能和成熟的API。節省成本的特點也備受青睞,讀者可以從“http://ww.kernel.org/Pub/linux/kernel/v2.6/”下載Linux 2.6.30版本內核。
現在的嵌入式設備由于功能越來越復雜以及智能化的需求,大多采用了嵌入式的操作系統作為其系統開發的平臺,WebServer則作為其操作系統中的一個任務存在。本文所采用的WebServer是目前在市場中應用較為廣泛的GoAhead WebServer。它支持ASP編程,Javascript,SSL加密、驗證,標準的CGI、底層CGI處理GoFroms過程,廣泛使用在基于WinCE和Linux的嵌入式產品開發中。每秒可處理超過50個請求的響應速度,可以很好地處理用戶對于嵌入式Web的需求。支持HTTP協議,支持多種操作系統,包括eCos,QNX,LynxOS,linux,VxWorks和WinCE等。
無線Modem的工作模式有兩種:一種是與人們生活很貼近的GSM通信模式,另一種是TCP/IP通信模式。現有的Modem大多內置TCP/IP協議棧,但本文使用的是外置的協議棧——Linux內核支持的TCP/IP協議棧。TCP/IP通信方式是基于IP網絡通信的方式,無線Modem基于IP網絡通信之前,首先要進行PPP拔號過程,進行PPP拔號過程時需要后臺計算機(也可能是其他設備)軟硬件資源支持。需依附于計算機操作系統(或者具有PPP拔號功能設備)之上才能完成PPP拔號過程,獲取到無線網絡IP地址進行通信。無線Modem的選型主要考慮參數包括:1)支持的網絡模式;2)支持的業務功能;3)AT命令,AT命令不同,程序中做的處理也不同;4)支持的操作系統類型。
不同的無線Modem生產廠家可能有自己定義的AT命令,但主要的AT命令相同,具體AT命令可以參看Modem的AT命令手冊。
本設計選用的是搭載Linux操作系統的ARM9260系統平臺,使用ARM926EJ-S處理器,ARM926EJ-S處理器是通用微處理器ARM9家族中的一員。ARM926EJ-S屬于5TEJ版ARM架構,針對的是多任務應用,包括全儲存器管理,高性能、小核心尺寸和低功耗都是其重要的特點。圖1是在ARM9260平臺上基于Linux操作系統開發的應用軟件功能結構圖。

圖1 功能結構圖
嵌入式無線Web包含嵌入式WebServer、無線Modem控制以及硬件控制數據控制3個組成部分。系統上電后,依次啟動Modem控制模塊、Webserver、數據監控模塊,這3個模塊以3個進程的形式存在于Linux操作系統中,3個進程間通信需要依據一定的協議,這個協議可以依據功能需求來定制。
Modem控制模塊主要完成的功能是對Modem工作狀態進行控制,如在上電時進行Modem探測,將探測到的狀態刷新到內存中,以供運行時查詢;在需要發送短信時填寫短信內容以及要發往的電話號碼。協議接口3(由數據監控模塊)發來的協議數據通常用于觸發Modem控制模塊工作方式變換。
WebServer由GoAhead服務器實現,提供Web服務器功能,在設備的文件系統中存放設計好的網頁文件,響應來自瀏覽器的HTTP請求,通過輸入設備的聯網IP實現對網頁的訪問,隨時隨地管理設備。關于網頁過程的設計方法會在下文中介紹。WebServer通過協議接口1與Modem控制模塊通信,通過協議接口2與數據監控模塊通信。當用戶請求的網頁中包含GoAhead Asp及GoForm過程時,這些過程會關聯到事先定義的處理函數中,有這些函數通過調用協議接口2查詢或設置數據。同時將包含處理結果的網頁通過HTTP協議返回給瀏覽器。
完成的功能是:輪詢數據控制模塊,通過通信接口采集到新的數據來更新本地內存中的數據,提供給Web-Server查詢;根據需求設置數據到數據控制模塊中,當WebServer下發了設置請求時,數據監控模塊要解析設置命令并將數據設置到系統狀態或外部模塊中;寫文件保存需要斷電保存的數據及信息;監控告警狀態,在告警處理中發出Modem控制信號,例如,采集到的“溫度”高出設定的門限,數據監控模塊此時將變被動為主動,通過協議接口3告知Modem控制模塊發出告警短信,用戶收到提醒就能夠及時排查設備故障。其流程設計如圖2所示。

圖2 數據監控模塊流程圖
PPP撥號成功會生成一個虛擬的網卡,它包含IP地址的信息,這個地址就是WebSever的網絡地址,有了它,設備才能與外界發生聯系。Linux下PPP撥號包含如下步驟:
1)配置內核,啟動PPP撥號服務;
2)下載撥號源碼,執行配置命令;
3)將與Modem配套的撥號腳本放至對應目錄;
4)在應用程序中啟動撥號命令;
5)撥號完成。
撥號成功后執行#ifconfig命令,可以看見新建了一個ppp0的網卡,上面的IP地址就是運營商劃分給用戶的公網IP地址,表明撥號成功。在設備Web建立完成以后,就可以通過互聯網訪問設備了。注意:Modem要插放有效的SIM卡。圖3為用撥號成功后的網卡及路由信息打印,由圖可知,PPP撥號生成了與Internet聯系的信息,ppp0是由Modem外部協議棧生成的虛擬網卡,119.103.110.163為公網IP,通過它,可以訪問設備的Web,這樣Internet連接的通道就打通了。

圖3 ppp撥號成功內核打印信息(截圖)
AT命令的組織及回應。當設備向Modem發出AT命令后,Modem會對AT命令作出解析并給出回應。如發“AT回車”探測Modem,若Modem在位則會回應“OK”。在收發短信前需要探測短信功能是否正常,以及在收發GPRS數據前要事先確認GPRS功能是否正常。也可以制作AT命令腳本,來開啟Modem的某些功能,如登錄GPRS或通信方式切換等。發短信一般包含兩個步驟,先發號碼回車等待“>”出現,然后發送短信內容。例如要發送的緩存是sendbuf,電話號碼是“136***”,modem_send執行將發送緩存的內容發送至Modem,執行以下過程:
Sendbuf的內容為:“AT+CMGS=136*** ”;
modem_send(sendbuf,strlen(sendbuf))。
插有SIM卡的Modem則會回復“>”,此時再通過modem_send發送短信內容,Modem則會將此次的內容以短信形式發送到手機號為“136***”的手機上。
本文涉及常用的AT命令有:
AT+CMGS發送短信
AT^IPIINT 初始化登陸命令
AT^IPOPEN連接到指定IP及端口
Web服務器入口程序首先通過initWeb()函數實現一系列的初始化,包括訪問口令、服務器端口號、默認頁面設置等。
GoAhead Asp過程:ASP是一種服務器端腳本編寫環境,可以用來創建和運行動態網頁或Web應用程序。ASP網頁可以包含HTML標記、普通文本、腳本命令以及COM組件等。
ASP文件是以“.asp”為擴展名,在傳送到瀏覽器之前用嵌入式腳本插入動態內容,GoAhead Web Server支持一個運行時選擇腳本引擎的開放式腳本結構。要在ASP頁面中創建ASP腳本使用“<%---%>”定界符。例如:<h1> <% webpage_write("Hello World");%></h1>,webpage_write()的方法在底層實現。
GoAhead GoForm過程:在嵌入式系統中,有時用戶需要通過瀏覽器向嵌入式設備查詢或發送信息。這就需要使用表單將用戶輸入的信息傳遞給嵌入式設備的相應操作模塊。
下面介紹如何在Goahead中調用goform過程,Go-Form過程則主要用來處理用戶指令以實現對設備的配置和管理等。GoForm過程網頁存在形式如下。formTest的方法在底層實現,其作用是將頁面的表單數據帶入到內存中處理,可以將表單的數據轉化為內存控制信息。
<form action=/goform/formTest method=POST>
……
</form>
GoAhead中常用API有:websGetVar函數,可以用于獲取變量及其值;websWrite用于回填網頁內容。圖4為一個簡易的監控界面。

圖4 無線Web界面(截圖)
遠程監控廣泛應用在工業生產中,本文提出并設計的無線連網監控方案結合了當前互聯網快速發展的趨勢,可以增加設備的可移動性。在移動終端快速發展的趨勢中,能夠使嵌入式Web控制擁有無線接入的優勢,勢必會在環境復雜多變的工業控制中取得其一席之地。
[1]郭欣.構建高性能Web站點[M].修訂版.北京:電子工業出版社,2012.
[2]單維鋒,白靈.ASP.NET Web應用程序設計教程[M].北京:清華大學出版社,2010.
[3]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.
[4](印)拉克什曼.Linux Shell腳本攻略[M].門佳,譯.北京:人民郵電出版社,2011.