1 引言
虛擬儀器(VI)的概念是美國NI公司在20世紀80年代中期提出來的,。所謂虛擬儀器就是以計算機作為儀器統(tǒng)一的硬件平臺,,充分利用計算機的運算、存儲,、回放,、調(diào)用、顯示及文件管理等智能化功能,,同時把傳統(tǒng)儀器的專業(yè)化功能和面板控件軟件化,使之與計算機結(jié)合構(gòu)成一臺從外觀到功能都完全與傳統(tǒng)硬件儀器相同,,同時又充分享用了計算機智能資源的全新儀器系統(tǒng)。與傳統(tǒng)儀器相比,虛擬儀器有許多優(yōu)點:對測試量的處理和計算可更復雜且處理速度更快,,測試結(jié)果的表達方式更加豐富多樣,,可以方便地存儲和交換測試數(shù)據(jù),價格低,,技術(shù)更新快,。本文介紹一種自動氣象站的軟件設計方法,以美國NI公司的LabVIEW8.5為平臺,,配合QLI50氣象數(shù)據(jù)采集器,,實現(xiàn)虛擬自動氣象站設計。
2 虛擬自動氣象站功能介紹
自動氣象站由傳感器,、數(shù)據(jù)采集器,、數(shù)據(jù)處理終端等組成。傳感器感應氣象要素的變化,;數(shù)據(jù)采集器可對氣溫,、濕度、風向,、風速,、雨量和氣壓等氣象要素進行自動采集和預處理,,數(shù)據(jù)處理終端能對數(shù)據(jù)采集器獲取的數(shù)據(jù)進行進一步運算處理,能在屏幕上按規(guī)定的格式顯示實時數(shù)據(jù),,并能按規(guī)定的格式自動進行資料的存儲,。
為實現(xiàn)上述自動氣象站的功能,本文設計的虛擬自動氣象站系統(tǒng)主要由數(shù)據(jù)采集,、數(shù)據(jù)處理,、數(shù)據(jù)顯示、數(shù)據(jù)保存四個模塊構(gòu)成,。如果數(shù)據(jù)采集周期沒有特別要求,,可以將這四個模塊通過數(shù)據(jù)流連接起來,即每采集一次數(shù)據(jù)都需要經(jīng)過數(shù)據(jù)處理,、顯示,、保存后才能開始第二輪采集,對于這種情況,,由于數(shù)據(jù)分析導致的時間延遲將會增大數(shù)據(jù)采集的周期,。
由于自動氣象站對數(shù)據(jù)采集周期要求較高,基于數(shù)據(jù)流的方法顯然是不行的,。因此,,本文提出了基于隊列技術(shù)的數(shù)據(jù)采集模式:即利用多個并行循環(huán)處理不同的任務,每一個循環(huán)都具有獨立的線程,,相互間互不干擾,。拿數(shù)據(jù)采集循環(huán)和數(shù)據(jù)處理循環(huán)的數(shù)據(jù)傳遞為例:數(shù)據(jù)采集循環(huán)不間斷地采集數(shù)據(jù),并將采集到的數(shù)據(jù)放在隊列中,,數(shù)據(jù)處理循環(huán)不間斷地從隊列中取出數(shù)據(jù)進行數(shù)據(jù)處理,。如果處理數(shù)據(jù)的周期大于采集周期,那么新采集的數(shù)據(jù)將會緩存在隊列中,,隊列只要沒有滿就不會丟失采集到的數(shù)據(jù),。如果處理數(shù)據(jù)的周期小于采集周期,那么在隊列為空時,,數(shù)據(jù)處理循環(huán)將處于等待狀態(tài),,因此也不會導致數(shù)據(jù)的重復分析。當數(shù)據(jù)采集循環(huán)停止時,,若隊列中還有數(shù)據(jù),則數(shù)據(jù)分析循環(huán)也會將剩余的數(shù)據(jù)全部分析,,因此停止數(shù)據(jù)采集也不會丟失前面采集到的數(shù)據(jù),。數(shù)據(jù)顯示循環(huán)和數(shù)據(jù)保存循環(huán)亦是如此,四個循環(huán)并行進行從而實現(xiàn)自動氣象站的功能,。
另外,,為了精確的控制時間,,系統(tǒng)還采用了定時結(jié)構(gòu)和通知技術(shù),通過通知器操作函數(shù)可以實現(xiàn)一段程序框圖在收到來自于定時結(jié)構(gòu)中每秒發(fā)出的通知消息前保持等待狀態(tài),,從而實現(xiàn)了程序中每秒顯示一次數(shù)據(jù)和每分鐘保存一次數(shù)據(jù)的功能,。
3 數(shù)據(jù)采集
數(shù)據(jù)采集模塊用來獲取QLI50氣象數(shù)據(jù)采集器所采集到的數(shù)據(jù)。數(shù)據(jù)采集模塊的框圖如圖1所示,。
圖1 數(shù)據(jù)采集框圖程序
首先用“打開TCP連接”函數(shù)打開由地址和遠程端口所指定的TCP網(wǎng)絡連接,,同時用“獲取隊列引用”函數(shù)創(chuàng)建以名為“網(wǎng)口數(shù)據(jù)”的隊列,再用“讀取TCP數(shù)據(jù)”函數(shù)從TCP網(wǎng)絡連接讀取字節(jié),,并把字節(jié)放入“網(wǎng)口數(shù)據(jù)”隊列中,,等待數(shù)據(jù)處理循環(huán)讀取隊列中數(shù)據(jù),同時開始采集下一秒的數(shù)據(jù),。
4 數(shù)據(jù)處理
數(shù)據(jù)處理模塊用來將采集到的數(shù)據(jù)進行預處理,。數(shù)據(jù)處理模塊的框圖如圖2所示。
圖2 數(shù)據(jù)處理框圖程序
由于采集的原始數(shù)據(jù)是一系列編碼,,要得到各氣象要素的數(shù)據(jù)還必須解碼,。數(shù)據(jù)從“網(wǎng)口數(shù)據(jù)”隊列中出列,用“預處理”子VI可以將出列的數(shù)據(jù)分離開,,并通過FOR循環(huán)的自動索引功能將它們按順序加入“處理數(shù)據(jù)”隊列中,,等待數(shù)據(jù)顯示循環(huán)讀取隊列中數(shù)據(jù),同時繼續(xù)從“網(wǎng)口數(shù)據(jù)”隊列中讀取數(shù)據(jù),。
5 數(shù)據(jù)顯示
數(shù)據(jù)顯示模塊用來在虛擬前面板上按規(guī)定的格式顯示實時數(shù)據(jù),。數(shù)據(jù)顯示模塊的框圖如圖3所示。
圖3 數(shù)據(jù)顯示框圖程序
各氣象要素數(shù)據(jù)從“處理數(shù)據(jù)”隊列出列,,通過全局變量“一次讀取數(shù)據(jù)”將數(shù)據(jù)傳送到主界面程序框圖中的波形圖表,,可以實時顯示出各氣象要素數(shù)據(jù)的變化曲線。另外,,因為前面板顯示的是各氣象要素一分鐘的平均數(shù)據(jù),,所以出隊列的數(shù)據(jù)還通過一個“均值”函數(shù),并將一分鐘內(nèi)的平均數(shù)據(jù)通過全局變量“分鐘平均數(shù)據(jù)”傳送到主界面來顯示各氣象要素一分鐘內(nèi)的平均值,。為了數(shù)據(jù)保存的需要,,創(chuàng)建“保存數(shù)據(jù)”隊列,將“處理數(shù)據(jù)”隊列出列的數(shù)據(jù)加入到“保存數(shù)據(jù)”中,,等待數(shù)據(jù)保存循環(huán)讀取隊列中數(shù)據(jù),,同時繼續(xù)從“處理數(shù)據(jù)”隊列中讀取數(shù)據(jù)。
6 數(shù)據(jù)保存
數(shù)據(jù)保存模塊用來將采集到的數(shù)據(jù)按規(guī)定的格式自動進行資料的存儲,。數(shù)據(jù)保存模塊的框圖如圖4所示,。
圖4 數(shù)據(jù)保存框圖程序
數(shù)據(jù)保存模塊使用了通知技術(shù),由主程序框圖中的定時器每秒發(fā)出一個通知信號,,程序在第60秒時將這一分鐘內(nèi)從“保存數(shù)據(jù)”隊列中出列的數(shù)據(jù)都寫入以當前時間命名的文本文件中,,并保存在當前路徑下data文件夾中,,從而將每秒采集到的數(shù)據(jù)都進行了保存。
7 結(jié)論
本自動氣象站軟件以LabVIEW8.5為開發(fā)平臺,,配合QLI50氣象數(shù)據(jù)采集器,,實現(xiàn)了虛擬自動氣象站的基本功能。所構(gòu)成的虛擬自動氣象站成功用于地面氣象觀測中,,具有造價低,,操作方便等特點。另外,,軟件的幾個模塊都采用了子VI的設計,,可以采用LabVIEW遠程VI調(diào)用技術(shù),即通過本地VI調(diào)用另外一臺計算機上的VI,,而用戶不需要考慮網(wǎng)絡通信的復雜細節(jié),。通過遠程VI調(diào)用可以方便地實現(xiàn)網(wǎng)絡分布式系統(tǒng),可以在本地計算機上實現(xiàn)自動氣象站的數(shù)據(jù)采集,,而在另外遠程計算機上顯示自動氣象站的實時狀態(tài),。