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