《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于LXI总线的Web关键技术研究与实现
基于LXI总线的Web关键技术研究与实现
2016年电子技术应用第3期
覃斌毅1,2,邱 杰3,郑金存1,董积有4
1.玉林师范学院 电子与通信工程学院,广西 玉林537000;2.西安电子科技大学 机电工程学院,陕西 西安710071; 3.玉林师范学院 计算机科学与工程学院,广西 玉林537000;4.玉林师范学院 学生工作处,广西 玉林537000
摘要: LXI总线是继GPIB、VXI和PXI等传统总线技术之后发展起来的新一代仪器总线技术,具有传统测试仪器总线无法比拟的优势。其中,Web页面是LXI总线技术中的一个关键。通过对LXI仪器的Web页面的研究,搭建LXI仪器Web接口的硬件平台,并以IEEE1588同步配置页面的实现为例,提出了一种在LXI仪器中实现Web页面的方法。该方法将boa服务器和SQLite数据库移植到Linux中,同时采用CGI局部刷新技术代替传统的CGI全局刷新,实现LXI仪器Web页面。最后进行系统验证,通过浏览器对LXI仪器进行远程访问控制。实验结果表明,系统能正确实现IEEE1588同步配置页面。
中图分类号: TP316
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.03.021
中文引用格式: 覃斌毅,邱杰,郑金存,等. 基于LXI总线的Web关键技术研究与实现[J].电子技术应用,2016,42(3):74-77.
英文引用格式: Qin Binyi,Qiu Jie,Zheng Jincun,et al. Research and implementation of Web key technologies based on LXI bus[J].Application of Electronic Technique,2016,42(3):74-77.
Research and implementation of Web key technologies based on LXI bus
Qin Binyi1,2,Qiu Jie3,Zheng Jincun1,Dong Jiyou4
1.Electronic and Communication Engineering College,Yulin Normal University,Yulin 537000,China; 2.School of Elecrto-Mechanical Engineering,Xidian University,Xi′an 710071,China; 3.Computer Science and Engineering College,Yulin Normal University,Yulin 537000,China; 4.Department of Student Affairs,Yulin Normal University,Yulin 537000,China
Abstract: LXI bus is a new generation of instrument bus technology which is following the GPIB, VXI and PXI traditional bus technology. It has the incomparable advantage over traditional instrument bus. Among them, the Web page is a key of LXI bus technology. This paper researches Web pages of LXI instrument and puts forward a realization method of the Web page in LXI instruments, which take an example of the realization of the IEEE1588 synchronization configuration page. This method realizes the Web page by transplanting boa server and SQLite database into Linux. At the same time, traditional CGI global refresh is replaced by CGI local refresh. Finally the system is verified, the browser is used to control of LXI instruments by remote access. The experimental results show that the system can realize IEEE1588 right synchronization configuration page.
Key words : LXI;IEEE1588;embedded Web serve;embedded database;CGI

0 引言

    LXI的全称是仪器在局域网扩展(LAN eXtensions for Instrumentation),它是继GPIB、VXI和PXI等传统总线技术之后发展起来的新一代仪器总线技术。LXI总线具有无处不在的LAN 接口、不受距离和节点数目的限制、精确时间同步技术以及远程网页访问等特点。因此,在组建网络化、分布式自动化测试系统时,LXI总线拥有传统测试仪器总线技术无法比拟的优势[1]

    LXI仪器是指符合LXI标准的新型仪器。LXI标准中明确提出LXI仪器必须提供能够被W3C兼容浏览器访问的Web页面,用户可以通过浏览器对仪器进行远程访问、控制以及故障排查,不需要传统仪器的前面板即可实现单台仪器的所有功能。其中,LXI总线B类仪器需要提供的基本Web页面主要包括:主页面、LAN配置页面、IEEE 1588同步配置页面、仪器功能页面以及事件日志访问页面[2]。因此,Web页面的实现是LXI总线技术中的一个关键。本文以LXI总线中IEEE1588同步配置页面为例,提出了一种实现LXI仪器Web页面的方法。

