《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(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
作者:李振宇

摘 要:通過(guò)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,通過(guò)編寫CGI程序并結(jié)合Flash無(wú)狀態(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ā)展起來(lái)的新一代儀表,它可以實(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í)性,以往的處理方法是通過(guò)JavaScript或?yàn)g覽器支持的語(yǔ)言定時(shí)刷新頁(yè)面,但這樣會(huì)導(dǎo)致瀏覽器端所顯示的儀表數(shù)據(jù)不停閃動(dòng)變換,令觀測(cè)者無(wú)法接受;而用HTML只能直白的顯示數(shù)據(jù),無(wú)法動(dòng)態(tài)描繪波形。怎樣既能解決刷新問(wèn)題,又能通過(guò)動(dòng)態(tài)波形描繪儀表數(shù)據(jù)?通過(guò)將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)控端三部分組成?,F(xiàn)場(chǎng)傳感器采集待檢測(cè)對(duì)象的信息并傳送給網(wǎng)絡(luò)儀表。網(wǎng)絡(luò)儀表以Web Server為核心,接收現(xiàn)場(chǎng)傳感器傳遞來(lái)的數(shù)據(jù),并通過(guò)RJ45網(wǎng)絡(luò)接口連接到Internet。遠(yuǎn)程監(jiān)控端可以通過(guò)瀏覽器直接訪問(wèn)網(wǎng)絡(luò)儀表服務(wù)器,且允許多點(diǎn)訪問(wè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用來(lái)存儲(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)傳感器采集的多路信息通過(guò)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),來(lái)實(shí)現(xiàn)遠(yuǎn)程網(wǎng)絡(luò)監(jiān)測(cè)功能。
3.1 ARM-Linux操作系統(tǒng)
  為了降低成本,選用開(kāi)放源代碼的ARM-Linux操作系統(tǒng),主要包括交叉編譯" title="交叉編譯">交叉編譯工具鏈的安裝和內(nèi)核的編譯兩部分內(nèi)容。
3.1.1 安裝交叉編譯工具鏈
  交叉編譯工具鏈?zhǔn)钦麄€(gè)網(wǎng)絡(luò)儀表軟件系統(tǒng)開(kāi)發(fā)和移植的基礎(chǔ)工具,其正確安裝可以加快系統(tǒng)開(kāi)發(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)中使用。因此通過(guò)移植Boa來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)儀表遠(yuǎn)程測(cè)控功能[5]。在移植過(guò)程中,需要注意以下幾點(diǎn):
??? (1)交叉編譯工具的選擇
  Boa使用configure配置完成后,以arm-linux-gcc作為交叉編譯工具。
??? (2)ServerRoot的定義
  在編譯Boa之前,通過(guò)修改defines.h文件來(lái)指定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)境變量,并新開(kāi)一子進(jìn)程來(lái)執(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是一種完全由程序來(lái)描述且區(qū)別于點(diǎn)陣圖的矢量控件,所以體積特別小,可輕松移植到嵌入式設(shè)備中,滿足嵌入式開(kāi)發(fā)的小型化需求。此外,F(xiàn)lash內(nèi)嵌了一種強(qiáng)大的面向?qū)ο缶幊陶Z(yǔ)言ActionScript,開(kāi)發(fā)動(dòng)態(tài)控件變得異常簡(jiǎn)單,并可用Loadvariables(url, target, method)方法接收外部變量,實(shí)現(xiàn)Flash的無(wú)狀態(tài)刷新和無(wú)狀態(tài)響應(yīng)機(jī)制[7]。Flash向Boa服務(wù)器發(fā)送請(qǐng)求并調(diào)用CGI程序源代碼如下:
??? if(strcmp(getenv('REQUEST_METHOD'),'POST'))?
????//getenv()用來(lái)取得環(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)功能通過(guò)Flash每秒自動(dòng)向Boa服務(wù)器發(fā)送請(qǐng)求,CGI程序接受請(qǐng)求后,通過(guò)設(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的無(wú)狀態(tài)刷新和無(wú)狀態(tài)響應(yīng)機(jī)制,可以無(wú)需刷新瀏覽器就實(shí)時(shí)讀取儀表數(shù)據(jù),同時(shí)借助Flash強(qiáng)大的動(dòng)態(tài)繪圖功能,可以實(shí)時(shí)地接受CGI發(fā)送過(guò)來(lái)的數(shù)據(jù),并轉(zhuǎn)換成波形動(dòng)態(tài)描繪出來(lá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頁(yè)面刷新機(jī)制來(lái)實(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ù),通過(guò)編寫Flash程序來(lái)無(wú)刷新請(qǐng)求CGI,合理地解決了上述缺陷,節(jié)約了開(kāi)發(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] ?李長(zhǎng)明. 基于ARM和Linux嵌入式系統(tǒng)的軟件開(kāi)發(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)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。