


摘 要: 為有效滿足遠程數據采集需求,本文對遠程數據采集系統進行了研究和設計。該系統基于嵌入式Web服務器,通過綜合應用ZigBee技術完成了遠程數據采集系統的軟硬件設計。嵌入式Web服務器同ZigBee傳感器之間通過串行總線實現數據通信過程,現場數據的實時采集功能通過使用ZigBee傳感器網絡實現,通過使用Internet瀏覽器遠端用戶即可對Web服務器進行訪問并實時獲取遠程數據。
關鍵詞: 遠程數據采集系統; 實現路徑; 嵌入式Web服務器; ZigBee技術
中圖分類號: 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 引言
快速發展完善的物聯網技術對遠程數據采集功能提出了更高的要求,目前遠程數據采集系統已經在日常生產生活中得到廣泛應用,主要應用于現場測試和控制設備中的嵌入式Web服務器(Embedded Web Server,EWS,通常采用B/S的工作方式)屬于一種基于嵌入式設備的小型Web服務器,具備低資源消耗、易擴展等優勢,此類Web服務器需嵌入式設備支持CGI功能(Common Gateway Interface,通用網關接口),并能夠生成動態頁面,使用非常方便,遠端用戶據此可實時高效的管理和監控嵌入式設備(通過Ineternet瀏覽器),已經成為嵌入式設備的主要交互及管理方式。本文的研究重點在于通過綜合應用基于IEEE802.15.4標準的ZigBee網絡(一種最具研究價值的無線傳感器網絡)及嵌入式Web服務技術,構建一種可靠和簡潔的遠程數據采集系統實現方案,從而實現高效的數據采集和傳送過程[1]。
1 遠程數據采集系統的總體架構設計
本文設計的遠程數據采集系統基于ZigBee和嵌入式Web服務器實現,系統主要由3個部分組成,其總體架構示意圖如圖1所示。
系統的服務器選用了開源的GoaheadWeb,嵌入式Web服務器通過使用三星Exynos處理器完成搭建;ZigBee傳感器使用星型的網絡拓撲結構,此種網絡結構無需使用路由器,僅通過使用協調器(負責發起和建立網絡)和端節點(作為終端設備,端節點間的通信過程需通過協調器轉發完成)即可實現通信功能,協調器同現場Web服務器采用串行總線實現聯接通信過程,通過將相應的傳感器配置于終端設備端節點中實現現場數據的采集過程,并將采集到的數據向協調器直接上傳。
2 嵌入式Web服務器的實現
2.1 硬件設計方案
系統硬件的主控芯片選用了三星Exynos微處理器(基于ARMCortex-A9內核,集成了高性能圖形引擎Mail-400Mp),可有效兼容ARMMPCore技術和Cortex系列處理器,運行主頻高達1.5 GHz,并配置了DDR3內存和Flash存儲器,Exynos處理器支持清晰流暢的3D圖形(支持1080P高清視頻的播放),具備豐富的總線接口(包括SPI、UART、I2C、USB、SDIO等)。具備動態長度及八級超標量結構的Cortex-A9處理器可顯著提高系統的運行效率,具體通過利用多事件管道及亂序執行機制實現了在高頻率設備(大于1 GHz)各循環中多達4條指令的同時執行,支持豐富的通用軟件資源(包括相關應用程序、實時操作系統、中間件等),可有效滿足本文遠程數據采集系統的硬件功能需求[2]。
2.2 軟件設計方案
(1) 選擇EWS,Goahead(體積非常小巧)、Httpd(輕量級Web服務器)、Apache(重量級服務器)等均為常用的EWS,Httpd提供Http支持;體積較大的Apache較為成熟穩定適用于復雜的嵌入式應用,但其服務器性能在高負載情況下要明顯低于單進程;面向嵌入式系統的Goahead提供了豐富的服務特性,支持Http、CGI、靜態頁面HTML格式、ASP、JavaScript等,能夠使嵌入式系統相關開發問題得到有效解決。因此本文選用了Goahead作為嵌入式Web服務器。
(2) 移植EWS,該遠程數據采集系統采用了Linux操作系統,并以gccversion作為交叉編譯器為,移植EWS的主要步驟為:先進入Http://www.goahead.com網頁中完成服務器源碼(Webs218.tar.gz)的下載,再對源碼工程進行解壓處理,接下來進入源碼目錄中對Linux目錄下的Makefile文件進行修改,添加編譯器宏定義(具體路徑為cdws0312/Linux/vim Makefile),然后加入變量CC和AR的定義(分別為arm-Linux-gCC和ARM-Linux-AR),最后通過交叉編譯make后實現Web服務器鏡像的生成,并在目標機將其燒寫下來,在此基礎上即可配置、啟動和運行嵌入式Web服務[3]。
(3) EWS服務程序設計,具體如圖2所示。
嵌入式Web服務器主要涉及到Http和CGI(負責實現動態網頁服務),嵌入式Web服務器在對其他程序進行調用時遵循CGI接口標準(由環境變量、標準輸入及輸出構成)規定的接口協議標準,其同Web瀏覽器間的交互構成則通過CGI程序的調用實現,Web服務器通過CGI程序接收(由Web瀏覽器發送)并處理信息,并且響應結果會回送給Web瀏覽器,從而完成Web網頁中的相關操作處理(包括處理表單數據、查詢數據庫)及集成所需應用系統等工作。包括C語言、visualbasic、Perl等在內的CGI編程語言較為常用,考慮到靈活方便的C語言(一種結構化程序設計語言)具備運算豐富、簡潔緊湊、可移植性好、可直接操作硬件、允許對物理地址進行直接訪問、執行效率高等優勢,因此在開發CGI程序時采用了C語言,Web服務器算法流程[3]如圖3所示。
3 ZigBee傳感器網絡的設計與實現
3.1 硬件設計方案
目前ZigBee主要包括雙芯片方案(基于MCU和ZigBee協處理器)、雙芯片方案(分離了MCU和RF收發器,Atmel、Microchip等廠商均可提供)和單芯片SOC方案(集成了RF和MCU,飛思卡爾、ST等均可提供)3種實現方案,德州儀器提供上述3種ZigBee芯片產品。作為一種片上系統解決方案,用于IEEE802.15.4(2.4 GHz)的CC2530具備低成本、低功耗等特點,并適用于基于ZigBee的ISM波段應用,可有效滿足ZigBee的應用需求,結合運用工業級控制器及射頻收發器(DSSS)的設計方案可使數據采集系統的性能得到顯著提高[4]。
3.2 軟件設計方案
本文基于ZigBee協議完成了軟件的設計,作為一種ZigBee協議棧Z-Stack(美國德州儀器)具備免費和半開源特點,可有效運行于CC2530硬件體系上,并且符合IEEE802.15.4標準,支持ZigBee和ZigBeePro協議。網絡的啟動和配置通過使用ZigBee協調器完成,在完成信道和網絡ID選擇的基礎上對整個網絡進行啟動。ZigBee協議棧在進一步定義了網絡層和應用層(即NWK和APL)的基礎上,對介質訪問層和物理層(即MAC和PHY,由IEEE802.15.4定義)進行了規范使用,開發人員基于此協議棧可根據實際需要通過自定義的增添實現設計需求的有效滿足[5]。本文采用了星型網絡架構和定長通信協議,具體由子節點同主要負責創建網絡并進行通信的ZigBee協調器組合形成,協議的定義如表1所示。
固定為25字節每幀,無符號單字節整數數據類型由“u8”表示。端節點在ZigBee無線傳感網絡中主要負責對傳
感器數據進行采集,可采用簡化功能設備(通常只需一個作
為端節點)或全功能設備作為ZigBee端節點,讀取傳感器數據時需通過將傳感器驅動程序添8加到應用層中實現[6]。
3.3 系統程序設計
本文以實時采集遠程環境溫度數據為例介紹系統軟件程序設計方案,具體通過增加HTML frames(內嵌框架)并將JavaScript腳本嵌入到網頁中實現,環境溫度通過調用CGI腳本完成讀取后由內嵌框架進行靜態顯示,通過結合運用JavaScript腳本的refresh()函數(將內聯框架內容通過CGI腳本的調用實現重新裝入,并延時2秒)實現溫度變化情況的自動更新及實時動態顯示(每兩秒更新一次溫度),溫度實時顯示的核心代碼如下[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腳本的程序設計
基于TCP/IP協議棧對CGI腳本進行創建和編寫,具體步驟為:首先完成一個CGI腳本的函數原型的創建,并將其添加到虛擬文件系統,然后將具體讀取溫度應用程序代碼添加到CGI腳本程序中,將讀取的溫度數值以HTML頁面的形式向瀏覽器發送,主要程序代碼如下[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 總結
本文所構建的遠程數據采集系統主要通過綜合應用嵌入式Web服務器和ZigBee技術實現,詳細闡述了系統硬件構成以及軟件功能的實現路徑,ZigBee傳感器主要負責對現場數據進行實時采集并將其上傳至嵌入式Web服務器,系統用戶訪問Web服務器(通過Ineternet瀏覽器)即可實現遠程實時數據準確高效的獲取,并以溫度的數據采集為例詳細介紹了軟件功能的實現方案,該遠程數據采集系統運行維護成本較低,具有較高的實時性,顯著提高了遠程數據采集的質量和效率。
參考文獻
[1] 歐燕京.基于ARM的時間同步數據采集和遠程管理系統設計[J].電信技術,2018(4):35-38.
[2] 王欣. 基于ZigBee技術的遠程電力抄表數據采集器設計[J].電子技術與軟件工程, 2018(8):88-89.
[3] 賀東梅. 基于ZigBee協議的無線通信網關的設計[J].? 物聯網技術, 2017(1):45-47.
[4] 梁濤,孫天一,姜文,等.區域性多風電場數據采集與遠程集控系統設計[J].高技術通訊,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] 鐘志明,譚堅文,葉方偉,等. 基于統計分析的多協議單片機數據通信系統EFT抗擾度研究[J].? 電子學報, 2018(2):393-400.
[8] 米翔,趙明,許希斌,等. 終端直接通信中基于統計QoS保證的資源優化[J].? 清華大學學報(自然科學版), 2017(12):1296-1302.
(收稿日期: 2019.12.18)
作者簡介:蔡創(1976-),男,碩士,講師,研究方向:計算機軟件開發;C語言;Java開發;數據庫技術。