《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于LXI總線的Web關(guān)鍵技術(shù)研究與實現(xiàn)
基于LXI總線的Web關(guān)鍵技術(shù)研究與實現(xiàn)
2016年電子技術(shù)應(yīng)用第3期
覃斌毅1,2,邱 杰3,鄭金存1,董積有4
1.玉林師范學(xué)院 電子與通信工程學(xué)院,廣西 玉林537000;2.西安電子科技大學(xué) 機(jī)電工程學(xué)院,陜西 西安710071; 3.玉林師范學(xué)院 計算機(jī)科學(xué)與工程學(xué)院,廣西 玉林537000;4.玉林師范學(xué)院 學(xué)生工作處,廣西 玉林537000
摘要: LXI總線是繼GPIB、VXI和PXI等傳統(tǒng)總線技術(shù)之后發(fā)展起來的新一代儀器總線技術(shù),具有傳統(tǒng)測試儀器總線無法比擬的優(yōu)勢。其中,Web頁面是LXI總線技術(shù)中的一個關(guān)鍵。通過對LXI儀器的Web頁面的研究,搭建LXI儀器Web接口的硬件平臺,并以IEEE1588同步配置頁面的實現(xiàn)為例,提出了一種在LXI儀器中實現(xiàn)Web頁面的方法。該方法將boa服務(wù)器和SQLite數(shù)據(jù)庫移植到Linux中,同時采用CGI局部刷新技術(shù)代替?zhèn)鹘y(tǒng)的CGI全局刷新,實現(xiàn)LXI儀器Web頁面。最后進(jìn)行系統(tǒng)驗證,通過瀏覽器對LXI儀器進(jìn)行遠(yuǎn)程訪問控制。實驗結(jié)果表明,系統(tǒng)能正確實現(xiàn)IEEE1588同步配置頁面。
中圖分類號: TP316
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.021
中文引用格式: 覃斌毅,邱杰,鄭金存,等. 基于LXI總線的Web關(guān)鍵技術(shù)研究與實現(xiàn)[J].電子技術(shù)應(yīng)用,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的全稱是儀器在局域網(wǎng)擴(kuò)展(LAN eXtensions for Instrumentation),它是繼GPIB、VXI和PXI等傳統(tǒng)總線技術(shù)之后發(fā)展起來的新一代儀器總線技術(shù)。LXI總線具有無處不在的LAN 接口、不受距離和節(jié)點(diǎn)數(shù)目的限制、精確時間同步技術(shù)以及遠(yuǎn)程網(wǎng)頁訪問等特點(diǎn)。因此,在組建網(wǎng)絡(luò)化、分布式自動化測試系統(tǒng)時,LXI總線擁有傳統(tǒng)測試儀器總線技術(shù)無法比擬的優(yōu)勢[1]

    LXI儀器是指符合LXI標(biāo)準(zhǔn)的新型儀器。LXI標(biāo)準(zhǔn)中明確提出LXI儀器必須提供能夠被W3C兼容瀏覽器訪問的Web頁面,用戶可以通過瀏覽器對儀器進(jìn)行遠(yuǎn)程訪問、控制以及故障排查,不需要傳統(tǒng)儀器的前面板即可實現(xiàn)單臺儀器的所有功能。其中,LXI總線B類儀器需要提供的基本W(wǎng)eb頁面主要包括:主頁面、LAN配置頁面、IEEE 1588同步配置頁面、儀器功能頁面以及事件日志訪問頁面[2]。因此,Web頁面的實現(xiàn)是LXI總線技術(shù)中的一個關(guān)鍵。本文以LXI總線中IEEE1588同步配置頁面為例,提出了一種實現(xiàn)LXI儀器Web頁面的方法。

1 LXI儀器Web接口硬件設(shè)計 

    為了實現(xiàn)LXI儀器的Web接口,本設(shè)計使用ARM+DM9000+DP83640的架構(gòu),其中,選用三星公司的S3C2440處理器為主控制器,DM9000為MAC層芯片,DP83640為物理層芯片[3]。LXI儀器Web接口硬件系統(tǒng)框圖如圖1所示。

ck2-t1.gif

2 LXI儀器Web接口軟件設(shè)計

    本設(shè)計操作系統(tǒng)選用Linux系統(tǒng),在系統(tǒng)中搭建嵌入式服務(wù)器,結(jié)合HTML、CGI以及SQLite數(shù)據(jù)庫技術(shù),實現(xiàn)了IEEE1588同步配置頁面。整個LXI 儀器Web接口軟件系統(tǒng)如圖2所示。

