齊 華,陳 歡,劉 軍
(1.西安工業大學電子信息工程學院,西安710021;2.武警工程學院通信工程系,西安710086)
面向水環境監測的WSN遠程監控中心設計?
齊 華1,陳 歡1,劉 軍2
(1.西安工業大學電子信息工程學院,西安710021;2.武警工程學院通信工程系,西安710086)
介紹了一種面向水環境監測的無線傳感器網絡遠程監控中心設計方法,該方法基于Visual C++6.0開發平臺,利用C++語言、MySQL數據庫及ODBC數據庫訪問技術,采用功能模塊化設計思想。首先對整個傳感器網絡系統結構作了簡要介紹,然后介紹了監控中心軟件設計的總流程,重點對通信模塊、圖形界面模塊和數據庫模塊設計作了詳細說明。實驗結果表明,軟件運行穩定,可準確對被測水域進行水質實時監測。
無線傳感器網絡;監控中心;軟件設計
水是地球上一切生物賴以生存,也是人類生產生活不可或缺的最基本物質。目前,我國的“水”存在兩大主要問題:一是水資源短缺;二是水污染嚴重。這要求我國的水污染防治戰略應盡快實施調整,從末端治理轉向源頭控制和全過程控制,因此,對水質的實時監測顯得極為重要。傳統的水質監測方法[1]是人工采樣后進行化學檢測,這種方法工作量大、監測周期長、實時性差,無法及時發現河流等水體的污染,因此,傳統的監測方法已不能滿足現代水污染防治戰略的要求,有時甚至會產生嚴重后果。近年來,隨著無線傳感器網絡(Wireless Sensor Network,WSN)技術[2]的發展與環境監測工作的需要,使得無線傳感器網絡越來越廣泛地應用于水環境監測。不得不提的是,對于應用者來說,關心的是無線傳感器網絡采集到的數據,而不是網絡本身。因此,獲取無線傳感器網絡采集到的各種物理信息并將信息實時顯示于監控管理平臺以便管理者分析做出決策是無線傳感器網絡成功應用的關鍵。
正是在這樣的背景下提出了面向水環境監測的WSN遠程監控中心設計,首先介紹了面向水環境監測的無線傳感器網絡整個系統結構,并詳細闡述了遠程監控中心的實現。
面向水環境監測的WSN系統結構如圖1所示,主要由無線傳感器網絡和遠程監控中心兩部分組成。系統工作時,由分布在被測水域的大量傳感器節點定時采集用戶所需的水質參數(如PH值、濁度、化學需氧量、溶解氧、氨氮等),通過ZigBee技術將采集到的數據傳輸至網關節點,網關節點將接收到的數據進行融合處理得到被測水域各項水質參數的決策數據,并通過GPRS傳送給數據服務器,遠程監控中心從服務器獲取數據,解析后以圖形界面形式呈現給用戶,同時將數據存儲于數據庫以便日后查詢。

圖1 面向水環境監測的WSN系統結構
如圖1所示,監控中心通過Internet從數據服務器獲取無線傳感器網絡采集并融合處理后的水質數據包,提取解析后進行圖形界面顯示并儲存。監控中心實現的功能有:①監聽串行端口,讀取水質數據包;②對讀取的數據包進行解析、顯示并繪制實時變化曲線;③將各參數與用戶事先設定的閾值進行比對,判斷超標情況決定是否報警,由各參數超標情況分析出總體水質狀況;④存儲數據;⑤歷史數據查詢;⑥參數設置,如:采樣率、各項參數各級報警閾值、系統運行時間等。監控中心軟件以Visual C++6.0為開發平臺,采用C++語言、MySQL數據庫以及ODBC數據庫訪問技術,軟件的主體流程如圖2所示。
監控中心在各功能實現時以數據為主線采用模塊化設計思想將系統分為通信模塊、圖形界面模塊、數據庫模塊等三個主要功能模塊,每個模塊完成相應的功能。

圖2 監控中心主體流程
4.1 通信模塊
通信協議[3]分為底層通信協議和用戶層通信協議,底層協議一般由計算機硬件提供商和設備廠家提供,在一般的通信編程中很少或者不用涉及。而用戶通信協議是面向用戶的,協議規定數據以何種格式和方式發送出去,或者如何從接收到的某種格式數據中提取出所需數據,以及在發送和接收過程中如何保證這些數據的準確性。本設計規定數據服務器發送給遠程監控中心PC終端的數據格式如圖3所示。

