《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > 網(wǎng)絡(luò)儀表數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)功能的實(shí)現(xiàn)

網(wǎng)絡(luò)儀表數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)功能的實(shí)現(xiàn)

2008-02-22
作者:李振宇

摘 要:通過CGI和Flash動(dòng)態(tài)交互技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)儀表" title="網(wǎng)絡(luò)儀表">網(wǎng)絡(luò)儀表數(shù)據(jù)遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)" title="實(shí)時(shí)監(jiān)測(cè)">實(shí)時(shí)監(jiān)測(cè)的方案。描述了系統(tǒng)的設(shè)計(jì)框架和儀表的硬件組成,,移植了ARM-Linux" title="ARM-Linux">ARM-Linux操作系統(tǒng),,選取Boa作為嵌入式Web Server,通過編寫CGI程序并結(jié)合Flash無狀態(tài)機(jī)制實(shí)現(xiàn)了遠(yuǎn)程監(jiān)測(cè)功能,。
關(guān)鍵詞:網(wǎng)絡(luò)儀表? ARM-Linux? 嵌入式Web Server? CGI? Flash

?

??? 網(wǎng)絡(luò)儀表是由指針式儀表,、數(shù)字儀表,、智能儀表發(fā)展起來的新一代儀表,它可以實(shí)現(xiàn)遠(yuǎn)程調(diào)試,、診斷,、數(shù)據(jù)采集和實(shí)時(shí)監(jiān)測(cè),從而提高生產(chǎn)效率和管理水平,,并最有效地發(fā)揮設(shè)備功能[1],。
  在實(shí)時(shí)性要求較高的電力參數(shù)" title="電力參數(shù)">電力參數(shù)測(cè)控系統(tǒng)中,為了保證觀測(cè)的實(shí)時(shí)性,,以往的處理方法是通過JavaScript或?yàn)g覽器支持的語言定時(shí)刷新頁面,,但這樣會(huì)導(dǎo)致瀏覽器端所顯示的儀表數(shù)據(jù)不停閃動(dòng)變換,令觀測(cè)者無法接受,;而用HTML只能直白的顯示數(shù)據(jù),,無法動(dòng)態(tài)描繪波形。怎樣既能解決刷新問題,,又能通過動(dòng)態(tài)波形描繪儀表數(shù)據(jù),?通過將CGI與Shock Wave Flash相結(jié)合,可以實(shí)現(xiàn)儀表數(shù)據(jù)在瀏覽器上的實(shí)時(shí)刷新和波形動(dòng)態(tài)描繪,,使人機(jī)界面更加友好,,數(shù)據(jù)顯示更加直觀,能成功地實(shí)現(xiàn)遠(yuǎn)程監(jiān)測(cè)儀表數(shù)據(jù)的目的,。
1 網(wǎng)絡(luò)儀表數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)系統(tǒng)結(jié)構(gòu)
 ? 系統(tǒng)主要由現(xiàn)場(chǎng)傳感器,、網(wǎng)絡(luò)儀表和遠(yuǎn)程監(jiān)控端三部分組成。現(xiàn)場(chǎng)傳感器采集待檢測(cè)對(duì)象的信息并傳送給網(wǎng)絡(luò)儀表,。網(wǎng)絡(luò)儀表以Web Server為核心,,接收現(xiàn)場(chǎng)傳感器傳遞來的數(shù)據(jù),并通過RJ45網(wǎng)絡(luò)接口連接到Internet,。遠(yuǎn)程監(jiān)控端可以通過瀏覽器直接訪問網(wǎng)絡(luò)儀表服務(wù)器,,且允許多點(diǎn)訪問,實(shí)時(shí)監(jiān)測(cè)現(xiàn)場(chǎng)數(shù)據(jù),,并可以修改參數(shù),,對(duì)儀表進(jìn)行相應(yīng)的調(diào)試、校正[2],。系統(tǒng)結(jié)構(gòu)如圖1所示,。

?

?


2? 網(wǎng)絡(luò)儀表的硬件組成
  一個(gè)完整的網(wǎng)絡(luò)儀表硬件系統(tǒng)以具有Web通信功能的嵌入式微處理器為核心,處理器選用16/32-bit RISC,、高性價(jià)比,、低功耗、集成度高的Samsung S3C2410,該芯片采用203MHz的ARM920T內(nèi)核,。外圍的16MB的Flash用來存儲(chǔ)實(shí)時(shí)操作系統(tǒng)內(nèi)核,、TCP/IP協(xié)議棧、CGI程序和Web文檔,;SDRAM供系統(tǒng)運(yùn)行時(shí)使用,;以太網(wǎng)接口實(shí)現(xiàn)與Internet/Intranet連接。其核心硬件組成如圖2所示,。

?


  該網(wǎng)絡(luò)儀表是針對(duì)電力變電站的電力參數(shù)測(cè)量而設(shè)計(jì),。主控芯片S3C2410集成了一個(gè)8路10位A/D轉(zhuǎn)換器,在2.5MHz轉(zhuǎn)換時(shí)鐘下其最大轉(zhuǎn)換率為500KSPS,,非線性度為正負(fù)1位?,F(xiàn)場(chǎng)傳感器采集的多路信息通過A/D轉(zhuǎn)換器將數(shù)字量傳遞給主控芯片,可實(shí)現(xiàn)電力參數(shù)的多通道測(cè)量[3],。