ck2-t2.gif

    系統(tǒng)工作過程為:用戶在客戶端發(fā)送HTTP請求消息,boa服務(wù)器對接收到的請求消息進(jìn)行解析,解析的內(nèi)容包括:讀取請求URL、區(qū)分客戶端請求的資源是靜態(tài)頁面還是CGI應(yīng)用程序。若用戶請求的是靜態(tài)頁面,則服務(wù)器讀取相應(yīng)的HTML的內(nèi)容,并將其作為HTTP響應(yīng)消息中的實體返回給客戶端瀏覽器;若客戶端請求的是CGI應(yīng)用程序,則服務(wù)器將創(chuàng)建相應(yīng)的CGI應(yīng)用程序進(jìn)程,并將所需信息按CGI規(guī)范傳遞給CGI應(yīng)用程序進(jìn)程,此后由CGI應(yīng)用程序接管控制。CGI應(yīng)用程序?qū)邮盏降男畔⑦M(jìn)行解碼,解碼后調(diào)用設(shè)備驅(qū)動程序?qū)τ布M(jìn)行控制,必要時將解碼的參數(shù)利用嵌入式數(shù)據(jù)庫進(jìn)行保存,同時CGI將結(jié)果在客戶端瀏覽器上顯示。

2.1 Web頁面構(gòu)成

    IEEE1588同步配置頁面是LXI總線B類儀器Web系統(tǒng)中的重要組成部分,用于對IEEE1588時鐘同步狀態(tài)監(jiān)控和對輸出觸發(fā)信號動態(tài)配置。它由2個Web網(wǎng)頁構(gòu)成:IEEE1588基本信息頁面和IEEE1588同步參數(shù)配置頁面。

    IEEE1588基本信息頁面用于顯示IEEE1588中的參數(shù),如當(dāng)前超主時鐘的MAC地址、父時鐘的MAC地址、時鐘端口狀態(tài)、當(dāng)前PTP時間、PTP子域、IEEE 1588協(xié)議版本[4]。

    IEEE1588同步參數(shù)配置頁面可對IEEE1588中的參數(shù)進(jìn)行設(shè)置,如可對PTP子域、PTP首選主時鐘、同步時間間隔、PTP時間、IEEE1588觸發(fā)時間、IEEE1588觸發(fā)信號類型等進(jìn)行設(shè)置。

2.2 嵌入式Web服務(wù)器的移植

    嵌入式設(shè)備常用的Web服務(wù)器有Lighttpd、thttpd、shttpd、apache、boa[5]。本設(shè)計采用boa作為嵌入式Web服務(wù)器,它具有小巧、高效、支持CGI技術(shù)的特點(diǎn)。

    boa服務(wù)器是開源的,要將其用于Linux系統(tǒng)需要進(jìn)行移植,移植的步驟如下:

    (1)從官方網(wǎng)站www.boa.org下載boa發(fā)布版源碼,本設(shè)計選擇版本為boa-0.94.13,在命令終端執(zhí)行解壓命令,將其解壓到PC linux虛擬機(jī)下。

    (2)進(jìn)入src目錄下執(zhí)行命令./configure,產(chǎn)生一個 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)執(zhí)行make命令進(jìn)行編譯,然后把編譯得到的boa可執(zhí)行文件拷貝到嵌入式設(shè)備文件系統(tǒng)的“sbin/”目錄下;把“boa-0.94.13/”目錄下的boa.conf文件拷貝到文件系統(tǒng)的“etc/boa/”目錄下。

    (5)修改boa配置文件boa.conf,主要修改內(nèi)容有:

    Port 80 //端口

    User root

    Group root

    ServerName GUET //服務(wù)器名

    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/

    以上為關(guān)鍵設(shè)置部分,其他部分采用默認(rèn)設(shè)置。設(shè)置完成后,保存退出,然后,拷貝PC機(jī)Linux系統(tǒng)etc/目錄下的mime.types到文件系統(tǒng)etc/目錄下。至此,boa服務(wù)器在Linux系統(tǒng)上的移植完成。最后,將HTML文件放在文件系統(tǒng)的/www文件夾中,將CGI腳本程序放在/www/cgi-bin文件夾中即可以實現(xiàn)網(wǎng)絡(luò)訪問。

2.3 嵌入式數(shù)據(jù)庫的移植

    數(shù)據(jù)庫主要用于數(shù)據(jù)存儲和查詢,在本設(shè)計中,嵌入式數(shù)據(jù)庫是客戶端瀏覽器與PTP程序(PTP程序是指實現(xiàn)IEEE1588協(xié)議的應(yīng)用程序)進(jìn)行通信的橋梁,如圖3所示。

