


摘 要: 針對電調傾角天線的遠程控制問題,提出了基于AISG協議的嵌入式Web服務器設計方案。綜合運用Boa 技術和CGI 技術,在嵌入式設備上構建出基于AISG協議的專用Web 服務器。分析了AISG協議通信原理,設計了基于AISG協議的嵌入式Web服務器的硬件電路,重點介紹Boa 服務器的構建,因特網到AISG協議網關的實現。測試表明,該方案具有較好的穩定性和可操作性,具有較大的參考價值。
關鍵詞: 遠程電調傾角天線; BOA技術; CGI技術; AISG協議
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2016)02?0069?04
Design of embedded Web server based on AISG protocol
LIU xianfeng1, DENG chunjian1, CUI yuan2
(1. School of Computer Science Engineering , University of Electronic Science and Technology of China, Chengdu 611731, China;
2. School of Computer Engineering ,Zhongshan Institute, University of Electronic Science and Technology of China, Zhongshan 528400, China)
Abstract: Aiming at the remote control of electrical tilt antennas, a design scheme of embedded Web server based on AISG protocol is presented in this paper. The special Web server based on AISG protocol was built on the embedded equipment by using Boa and CGI technologies. The communication principle of AISG protocol is analyzed in this paper. The hardware circuit of the embedded Web server based on AISG protocol was designed. The establishment of Boa server and realization of gateway from Internet to AISG protocol are introduced emphatically. The testing results show that the method has high stability, operability, and great reference value.
Keywords: remote electrical tilt antenna; BOA technology; CGI technology; AISG protocol
0 引 言
在電調現象控制系統中,遠程電調傾角天線的接口標準是AISG(Antenna Interface Standard Group)協議, AISG協議規定在物理層采用RS 485標準,用主從方式對設備進行遠程控制[1?3],這一特點只能使得控制系統維持在RS 485通信距離內對有限的設備進行控制,不能夠實現更遠距離和更多設備的控制。
電調傾角天線設備網絡化是適應這一應用需求的理想解決方案,即通過因特網實現對天線設備的管理和監控。該方案實現因特網與基于AISG協議的天線設備的連接就需要設計具有協議轉換功能的AISG協議網關。大量文獻表明,在現有研究成果[4?9]中提出這一具體方案的研究并不多,本文從構建嵌入式Web服務器出發,將AISG協議融入系統,實現了具有協議轉換功能的AISG協議網關。應用結果表明,提出的方案具有較好的穩定性和可操作性,具有較大的參考價值。
1 系統分析
系統結構如圖1所示,系統核心是CCU,它通過RS 485與電調天線設備連接,系統可以安裝在基站內部或者電調天線設備維護中心。要完成用戶通過瀏覽器實現對電調天線的遠程控制,系統包括Web服務器、AISG協議簇、操作系統和硬件等。通過因特網實現對設備的控制,因特網將控制命令傳輸到天線設備中,必然涉及網絡控制協議到AISG協議的轉換。AISG協議體系非常龐大,在將AISG協議融入嵌入式Web服務器之前,首先要明確AISG協議的通信模型。
AISG協議的通信模型如圖2所示。AISG協議分為物理層、數據鏈路層和應用層。在應用層和數據鏈路層可以看作是采取全雙工的通信方式,而在物理層,實際上采取的是半雙工的通信方式。AISG協議要求使用RS 485總線,采用主從方式對多個天線設備進行遠程控制,此外,AISG協議相當于OSI(Open System Interconnect)7層模式的簡化版本,包括第1,2,7層。第1層為總線、天線設備、接口等物理層,規定了嚴格的電氣特征參數;第2層對數據鏈路層的傳輸數據封裝和功能進行了充分的描述;第7層對應用層的各種天線設備控制命令進行了詳細的說明,從而可提高靈活性和安全性。
圖1 系統結構圖
圖2 AISG協議通信結構圖
根據AISG協議通信模型,要實現Web服務器到AISG協議網關的轉換,本文從Web服務器收發的各種命令信息在AISG協議第7層實現通信命令信息的轉化,進而實現Web服務器與電調傾角天線設備的通信。
2 硬件組成
根據第1節分析,要實現支持基于AISG協議的Web服務器需要操作系統和硬件的支持。在硬件上本文采用的控制核心是ARM CortexTM?A8。如圖3所示,基于AISG協議的嵌入式Web服務器的整個硬件組成分成6個核心模塊,分別是控制模塊、電源電路模塊、液晶顯示器模塊、RS 485通信模塊、因特網接口模塊和AISG天線接口模塊。
接通電源情況下,電源電路模塊通過專用調壓芯片為天線提供12 V和24 V直流電壓,驅動總線上的各個天線驅動器,并為控制模塊提供工作電源。用戶通過Web服務器向控制模塊發送控制命令??刂颇K獲得Web服務器輸入的控制信息,通過RS 485通信模塊將控制信息發送到總線上的某個驅動器,并可以通過液晶顯示器模塊輸出控制信息??偩€上的該控制器接收到信息后也可以通過RS 485通信模塊與控制模塊通信,反饋天線的各種狀態信息,并通過因特網接口顯示給用戶。
圖3 硬件組成原理圖
3 嵌入式Web服務器
嵌入式Web服務器是指將Web服務器引入到現場測試和控制設備中,在相應的硬件平臺和軟件系統的支持下,使傳統的測試和控制設備轉變為具備了以TCP/IP為底層通信協議,Web技術為核心的基于互聯網的網絡測試和控制設備。為了有效實現遠程控制電調天線設備,在上述硬件條件下,本文在Linux系統平臺上采用動態的嵌入式Web服務器技術[10?12]??紤]到嵌入式設備資源一般都比較有限,嵌入式Web服務器的設計應盡可能地優化,這里專門為嵌入式設備設計特殊用途的Boa服務器。本節將主要介紹嵌入式Web服務器的分析和Boa服務器的移植。
3.1 嵌入式Web服務器分析
在嵌入式Linux 下,主要有Httpd,Thttpd 和Boa等幾種Web 服務器。嵌入式服務器在功能上都能夠完成接收客戶端請求、分析請求、響應請求、向客戶端返回請求結果等任務。但是Httpd不支持認證和CGI(Common Gateway Interface),是一個靜態網頁服務器。Thttpd和Boa都支持認證和CGI,但是Thttpd運行時所用的資源較Boa大的多。Boa開放源代碼,性能高,速度快,對CGI的支持效果最佳。Boa是一個單任務的HTTP(HyperText Transfer Protocol)服務器,當Boa服務器接收到請求時,不是啟動多個服務進程并發處理多個請求,而是在一個進程內依次處理所有請求,它產生獨立進程來處理CGI程序,因此占用系統資源比較少?;贐oa的以上優勢,本系統采用Boa作為嵌入式服務器的平臺。
3.2 嵌入式Boa服務器構建
選擇Boa服務器之后,本文將在符合硬件要求的開發板上實現Boa服務器的構建。在嵌入式Linux系統下構建Boa服務器的具體步驟如下:
(1) 獲取Boa服務器源代碼
從官方網站www.boa.org下載Boa的源代碼,然后導入到PC虛擬機下的Linux系統。執行命令#tar?zxvf boa?0.94.13.tar.gz將原代碼解壓。進入解壓后的boa?0.94.13/src目錄,執行命令#./configure生成Makefile文件。生成Makefile文件后,執行命令#gedit Makefile修改Makefile文件,將文件中的CC=gcc修改為CC=arm?linux?gcc,CPP=gcc?E修改為CPP= arm?linux?gcc?E。然后運行make進行編譯,正常情況下在src目錄下會生成Boa可執行文件。
(2) boa.conf 文件配置
Boa啟動時,需要用到一個配置文件boa.conf。該文件用于對Boa服務器相應的接口、服務器名稱、相關文件路徑等進行配置。
該文件的具體修改如下:
① 設置用戶和用戶組,分別修改User nobody為 User 0 ,修改Group nogroup 為 Group 0。
② 設置日志文件的目錄:Boa日志分為2部分,Errorlog和AccessLog。根據自己的情況這里設置日志目錄:這里為/var/log/boa/error_log 和 /var/log/boa/access_log兩個文件。
③ 設置html網頁文件的目錄:這里設置為DocumentRoot /var/www。
④ 設置默認首頁: DirectoryIndex index.html。
⑤ 設置cgi可執行腳本文件目錄:這里是將#ScriptAlias /cgi?bin/ /usr/lib/cgi?bin修改為:ScriptAlias /cgi?bin/ /var/www/cgi?bin。
⑥ ServerName的設置:這里去掉服務器名稱相關的注釋,即將#ServerName www.your.org.here/ 修改為:ServerName www.your.org.here/。
(3) 將Boa服務器移植到開發板
默認的根文件系統是只讀文件。在對Boa服務器進行移植前。要先根據boa.conf配置在文件系統中建立相關的目錄。然后將虛擬機Linux先編譯好的Boa文件,配置文件boa.conf、可執行文件CGI和編輯好的網頁文件(包含一個)分別移植到開發板對應的目錄,具體做法如下:
在開發板文件系統中,執行命令#mkdir ?p /var/log/boa創建Boa目錄,執行命令#mkdir ?p /var/www /var/www/cgi?bin創建cgi?bin目錄。接著拷貝PC虛擬機中的/etc/mime.types文件到開發板/etc目錄下,將可執行文件Boa復制到/bin目錄下,將靜態網頁index.html等和img目錄放到/var/www目錄下。
(4) 測試Boa服務器
Boa服務器移植到開發板后,這里要對其構建是否成功進行測試。具體測試方法如下:
通過nfs掛載根文件系統,執行命令#ifconfig eth0 210.38.235.173設置開發板IP。運行Boa后在PC機瀏覽器上輸入開發板的IP。在瀏覽器中看到靜態網頁index.html,表示Boa服務器已經移植成功。
4 基于AISG協議的網關的實現
上節實現了嵌入式Boa服務器的構建,本節將描述Web服務器與AISG協議網關的實現。為了實現基于AISG協議電調天線控制系統的特殊Boa服務器,使用CGI技術來實現與電調天線設備的通信。CGI是與Web服務器之間的接口標準,是在CGI程序和Web服務器之間傳遞信息的規程。CGI規范允許Web服務器執行外部程序,并將它們的輸出發送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。CGI工作流程如圖4所示。
圖4 Web服務器工作原理圖
因特網與AISG協議網關的的實現采取調用CGIC(ANSI C library for CGI Programming)庫的方式。CGIC是C語言CGI庫函數,用于編寫CGI程序。CGIC 主要完成以下功能:對數據進行語法分析, 接收以 GET 和 PSOT 兩種方式發送的數據 ,把 FORM 中的不同域連接成連續的串,為檢索 FORM 數據而提供字符串、整數、浮點以及單項和多項選擇功能為數字字段提供邊界檢測,把CGI環境變量加載到非空的C 串中為調試而捕捉 CGI 狀態。
接下來說明CGIC的安裝、測試安裝和基于AISG協議的CGIC的編程實現:
(1) CGIC的安裝使用
從官方網址http://www.boutell.com/cgic/下載了CGIC庫之后,執行命令#tar?zxvf cgic206.tar.gz解開壓縮包,里面有大約10個文件,分別是頭文件 cgic.h,CGIC的源代碼文件cgic.c,用于調試CGI程序的工具capture.c,CGIC庫的官方提供的一個CGI程序例子和Makefile文件等。
(2) 測試CGI安裝
在編寫自己的CGI程序前,先用解壓包的測試程序測試安裝是否成功,進而避免出現配置錯誤。測試方法是直接在安裝解壓包內執行make命令。目錄中會生成一個cgictest.cgi的可執行程序。移植到開發板cgic?bin目錄下,在命令終端執行命令:#chmod 777 cgictest.cgi改變可執行程序權限。在PC瀏覽器中輸入開發板IP地址比如:210.38.235.173/cgi?bin/cgictest.cgi,正常情況下一個網頁就會展示出來,這表示CGI程序已經運行起來。
(3) 基于AISG協議的CGIC的編程實現
對于CCGI編寫的CGI程序,都是先從cgic.c中的代碼進入,在完成了一系列必要操作后才會調用代碼,即從cgiMain函數中進入?;贏ISG協議的CGIC的編程實現,必須編寫同時符合cgictes.c格式的文件。根據AISG協議的三層通信模型,首先實現AISG三層協議棧并移植協議棧到CCGI解壓包內;然后修改解壓包內Makeflie文件,使AISG協議棧源文件能被編譯成靜態鏈接庫備用和修改交叉編譯環境;然后再編寫cgictest.c文件完成動態網頁設計同時根據需求對AISG的EP函數進行調用;最后通過make編譯成可執行文件,按上節步驟移植到開發板。用戶通過瀏覽器向服務器發出請求后,服務器會根據請求執行相應的CCGI可執行程序,進而完成網絡數據到AISG協議數據的轉換,從而實現數據協議網關的轉換,進而實現對電調傾角天線的遠程控制。
5 基于AISG協議的Web服務器系統測試
以設備掃描實現為例[8],在CCGI壓縮包中把掃描測試程序改成cgictest.c,執行make命令會生成一個cgictest.cgi可執行程序。將生成的可執行文件和對應的測試網頁移植到開發板上對應的位置。在PC機瀏覽器上輸入開發板的IP,然后進入設備掃描頁面,如圖5所示。
圖5 掃描幀發送數據網頁圖
點擊網頁中發送掃描控制按鈕。正常情況下Web服務器會執行cgictest.cgi程序,生成掃描幀的反饋消息頁面并返回給瀏覽器供用戶瀏覽,結果如圖6所示。由圖6可以看出經過Web服務器發送掃描請求后,收到來自電調傾角天線返回的設備相關信息,返回的消息包括遠程電調天線的惟一標示符,供應商代碼和模式類型等信息。經測試證明網關轉換已經實現,符合AISG協議的嵌入式Boa服務器安裝成功。應用結果表明,該方案具有較好的穩定性和可操作性,具有較大的參考價值。
圖6 掃描幀返回數據網頁圖
6 結 語
隨著嵌入式技術,互聯網技術和通信技術的發展,基于AISG協議的電調天線設備通過因特網實現遠程控制是發展的必然趨勢。本文是在嵌入式設備上實現基于AISG協議的Boa服務器。
通過論述該實現方式的必要性和可行性,進行系統分析和講述符合AISG協議的Boa服務器的硬件組成。在硬件組成的基礎上實現嵌入式Boa服務器的構建,最后講述了使用CGI技術對網關的實現。該服務器的構建實現了對電調傾角天線的真正遠程控制,對基于AISG協議的電調天線控制的遠程控制有著十分重要的應用價值。
參考文獻
[1] 呂燚,劉偉.基于AISG 2.0協議的電調天線遠程控制單元的設計實現[J].電子技術應用,2009(11):33?35.
[2] The Antenna Interface Standards Group. Control interface for antenna line devices: AISG V2.0 [S]. England: AISG Ltd. 2006.
[3] 高書超,李英祥,周賢至,等.電調天線嵌入式控制系統AISG協議棧分析與實現[J].成都信息工程學院學報,2013,28(3):217?222.
[4] 郭恒哲.基于AISG協議的手持電調天線控制器的設計[J].電子設計應用,2008(3):79?82.
[5] 呂燚,李文生.電調天線遠程控制單元中AISG協議的實現[J].儀器儀表用戶,2008,15(4):128?129.
[6] Lü Yi, LI Wensheng. The realization of RET control unit based on AISG2.0 [J]. Instrument users, 2008, 15(4): 128?129.
[7] LI Wensheng, Lü Yi, ZHOU Yanming. The design of RET control system based on AISG 2.0 [C]// Proceedings of 2010 International Conference on Computational Intelligence and Software Engineering. Wuhan: IEEE, 2010: 1?4.
[8] 李文生,羅仁澤,蔡銘昌,等.基于掩碼推進的電調天線設備樹形掃描算法[J].計算機應用,2011,31(5):1435?1438.
[9] 劉寶明,雷虎,尹樹華.便攜式數據傳送終端設計[J].電訊技術,2015,55(1):99?102.
[10] 李海東,鄭毅.基于Linux系統嵌入式Web的研究[J].通信世界,2014(10):28?29.
[11] 黃紅艷,侯彤璞.基于Linux的嵌入式Web服務器設計與應用[J].計算機與數字工程,2010,38(4):157?159.
[12] 趙會娟.基于ARM9的嵌入式Linux開發平臺構建與Boa的實現[D].成都:西南交通大學,2008.
[13] 吳松,葛海平,繆金迪.遙控電調傾角天線及其在網絡優化中的應用[J].電信科學,2007,23(4):91?94.
[14] 張永.基于ARM9的嵌入式Linux開發平臺構建與應用[D].天津:天津師范大學,2006.