3 網(wǎng)絡(luò)儀表的軟件層及關(guān)鍵技術(shù)
  儀表軟件層根據(jù)功能可分為現(xiàn)場(chǎng)儀表數(shù)據(jù)采集處理和遠(yuǎn)程顯示兩部分?,F(xiàn)場(chǎng)儀表軟件層采用ARM-Linux操作系統(tǒng)下的Boa作為儀表的Web Server,建立基于B/S模式的網(wǎng)絡(luò)結(jié)構(gòu),,來實(shí)現(xiàn)遠(yuǎn)程網(wǎng)絡(luò)監(jiān)測(cè)功能,。
3.1 ARM-Linux操作系統(tǒng)
  為了降低成本,選用開放源代碼的ARM-Linux操作系統(tǒng),,主要包括交叉編譯" title="交叉編譯">交叉編譯工具鏈的安裝和內(nèi)核的編譯兩部分內(nèi)容,。
3.1.1 安裝交叉編譯工具鏈
  交叉編譯工具鏈?zhǔn)钦麄€(gè)網(wǎng)絡(luò)儀表軟件系統(tǒng)開發(fā)和移植的基礎(chǔ)工具,其正確安裝可以加快系統(tǒng)開發(fā)的速度,。主要命令如下:
   mkdir –p /usr/local/arm
  ?tar jxvf cross-2.95.3.tar.bz2
  ?mv 2.95.3 /usr/local/arm
  ?export PATH=$PATH:/usr/local/arm/2.95.3/bin
3.1.2 編譯ARM-Linux內(nèi)核
???? 內(nèi)核的編譯主要包括配置內(nèi)核,、編譯內(nèi)核、產(chǎn)生內(nèi)核映像文件三步[4],。命令如下:
???? ?make menuconfig
???? ?make dep
???? ?make zImage
3.2 Web Server的選擇和移植
  因?yàn)閮x表采集的數(shù)據(jù)需要在遠(yuǎn)程計(jì)算機(jī)上瀏覽,,必須移植相應(yīng)的Web Server才能實(shí)現(xiàn)該功能。在ARM-Linux下主要有三個(gè)Web Server:Boa,、httpd和thttpd。Boa是一個(gè)單線程的HTTP服務(wù)器,,它不同于其他傳統(tǒng)的Web服務(wù)器,,不為每個(gè)連接創(chuàng)建一個(gè)進(jìn)程,只有當(dāng)CGI程序運(yùn)行時(shí)才創(chuàng)建一個(gè)新的進(jìn)程,。另外,,Boa體積非常小,通常只有幾十KB,,非常適合于嵌入式系統(tǒng)中使用,。因此通過移植Boa來實(shí)現(xiàn)網(wǎng)絡(luò)儀表遠(yuǎn)程測(cè)控功能[5]。在移植過程中,需要注意以下幾點(diǎn):
??? (1)交叉編譯工具的選擇
  Boa使用configure配置完成后,,以arm-linux-gcc作為交叉編譯工具,。
??? (2)ServerRoot的定義
  在編譯Boa之前,通過修改defines.h文件來指定boa.conf所在的路徑,。
??? (3)boa.conf和MIME.types的配置
  為使Web Server正常運(yùn)行,,必須對(duì)boa.conf和MIME.types文件進(jìn)行配置,主要是指定相應(yīng)的端口,、服務(wù)器名稱,、錯(cuò)誤日志文件存放的目錄(必須為可讀寫)、HTML及CGI文件路徑,。
3.3 CGI結(jié)合Flash的動(dòng)態(tài)實(shí)現(xiàn)機(jī)理
  CGI(Common Gateway Interface)的工作流程是瀏覽器將用戶輸入的數(shù)據(jù)傳遞給服務(wù)器,,Web Server根據(jù)接收到的數(shù)據(jù)設(shè)置環(huán)境變量,并新開一子進(jìn)程來執(zhí)行CGI腳本,。CGI腳本從環(huán)境變量中讀取數(shù)據(jù),,然后使用STDOUT輸出HTML形式的結(jié)果文件,顯示給遠(yuǎn)程瀏覽器端用戶[6],。工作流程如圖3所示,。

?


  Flash是Macromedia公司出品的用于瀏覽器上動(dòng)態(tài)顯示且可互動(dòng)的一種Active控件。因?yàn)镕lash是一種完全由程序來描述且區(qū)別于點(diǎn)陣圖的矢量控件,,所以體積特別小,,可輕松移植到嵌入式設(shè)備中,滿足嵌入式開發(fā)的小型化需求,。此外,,F(xiàn)lash內(nèi)嵌了一種強(qiáng)大的面向?qū)ο缶幊陶Z言ActionScript,開發(fā)動(dòng)態(tài)控件變得異常簡單,,并可用Loadvariables(url, target, method)方法接收外部變量,,實(shí)現(xiàn)Flash的無狀態(tài)刷新和無狀態(tài)響應(yīng)機(jī)制[7]。Flash向Boa服務(wù)器發(fā)送請(qǐng)求并調(diào)用CGI程序源代碼如下:
??? if(strcmp(getenv('REQUEST_METHOD'),'POST'))?
????//getenv()用來取得環(huán)境變量的內(nèi)容
??? {?
? ???? cl = atoi(getenv('CONTENT_LENGTH'));?
 ???? for(x=0;cl && (!feof(stdin));x++)
??? //feof檢查文件流是否到達(dá)文件尾
 ???? {
???? ??m=x;
???? ??entries[x].val = fmakeword(stdin,'&',&cl);
???? ??plustospace(entries[x].val);
???? ??unescape_url(entries[x].val);
???? ??entries[x].name = makeword(entries[x].
???? ?val,'=');
?? ??? }
????? }
4 遠(yuǎn)程儀表數(shù)據(jù)動(dòng)態(tài)顯示的實(shí)現(xiàn)
  動(dòng)態(tài)功能通過Flash每秒自動(dòng)向Boa服務(wù)器發(fā)送請(qǐng)求,,CGI程序接受請(qǐng)求后,,通過設(shè)置ADCCON模數(shù)轉(zhuǎn)換控制寄存器,啟動(dòng)轉(zhuǎn)換器,,讀取實(shí)時(shí)采集的數(shù)據(jù),,同時(shí)指定相應(yīng)轉(zhuǎn)換通道,當(dāng)A/D轉(zhuǎn)換結(jié)束后,,讀取ADCDAT模數(shù)轉(zhuǎn)換數(shù)據(jù)寄存器的內(nèi)容,,然后再將結(jié)果以固定的字符串格式發(fā)送給Flash[8]。電力參數(shù)顯示結(jié)果如圖4所示,。

?


??? 由于Flash的無狀態(tài)刷新和無狀態(tài)響應(yīng)機(jī)制,,可以無需刷新瀏覽器就實(shí)時(shí)讀取儀表數(shù)據(jù),,同時(shí)借助Flash強(qiáng)大的動(dòng)態(tài)繪圖功能,可以實(shí)時(shí)地接受CGI發(fā)送過來的數(shù)據(jù),,并轉(zhuǎn)換成波形動(dòng)態(tài)描繪出來,,創(chuàng)新性地實(shí)現(xiàn)了數(shù)據(jù)在瀏覽器上的實(shí)時(shí)刷新和動(dòng)態(tài)描繪,達(dá)到了網(wǎng)絡(luò)儀表數(shù)據(jù)遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)的目的,。
  基于網(wǎng)絡(luò)儀表的電力參數(shù)測(cè)量都是以傳統(tǒng)的靜態(tài)HTML頁面刷新機(jī)制來實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)功能的,。這一機(jī)制用于顯示需要?jiǎng)討B(tài)刷新的數(shù)據(jù)點(diǎn)時(shí)存在閃爍缺陷。本文基于動(dòng)態(tài)Web技術(shù),,通過編寫Flash程序來無刷新請(qǐng)求CGI,,合理地解決了上述缺陷,節(jié)約了開發(fā)成本,,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù),。
參考文獻(xiàn)
[1] ?麥偉明,金肇光.網(wǎng)絡(luò)儀表的原理及其在電力變電站的應(yīng)用[J].電機(jī)電器技術(shù),2004,(4):41-43.
[2] ?吳鋒,李成鐵,何風(fēng)行等.基于Web技術(shù)的遠(yuǎn)程監(jiān)控系統(tǒng)研究[J]. 儀器儀表學(xué)報(bào),2005,26(8):241-243.
[3] ?李正軍,楊洪軍,宋曉慶.新型電力網(wǎng)絡(luò)儀表的諧波測(cè)量方法與實(shí)現(xiàn)[J].電力系統(tǒng)及其自動(dòng)化學(xué)報(bào), 2006,18(3):28-33.
[4] ?李長明. 基于ARM和Linux嵌入式系統(tǒng)的軟件開發(fā).工業(yè)控制計(jì)算機(jī),2006,19(3):47-51.
[5]? 駱懿,章堅(jiān)武.嵌入式Linux Webserver軟件BOA實(shí)現(xiàn)與應(yīng)用[J].杭州電子工業(yè)學(xué)院學(xué)報(bào),2004,24(1):52-55.
[6] ?王磊, 姚成虎. 如何實(shí)際構(gòu)造嵌入式Web?服務(wù)器[J].計(jì)算機(jī)應(yīng)用, 2004,24(12):7-9.
[7] ?王均.用Flash實(shí)現(xiàn)鐵路列車運(yùn)行組織的動(dòng)態(tài)模擬[J].鐵路計(jì)算機(jī)應(yīng)用,2005,14(2):37-39.
[8] ?江甫,黃少先.基于計(jì)算機(jī)與網(wǎng)絡(luò)儀表的電力參數(shù)測(cè)量系統(tǒng)[J].儀表技術(shù)與傳感器,2003,(11):26-27.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com,。