摘 要: 為有效滿足遠程數(shù)據(jù)采集需求,本文對遠程數(shù)據(jù)采集系統(tǒng)進行了研究和設(shè)計。該系統(tǒng)基于嵌入式Web服務(wù)器,通過綜合應(yīng)用ZigBee技術(shù)完成了遠程數(shù)據(jù)采集系統(tǒng)的軟硬件設(shè)計。嵌入式Web服務(wù)器同ZigBee傳感器之間通過串行總線實現(xiàn)數(shù)據(jù)通信過程,現(xiàn)場數(shù)據(jù)的實時采集功能通過使用ZigBee傳感器網(wǎng)絡(luò)實現(xiàn),通過使用Internet瀏覽器遠端用戶即可對Web服務(wù)器進行訪問并實時獲取遠程數(shù)據(jù)。
關(guān)鍵詞: 遠程數(shù)據(jù)采集系統(tǒng); 實現(xiàn)路徑; 嵌入式Web服務(wù)器; ZigBee技術(shù)
中圖分類號: TP393.09文獻標志碼: A
Research on Remote Data Acquisition System Based on Embedded Web Server
CAI Chuang
(School of Information Engineering, Shanxi Polytechnic Institute, Xianyang, Shanxi 712000, China)
Abstract: In order to effectively meet the needs of remote data acquisition, this paper mainly researches and designs a remote data acquisition system. This system is based on the embedded Web server, and we complete the software and hardware design of the remote data acquisition system through the comprehensive application of ZigBee technology. The data communication process between the Web server and the ZigBee sensor is implemented through a serial bus. The real-time collection function of the field data is achieved by using the ZigBee sensor network. Remote users can access the Web server and obtain remote data in real time by using the Internet browser.
Key words: remote data acquisition system; implementing path; embedded Web server; Zigbee technology
0 引言
快速發(fā)展完善的物聯(lián)網(wǎng)技術(shù)對遠程數(shù)據(jù)采集功能提出了更高的要求,目前遠程數(shù)據(jù)采集系統(tǒng)已經(jīng)在日常生產(chǎn)生活中得到廣泛應(yīng)用,主要應(yīng)用于現(xiàn)場測試和控制設(shè)備中的嵌入式Web服務(wù)器(Embedded Web Server,EWS,通常采用B/S的工作方式)屬于一種基于嵌入式設(shè)備的小型Web服務(wù)器,具備低資源消耗、易擴展等優(yōu)勢,此類Web服務(wù)器需嵌入式設(shè)備支持CGI功能(Common Gateway Interface,通用網(wǎng)關(guān)接口),并能夠生成動態(tài)頁面,使用非常方便,遠端用戶據(jù)此可實時高效的管理和監(jiān)控嵌入式設(shè)備(通過Ineternet瀏覽器),已經(jīng)成為嵌入式設(shè)備的主要交互及管理方式。本文的研究重點在于通過綜合應(yīng)用基于IEEE802.15.4標準的ZigBee網(wǎng)絡(luò)(一種最具研究價值的無線傳感器網(wǎng)絡(luò))及嵌入式Web服務(wù)技術(shù),構(gòu)建一種可靠和簡潔的遠程數(shù)據(jù)采集系統(tǒng)實現(xiàn)方案,從而實現(xiàn)高效的數(shù)據(jù)采集和傳送過程[1]。
1 遠程數(shù)據(jù)采集系統(tǒng)的總體架構(gòu)設(shè)計
本文設(shè)計的遠程數(shù)據(jù)采集系統(tǒng)基于ZigBee和嵌入式Web服務(wù)器實現(xiàn),系統(tǒng)主要由3個部分組成,其總體架構(gòu)示意圖如圖1所示。
系統(tǒng)的服務(wù)器選用了開源的GoaheadWeb,嵌入式Web服務(wù)器通過使用三星Exynos處理器完成搭建;ZigBee傳感器使用星型的網(wǎng)絡(luò)拓撲結(jié)構(gòu),此種網(wǎng)絡(luò)結(jié)構(gòu)無需使用路由器,僅通過使用協(xié)調(diào)器(負責發(fā)起和建立網(wǎng)絡(luò))和端節(jié)點(作為終端設(shè)備,端節(jié)點間的通信過程需通過協(xié)調(diào)器轉(zhuǎn)發(fā)完成)即可實現(xiàn)通信功能,協(xié)調(diào)器同現(xiàn)場Web服務(wù)器采用串行總線實現(xiàn)聯(lián)接通信過程,通過將相應(yīng)的傳感器配置于終端設(shè)備端節(jié)點中實現(xiàn)現(xiàn)場數(shù)據(jù)的采集過程,并將采集到的數(shù)據(jù)向協(xié)調(diào)器直接上傳。
2 嵌入式Web服務(wù)器的實現(xiàn)
2.1 硬件設(shè)計方案
系統(tǒng)硬件的主控芯片選用了三星Exynos微處理器(基于ARMCortex-A9內(nèi)核,集成了高性能圖形引擎Mail-400Mp),可有效兼容ARMMPCore技術(shù)和Cortex系列處理器,運行主頻高達1.5 GHz,并配置了DDR3內(nèi)存和Flash存儲器,Exynos處理器支持清晰流暢的3D圖形(支持1080P高清視頻的播放),具備豐富的總線接口(包括SPI、UART、I2C、USB、SDIO等)。具備動態(tài)長度及八級超標量結(jié)構(gòu)的Cortex-A9處理器可顯著提高系統(tǒng)的運行效率,具體通過利用多事件管道及亂序執(zhí)行機制實現(xiàn)了在高頻率設(shè)備(大于1 GHz)各循環(huán)中多達4條指令的同時執(zhí)行,支持豐富的通用軟件資源(包括相關(guān)應(yīng)用程序、實時操作系統(tǒng)、中間件等),可有效滿足本文遠程數(shù)據(jù)采集系統(tǒng)的硬件功能需求[2]。
2.2 軟件設(shè)計方案
(1) 選擇EWS,Goahead(體積非常小巧)、Httpd(輕量級Web服務(wù)器)、Apache(重量級服務(wù)器)等均為常用的EWS,Httpd提供Http支持;體積較大的Apache較為成熟穩(wěn)定適用于復雜的嵌入式應(yīng)用,但其服務(wù)器性能在高負載情況下要明顯低于單進程;面向嵌入式系統(tǒng)的Goahead提供了豐富的服務(wù)特性,支持Http、CGI、靜態(tài)頁面HTML格式、ASP、JavaScript等,能夠使嵌入式系統(tǒng)相關(guān)開發(fā)問題得到有效解決。因此本文選用了Goahead作為嵌入式Web服務(wù)器。
(2) 移植EWS,該遠程數(shù)據(jù)采集系統(tǒng)采用了Linux操作系統(tǒng),并以gccversion作為交叉編譯器為,移植EWS的主要步驟為:先進入Http://www.goahead.com網(wǎng)頁中完成服務(wù)器源碼(Webs218.tar.gz)的下載,再對源碼工程進行解壓處理,接下來進入源碼目錄中對Linux目錄下的Makefile文件進行修改,添加編譯器宏定義(具體路徑為cdws0312/Linux/vim Makefile),然后加入變量CC和AR的定義(分別為arm-Linux-gCC和ARM-Linux-AR),最后通過交叉編譯make后實現(xiàn)Web服務(wù)器鏡像的生成,并在目標機將其燒寫下來,在此基礎(chǔ)上即可配置、啟動和運行嵌入式Web服務(wù)[3]。
(3) EWS服務(wù)程序設(shè)計,具體如圖2所示。
嵌入式Web服務(wù)器主要涉及到Http和CGI(負責實現(xiàn)動態(tài)網(wǎng)頁服務(wù)),嵌入式Web服務(wù)器在對其他程序進行調(diào)用時遵循CGI接口標準(由環(huán)境變量、標準輸入及輸出構(gòu)成)規(guī)定的接口協(xié)議標準,其同Web瀏覽器間的交互構(gòu)成則通過CGI程序的調(diào)用實現(xiàn),Web服務(wù)器通過CGI程序接收(由Web瀏覽器發(fā)送)并處理信息,并且響應(yīng)結(jié)果會回送給Web瀏覽器,從而完成Web網(wǎng)頁中的相關(guān)操作處理(包括處理表單數(shù)據(jù)、查詢數(shù)據(jù)庫)及集成所需應(yīng)用系統(tǒng)等工作。包括C語言、visualbasic、Perl等在內(nèi)的CGI編程語言較為常用,考慮到靈活方便的C語言(一種結(jié)構(gòu)化程序設(shè)計語言)具備運算豐富、簡潔緊湊、可移植性好、可直接操作硬件、允許對物理地址進行直接訪問、執(zhí)行效率高等優(yōu)勢,因此在開發(fā)CGI程序時采用了C語言,Web服務(wù)器算法流程[3]如圖3所示。
3 ZigBee傳感器網(wǎng)絡(luò)的設(shè)計與實現(xiàn)
3.1 硬件設(shè)計方案
目前ZigBee主要包括雙芯片方案(基于MCU和ZigBee協(xié)處理器)、雙芯片方案(分離了MCU和RF收發(fā)器,Atmel、Microchip等廠商均可提供)和單芯片SOC方案(集成了RF和MCU,飛思卡爾、ST等均可提供)3種實現(xiàn)方案,德州儀器提供上述3種ZigBee芯片產(chǎn)品。作為一種片上系統(tǒng)解決方案,用于IEEE802.15.4(2.4 GHz)的CC2530具備低成本、低功耗等特點,并適用于基于ZigBee的ISM波段應(yīng)用,可有效滿足ZigBee的應(yīng)用需求,結(jié)合運用工業(yè)級控制器及射頻收發(fā)器(DSSS)的設(shè)計方案可使數(shù)據(jù)采集系統(tǒng)的性能得到顯著提高[4]。
3.2 軟件設(shè)計方案
本文基于ZigBee協(xié)議完成了軟件的設(shè)計,作為一種ZigBee協(xié)議棧Z-Stack(美國德州儀器)具備免費和半開源特點,可有效運行于CC2530硬件體系上,并且符合IEEE802.15.4標準,支持ZigBee和ZigBeePro協(xié)議。網(wǎng)絡(luò)的啟動和配置通過使用ZigBee協(xié)調(diào)器完成,在完成信道和網(wǎng)絡(luò)ID選擇的基礎(chǔ)上對整個網(wǎng)絡(luò)進行啟動。ZigBee協(xié)議棧在進一步定義了網(wǎng)絡(luò)層和應(yīng)用層(即NWK和APL)的基礎(chǔ)上,對介質(zhì)訪問層和物理層(即MAC和PHY,由IEEE802.15.4定義)進行了規(guī)范使用,開發(fā)人員基于此協(xié)議??筛鶕?jù)實際需要通過自定義的增添實現(xiàn)設(shè)計需求的有效滿足[5]。本文采用了星型網(wǎng)絡(luò)架構(gòu)和定長通信協(xié)議,具體由子節(jié)點同主要負責創(chuàng)建網(wǎng)絡(luò)并進行通信的ZigBee協(xié)調(diào)器組合形成,協(xié)議的定義如表1所示。
固定為25字節(jié)每幀,無符號單字節(jié)整數(shù)數(shù)據(jù)類型由“u8”表示。端節(jié)點在ZigBee無線傳感網(wǎng)絡(luò)中主要負責對傳
感器數(shù)據(jù)進行采集,可采用簡化功能設(shè)備(通常只需一個作
為端節(jié)點)或全功能設(shè)備作為ZigBee端節(jié)點,讀取傳感器數(shù)據(jù)時需通過將傳感器驅(qū)動程序添8加到應(yīng)用層中實現(xiàn)[6]。
3.3 系統(tǒng)程序設(shè)計
本文以實時采集遠程環(huán)境溫度數(shù)據(jù)為例介紹系統(tǒng)軟件程序設(shè)計方案,具體通過增加HTML frames(內(nèi)嵌框架)并將JavaScript腳本嵌入到網(wǎng)頁中實現(xiàn),環(huán)境溫度通過調(diào)用CGI腳本完成讀取后由內(nèi)嵌框架進行靜態(tài)顯示,通過結(jié)合運用JavaScript腳本的refresh()函數(shù)(將內(nèi)聯(lián)框架內(nèi)容通過CGI腳本的調(diào)用實現(xiàn)重新裝入,并延時2秒)實現(xiàn)溫度變化情況的自動更新及實時動態(tài)顯示(每兩秒更新一次溫度),溫度實時顯示的核心代碼如下[7]。
〈html〉
〈script type="text/JavaScript"〉
var delay=2 000
function refresh
{getElementById "frame I ".src="get data";setTimeout ("refresh()",delay);}
〈/script〉
〈body="#CCCC00" onload ="refresh()"〉
〈Add an inline HTML frame〉
〈iframe id="framel" src="about:blank" scrolling="no" name="frame 1" frameborder-"0"〉
〈/iframe〉
〈/body〉
3.4 CGI腳本的程序設(shè)計
基于TCP/IP協(xié)議棧對CGI腳本進行創(chuàng)建和編寫,具體步驟為:首先完成一個CGI腳本的函數(shù)原型的創(chuàng)建,并將其添加到虛擬文件系統(tǒng),然后將具體讀取溫度應(yīng)用程序代碼添加到CGI腳本程序中,將讀取的溫度數(shù)值以HTML頁面的形式向瀏覽器發(fā)送,主要程序代碼如下[8]。
prototype:
Void get_data(PSOCKET_INFO socket_ptr);
Definition:
Void get data(socket_ptr)
{Insert application code here.}
Void main
{ Initialization Code
……
Add CGI Script to Virtual File System
Mn_pf_set_entry((byte*)"get data";
Start mn_server()}
……}
int temp_int,temp_fraction;
float t, ambient_temp;
ambient temp= ReadTemperature();
t=ambient-temp*0.0625;
temp_int =(int)(t);
temp-fraction =(int)((t-temp_int+0.05)* 10);
Static byte html_buffer;
Sprintf (html_offer,”〈HTML〉〈center〉〈span style=\" font-size: 28pt; \"〉%i.%i 〈/span〉〈/center〉〈/HTML〉",temp_int,temp_fraction);
socket_ptr-〉send_ptr=htrnl_bu}'er;
len=strlen (html_buffer);
return;
4 總結(jié)
本文所構(gòu)建的遠程數(shù)據(jù)采集系統(tǒng)主要通過綜合應(yīng)用嵌入式Web服務(wù)器和ZigBee技術(shù)實現(xiàn),詳細闡述了系統(tǒng)硬件構(gòu)成以及軟件功能的實現(xiàn)路徑,ZigBee傳感器主要負責對現(xiàn)場數(shù)據(jù)進行實時采集并將其上傳至嵌入式Web服務(wù)器,系統(tǒng)用戶訪問Web服務(wù)器(通過Ineternet瀏覽器)即可實現(xiàn)遠程實時數(shù)據(jù)準確高效的獲取,并以溫度的數(shù)據(jù)采集為例詳細介紹了軟件功能的實現(xiàn)方案,該遠程數(shù)據(jù)采集系統(tǒng)運行維護成本較低,具有較高的實時性,顯著提高了遠程數(shù)據(jù)采集的質(zhì)量和效率。
參考文獻
[1] 歐燕京.基于ARM的時間同步數(shù)據(jù)采集和遠程管理系統(tǒng)設(shè)計[J].電信技術(shù),2018(4):35-38.
[2] 王欣. 基于ZigBee技術(shù)的遠程電力抄表數(shù)據(jù)采集器設(shè)計[J].電子技術(shù)與軟件工程, 2018(8):88-89.
[3] 賀東梅. 基于ZigBee協(xié)議的無線通信網(wǎng)關(guān)的設(shè)計[J].? 物聯(lián)網(wǎng)技術(shù), 2017(1):45-47.
[4] 梁濤,孫天一,姜文,等.區(qū)域性多風電場數(shù)據(jù)采集與遠程集控系統(tǒng)設(shè)計[J].高技術(shù)通訊,2019(4):387-394.
[5] Harsh V P Singh, Qusay H Mahmoud. ViDAQ: A computer vision based remote data acquisition system for reading multi-dial gauges[J]. Journal of Industrial Information Integration,2019(5):29-41.
[6] Jiafu Wan, Daqiang Zhang, Yantao Sun, et al. VCMIA: A Novel Architecture for Integrating Vehicular Cyber-Physical Systems and Mobile Cloud Computing[J].? Mobile Networks and Applications, 2016(2):153-160.
[7] 鐘志明,譚堅文,葉方偉,等. 基于統(tǒng)計分析的多協(xié)議單片機數(shù)據(jù)通信系統(tǒng)EFT抗擾度研究[J].? 電子學報, 2018(2):393-400.
[8] 米翔,趙明,許希斌,等. 終端直接通信中基于統(tǒng)計QoS保證的資源優(yōu)化[J].? 清華大學學報(自然科學版), 2017(12):1296-1302.
(收稿日期: 2019.12.18)
作者簡介:蔡創(chuàng)(1976-),男,碩士,講師,研究方向:計算機軟件開發(fā);C語言;Java開發(fā);數(shù)據(jù)庫技術(shù)。