基于嵌入式Web服务器的AIS数据无线采集系统

来源 :上海海事大学学报 | 被引量 : 0次 | 上传用户:tiantianaimeng
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:以S3C2410微处理器为核心,基于嵌入式Web服务器和USB无线网卡,实现船舶自动识别系统(Automatic Identification System, AIS)数据的无线传输.在Linux系统上,采用Boa和通用网关接口(Common Gateway Interface, CGI)技术构建Web服务器,并移植USB无线网卡的驱动;采用可拓展的标记语言(eXtensible Markup Language, XML)技术,实现客户端和服务器之间B/S模式的动态数据交互;通过基于TCP/IP协议的互联网,实现各港口AIS信息的实时接收.
  关键词:自动识别系统; Web服务器; CGI; 无线网卡; XML
  中图分类号:U665.26; TP274.2文献标志码:A
  
  Wireless acquisition system of AIS data based on embedded Web server
  LIN Yixun, SHAO Zheping
  (Navigation Institute, Jimei Univ., Xiamen Fujian 361021, China)
  Abstract: Based on embedded Web server and USB wireless network card, wireless transmission of automatic identification system(AIS) data is realized with the core ofS3C2410 microprocessor. In Linux system, by using the technology of Boa and common gateway interface(CGI), Web server is bulit and USB wireless network card driver is transplanted. Dynamic data exchange of B/S model between client and server is achieved using extensible markup language(XML) technology. AIS information from different ports can be received in real time through Internet based on TCP/IP protocol.
  Key words: automatic identification system; Web server; CGI; wireless network card; XML
  
  0 引 言
  自动识别系统(Automatic Identification System, AIS)是船舶发射和接收船位、航速、航向等船舶动态和静态信息的一种信息机制,是应用在避碰、港口船舶交通服务系统、船舶跟踪、船舶搜救等方面的重要技术手段之一,对提高航运安全、改善航运管理、减少海洋污染等具有重要意义.为此,国际海事组织对强制安装AIS的船舶类型及时间限制都作出具体的规定[1-2].
  随着移动通信和便携通信的发展,无线局域网WLAN日渐普及,基于ARM体系架构的嵌入式系统无线局域网接入可以实现对嵌入式系统的无线控制和远程数据传输,满足一些特殊场合的应用.目前,AIS数据的采集大多采用有线方式,导致设备使用灵活性的降低.本文通过对TP-LINK USB无线网卡的Linux设备驱动程序的深入分析,将USB无线网卡的驱动成功移植到S3C2410 ARM 920T处理器上,实现嵌入式系统的无线局域网接入.利用此平台,在应用层上进一步移植Boa Web服务器,并用编程技术实现船舶AIS数据的无线采集系统.
  1 系统构成
  主控制器采用三星公司生产的基于ARM 9架构的嵌入式芯片S3C2410,其工作频率为202 MHz,具有16 KB数据cache和16 KB指令cache,外接64 M NAND FLASH和64 M SDRAM,还有1个为集成调试接口(并口)的20针JTAG接口,其外围接口有10/100 M自适应以太网卡、4个USB接口、2个通用异步收发器、LCD接口、CAN总线接口以及串行外围接口等,可以方便地外接工作设备.系统硬件结构见图1.
  图1 系统的硬件结构
  在嵌入式系统中,常用操作系统有Linux,WinCE,VxWorks,pSOS,Nuclears,eCos和uC/OS-II等.其中,Linux系统是一个很优秀的操作系统,其源码开放、软件和驱动程序支持丰富.尤其是驱动程序,协议栈完善、应用广泛,已被广大开发者所熟悉.Linux操作系统的发展十分迅速,文中采用的是2008年2月发行的稳定版本Linux 2.6.24,Bootloader采用U-Boot,利用BusyBox制作Cramfs根文件系统,系统启动后挂载YAFFS文件系统.由于TP-LINK USB无线网卡支持802.11g标准、TCP协议和TFTP协议,同时笔记本自带无线网卡,因此可以在开发板和笔记本之间建立无线数据传输.
  2 USB无线网卡驱动
  本文采用的TL-WN510G是由TP-LINK出品的一款支持802.11g/802.11b协议的无线网卡,其无线网络芯片是rt73,并且采用USB 2.0接口用于和ARM 9开发板之间的无线数据传送.TP-LINK无线网卡主要由扩频通信机、网络接口和天线等3大部分组成.其中,网络接口是第三类标准Linux设备.从开发板的角度来说,对于接入系统中的USB无线网卡,首先看到的是USB总线,然后才是网卡芯片,所以USB驱动的移植要先于网卡驱动实现.2.1 网络驱动程序结构
  所有Linux网络驱动程序都遵循通用的接口,设计时采用面向对象的方法.一个设备就是一个对象(device结构),其内部有自己的数据和方法,每一个设备的方法被调用时的第一个参数都是这个设备对象本身,Linux网络驱动程序结构[3-5]见图2.
  图2 Linux网络驱动程序结构
  结构体struct net_device表示网络设备在内核中的运行情况;所有网络设备均通过以dev_base为头指针的设备链表管理;dev_base在内核源码的drivers/net/space.c文件中被定义为struct net_device *dev_base = &loopback_dev;内核中网络设备的初始化通过net_dev_init函数实现,drivers/block/genhd.c中有device_init函数的定义;网络设备的模块加载通过register_netdevice(net/core/dev.c)注册.
  2.2 USB无线网卡驱动程序移植
  Linux 2.6.24内核源码里不包含rt73驱动,所以需要单独下载.Linux 的驱动开发调试有两种方法:一种是直接编译到内核,再运行新的内核来测试;另一种是编译为模块的形式,单独加载运行调试.第一种效率较低,但在某些场合是唯一的方法;第二种效率很高,它使用insmod 工具将编译的模块直接插入内核,如果出现故障,可以使用rmmod 从内核中卸载模块,无须重新启动内核,这使驱动调试效率大大提高.[4]所以,本文采用第二种方法.
  从网站下载驱动源码,由于目标平台是ARM 9,而开发是在x86平台上进行的,所以要对Makefile文件中的交叉编译器进行如下修改:
  CC= arm-linux-gcc
  LD= arm-linux-ld
  其表示目标平台是ARM构架的,使用的交叉编译器的前缀是arm-linux.随后,交叉编译生成rt73.ko的动态加载模块.
  2.3 USB无线网卡测试
  将rt73.ko下载到开发板上,加载无线网卡驱动,插上USB无线网卡.
  在Linux中,要让网卡能正常工作至少要配置IP地址、工作模式、工作频段和ESSID等参数.对TP-LINK无线网卡,具体控制操作均通过ifconfig和iwconfig调用ioctl命令实现.rausb0是无线网卡在操作系统中的设备名称.具体操作如下:
  # ifconfig rausb0 192.168.1.127 up//配置IP
  # iwconfig rausb0 essid G1000 //设置ESSID
  # iwconfig rausb0 mode ap//设置工作模式
  # iwconfig rausb0 channnel 1//设置工作频段
  # iwlist scanning//搜索无线网络
  若无线网卡能够搜索到周围的无线网络,表明无线网卡工作正常.
  3 嵌入式Web服务器移植
  嵌入式Web服务器是嵌入式Internet的应用之一,其专注于为中高端设备提供Web服务器的一般功能及易于与设备的其他部分进行集成的特性.[6]本文所采用的建立在软件平台之上的嵌入式Web服务器架构见图3.
  图3 嵌入式Web服务器架构
  常见的嵌入式Web服务器有:(1)非常小巧的轻量级Web服务器Httpd,仅仅提供HTTP和通用网关接口(Common Gateway Interface,CGI)的支持;(2)功能比较全的开源嵌入式Web服务器go-Ahead,支持ASP,嵌入式 JavaScript,CGI以及静态页面超文本标记语言(Hyper Text Markup Language,HTML)格式;(3)支持HTTP和CGI的Boa,具有非常高效的请求效率,21个源文件,4 000多行源代码,编译后大约400 K,最多可以同时响应50个请求.根据应用需要,本文采用Boa服务器.
  3.1 Boa服务器移植
  从网站下载Boa服务器源码,解压获得源码目录树,所有需要的源码都在boa-0.94.13目录下.进入src目录,运行./configure 命令生成Makefile文件,修改Makefile中编译器的名称:
  CC = arm-linux-gcc
  CPP = arm-linux-gcc -E
  修改好Makefile后在src目录下进行编译,即可生成Boa服务器镜像.Boa服务器正常运行需要正确配置与服务器相关的文件,它在运行时会自动在/etc/boa/目录下寻找boa.conf文件.
  3.2 Boa服务器测试
  Boa在ARM端运行,所以在ARM文件系统中修改运行文件.将配置好的boa.conf文件拷贝到/etc/boa/目录下,然后将交叉编译好的boa可执行文件放入/sbin/目录下,接着根据boa.conf文件建立相关的文件目录,如/var/log/boa/error_log.在/var/www目录下建立index.html文件进行测试:(1)启动Boa服务器,在ARM端执行 #./boa &;(2)远程访问,在PC机端的IE浏览器地址栏中输入ARM端的IP地址,即可访问ARM端服务器提供的服务.
  3.3 CGI编程
  CGI是HTTP服务器与本身或其他机器上的程序进行交互的一种工具,CGI程序运行在网络服务器上.它们绝大多数被用来解释处理来自表单的输入信息,并在服务器上产生相应的处理结果,或将相应信息反馈给浏览器.CGI程序使网页具有交互功能,常用的编程语言有Shell Script, C, Visual Basic, Perl等,这里选择C语言.
  4 无线数据采集的实现
  4.1 建立index.html文件
  index.html文件是在IE浏览器的地址栏中输入服务器IP地址时所能看到的AIS远程采集初始页面.其产生的效果见图4.
  图4 AIS远程采集初始页面
  当点击“查看”按钮时,页面会跳转到数据采集的显示页面,同时服务器的后台程序也开始运行,对AIS进行数据采集.
  4.2 AIS数据采集和显示
  随着Internet的快速发展,Web上各种半结构化、非结构化的数据源成为重要的信息来源.1989年,万维网之父、欧洲粒子物理实验室的蒂姆•伯纳斯—李以标准通用标记语言(Standard Generalized Markup Language, SGML)风格的语法开发出HTML.它是SGML中一个很小的子集,简单易用,但是难以描述万维网上多样化的数据.
  可拓展的标记语言(eXtensible Markup Language,XML)是在SGML和HTML基础上发展起来的,用户可以定义自己的标记,用来描述文档结构.XML吸取两者的优点,并克服SGML过于复杂和HTML的局限性等缺点.[7]XML关心数据本身的语义,而非数据的显示,所以可以在XML数据上定义多种显示形式.文档内容与显示格式分离.
  在加载USB无线网卡的驱动和启动Boa服务器后,在网页中直接嵌入XML数据进行B/S的交互,实现AIS数据的无线采集.集美大学AIS点的数据采集结果见图5.
  图5 AIS数据采集显示
  为获取全国乃至世界各地沿海、沿江以及港口过往船舶的AIS信息,必须布置数量相当的岸台AIS接收机.[8]这些AIS接收机将采集到的数据以无线方式接入Internet,服务器通过TCP/IP网络实时接收各地沿海、沿江岸台AIS信息,并把连续的数据流动态分解为离散的AIS信息帧,执行数据来源归属地的动态转换,把接收到的AIS信息以文本文件的格式保存到本地文件,为上层应用提供支持.服务器端接收的AIS数据见图6.
  图6 港口AIS数据文本
  5 结 论
  以S3C2410微处理器为核心,对Linux下USB无线网卡的网络驱动进行分析和移植,实现嵌入式系统的无线局域网接入.在此基础上,采用Boa和CGI技术构建Web服务器,利用XML的数据模型,实现AIS数据的无线传输.经过大量实践检验表明,该系统运行良好,达到预期的功能和性能需求,为今后开展AIS信息的深层次、多角度综合研究打下坚实的基础.
  
  参考文献:
  [1]纪贤标,邵哲平,潘家财,等.AIS信息分布式采集系统的开发及关键技术[J].上海海事大学学报,2007,28(1):28-31.
  [2]周尊山, 鲍君忠, 李磊. 船舶自动识别系统在海事管理中的应用[J]. 航海技术, 2005(4): 33-34.
  [3]路冉冉, 郝静如, 李天剑. 嵌入式系统的以太网接口设计及Linux驱动[J]. 电子技术, 2009, 37(5): 35-37.
  [4]刘淼. 嵌入式系统接口设计与Linux驱动程序开发[M]. 北京: 北京航空航天大学出版社, 2006: 12-17.
  [5]杨勇, 张秦艳, 叶梅. 基于ARM的嵌入式Linux无线网卡设备驱动设计[J]. 科技信息, 2008(34): 219-220.
  [6]阿不来提• 吉力力, 李志平, 刘羽. 嵌入式Web服务器研究[J]. 微计算机信息, 2008, 24(1): 36-38.
  [7]王珊, 萨师煊. 数据库系统概论[M]. 4版. 北京: 高等教育出版社,2008: 391-406.
  [8]纪贤标,邵哲平,潘家财,等.AIS信息网络共享平台[J].上海海事大学学报,2010,31(2):32-34.
  (编辑 谢 尘)
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
其他文献
简要介绍了在船舶装载计算机的软件设计中实现计算机自动编制最佳压载方案的基本原理和实现该功能的软件设计界面。这对该类软件设计者改进软件设计方案,增加用户操作效率,以及
现代物流是近年来正在蓬勃兴起的一个行业,关于现代物流的各种理论、论述和见解纷繁庞杂.本文从发展港口物流方面谈几点思考意见.
分析了海事调查信息的体系结构,对关系模型的设计方法进行了研究,建立了海事调查数据库系统,并介绍了其运行和维护情况.
从船舶航行环境包括气候带、船舶阻力、舵角变化、吃水、海流流向等方面对船舶主机运行参数的影响进行讨论和分析,并提出相应的管理方法.
期刊
经新闻出版总署批准,2012年5月28日,由上海市教委主管,上海海事大学、上海中医药大学联合主办的上海浦江教育出版社正式成立.该社将发挥两校特色优势,倾力打造海事海洋、中医
使用虚拟仪器开发平台LabVIEW和数据采集卡,在港口机械的应变测量中,监视、采集应变等数据,并保存为可以和MATLAB共享的数据文件,同时可以通过网络进行远程测量.本系统已成功
<正>根据“教育部关于公布北京化工大学等54所高等学校本科教学工作评估结论的通知”(教高函[2005]13号),2004年共54所高校接受教育部组织的本科教学工作水平评估,上海海事大
期刊
介绍了GMDSS模拟器在局域网上进行语音通讯模拟的方法.叙述了VC++6.0编程中利用低层音频函数和音频压缩管理器(ACM)实现语音实时录制、压缩、传送与播放的方法.
介绍了传统的船用起货机继电器—接触器控制系统及其存在的问题和可编程控器及交流变频控制技术在船用起货机上的应用,描述船用起货机PLC变频控制系统的主要特性,如节能和可靠