齊 華,陳 歡,劉 軍
(1.西安工業(yè)大學電子信息工程學院,西安710021;2.武警工程學院通信工程系,西安710086)
面向水環(huán)境監(jiān)測的WSN遠程監(jiān)控中心設(shè)計?
齊 華1,陳 歡1,劉 軍2
(1.西安工業(yè)大學電子信息工程學院,西安710021;2.武警工程學院通信工程系,西安710086)
介紹了一種面向水環(huán)境監(jiān)測的無線傳感器網(wǎng)絡(luò)遠程監(jiān)控中心設(shè)計方法,該方法基于Visual C++6.0開發(fā)平臺,利用C++語言、MySQL數(shù)據(jù)庫及ODBC數(shù)據(jù)庫訪問技術(shù),采用功能模塊化設(shè)計思想。首先對整個傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)作了簡要介紹,然后介紹了監(jiān)控中心軟件設(shè)計的總流程,重點對通信模塊、圖形界面模塊和數(shù)據(jù)庫模塊設(shè)計作了詳細說明。實驗結(jié)果表明,軟件運行穩(wěn)定,可準確對被測水域進行水質(zhì)實時監(jiān)測。
無線傳感器網(wǎng)絡(luò);監(jiān)控中心;軟件設(shè)計
水是地球上一切生物賴以生存,也是人類生產(chǎn)生活不可或缺的最基本物質(zhì)。目前,我國的“水”存在兩大主要問題:一是水資源短缺;二是水污染嚴重。這要求我國的水污染防治戰(zhàn)略應(yīng)盡快實施調(diào)整,從末端治理轉(zhuǎn)向源頭控制和全過程控制,因此,對水質(zhì)的實時監(jiān)測顯得極為重要。傳統(tǒng)的水質(zhì)監(jiān)測方法[1]是人工采樣后進行化學檢測,這種方法工作量大、監(jiān)測周期長、實時性差,無法及時發(fā)現(xiàn)河流等水體的污染,因此,傳統(tǒng)的監(jiān)測方法已不能滿足現(xiàn)代水污染防治戰(zhàn)略的要求,有時甚至會產(chǎn)生嚴重后果。近年來,隨著無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)技術(shù)[2]的發(fā)展與環(huán)境監(jiān)測工作的需要,使得無線傳感器網(wǎng)絡(luò)越來越廣泛地應(yīng)用于水環(huán)境監(jiān)測。不得不提的是,對于應(yīng)用者來說,關(guān)心的是無線傳感器網(wǎng)絡(luò)采集到的數(shù)據(jù),而不是網(wǎng)絡(luò)本身。因此,獲取無線傳感器網(wǎng)絡(luò)采集到的各種物理信息并將信息實時顯示于監(jiān)控管理平臺以便管理者分析做出決策是無線傳感器網(wǎng)絡(luò)成功應(yīng)用的關(guān)鍵。
正是在這樣的背景下提出了面向水環(huán)境監(jiān)測的WSN遠程監(jiān)控中心設(shè)計,首先介紹了面向水環(huán)境監(jiān)測的無線傳感器網(wǎng)絡(luò)整個系統(tǒng)結(jié)構(gòu),并詳細闡述了遠程監(jiān)控中心的實現(xiàn)。
面向水環(huán)境監(jiān)測的WSN系統(tǒng)結(jié)構(gòu)如圖1所示,主要由無線傳感器網(wǎng)絡(luò)和遠程監(jiān)控中心兩部分組成。系統(tǒng)工作時,由分布在被測水域的大量傳感器節(jié)點定時采集用戶所需的水質(zhì)參數(shù)(如PH值、濁度、化學需氧量、溶解氧、氨氮等),通過ZigBee技術(shù)將采集到的數(shù)據(jù)傳輸至網(wǎng)關(guān)節(jié)點,網(wǎng)關(guān)節(jié)點將接收到的數(shù)據(jù)進行融合處理得到被測水域各項水質(zhì)參數(shù)的決策數(shù)據(jù),并通過GPRS傳送給數(shù)據(jù)服務(wù)器,遠程監(jiān)控中心從服務(wù)器獲取數(shù)據(jù),解析后以圖形界面形式呈現(xiàn)給用戶,同時將數(shù)據(jù)存儲于數(shù)據(jù)庫以便日后查詢。
圖1 面向水環(huán)境監(jiān)測的WSN系統(tǒng)結(jié)構(gòu)
如圖1所示,監(jiān)控中心通過Internet從數(shù)據(jù)服務(wù)器獲取無線傳感器網(wǎng)絡(luò)采集并融合處理后的水質(zhì)數(shù)據(jù)包,提取解析后進行圖形界面顯示并儲存。監(jiān)控中心實現(xiàn)的功能有:①監(jiān)聽串行端口,讀取水質(zhì)數(shù)據(jù)包;②對讀取的數(shù)據(jù)包進行解析、顯示并繪制實時變化曲線;③將各參數(shù)與用戶事先設(shè)定的閾值進行比對,判斷超標情況決定是否報警,由各參數(shù)超標情況分析出總體水質(zhì)狀況;④存儲數(shù)據(jù);⑤歷史數(shù)據(jù)查詢;⑥參數(shù)設(shè)置,如:采樣率、各項參數(shù)各級報警閾值、系統(tǒng)運行時間等。監(jiān)控中心軟件以Visual C++6.0為開發(fā)平臺,采用C++語言、MySQL數(shù)據(jù)庫以及ODBC數(shù)據(jù)庫訪問技術(shù),軟件的主體流程如圖2所示。
監(jiān)控中心在各功能實現(xiàn)時以數(shù)據(jù)為主線采用模塊化設(shè)計思想將系統(tǒng)分為通信模塊、圖形界面模塊、數(shù)據(jù)庫模塊等三個主要功能模塊,每個模塊完成相應(yīng)的功能。
圖2 監(jiān)控中心主體流程
4.1 通信模塊
通信協(xié)議[3]分為底層通信協(xié)議和用戶層通信協(xié)議,底層協(xié)議一般由計算機硬件提供商和設(shè)備廠家提供,在一般的通信編程中很少或者不用涉及。而用戶通信協(xié)議是面向用戶的,協(xié)議規(guī)定數(shù)據(jù)以何種格式和方式發(fā)送出去,或者如何從接收到的某種格式數(shù)據(jù)中提取出所需數(shù)據(jù),以及在發(fā)送和接收過程中如何保證這些數(shù)據(jù)的準確性。本設(shè)計規(guī)定數(shù)據(jù)服務(wù)器發(fā)送給遠程監(jiān)控中心PC終端的數(shù)據(jù)格式如圖3所示。
圖3 接收參數(shù)的數(shù)據(jù)幀格式
其中起始碼、網(wǎng)關(guān)節(jié)點編號、校驗碼、結(jié)束碼各占1個字節(jié),中間各參數(shù)數(shù)值分別占4個字節(jié)。
監(jiān)控中心與數(shù)據(jù)服務(wù)器之間相互作用的主要模式是客戶機/服務(wù)器模式,即客戶向服務(wù)器提出請求,服務(wù)器接收到請求后,提供相應(yīng)的服務(wù)。網(wǎng)絡(luò)程序的實現(xiàn)可以有很多方式,Windows Socket[4]就是其中一種實現(xiàn)方法。Socket是連接應(yīng)用程序與網(wǎng)絡(luò)驅(qū)動的橋梁,Socket在應(yīng)用程序中創(chuàng)建,通過綁定操作與驅(qū)動程序建立關(guān)系。此后,應(yīng)用程序送給Socket的數(shù)據(jù),由Socket交給驅(qū)動程序向網(wǎng)絡(luò)上發(fā)送出去。計算機從網(wǎng)絡(luò)上收到與該Socket綁定的IP地址和端口相關(guān)的數(shù)據(jù)后,由驅(qū)動程序交給Socket,應(yīng)用程序便可從該Socket中提取接收到的數(shù)據(jù)。
設(shè)計開發(fā)的WSN遠程監(jiān)控中心在與數(shù)據(jù)服務(wù)器通信時充當?shù)氖强蛻魴C角色,因此只要編寫面向連接的Socket編程的客戶端程序。流程圖如圖4所示。
圖4 接收數(shù)據(jù)流程圖
4.2 圖形界面模塊
圖形界面模塊是整個系統(tǒng)最重要的部分,用戶在此實現(xiàn)與監(jiān)控中心的交互,一方面獲得無線傳感器網(wǎng)絡(luò)采集到的各項水質(zhì)參數(shù)的實時數(shù)值、變化趨勢以及是否超標、超標等級等直觀重要信息,另一方面用戶可以設(shè)置系統(tǒng)運行時間、采樣間隔、各項參數(shù)的各級報警閾值等參數(shù)。因此圖形界面的設(shè)計顯得十分重要。如圖5所示,本設(shè)計的圖形界面采用用戶友好型設(shè)計思想,模塊化設(shè)計方法、將整個界面分為實時參數(shù)數(shù)值及變化曲線顯示區(qū)、報警區(qū)、設(shè)置區(qū)、歷史數(shù)據(jù)查詢區(qū)等四個主要功能區(qū)。
4.2.1 實時數(shù)值及變化曲線
將各項參數(shù)對應(yīng)的顯示框關(guān)聯(lián)成員變量,程序接收到新數(shù)據(jù)后提取解析得到的各參數(shù)數(shù)值經(jīng)格式化后賦給相應(yīng)的成員變量,然后傳遞FALSE參數(shù)給UpdateData()函數(shù)將各參數(shù)最新的數(shù)值更新顯示在各自的編輯框內(nèi),這樣用戶在界面上看到的數(shù)據(jù)總是實時數(shù)據(jù)。
圖5 監(jiān)控中心主界面
繪制曲線采用MoveTo(),LineTo()函數(shù),分別為需要繪制曲線的參數(shù)定義一個有限數(shù)組,每次有新數(shù)據(jù)到來時將數(shù)值換算成在界面坐標系中的相對點坐標保存在數(shù)組中,刷新界面時在窗口重繪函數(shù)中利用一個循環(huán)調(diào)用MoveTo(),LineTo()依次連接數(shù)組中的相鄰點,每次接收到新數(shù)據(jù),各參數(shù)對應(yīng)的數(shù)組就比上次多一個點,因此視覺上的感覺是曲線在動態(tài)前進。當數(shù)組中元素達到上限時便清空所有元素將新元素從頭開始依次存放,曲線便又從坐標的最左側(cè)開始繪制。
4.2.2 超標報警
報警燈采用圖片控件,首先給工程添加綠色、黃色、紅色、褐色四幅純色位圖(分別表示未超標、一級超標、二級超標、三級超標),根據(jù)參數(shù)的超標等級通過一個自定義函數(shù)設(shè)置控件顯示的位圖,如下的自定義函數(shù)控制COD報警:
m_bmpCOD為位圖地址參數(shù),根據(jù)COD的實時數(shù)值與用戶設(shè)定的閾值比對結(jié)果將相應(yīng)顏色的位圖地址傳遞給m_bmpCOD,IDC_COD為COD報警燈控件的ID,在控制窗口重繪的OnPaint()函數(shù)中通過語句this->AlarmCOD(m_bmpCOD);調(diào)用上述自定義函數(shù)便可讓COD報警燈顯示相應(yīng)顏色達到報警效果。
4.2.3 閾值設(shè)置
如圖6所示為閾值設(shè)置界面,在程序中將各項參數(shù)的各級閾值對應(yīng)的輸入編輯框關(guān)聯(lián)成員變量,用戶在各編輯框內(nèi)輸入自定義閾值,然后點擊“保存”按鈕,通過“保存”按鈕單擊響應(yīng)函數(shù)內(nèi)的UpdateData();語句將各閾值與相應(yīng)的變量綁定,隨后將各變量的值存入數(shù)據(jù)庫的閾值表中。當用戶啟動系統(tǒng)開始工作時通過點擊界面的“刷新”按鈕將各閾值提取出來與相關(guān)的變量綁定用于與實時數(shù)據(jù)比對。
4.2.4 歷史數(shù)據(jù)查詢
查詢界面采用列表框形式,如圖7所示用戶在監(jiān)控主界面的歷史數(shù)據(jù)查詢區(qū)相應(yīng)的下拉列表框選擇水域及選擇起止日期,并手動輸入起止時間,設(shè)定好查詢條件后點擊“查詢”按鈕便進入圖8所示的查詢結(jié)果列表框界面,點擊下方的“導(dǎo)出”按鈕,符合條件的數(shù)據(jù)便顯示在列表框內(nèi)。
圖6 閾值設(shè)置界面
圖7 查詢條件設(shè)置
圖8 歷史數(shù)據(jù)查詢結(jié)果
4.3 數(shù)據(jù)庫模塊
數(shù)據(jù)庫模塊也是監(jiān)控中心的主要功能模塊,主要用于實現(xiàn)實時水質(zhì)數(shù)據(jù)的存儲、用戶設(shè)定閾值的存儲、閾值讀出、歷史數(shù)據(jù)查詢。本系統(tǒng)采用目前世界最流行數(shù)據(jù)庫之一的開源數(shù)據(jù)庫MySQL數(shù)據(jù)庫[5],數(shù)據(jù)庫模塊設(shè)計主要包括數(shù)據(jù)庫結(jié)構(gòu)設(shè)計、數(shù)據(jù)存儲查詢設(shè)計。
4.3.1 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計
數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的關(guān)鍵在于表結(jié)構(gòu)設(shè)計。本系統(tǒng)數(shù)據(jù)庫存儲的信息包括實時接收的水質(zhì)數(shù)據(jù)和用戶設(shè)定的閾值,因此數(shù)據(jù)庫表包括兩種:水質(zhì)數(shù)據(jù)表和閾值表。水質(zhì)數(shù)據(jù)表存儲的信息包括接收時間、溫度、PH值、COD、DO、氨氮、濁度等各項水質(zhì)數(shù)據(jù)值,閾值表存儲用戶設(shè)定的除溫度和PH值外的其他參數(shù)的一、二、三級閾值。
4.3.2 數(shù)據(jù)存儲和查詢設(shè)計
系統(tǒng)采用ODBC(開放數(shù)據(jù)庫互聯(lián))數(shù)據(jù)庫訪問技術(shù)[6],ODBC是Microsoft推出的訪問數(shù)據(jù)庫技術(shù),它提供了一個單一的API,可用于處理不同數(shù)據(jù)庫間的客戶應(yīng)用程序,使用ODBC API的應(yīng)用程序可以與任何具有ODBC驅(qū)動程序的關(guān)系數(shù)據(jù)庫進行通信。在程序中需要操作數(shù)據(jù)庫的類源文件必須包含以下頭文件#include"mysql.h"、#pragma comment(lib,"libmysql.lib")、#include"afxdb.h"才可訪問數(shù)據(jù)庫。
COD的各級閾值寫入主要代碼如下:
下面是查詢歷史數(shù)據(jù)的主要代碼:
監(jiān)控中心的其他功能簡述如下:
(1)設(shè)定采樣間隔:采樣間隔關(guān)系到采集數(shù)據(jù)的時間間隔,系統(tǒng)可根據(jù)用戶設(shè)定的采樣間隔下發(fā)采樣命令,如水質(zhì)基本正常,可設(shè)定較大的采樣間隔,使單位時間內(nèi)采集的數(shù)據(jù)較少以減少數(shù)據(jù)冗余,如水質(zhì)出現(xiàn)異常,可減小采樣間隔,加大監(jiān)測密度。
(2)設(shè)定系統(tǒng)運行時間:打開監(jiān)控中心應(yīng)用程序,點擊主界面中的“開始”按鈕系統(tǒng)便開始工作,點擊“停止”按鈕系統(tǒng)便停止監(jiān)測。如果用戶需要定時監(jiān)測水質(zhì),不需要用戶手動開啟停止系統(tǒng),可設(shè)定系統(tǒng)運行起止時間,起始時間到系統(tǒng)便開始運行,結(jié)束時間到便停止監(jiān)測,提高了系統(tǒng)的工作靈活性。
系統(tǒng)以Visual C++6.0為開發(fā)平臺,采用C++語言和MySQL數(shù)據(jù)庫及ODBC數(shù)據(jù)庫訪問技術(shù)實現(xiàn)了對無線傳感器網(wǎng)絡(luò)采集數(shù)據(jù)的可視化顯示和存儲。本系統(tǒng)與前端的無線傳感器網(wǎng)絡(luò)結(jié)合可用于河流等水環(huán)境的監(jiān)測,并且同時可監(jiān)測多個水域,提高了監(jiān)控中心的工作效率。本系統(tǒng)應(yīng)用于水環(huán)境監(jiān)測,在低成本的前提下實現(xiàn)了多個水域的同時實時監(jiān)測,為水質(zhì)的分析與判斷提供了一種先進技術(shù)。此外,用戶可自行設(shè)定調(diào)節(jié)采樣間隔、各參數(shù)各級閾值、系統(tǒng)運行時間等參數(shù),提高了整個系統(tǒng)的監(jiān)測靈活性。長時間的試驗表明:本系統(tǒng)能夠很好地對被測水域?qū)崿F(xiàn)實時多參數(shù)監(jiān)測,運行穩(wěn)定,達到了設(shè)計目的。
[1] 魏青建,呂云峰,馬仁智,金寧樓,喜中.無線傳感器網(wǎng)絡(luò)水環(huán)境監(jiān)控中心軟件設(shè)[J].計算機科學,2010,37(7A):231-233.
[2] 宮鵬.無線傳感器網(wǎng)絡(luò)技術(shù)環(huán)境應(yīng)用進展[J].遙感學報,2010,14(2):387-395.
[3] 李煊,丁為.常用設(shè)備串口通信協(xié)議及其應(yīng)用[J].自動化儀表,2011,32(10):82-86.
[4] 孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2012.
[5] 黃縉劃.MySQL入門很簡單[M].北京:清華大學出版社,2011.
[6] 范冠雄.基于Visual C++的數(shù)據(jù)庫訪問技術(shù)比較研究[J].計算機與數(shù)字工程,2010,38(1):64-66,139.
Design of Remote Supervising Center ofW ireless Sensor Networks for Water Quality Monitoring
Qi Hua1,Chen Huan1,Liu Jun2
(1.College of Electronic and Information Engineering,Xi'an Technological University,Xi'an 710021,China;2.Dept.of Communications Engineering,China Engineering College of Armed Police Force,Xi'an 710086,China)
This paper introduces a design method of remote monitoring center of wireless sensor network which is used for water monitoring,based on Visual C++6.0 development platform,with language C++,database MySQL and database access technology ODBC,and employs the design concept of functionalmodular.Firstly,the structure of the entire sensor network system is briefly introduced,then the software design process of the monitoring center is described,especially,the designs of communication module,graphical interface module and database module are explained in detail.The experimental results show that the monitoring center is stable and accurately performs the real-time monitor for the waters quality.
Wireless sensor network;Monitoring center;Software design
10.3969/j.issn.1002-2279.2015.03.020
TP311.1
A
1002-2279(2015)03-0073-05
陜西省科學技術(shù)研究發(fā)展計劃項目(2014K05-19)
齊華(1963-),女,陜西省咸陽市人,博士,主研方向:無線傳感器網(wǎng)絡(luò)。
2014-09-09