首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于AISG协议的嵌入式Web服务器的设计

作者:刘现锋 邓春健 崔园 来源:现代电子技术

摘 要: 针对电调倾角天线的远程控制问题,提出了基于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服务器向控制模块发送控制命令。控制模块获得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程序,因此占用系统资源比较少。基于Boa的以上优势,本系统采用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函数中进入。基于AISG协议的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.