ck2-t3.gif

    IEEE 1588同步配置頁面利用嵌入式數(shù)據(jù)庫實現(xiàn)兩個方面的作用:一方面是對一些IEEE 1588配置參數(shù)進(jìn)行存儲,PTP程序可以通過數(shù)據(jù)庫API訪問這些參數(shù);另一方面是PTP程序在運(yùn)行過程中可以動態(tài)存儲重要的狀態(tài)信息,客戶端可以通過調(diào)用CGI應(yīng)用程序?qū)崿F(xiàn)對這些信息的訪問。本設(shè)計選用在嵌入式系統(tǒng)中應(yīng)用最廣的SQLite進(jìn)行移植。

    移植嵌入式數(shù)據(jù)庫SQLite到Linux系統(tǒng)中的步驟如下:

    (1)從官方網(wǎng)站www.sqlite.org下載SQLite數(shù)據(jù)庫源碼壓縮包,本設(shè)計選擇的版本是sqlite-3.5.9。

    (2)壓縮包將其解壓到PC虛擬機(jī)Linux系統(tǒng)的opt目錄中,會生成一個名為sqlite-3.5.9的文件夾。

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

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

    (5)執(zhí)行make和make install命令,編譯安裝結(jié)束后,在/_install目錄下生成bin、lib、include目錄。

    (6)把bin目錄下的sqlite3和sqlite_test文件拷貝到嵌入式Linux文件系統(tǒng)中的bin目錄下,把lib目錄下的庫文件拷貝到文件系統(tǒng)的lib目錄下,這樣在嵌入式Linux中就可以使用SQLite數(shù)據(jù)庫了。

    (7)把include目錄下面的數(shù)據(jù)庫頭文件拷貝到交叉編譯器的include目錄下,把lib目錄下的庫文件拷貝到交叉編譯器的lib目錄下,讓交叉編譯器支持sqlite3數(shù)據(jù)庫。

    為實現(xiàn)相關(guān)的數(shù)據(jù)存儲,建立了一個數(shù)據(jù)庫文件config.db,存放在文件系統(tǒng)的mnt文件夾中。使用“create table”語句創(chuàng)建2個用于存放1588參數(shù)信息的表:config1588和parameters。其中,config1588存放PTP子域、首選主時鐘、同步間隔等;parameters存放超主時鐘的MAC地址、父時鐘的MAC地址、端口狀態(tài)等。

2.4 CGI動態(tài)網(wǎng)頁的實現(xiàn)

    嵌入式系統(tǒng)由于自身軟硬件資源的限制,Web服務(wù)器無法支持功能強(qiáng)大的腳本語言實現(xiàn)動態(tài)網(wǎng)頁。因此,在嵌入式Web服務(wù)器中通常使用CGI實現(xiàn)動態(tài)網(wǎng)頁。

    CGI(公共網(wǎng)關(guān)接口)是外部應(yīng)用程序(CGI程序)與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器之間傳遞信息的規(guī)程。例如,可以通過編寫CGI程序訪問數(shù)據(jù)庫以及通過設(shè)備驅(qū)動接口訪問硬件等[6]。

    CGI程序可以用任何腳本語言或者獨(dú)立編程語言實現(xiàn),只要該語言可以在系統(tǒng)上運(yùn)行。傳統(tǒng)的使用CGI實現(xiàn)動態(tài)網(wǎng)頁的方法步驟如下:

    (1)瀏覽器通過表單把請求數(shù)據(jù)發(fā)送到Web服務(wù)器。

    (2)CGI程序從環(huán)境變量或者標(biāo)準(zhǔn)輸入中提取表單數(shù)據(jù),并進(jìn)行相應(yīng)的處理。

    (3)用printf函數(shù)輸出整個HTML頁面代碼,將結(jié)果返回給瀏覽器。

    這種方法雖然可行,但是用CGI程序?qū)⒄麄€HTML靜態(tài)頁面全部通過printf輸出,會使得CGI代碼混亂不堪,并且難以實現(xiàn)復(fù)雜的HTML頁面。另外,還有一個缺點(diǎn)就是接到每一次請求都會將整個HTML頁面重傳一遍,增加了服務(wù)器的負(fù)擔(dān)。在已經(jīng)打開一個網(wǎng)頁進(jìn)行操作的過程中,每次請求往往只需要更新頁面中少部分?jǐn)?shù)據(jù)即可,沒有必要重傳整個頁面。

    為解決上述問題,本設(shè)計參照了AJAX技術(shù),使用局部動態(tài)網(wǎng)頁刷新的方法實現(xiàn)動態(tài)網(wǎng)頁。AJAX主要由JavaScript、XMLHTTPREQUEST、XML三部分組成。其中JavaScript用于頁面數(shù)據(jù)傳遞、刷新局部頁面;XMLHTTPREQUEST用于向服務(wù)器提交請求,與服務(wù)器響應(yīng);XML是服務(wù)器返回數(shù)據(jù)的格式。由于boa服務(wù)器不支持XMLHTTPRE-QUEST發(fā)出的請求,因此仍使用CGI實現(xiàn)請求的提交與響應(yīng),數(shù)據(jù)格式可以任意定義。具體實現(xiàn)方法如下:

    (1)參照大型服務(wù)器Web動態(tài)網(wǎng)頁的實現(xiàn)方法,先建立一個HTML靜態(tài)網(wǎng)頁框架。

    (2)對每一個表單請求創(chuàng)建一個CGI響應(yīng)程序,CGI只對需要返回的數(shù)據(jù)用printf函數(shù)輸出。

    (3)采用HTML內(nèi)聯(lián)框架技術(shù)將CGI響應(yīng)的HTML頁面進(jìn)行隱藏。

    (4)使用JavaScript腳本語言從CGI響應(yīng)的HTML頁面中取出服務(wù)器返回的數(shù)據(jù),并將其顯示在主HTML頁面的指定位置。