圖3 接收參數的數據幀格式
其中起始碼、網關節點編號、校驗碼、結束碼各占1個字節,中間各參數數值分別占4個字節。
監控中心與數據服務器之間相互作用的主要模式是客戶機/服務器模式,即客戶向服務器提出請求,服務器接收到請求后,提供相應的服務。網絡程序的實現可以有很多方式,Windows Socket[4]就是其中一種實現方法。Socket是連接應用程序與網絡驅動的橋梁,Socket在應用程序中創建,通過綁定操作與驅動程序建立關系。此后,應用程序送給Socket的數據,由Socket交給驅動程序向網絡上發送出去。計算機從網絡上收到與該Socket綁定的IP地址和端口相關的數據后,由驅動程序交給Socket,應用程序便可從該Socket中提取接收到的數據。
設計開發的WSN遠程監控中心在與數據服務器通信時充當的是客戶機角色,因此只要編寫面向連接的Socket編程的客戶端程序。流程圖如圖4所示。

圖4 接收數據流程圖
4.2 圖形界面模塊
圖形界面模塊是整個系統最重要的部分,用戶在此實現與監控中心的交互,一方面獲得無線傳感器網絡采集到的各項水質參數的實時數值、變化趨勢以及是否超標、超標等級等直觀重要信息,另一方面用戶可以設置系統運行時間、采樣間隔、各項參數的各級報警閾值等參數。因此圖形界面的設計顯得十分重要。如圖5所示,本設計的圖形界面采用用戶友好型設計思想,模塊化設計方法、將整個界面分為實時參數數值及變化曲線顯示區、報警區、設置區、歷史數據查詢區等四個主要功能區。
4.2.1 實時數值及變化曲線
將各項參數對應的顯示框關聯成員變量,程序接收到新數據后提取解析得到的各參數數值經格式化后賦給相應的成員變量,然后傳遞FALSE參數給UpdateData()函數將各參數最新的數值更新顯示在各自的編輯框內,這樣用戶在界面上看到的數據總是實時數據。

圖5 監控中心主界面
繪制曲線采用MoveTo(),LineTo()函數,分別為需要繪制曲線的參數定義一個有限數組,每次有新數據到來時將數值換算成在界面坐標系中的相對點坐標保存在數組中,刷新界面時在窗口重繪函數中利用一個循環調用MoveTo(),LineTo()依次連接數組中的相鄰點,每次接收到新數據,各參數對應的數組就比上次多一個點,因此視覺上的感覺是曲線在動態前進。當數組中元素達到上限時便清空所有元素將新元素從頭開始依次存放,曲線便又從坐標的最左側開始繪制。
4.2.2 超標報警
報警燈采用圖片控件,首先給工程添加綠色、黃色、紅色、褐色四幅純色位圖(分別表示未超標、一級超標、二級超標、三級超標),根據參數的超標等級通過一個自定義函數設置控件顯示的位圖,如下的自定義函數控制COD報警:


m_bmpCOD為位圖地址參數,根據COD的實時數值與用戶設定的閾值比對結果將相應顏色的位圖地址傳遞給m_bmpCOD,IDC_COD為COD報警燈控件的ID,在控制窗口重繪的OnPaint()函數中通過語句this->AlarmCOD(m_bmpCOD);調用上述自定義函數便可讓COD報警燈顯示相應顏色達到報警效果。
4.2.3 閾值設置
如圖6所示為閾值設置界面,在程序中將各項參數的各級閾值對應的輸入編輯框關聯成員變量,用戶在各編輯框內輸入自定義閾值,然后點擊“保存”按鈕,通過“保存”按鈕單擊響應函數內的UpdateData();語句將各閾值與相應的變量綁定,隨后將各變量的值存入數據庫的閾值表中。當用戶啟動系統開始工作時通過點擊界面的“刷新”按鈕將各閾值提取出來與相關的變量綁定用于與實時數據比對。
4.2.4 歷史數據查詢
查詢界面采用列表框形式,如圖7所示用戶在監控主界面的歷史數據查詢區相應的下拉列表框選擇水域及選擇起止日期,并手動輸入起止時間,設定好查詢條件后點擊“查詢”按鈕便進入圖8所示的查詢結果列表框界面,點擊下方的“導出”按鈕,符合條件的數據便顯示在列表框內。