1 LXI仪器Web接口硬件设计 

    为了实现LXI仪器的Web接口,本设计使用ARM+DM9000+DP83640的架构,其中,选用三星公司的S3C2440处理器为主控制器,DM9000为MAC层芯片,DP83640为物理层芯片[3]。LXI仪器Web接口硬件系统框图如图1所示。

ck2-t1.gif

2 LXI仪器Web接口软件设计

    本设计操作系统选用Linux系统,在系统中搭建嵌入式服务器,结合HTML、CGI以及SQLite数据库技术,实现了IEEE1588同步配置页面。整个LXI 仪器Web接口软件系统如图2所示。

ck2-t2.gif

    系统工作过程为:用户在客户端发送HTTP请求消息,boa服务器对接收到的请求消息进行解析,解析的内容包括:读取请求URL、区分客户端请求的资源是静态页面还是CGI应用程序。若用户请求的是静态页面,则服务器读取相应的HTML的内容,并将其作为HTTP响应消息中的实体返回给客户端浏览器;若客户端请求的是CGI应用程序,则服务器将创建相应的CGI应用程序进程,并将所需信息按CGI规范传递给CGI应用程序进程,此后由CGI应用程序接管控制。CGI应用程序对接收到的信息进行解码,解码后调用设备驱动程序对硬件进行控制,必要时将解码的参数利用嵌入式数据库进行保存,同时CGI将结果在客户端浏览器上显示。

2.1 Web页面构成

    IEEE1588同步配置页面是LXI总线B类仪器Web系统中的重要组成部分,用于对IEEE1588时钟同步状态监控和对输出触发信号动态配置。它由2个Web网页构成:IEEE1588基本信息页面和IEEE1588同步参数配置页面。

    IEEE1588基本信息页面用于显示IEEE1588中的参数,如当前超主时钟的MAC地址、父时钟的MAC地址、时钟端口状态、当前PTP时间、PTP子域、IEEE 1588协议版本[4]

    IEEE1588同步参数配置页面可对IEEE1588中的参数进行设置,如可对PTP子域、PTP首选主时钟、同步时间间隔、PTP时间、IEEE1588触发时间、IEEE1588触发信号类型等进行设置。

2.2 嵌入式Web服务器的移植

    嵌入式设备常用的Web服务器有Lighttpd、thttpd、shttpd、apache、boa[5]。本设计采用boa作为嵌入式Web服务器,它具有小巧、高效、支持CGI技术的特点。

    boa服务器是开源的,要将其用于Linux系统需要进行移植,移植的步骤如下:

    (1)从官方网站www.boa.org下载boa发布版源码,本设计选择版本为boa-0.94.13,在命令终端执行解压命令,将其解压到PC linux虚拟机下。

    (2)进入src目录下执行命令./configure,产生一个 make-file文件。修改makefile文件:将CC=gcc改为CC=arm-linux-gcc,将CPP=gcc-E改为CPP=arm-linux-g++ -E。

    (3)修改src目录下compat.h文件,找到头文件中的#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo)(foo)->tm_gmtoff。

    (4)执行make命令进行编译,然后把编译得到的boa可执行文件拷贝到嵌入式设备文件系统的“sbin/”目录下;把“boa-0.94.13/”目录下的boa.conf文件拷贝到文件系统的“etc/boa/”目录下。

    (5)修改boa配置文件boa.conf,主要修改内容有:

    Port 80 //端口

    User root

    Group root

    ServerName GUET //服务器名

    DocumentRoot /www //存放html文档主目录

    DirectoryIndex index.html

    MimeTypes/etc/mime.types //指明文件位置

    DefaultType text/plain

    CGIPath /bin:/usr/bin:/usr/sbin:/sbin

    ScriptAlias /cgi-bin/ /www/cgi-bin/

    以上为关键设置部分,其他部分采用默认设置。设置完成后,保存退出,然后,拷贝PC机Linux系统etc/目录下的mime.types到文件系统etc/目录下。至此,boa服务器在Linux系统上的移植完成。最后,将HTML文件放在文件系统的/www文件夹中,将CGI脚本程序放在/www/cgi-bin文件夹中即可以实现网络访问。