3 LXI儀器Web接口功能驗證

    為了對LXI儀器Web接口功能進(jìn)行測試,搭建圖4所示的測試平臺。其中,美國安捷倫公司的觸發(fā)盒E5818A與待測LXI儀器通過交換機(jī)相連,同時,PC也通過交換機(jī)接入到局域網(wǎng)中,PC可通過網(wǎng)頁訪問對待測LXI儀器進(jìn)行控制。將觸發(fā)盒和待測LXI儀器的觸發(fā)輸出口分別接到示波器的兩個通道,用于測量同步誤差[7]。

ck2-t4.gif

3.1 IEEE1588基本信息頁面的驗證

    首先,通過交換機(jī)將PC與LXI測試儀器相連,設(shè)置PC和LXI儀器在同一局域網(wǎng)內(nèi),然后在瀏覽器中輸入網(wǎng)址:http://192.168.1.6/ieee1588ViewConfiguration.html,打開網(wǎng)頁,界面如圖5所示。

ck2-t5.gif

    經(jīng)驗證,PC可通過瀏覽器訪問嵌入式系統(tǒng)中的IEEE1588基本信息頁面,在頁面正確顯示了IEEE1588的相關(guān)參數(shù)。

3.2 IEEE1588同步參數(shù)配置頁面的驗證

    通過交換機(jī)將PC與LXI測試儀器相連,設(shè)置PC和LXI儀器在同一局域網(wǎng)內(nèi),然后在瀏覽器器中輸入網(wǎng)址:http://192.168.1.6/ieee1588ModifyConfiguration.html,界面如圖6所示。

ck2-t6.gif

    經(jīng)驗證,PC可通過瀏覽器訪問嵌入式系統(tǒng)中的IEEE1588同步參數(shù)配置頁面。

    通過對觸發(fā)時間、觸發(fā)周期、觸發(fā)源等參數(shù)進(jìn)行設(shè)置,可在指定的時刻輸出觸發(fā)信號。為了驗證同步觸發(fā)功能,分別通過網(wǎng)頁設(shè)置E5818A 和待測LXI儀器在同一時刻觸發(fā)輸出脈沖信號,用示波器檢測這兩路輸出信號。圖7是在指定時刻下,示波器測得的同步觸發(fā)的信號,從圖7可得同步誤差時間是258 ns。

ck2-t7.gif

4 結(jié)束語

    本設(shè)計使用ARM+DM9000+DP83640的架構(gòu)實現(xiàn)了LXI儀器Web硬件接口;將boa服務(wù)器和sQList數(shù)據(jù)庫、Linux操作系統(tǒng)、HTML、CGI 等技術(shù)結(jié)合起來,實現(xiàn)了LXI儀器Web軟件接口。在Web軟件接口實現(xiàn)的過程中,使用了CGI局部刷新技術(shù)代替?zhèn)鹘y(tǒng)的CGI全局刷新,減輕了Web服務(wù)器的負(fù)擔(dān)。最終,通過搭建測試平臺,驗證了所提出的方法切實可行,為LXI儀器的Web頁面設(shè)計提供了參考。

參考文獻(xiàn)

[1] 王彪.LXI關(guān)鍵技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2009.

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

[3] 覃斌毅,陳鐵軍,邱杰,等.基于IEEE1588協(xié)議時鐘同步精度影響因素的研究[J].計算機(jī)測量與控制,2014,22(10):3312-3315.

[4] 于志成.LXI關(guān)鍵技術(shù)-IEEE1588協(xié)議的研究與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.

[5] 胡聰,高明,牛軍浩.LXI標(biāo)準(zhǔn)Web接口儀器控制研究[J].計算機(jī)測量與控制,2011,19(6):1354-1356.

[6] 謝仕義,徐兵.嵌入式Web服務(wù)器的設(shè)計及其CGI 實現(xiàn)[J].計算機(jī)工程與設(shè)計,2007,28(7):1598-1600.

[7] 朱旺純,覃斌毅,王玉娟.基于IEEE1588協(xié)議同步技術(shù)的研究[J].計算機(jī)測量與控制,2014,33(7):98-101.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。