基于Solinst Levelogger3001水質參數(shù)采集處理系統(tǒng)的研究
摘要:采用Solinst Levelogger3001水質傳感器與PC機構建了水質采集處理系統(tǒng),利用Visual C++6.0的MFC框架及MSComm控件編寫了采集處理軟件。根據通信協(xié)議完成了主機和水質傳感器之間通信,并時讀取到的數(shù)據處理后利用MSChar控件實時顯示,從而達到水質參數(shù)實時顯示和實時監(jiān)控。通過與隨機采集處理軟件實驗比對表明,采集處理結果正確,達到了實時采集監(jiān)控的目標。
關鍵詞:水位;水溫;MFC;MSChart;MSComm
水資源的短缺已成為制約社會發(fā)展的障礙,對水資源的保護面臨著前所未有的挑戰(zhàn),傳統(tǒng)的水質采集方式已不再滿足人們對水資源保護的需求。隨著信息技術、傳感器技術、集成技術、面向對象技術的發(fā)展,對水質參數(shù)的采集處理也發(fā)生了革命性的變化。文章利用MFC編程串口通信程序實現(xiàn)Solinst Levelogger3001傳感器水質參數(shù)的采集,對采集到的數(shù)據信息進行處理并利用MSChart顯示所采集到的水質參數(shù)曲線圖。通過對采集到的水質參數(shù)信息進行處理并顯示能夠實時的掌握水質的變化情況,為保護水資源提供有力的依據。利用對水質參數(shù)設置的門限值可以在水質變化時為用戶提供報警功能。
1 采集處理系統(tǒng)構成
采集處理系統(tǒng)總體構成圖如圖1所示。
Solinst Levelogger3001傳感器是加拿大Solinst公司生產的水質參數(shù)采集傳感器,采集的水質參數(shù)有水位和水溫。氣壓計是測量采集水質參數(shù)地點當時的空氣壓強。RS232串口是主機部分讀取水質參數(shù)信息和氣壓信息所用的串口。主機部分主要是發(fā)送讀取傳感器采集的水質參數(shù)命令從傳感器獲得水質參數(shù)數(shù)據。傳感器是以十六進制的形式返回參數(shù)值,主機在接收到這些數(shù)據后要對這些數(shù)據進行處理,即把十六進制轉換成對應的ASCⅡ字符串(便于用戶讀取)或者是對應的十進制字符串(便于以曲線的形式顯示)。把十六進制處理成字符串后數(shù)據顯示部分還要從字符中提取出水質參數(shù)值(其中包括水位和水溫),并對提取的水質參數(shù)值利用MSChart的曲線方式顯示。主機通過設置門限值并判斷接收到的水質參數(shù)是否超過該門限值,如果超過了門限值,那么警報部分就被啟動。
2 采集處理顯示軟件的設計
2.1 控件添加和界面設計
建立一個基于MFC對話框的程序,并利用控件向導構建如主界面圖2對話框,其中串口設置子對話框如圖3所示。右擊對話框向對話框中添加MSComm控件,在彈出的對話框中選擇Insert ActiveX control,從列表中選擇Microsoft Communications Control,vision 6.0。此時對話框上會出現(xiàn)一個像電話的圖標(此圖標在運行時不會顯示)。以同樣的方法添加Microsoft Chart Control 6.0[SP6](OLEDB)。
2.2 軟件設計流程
利用快捷鍵Ctrl+W打開MFC ClassWizard對話框并選擇Member Variables選項卡為控件添加變量。表1是軟件設計者為主要的控制添加的變量。
2.3 參數(shù)設置
在進行讀取水質參數(shù)信息時要先對串口作初始化設置,其流程如串口設置流程圖4所示。傳感器連接串口的通信參數(shù)波特率為9 600、停止位為1、數(shù)據位為8、校驗位為NONE。設置好串口通信參數(shù)和傳感器通信參數(shù)一致(如圖6所示)。連接傳感器到設置好的端口號(文章設置的端口號為端口號1)。讀取傳感器采集的水質參數(shù)要利用MSComm控件,此時需要給該控件添加讀取水質參數(shù)的函數(shù),其讀取采集數(shù)據流程如圖5所示。
2.4 數(shù)據采集與處理
根據傳感器通信協(xié)議發(fā)送讀取傳感器采集的水質參數(shù)信息命令(一個a命令,一個b命令),其中a命令獲得水溫信息與水位信息的整數(shù)部分,b命令獲取水位信息的小數(shù)部分,發(fā)送命令格式為十六進制。發(fā)送命令必須先發(fā)送a命令后發(fā)送b命令。表2是系統(tǒng)設計者發(fā)送命令讀取傳感器采集水質參數(shù)對應的命令和返回值。
發(fā)送命令a返回值中32.300為水溫值,89為水位值的整數(shù)部分。發(fā)送b命令采集到的數(shù)據為6 700 cm,即為水位的小數(shù)部分如圖7所示。對發(fā)送命令的控制流程如流程圖8所示。利用SetTimer()函數(shù)調用OnTimer函數(shù)發(fā)送命令和讀取水質參數(shù)信息。文章設置一秒鐘采集一次水質數(shù)據信息,即SetTimer(1,1 000,NULL)。OnTimer()函數(shù)主要是定時發(fā)送讀取數(shù)據命令并處理接收到的數(shù)據信息并以字符形式在顯示區(qū)顯示和以曲線的形式在MSChart控件區(qū)顯示。對接收到的數(shù)據處理流程如流程圖9所示。水位實際值式(1)決定:
WL=TWL-TL (1)
其中WL表示水位實際值,TWL表示測量水位值,TL表示氣壓值。氣壓值通過端口號2讀取。
3 顯示水質參數(shù)采集結果
3.1 MSChart顯示傳感器采集水質參數(shù)
處理好讀取到的水質參數(shù)數(shù)據后通過MSChart控件以曲線的形式顯示在屏幕上。利用語句m_Chart.GetDataGrid(),SetData(inPos,1,wt,0)畫出水溫曲線圖,其值與第一Y坐標軸相關聯(lián)。利用語句In_Chart.GetPlot().GetSeriesCollection().Gethem(2).SetSecon daryAxis(TRUE)設置好水位曲線值與第二Y坐標軸相關聯(lián),m_Chart.GetDataGrid().SetData(inPos,2,wl,0)語句畫出水位曲線圖。圖10是利用文章設計的程序以MSChart顯示水質參數(shù)實時采集的結果曲線圖。圖中有規(guī)律的平滑線條代表水溫,數(shù)值對應左邊第一Y坐標軸。變化的曲線代表水位,數(shù)值對應右邊第二Y坐標軸。圖11是系統(tǒng)設計者利用Solinst公司提供的軟件顯示水質參數(shù)實時采集的結果曲線圖。系統(tǒng)設計者首先利用本系統(tǒng)顯示水質參數(shù)實時采集的結果圖再利用Solinst公司的軟件顯示水質參數(shù)實時采集的結果,由于兩次測量都是人為的把傳感器從水杯中慢慢的提起,由于兩次測量時存在著提起傳感器的速度不一樣,從而在實際觀察兩個系統(tǒng)顯示的結果有點區(qū)別,這是屬于正常情況。通過對比圖10顯示的結果和圖11顯示的結果得出系統(tǒng)設計者成功實時讀取了Solinst公司提供的傳感器采集的水質參數(shù)。
3.2 警報功能設置
在主機部分設置好水位和水溫的門限值,當讀取的水質參數(shù)數(shù)據超過對應的門限值時系統(tǒng)就會啟動警報系統(tǒng)。由于篇幅的原因系統(tǒng)設計者就不闡述警報系統(tǒng)的設計。為了突出當水質參數(shù)超出門限值能夠啟動報警系統(tǒng)這項功能系統(tǒng)設計者設置了水位的最高值97.8 cm,最低值為80.51。水溫的最高值35°,最低值為20°。當水位高于97.8 cm時系統(tǒng)就彈出水位過高對話框,如圖12所示。由圖可以看出當水位高于97.8 cm時就啟動了報警對話框。當水溫高于35°時就彈出水溫過高對話框,如圖13所示。由圖可以看出當水溫高于35°時就啟動了報警對話框。
4 結束語
利用MSComm控件成功實現(xiàn)了與水質參數(shù)采集傳感器之間的通信和讀取傳感器采集的水質參數(shù)數(shù)據。文章設計的系統(tǒng)不但可以用于只可以采集水溫和水位的傳感器,同樣也可以用于多參數(shù)采集的傳感器。在未來的應用中,在采集端讀取采集水質參數(shù)數(shù)據后可以利用GPRS網絡傳送該水質參數(shù)數(shù)據到遠程控制中心,從而實現(xiàn)遠程水質參數(shù)在線監(jiān)測和報警功能。