2.3 嵌入式数据库的移植

    数据库主要用于数据存储和查询,在本设计中,嵌入式数据库是客户端浏览器与PTP程序(PTP程序是指实现IEEE1588协议的应用程序)进行通信的桥梁,如图3所示。

ck2-t3.gif

    IEEE 1588同步配置页面利用嵌入式数据库实现两个方面的作用:一方面是对一些IEEE 1588配置参数进行存储,PTP程序可以通过数据库API访问这些参数;另一方面是PTP程序在运行过程中可以动态存储重要的状态信息,客户端可以通过调用CGI应用程序实现对这些信息的访问。本设计选用在嵌入式系统中应用最广的SQLite进行移植。

    移植嵌入式数据库SQLite到Linux系统中的步骤如下:

    (1)从官方网站www.sqlite.org下载SQLite数据库源码压缩包,本设计选择的版本是sqlite-3.5.9。

    (2)压缩包将其解压到PC虚拟机Linux系统的opt目录中,会生成一个名为sqlite-3.5.9的文件夹。

    (3)在sqlite-3.5.9根目录下新建目录_install。

    (4)配置SQLite,生成Makefile文件。

    (5)执行make和make install命令,编译安装结束后,在/_install目录下生成bin、lib、include目录。

    (6)把bin目录下的sqlite3和sqlite_test文件拷贝到嵌入式Linux文件系统中的bin目录下,把lib目录下的库文件拷贝到文件系统的lib目录下,这样在嵌入式Linux中就可以使用SQLite数据库了。

    (7)把include目录下面的数据库头文件拷贝到交叉编译器的include目录下,把lib目录下的库文件拷贝到交叉编译器的lib目录下,让交叉编译器支持sqlite3数据库。

    为实现相关的数据存储,建立了一个数据库文件config.db,存放在文件系统的mnt文件夹中。使用“create table”语句创建2个用于存放1588参数信息的表:config1588和parameters。其中,config1588存放PTP子域、首选主时钟、同步间隔等;parameters存放超主时钟的MAC地址、父时钟的MAC地址、端口状态等。

2.4 CGI动态网页的实现

    嵌入式系统由于自身软硬件资源的限制,Web服务器无法支持功能强大的脚本语言实现动态网页。因此,在嵌入式Web服务器中通常使用CGI实现动态网页。

    CGI(公共网关接口)是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。例如,可以通过编写CGI程序访问数据库以及通过设备驱动接口访问硬件等[6]

    CGI程序可以用任何脚本语言或者独立编程语言实现,只要该语言可以在系统上运行。传统的使用CGI实现动态网页的方法步骤如下:

    (1)浏览器通过表单把请求数据发送到Web服务器。

    (2)CGI程序从环境变量或者标准输入中提取表单数据,并进行相应的处理。

    (3)用printf函数输出整个HTML页面代码,将结果返回给浏览器。

    这种方法虽然可行,但是用CGI程序将整个HTML静态页面全部通过printf输出,会使得CGI代码混乱不堪,并且难以实现复杂的HTML页面。另外,还有一个缺点就是接到每一次请求都会将整个HTML页面重传一遍,增加了服务器的负担。在已经打开一个网页进行操作的过程中,每次请求往往只需要更新页面中少部分数据即可,没有必要重传整个页面。

    为解决上述问题,本设计参照了AJAX技术,使用局部动态网页刷新的方法实现动态网页。AJAX主要由JavaScript、XMLHTTPREQUEST、XML三部分组成。其中JavaScript用于页面数据传递、刷新局部页面;XMLHTTPREQUEST用于向服务器提交请求,与服务器响应;XML是服务器返回数据的格式。由于boa服务器不支持XMLHTTPRE-QUEST发出的请求,因此仍使用CGI实现请求的提交与响应,数据格式可以任意定义。具体实现方法如下:

    (1)参照大型服务器Web动态网页的实现方法,先建立一个HTML静态网页框架。

    (2)对每一个表单请求创建一个CGI响应程序,CGI只对需要返回的数据用printf函数输出。

    (3)采用HTML内联框架技术将CGI响应的HTML页面进行隐藏。

    (4)使用JavaScript脚本语言从CGI响应的HTML页面中取出服务器返回的数据,并将其显示在主HTML页面的指定位置。