圖6 閾值設置界面

圖7 查詢條件設置

圖8 歷史數據查詢結果
4.3 數據庫模塊
數據庫模塊也是監控中心的主要功能模塊,主要用于實現實時水質數據的存儲、用戶設定閾值的存儲、閾值讀出、歷史數據查詢。本系統采用目前世界最流行數據庫之一的開源數據庫MySQL數據庫[5],數據庫模塊設計主要包括數據庫結構設計、數據存儲查詢設計。
4.3.1 數據庫結構設計
數據庫結構設計的關鍵在于表結構設計。本系統數據庫存儲的信息包括實時接收的水質數據和用戶設定的閾值,因此數據庫表包括兩種:水質數據表和閾值表。水質數據表存儲的信息包括接收時間、溫度、PH值、COD、DO、氨氮、濁度等各項水質數據值,閾值表存儲用戶設定的除溫度和PH值外的其他參數的一、二、三級閾值。
4.3.2 數據存儲和查詢設計
系統采用ODBC(開放數據庫互聯)數據庫訪問技術[6],ODBC是Microsoft推出的訪問數據庫技術,它提供了一個單一的API,可用于處理不同數據庫間的客戶應用程序,使用ODBC API的應用程序可以與任何具有ODBC驅動程序的關系數據庫進行通信。在程序中需要操作數據庫的類源文件必須包含以下頭文件#include"mysql.h"、#pragma comment(lib,"libmysql.lib")、#include"afxdb.h"才可訪問數據庫。
COD的各級閾值寫入主要代碼如下:

下面是查詢歷史數據的主要代碼:

監控中心的其他功能簡述如下:
(1)設定采樣間隔:采樣間隔關系到采集數據的時間間隔,系統可根據用戶設定的采樣間隔下發采樣命令,如水質基本正常,可設定較大的采樣間隔,使單位時間內采集的數據較少以減少數據冗余,如水質出現異常,可減小采樣間隔,加大監測密度。
(2)設定系統運行時間:打開監控中心應用程序,點擊主界面中的“開始”按鈕系統便開始工作,點擊“停止”按鈕系統便停止監測。如果用戶需要定時監測水質,不需要用戶手動開啟停止系統,可設定系統運行起止時間,起始時間到系統便開始運行,結束時間到便停止監測,提高了系統的工作靈活性。
系統以Visual C++6.0為開發平臺,采用C++語言和MySQL數據庫及ODBC數據庫訪問技術實現了對無線傳感器網絡采集數據的可視化顯示和存儲。本系統與前端的無線傳感器網絡結合可用于河流等水環境的監測,并且同時可監測多個水域,提高了監控中心的工作效率。本系統應用于水環境監測,在低成本的前提下實現了多個水域的同時實時監測,為水質的分析與判斷提供了一種先進技術。此外,用戶可自行設定調節采樣間隔、各參數各級閾值、系統運行時間等參數,提高了整個系統的監測靈活性。長時間的試驗表明:本系統能夠很好地對被測水域實現實時多參數監測,運行穩定,達到了設計目的。
[1] 魏青建,呂云峰,馬仁智,金寧樓,喜中.無線傳感器網絡水環境監控中心軟件設[J].計算機科學,2010,37(7A):231-233.
[2] 宮鵬.無線傳感器網絡技術環境應用進展[J].遙感學報,2010,14(2):387-395.
[3] 李煊,丁為.常用設備串口通信協議及其應用[J].自動化儀表,2011,32(10):82-86.
[4] 孫鑫.VC++深入詳解[M].北京:電子工業出版社,2012.
[5] 黃縉劃.MySQL入門很簡單[M].北京:清華大學出版社,2011.
[6] 范冠雄.基于Visual C++的數據庫訪問技術比較研究[J].計算機與數字工程,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
陜西省科學技術研究發展計劃項目(2014K05-19)
齊華(1963-),女,陜西省咸陽市人,博士,主研方向:無線傳感器網絡。
2014-09-09