文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.02.013
中文引用格式: 陳娟,李元,李萬(wàn)國(guó). 基于B/S模式的嵌入式系統(tǒng)測(cè)試方法與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(2):50-52,56.
英文引用格式: Chen Juan,Li Yuan,Li Wanguo. The measurement method and implementation of embedded system based on B/S mode[J].Application of Electronic Technique,2016,42(2):50-52,56.
0 引言
伴隨數(shù)字信息技術(shù)高速發(fā)展,嵌入式系統(tǒng)設(shè)備數(shù)量已經(jīng)遠(yuǎn)超過(guò)通用計(jì)算機(jī),后PC時(shí)代已經(jīng)到來(lái)。嵌入式系統(tǒng)設(shè)備廣泛服務(wù)于網(wǎng)絡(luò)通信、消費(fèi)電子、工業(yè)控制、測(cè)控等多個(gè)領(lǐng)域。
嵌入式技術(shù)在測(cè)試領(lǐng)域應(yīng)用日益成熟,但由于其具體應(yīng)用場(chǎng)合不同,難以形成統(tǒng)一的軟件開發(fā)框架。呂國(guó)勇、史祥龍等人分析了Ajax異步交互、CGI(Comment Gateway Interface)通用網(wǎng)關(guān)在嵌入式系統(tǒng)中的應(yīng)用[1-2],從而減輕了服務(wù)器的負(fù)擔(dān),提高了客戶端與服務(wù)器之間的交互速度。劉利枚、周鮮成等人對(duì)嵌入式軟件測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了探索,提出了一種實(shí)用的嵌入式軟件動(dòng)態(tài)測(cè)試系統(tǒng)的結(jié)構(gòu)框架[3]。蔡勇、王勇等人基于嵌入式數(shù)據(jù)庫(kù)SQLite3.0技術(shù)設(shè)計(jì)了測(cè)控系統(tǒng),分析了嵌入式數(shù)據(jù)庫(kù)的特點(diǎn)和關(guān)鍵技術(shù),著重研究了應(yīng)用方式和移植方法[4]。張振、王小寧等人對(duì)嵌入式Web服務(wù)器Boa的移植與應(yīng)用進(jìn)行了研究,并實(shí)現(xiàn)了其在控制領(lǐng)域的遠(yuǎn)程管理[5]。本文在前人的技術(shù)基礎(chǔ)上進(jìn)行綜合、擴(kuò)展,提出了一套較為成熟的基于B/S測(cè)控模式的嵌入式軟件架構(gòu),并對(duì)其中軟件的實(shí)現(xiàn)及移植過(guò)程進(jìn)行了較為全面的探討和總結(jié),最終提供一套具體可行的實(shí)現(xiàn)方案。
1 整體結(jié)構(gòu)
系統(tǒng)采用B/S軟件架構(gòu)模式,Server端為嵌入式測(cè)試系統(tǒng),具備Web服務(wù)和數(shù)據(jù)庫(kù)存儲(chǔ)能力,Browser端為符合W3C的標(biāo)準(zhǔn)瀏覽器。
用戶通過(guò)Web頁(yè)面登錄至服務(wù)器后發(fā)出配置、測(cè)試等控制命令;Server響應(yīng)用戶的請(qǐng)求,調(diào)用對(duì)應(yīng)的CGI服務(wù)程序,并采用Ajax異步數(shù)據(jù)傳輸?shù)姆绞綄y(cè)試結(jié)果動(dòng)態(tài)返回至用戶Web頁(yè),前端采用波形曲線、指針等多種形式展現(xiàn)數(shù)據(jù)。
1.1 硬件結(jié)構(gòu)
系統(tǒng)硬件結(jié)構(gòu)分為4個(gè)部分:嵌入式測(cè)試系統(tǒng)、交叉編譯系統(tǒng)、被測(cè)對(duì)象配電器和時(shí)鐘同步系統(tǒng)。嵌入式測(cè)試系統(tǒng)采用ARM11-S3C6410處理器,操作系統(tǒng)內(nèi)核為L(zhǎng)inux2.6.3.8。交叉編譯系統(tǒng)與嵌入式測(cè)試系統(tǒng)通過(guò)NFS(Network File System)網(wǎng)絡(luò)文件系統(tǒng)、TFTP(Trivial File Transfer Protocol)文件傳輸協(xié)議、串口通信等協(xié)議來(lái)進(jìn)行系統(tǒng)調(diào)試、程序傳輸以及與下位機(jī)進(jìn)行通信。嵌入式測(cè)試系統(tǒng)繼電器模塊、AD轉(zhuǎn)換模塊與被測(cè)對(duì)象配電器通過(guò)兩條通信電纜相連,系統(tǒng)產(chǎn)生激勵(lì)并讀取配電器返回的測(cè)試結(jié)果。嵌入式測(cè)試系統(tǒng)通過(guò)NTP協(xié)議與外部的時(shí)鐘服務(wù)器同步,可為今后擴(kuò)展為分布式測(cè)試系統(tǒng)提供統(tǒng)一時(shí)鐘校對(duì)服務(wù)。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
1.2 軟件結(jié)構(gòu)
測(cè)試系統(tǒng)軟件采用B/S架構(gòu)模式,軟件分為3層結(jié)構(gòu)進(jìn)行設(shè)計(jì)。整個(gè)結(jié)構(gòu)分為上層、中間層和底層3部分:上層為用戶接口界面,負(fù)責(zé)接受用戶指令、顯示動(dòng)態(tài)數(shù)據(jù)等;中間層由Web服務(wù)器和數(shù)據(jù)庫(kù)構(gòu)成,負(fù)責(zé)提供Web服務(wù)、數(shù)據(jù)存儲(chǔ)等功能;底層由硬件驅(qū)動(dòng)程序、測(cè)試應(yīng)用程序構(gòu)成,提供底層函數(shù)調(diào)用。
2 功能及實(shí)現(xiàn)
根據(jù)上文所述硬件結(jié)構(gòu)、軟件架構(gòu),設(shè)計(jì)并實(shí)現(xiàn)測(cè)試系統(tǒng)的各部分功能。以下就本設(shè)計(jì)的關(guān)鍵模塊進(jìn)行詳細(xì)說(shuō)明。系統(tǒng)功能模塊設(shè)計(jì)如圖2。
2.1 用戶界面設(shè)計(jì)
用戶界面設(shè)計(jì)主要分為4個(gè)功能模塊:用戶身份驗(yàn)證模塊、測(cè)試設(shè)備基本信息瀏覽與配置模塊、動(dòng)態(tài)數(shù)據(jù)查看模塊和歷史數(shù)據(jù)瀏覽模塊。
用戶身份驗(yàn)證模塊加強(qiáng)了系統(tǒng)安全性,分為普通用戶和管理員兩種權(quán)限模式?;拘畔g覽模塊與配置模塊將調(diào)用底層CGI程序獲取設(shè)備基本信息,如服務(wù)器IP地址、客戶端IP地址、主機(jī)名稱、內(nèi)核版本等信息;動(dòng)態(tài)數(shù)據(jù)顯示模塊采用開源的Flot Javascript插件,將數(shù)據(jù)以數(shù)字、儀表、曲線多種方式來(lái)呈現(xiàn)。前臺(tái)與后臺(tái)數(shù)據(jù)交換采用了Ajax異步通信技術(shù)來(lái)實(shí)現(xiàn)動(dòng)態(tài)更新頁(yè)面;歷史數(shù)據(jù)查看模塊調(diào)用后臺(tái)數(shù)據(jù)庫(kù)歷史數(shù)據(jù)后采用Ajax異步通信更新前端頁(yè)面,并自動(dòng)生成CVS格式的歷史數(shù)據(jù)文件,用戶下載后可用于數(shù)據(jù)分析。
2.2 Web服務(wù)器、數(shù)據(jù)庫(kù)設(shè)計(jì)
為構(gòu)建B/S模式測(cè)試系統(tǒng),系統(tǒng)必須具備提供Web服務(wù)能力和實(shí)驗(yàn)數(shù)據(jù)管理能力。本節(jié)詳細(xì)介紹服務(wù)器和數(shù)據(jù)庫(kù)的實(shí)現(xiàn)過(guò)程。
2.2.1 嵌入式Web服務(wù)器設(shè)計(jì)
目前在嵌入式設(shè)備中常用的Web服務(wù)器有Boa、thttpd、Mini_httpd等,同等硬件條件下,Boa顯示出更快的處理速度,內(nèi)存需求小,能耗低,支持CGI腳本程序。
主要移植步驟如下:(1)編譯源碼,生成ARM架構(gòu)下可執(zhí)行文件Boa。(2)修改服務(wù)器配置文件相關(guān)參數(shù):DocumentRoot(測(cè)試頁(yè)面文檔路徑)、ScriptAlias(測(cè)試CGI腳本路徑)。
圖3為服務(wù)器文件部署目錄,在boa.conf中更改參數(shù)如下:DocumentRoot/Testwww;ScriptAlias/cgi-bin/ /Testwww/CGIScripts/。Pages目錄主要部署HTML網(wǎng)頁(yè)文件、JavaScript腳本文件;CGIScripts目錄部署CGI腳本程序,包括數(shù)據(jù)庫(kù)查詢腳本、數(shù)據(jù)測(cè)試腳本、獲取設(shè)備基本信息腳本等;DataTbls目錄主要存儲(chǔ)數(shù)據(jù)庫(kù)文件,包括歷史數(shù)據(jù)表、用戶密碼數(shù)據(jù)表、設(shè)備基本信息表。分類目錄設(shè)計(jì)更利于文檔的編輯和管理。
2.2.2 嵌入式數(shù)據(jù)庫(kù)設(shè)計(jì)
嵌入式設(shè)備中常用的數(shù)據(jù)庫(kù)有mSQL、SQLiteDB等。經(jīng)對(duì)比選擇開源數(shù)據(jù)庫(kù)SQLiteDB,它支持?jǐn)?shù)據(jù)庫(kù)大小為2 TB,足夠小,全部代碼250 KB,比目前流行的大多數(shù)數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的操作要快。
移植步驟如下:(1)編譯源碼包生成可執(zhí)行文件目錄。(2)將編譯生成的bin、include、lib目錄通過(guò)NFS文件系統(tǒng)復(fù)制至對(duì)應(yīng)嵌入式文件系統(tǒng)下。
根據(jù)需求分析設(shè)計(jì)數(shù)據(jù)庫(kù)實(shí)體對(duì)象,分為用戶實(shí)體、設(shè)備基本信息實(shí)體、歷史數(shù)據(jù)測(cè)試信息實(shí)體,最終設(shè)計(jì)對(duì)應(yīng)的數(shù)據(jù)表。圖4給出用戶實(shí)體E-R圖。
2.3 CGI、Ajax異步通信設(shè)計(jì)
為了加強(qiáng)系統(tǒng)頁(yè)面與用戶的動(dòng)態(tài)交互性,本系統(tǒng)采用CGI與Ajax的解決方案。使用CGI技術(shù)在服務(wù)器端發(fā)布動(dòng)態(tài)網(wǎng)頁(yè),與Ajax的XMLHttpRequest組件進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)了動(dòng)態(tài)Web功能,使網(wǎng)頁(yè)局部自動(dòng)刷新,無(wú)須手動(dòng)更新網(wǎng)頁(yè)。這是本系統(tǒng)前臺(tái)與后臺(tái)數(shù)據(jù)通信的主要方式。
工作流程如下:(1)用戶通過(guò)Web瀏覽器訪問嵌入式服務(wù)器中部署好的測(cè)試頁(yè)面,服務(wù)器響應(yīng)瀏覽器請(qǐng)求,返回內(nèi)嵌有JavaScript腳本的Web頁(yè)面。(2)瀏覽器解析返回頁(yè)面代碼并顯示,執(zhí)行內(nèi)嵌的JavaScript腳本程序。(3)用戶在瀏覽器輸入的數(shù)據(jù)首先由JavaScript程序預(yù)處理,然后通過(guò)XMLHttp Request對(duì)象向服務(wù)器發(fā)出異步請(qǐng)求。服務(wù)器解析請(qǐng)求參數(shù)后調(diào)用底層相應(yīng)驅(qū)動(dòng)程序進(jìn)行測(cè)試或存取數(shù)據(jù)庫(kù),并將獲取的數(shù)據(jù)以XML格式返回給瀏覽器。(4)瀏覽器通過(guò)responseXML方法獲得數(shù)據(jù),然后通過(guò)DOM文檔對(duì)象模型來(lái)更新用戶界面。
2.4 測(cè)試系統(tǒng)時(shí)鐘同步設(shè)計(jì)
以上討論的是單測(cè)試系統(tǒng)組網(wǎng)情況,而B/S架構(gòu)可搭建分布式測(cè)試系統(tǒng)。在分布式系統(tǒng)中, 常常需要一個(gè)全局時(shí)間, 用來(lái)確定系統(tǒng)中各種事件發(fā)生的先后、協(xié)調(diào)各種消息的傳輸、控制和監(jiān)視系統(tǒng)的狀態(tài),這就需要對(duì)系統(tǒng)中各個(gè)部件進(jìn)行時(shí)鐘同步,保障局部時(shí)間統(tǒng)一。
2.4.1 網(wǎng)絡(luò)時(shí)間同步協(xié)議
常用的網(wǎng)絡(luò)時(shí)間同步協(xié)議主要有NTP(Net Work Protocol)、SNTP(Simple Net Work Protocol)以及PTP(Precision Time Protocol)等,表1為三者綜合比較。
考慮協(xié)議的同步時(shí)間精度及其實(shí)現(xiàn)的難易度,決定采用NTP作為測(cè)試網(wǎng)絡(luò)中的時(shí)鐘同步協(xié)議。NTP時(shí)間同步模式分為4種:客戶端/服務(wù)器模式、對(duì)等體模式、廣播模式、組播模式。系統(tǒng)采用客戶端/服務(wù)器模式。
2.4.2 設(shè)計(jì)方案
首先構(gòu)建測(cè)試網(wǎng)絡(luò),采用一臺(tái)Windows7操作系統(tǒng)的主機(jī)作為時(shí)鐘源服務(wù)器,兩臺(tái)嵌入式測(cè)試設(shè)備作為被同步對(duì)象。3個(gè)節(jié)點(diǎn)由路由器連接,構(gòu)成局域測(cè)試網(wǎng)絡(luò)。
其次配置時(shí)鐘源服務(wù)器、移植NTP協(xié)議至嵌入式測(cè)試設(shè)備。(1)對(duì)于Windows時(shí)鐘服務(wù)器只需更改注冊(cè)表相應(yīng)參數(shù),使其對(duì)外提供NTP服務(wù)。(2)嵌入式測(cè)試系統(tǒng)將作為NTP協(xié)議的Client,首先需要移植NTP協(xié)議。其次在配置文件ntp.conf中添加語(yǔ)句server 192.168.1.131,根據(jù)具體IP參數(shù)設(shè)置時(shí)鐘服務(wù)器的IP地址。(3)將嵌入式系統(tǒng)ntpd設(shè)置為開機(jī)自啟動(dòng)服務(wù),在/etc/init.d/rcS添加如下語(yǔ)句:ntpdate 192.168.1.131;/etc/init.d/ntpd。首先ntpdate將行一次時(shí)間校正,以防止服務(wù)器和客戶端時(shí)間誤差太大導(dǎo)致ntpd更新失敗,然后啟動(dòng)ntpd服務(wù),該服務(wù)每隔64 s會(huì)自動(dòng)更新一次時(shí)間,在局域網(wǎng)條件下時(shí)鐘同步誤差范圍為1~10 ms之間。
3 實(shí)驗(yàn)結(jié)果及分析
使用瀏覽器登錄B/S模式嵌入式測(cè)試系統(tǒng)。圖6為測(cè)試數(shù)據(jù)實(shí)時(shí)顯示頁(yè)面,左側(cè)為動(dòng)態(tài)數(shù)字顯示,并且對(duì)異常數(shù)據(jù)用顏色標(biāo)識(shí)提示,右側(cè)為儀表顯示方式,以更加直觀的方式查看數(shù)據(jù)。圖7為波形圖表顯示頁(yè)面,直觀顯示數(shù)據(jù)隨時(shí)間變化趨勢(shì)。
4 結(jié)束語(yǔ)
本文通過(guò)基于嵌入式B/S模式測(cè)試系統(tǒng)的構(gòu)建以及基于ARM平臺(tái)的測(cè)試程序設(shè)計(jì),對(duì)其中的服務(wù)器搭建、數(shù)據(jù)庫(kù)配置、前后臺(tái)數(shù)據(jù)傳輸方式以及未來(lái)多測(cè)試子系統(tǒng)組網(wǎng)的時(shí)鐘同步問題進(jìn)行了詳細(xì)的闡述。從底層數(shù)據(jù)采集到數(shù)據(jù)存儲(chǔ)以及上層數(shù)據(jù)顯示都較好地完成了配電器測(cè)試任務(wù),最終提出了一套可行的構(gòu)建嵌入式測(cè)試系統(tǒng)方案。本文研究對(duì)未來(lái)實(shí)現(xiàn)B/S模式的分布式遠(yuǎn)程測(cè)控系統(tǒng)打下了良好基礎(chǔ),具有一定的參考價(jià)值。
參考文獻(xiàn)
[1] 呂國(guó)勇,史祥龍.基于嵌入式Linux和Ajax技術(shù)的Web異步交互設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2013,33:247-251.
[2] 王寶忠,馬成.基于CGI技術(shù)的嵌入式動(dòng)態(tài)Web的研究與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012,20(18):161-163.
[3] 劉利枚,周鮮成,石彪.嵌入式軟件測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].國(guó)外電子測(cè)量技術(shù),2008,27(1):59-61.
[4] 蔡勇,王勇.嵌入式數(shù)據(jù)庫(kù)SQLite在測(cè)控系統(tǒng)設(shè)計(jì)中的應(yīng)用[J].電子測(cè)試,2011(10):89-93.
[5] 張振,王曉寧,張?jiān)?嵌入式Web服務(wù)器移植與測(cè)試[J].電子設(shè)計(jì)工程,2010,18(6):1-3.