,
(1.中国地质大学 信息工程学院,北京 100083;2.中国地质大学 地球物理与信息技术学院)
嵌入式网关在分布式时域激电接收系统中的应用
焦妍,曾卫华2
(1.中国地质大学 信息工程学院,北京 100083;2.中国地质大学 地球物理与信息技术学院)
为了满足分布式时域激电接收系统状态监测和控制的需求,研制了一种基于嵌入式网关的监控接口。该接口以ARM Linux为操作系统平台,采用Client/Server结构,综合运用嵌入式Web服务器BOA与CGI、AJAX等网页开发技术,实现了接收机的控制和数据质量监测功能。客户端只需要浏览器,无需配备特定硬件平台和App,即可实现仪器的监控功能。测试结果表明,这种基于嵌入式网关的监控接口具有实用性。
嵌入式网关;监控接口;BOA服务器;AJAX;分布式接收系统
时域激发极化法是电法勘探的重要分支之一[1],发送机和接收机是实现该方法的主要装备。国外,加拿大GDD公司研制生产的电法仪代表了时域激电仪器行业的先进水平,其接收机采用基于WinCE操作系统的专用掌上电脑(Personal Digital Assistant, PDA)进行控制和数据采集[2];国内,重庆奔腾数控技术研究所、中南大学、吉林大学等科研院所也研制并推出了各具特色的激电仪,这些电法仪在工程实践中均获得了较好的勘探效果[3]。但是,目前国内外的时域电法仪大多采用基于特定操作系统的应用程序(Application,App)或者操作面板进行控制[2],专用App需要配备特定的软硬件平台,开发难度较大,且程序无法跨平台运行,如基于iOS和Android的应用程序无法兼容。为了提高仪器控制接口的兼容性,探索一种无需特定控制终端和特定App的仪器控制方法具有一定实用性。
中国地质大学(北京)研制了如图1所示的多接收机、多通道分布式接收系统[4]。该系统由电源站和多台接收机组成。其中,电源站在该系统中充当嵌入式网关,通过该网关,系统可实现接收机的控制(如接收机的上、下电,开始或停止记录数据等)和数据质量监测功能。系统的用户界面仅为与平台无关的Web页面,无需配备额外的控制硬件及专用App。本文将围绕分布式接收系统中的嵌入式网关接口设计展开论述。
图1 具有嵌入式网关接口的分布式时域激电接收系统
硬件平台框图如图2所示,嵌入式网关硬件平台采用工业级ARM芯片AT91SAM9G45作为核心处理器,配备128 MB DDR2 DRAM和256 MB NAND Flash,扩展了用于接入嵌入式网关的10/100M有线以太网及无线WiFi接口。平台还扩展了2路高速RS485接口,分别用于下行命令的发送和上行数据的接收。在此基础上,嵌入式网关移植了嵌入式Linux系统[5],包括引导加载器(BootLoader)、系统内核(Linux Kernel-2.6.38)和根文件系统——无序区块镜像文件系统(Unsorted Block Image File System, UBIFS),该系统的构建为嵌入式网关软件的移植和运行打下了基础。
图2 硬件平台框图
图3 软件设计框图
为实现分布式时域激电接收系统的控制和波形质量监测功能,用户通过访问嵌入式网关不仅可向接收机发送控制命令、配置相关参数,而且可对采集数据进行波形预览,以保证接收机存储数据的质量。软件系统采用前后台设计,嵌入式网关通过后台运行BOA嵌入式Web服务器程序,前台运行CGI、RS485通信程序和JavaScript脚本,从而为客户端(浏览器)提供www服务。
2.1 软件整体设计
软件整体设计如图3所示,电源站在该系统中起到嵌入式网关作用,是客户端和接收机之间的监控接口。嵌入式网关通过下行RS485总线实现接收机的控制,通过上行RS485总线实现接收机采集数据的动态波形预览。用户无需使用特定控制终端及专用App,通过WiFi或以太网在任何已安装网页浏览器的移动终端或PC机上即可访问嵌入式网关Web页面。
客户端浏览器和嵌入式网关的BOA服务器采用AJAX交互方式,实现页面定时局部刷新。用户通过浏览器访问嵌入式网关获取Web页面,通过单击不同功能的按钮,触发在页面中植入的JavaScript脚本调用AJAX引擎,AJAX引擎使用脚本中创建的XMLHttpRequest对象,向嵌入式网关的BOA服务器发送异步数据请求,服务器根据请求调用指定CGI程序,实现与RS485通信程序之间的数据交互。
软件使用共享内存来实现CGI程序和RS485进程之间的通信。共享内存是Linux下进程间通信(Inter-Process Communication, IPC)的方法之一,进程可以直接读写内存,不需要任何数据的拷贝,即可实现两同时运行进程间的数据传递和共享[6]。CGI程序将来自客户端浏览器的控制命令按一定格式写入共享内存,下行命令发送进程由阻塞变为运行态。在波形预览模式下,接收机将采集数据发送至上行RS485总线,上行数据接收进程由阻塞变为运行态,将采集数据写入共享内存。CGI程序读取共享内存中的接收机数据,并将其返回至BOA服务器。服务器将数据以XML(Extensible Markup Language)文档形式返回给AJAX引擎。根据定时器设定的页面刷新时间,JavaScript调用DOM(Document Object Model)的应用程序编程接口(Application Programming Interface, API)定时局部更新HTML(Hypertext Markup Language)文档,实现波形预览功能。
2.2 嵌入式Web服务器的搭建
在嵌入式Linux系统中,常用的Web服务器有:BOA、Mini_httpd、GoAhead和Apache等。其中,BOA是一种基于HTTP、支持通用网关接口(Common Gateway Interface, CGI)且可靠稳定的开源单任务服务器。与其他Web服务器的不同之处在于,它在内部处理HTTP连接,产生独立进程来处理CGI程序,占用较少系统资源,具有很高的请求处理速度和效率[7]。因此,本系统的嵌入式网关采用BOA服务器。
为在硬件平台搭建BOA服务器,需先从官网上下载新版本源码包boa-0.94.13.tar.gz,再根据需要进行相关定制[8]:对src目录下的头文件compat.h和源码boa.c进行修改,执行源码安装命令,生成Makefile,并在当前目录下用arm-linux-gcc交叉编译器编译生成boa可执行程序,修改BOA服务器的配置文件boa.conf。最后,将可执行程序、配置文件以及宿主机中的mime.types拷贝到根文件系统的etc目录下,修改根文件系统sbin目录下的脚本文件rcs,确保BOA服务器随系统上电自启动。完成上述配置后,在根文件系统的相关目录下,编写静态页面和简单的CGI程序以测试BOA服务器的运行情况,分别验证浏览器能否正常获取静态页面和执行CGI程序,为动态网页的实现作好铺垫。
2.3 动态网页的实现
为实现嵌入式网关的波形预览功能,需对Web页面进行定时局部刷新。本系统在页面中植入可调用CGI程序的JavaScript脚本,并结合AJAX(Asynchronous JavaScript And XML)技术实现页面动态显示。
CGI是外部应用程序和BOA服务器交互的一种标准接口。通过该接口,用户可向CGI程序传递不同参数,从而实现客户端和服务器之间的交互[9]。在Web环境下,客户端向BOA服务器发出数据请求,BOA服务器把接收到的有关数据放入环境变量,然后启动JavaScript脚本指定的 CGI程序,CGI程序从环境变量中获取相关信息,处理来自客户端的控制命令和接收机的采样数据,最后以HTML格式输出相应的执行结果返回给客户端浏览器[10]。
CGI程序可以用任何程序设计语言编写,如 Shell 脚本语言、Perl、Fortran、Pascal、C语言等。但是用C语言编写的 CGI 程序具有执行速度快、安全性高等特点,所以嵌入式网关选用C语言编写CGI程序[11]。
AJAX是一种创建交互式网页应用的网页开发技术,在用户和服务器之间引入一个中间媒介——AJAX引擎。有别于传统Web开发中采用的同步交互方式,该引擎允许用户与应用程序之间的交互过程异步进行,由用户操作触发某事件,用JavaScript调用AJAX引擎在服务器创建一个XMLHttpRequest对象,通过XMLHttpRequest对象向BOA服务器发出异步HTTP请求和处理响应,而不阻塞用户,减少了对服务器的资源占用,提高了系统的响应速度,缩短了用户的等待时间。服务器的响应数据以XML文档形式返回给客户端浏览器,这些返回的XML文档通过DOM技术可被准确地解析。然后用JavaScript脚本来操作DOM定时更新HTML文档[12],在不重新加载整个页面的情况下,对数据进行部分更新。嵌入式网关在Web页面中植入JavaScript脚本,通过加入定时器每隔一定时间调用CGI程序,以获取共享内存中的接收机预览数据,并将数据通过Canvas绘制成动态波形显示在Web页面上。Canvas是HTML5提供的实现绘图功能的标记元素,定义了一个API支持脚本化客户端绘图操作,该元素可通过JavaScript脚本调用其自带函数进行图形绘制,可以创建用户交互的动态图形[13-14]。
在完成嵌入式Linux系统的移植、BOA服务器的搭建、静态和动态网页及RS485通信程序的设计后,对嵌入式网关的功能进行测试。
在客户端浏览器的地址栏中输入嵌入式网关的IP,浏览器返回如图4所示的分布式时域激电接收系统监控页面。嵌入式网关的页面上方为接收机控制区,用户可选择目标接收机的设备号和通道号,通过单击“控制命令”栏中的相应按钮发送控制命令:单击“上电”和“下电”按钮,实现所选接收机的上、下电操作;单击“开始自检”按钮,完成对所选接收机的模拟通道自检功能,页面下方的波形预览区动态显示如图4所示的自检波形;单击“开始预览”按钮,波形预览区出现根据接收机采集的实时数据绘制的动态波形,用户可根据波形监测采集数据的质量,以保证接收机存储数据的有效性;单击“开始采集”按钮,接收机开始采集数据并将其保存于本地非易失性存储器;单击“停止采集”按钮,接收机停止采集数据。
图4 分布式时域激电接收系统监控页面
用户还可根据需要对接收机进行参数配置,包括A/D采样速率、接收机的同步方式以及RS485接口的上、下行数据传输速率。通过“自电补偿”按钮可对自然电位进行补偿。
[1] 张赛珍,王庆乙,罗延钟.中国电法勘探发展概况[J].地球物理学报,1994(S1):408-424.
[2] GDD Instrumentation.IP Receivers:Induced Polarization Receivers[EB/OL].[2017-08]. http://www.gddinstrumentation.com/ip-receivers.
[3] 严加永,孟贵祥,吕庆田,等.高密度电法的进展与展望[J].物探与化探,2012(4):576-584.
[4] 曾卫华.一种分布式时间域激电接收装置及实现方法[P].CN104155696B,2016-10-05.
[5] 刘文峰,李程远,李善平.嵌入式Linux操作系统的研究[J].浙江大学学报:工学版,2004(4):60-65.
[6] 厉海燕,李新明.实时Linux中共享内存的实现[J].计算机应用,2001(11):75-76.
[7] 王庆辉,冯振国.Web服务器Boa在BF561上的移植及其应用[J].控制工程,2009(S3):74-76.
[8] 陈娟,李元,李万国.基于B/S模式的嵌入式系统测试方法与实现[J].电子技术应用,2016(2):50-52,56.
[9] 张曦煌,柴志雷.嵌入式Web服务器中CGI的特点及实现[J].小型微型计算机系统,2003(11):2046-2048.
[10] 梁泰文.基于嵌入式Web的CAN总线远程监控系统的设计与实现[D].北京:清华大学,2004.
[11] Chang Jun Han.Research on CGI in Embedded System[J].Applied Mechanics and Materials,2014(539):534-537.
[12] 吕林涛,万经华,周红芳.基于AJAX的Web无刷新页面快速更新数据方法[J].计算机应用研究,2006(11):199-200,223.
[13] 刘维峰,左泽军,赵利强,等.基于HTML5的生产装置实时监测可视化[J].计算机工程与设计,2015(3):809-813.
[14] Steve Fulton&Jeff Fulton.HTML5 Canvas开发详解[M].任旻,等译.北京:人民邮电出版社,2013.
焦妍(本科生),主要研究方向为电子通信工程;曾卫华(讲师),主要研究方向为地球物理仪器。
ApplicationofEmbeddedGatewayinDistributedTimeDomainIPReceivingSystem
JiaoYan1,ZengWeihua2
(1.School of Information Engineering,China University of Geosciences,Beijing 100083,China;2.School of Geophysics and Information Technology,China University of Geosciences)
In order to meet the requirements of condition monitoring and controlling in distributed time domain IP receiving system,the monitoring interface based on embedded gateway is designed.The interface based on ARM Linux operating system platform adopts Client/Server (C/S) model,accomplishing the functions of controlling and data quality monitoring,with a comprehensive utilization of embedded Web server BOA and web development technologies including Common Gateway Interface (CGI) and Asynchronous JavaScript And XML (AJAX).Without specific hardware platform and applications,clients only need a browser.The test results indicate that the monitoring interface based on embedded gateway is practical.
embedded gateway;monitoring interface;BOA server;AJAX;distributed receiving system
TP368.1;TH762
A
2017-08-02)