3 LXI仪器Web接口功能验证

    为了对LXI仪器Web接口功能进行测试,搭建图4所示的测试平台。其中,美国安捷伦公司的触发盒E5818A与待测LXI仪器通过交换机相连,同时,PC也通过交换机接入到局域网中,PC可通过网页访问对待测LXI仪器进行控制。将触发盒和待测LXI仪器的触发输出口分别接到示波器的两个通道,用于测量同步误差[7]

ck2-t4.gif

3.1 IEEE1588基本信息页面的验证

    首先,通过交换机将PC与LXI测试仪器相连,设置PC和LXI仪器在同一局域网内,然后在浏览器中输入网址:http://192.168.1.6/ieee1588ViewConfiguration.html,打开网页,界面如图5所示。

ck2-t5.gif

    经验证,PC可通过浏览器访问嵌入式系统中的IEEE1588基本信息页面,在页面正确显示了IEEE1588的相关参数。

3.2 IEEE1588同步参数配置页面的验证

    通过交换机将PC与LXI测试仪器相连,设置PC和LXI仪器在同一局域网内,然后在浏览器器中输入网址:http://192.168.1.6/ieee1588ModifyConfiguration.html,界面如图6所示。

ck2-t6.gif

    经验证,PC可通过浏览器访问嵌入式系统中的IEEE1588同步参数配置页面。

    通过对触发时间、触发周期、触发源等参数进行设置,可在指定的时刻输出触发信号。为了验证同步触发功能,分别通过网页设置E5818A 和待测LXI仪器在同一时刻触发输出脉冲信号,用示波器检测这两路输出信号。图7是在指定时刻下,示波器测得的同步触发的信号,从图7可得同步误差时间是258 ns。

ck2-t7.gif

4 结束语

    本设计使用ARM+DM9000+DP83640的架构实现了LXI仪器Web硬件接口;将boa服务器和sQList数据库、Linux操作系统、HTML、CGI 等技术结合起来,实现了LXI仪器Web软件接口。在Web软件接口实现的过程中,使用了CGI局部刷新技术代替传统的CGI全局刷新,减轻了Web服务器的负担。最终,通过搭建测试平台,验证了所提出的方法切实可行,为LXI仪器的Web页面设计提供了参考。

参考文献

[1] 王彪.LXI关键技术研究[D].哈尔滨:哈尔滨工业大学,2009.

[2] LXI Consortium,Inc.LXI Consortium.LXI standard revision1.3[S].2008.

[3] 覃斌毅,陈铁军,邱杰,等.基于IEEE1588协议时钟同步精度影响因素的研究[J].计算机测量与控制,2014,22(10):3312-3315.

[4] 于志成.LXI关键技术-IEEE1588协议的研究与实现[D].哈尔滨:哈尔滨工业大学,2012.

[5] 胡聪,高明,牛军浩.LXI标准Web接口仪器控制研究[J].计算机测量与控制,2011,19(6):1354-1356.

[6] 谢仕义,徐兵.嵌入式Web服务器的设计及其CGI 实现[J].计算机工程与设计,2007,28(7):1598-1600.

[7] 朱旺纯,覃斌毅,王玉娟.基于IEEE1588协议同步技术的研究[J].计算机测量与控制,2014,33(7):98-101.

此内容为AET网站原创,未经授权禁止转载。