1 引言
虛擬儀器(VI)的概念是美國NI公司在20世紀80年代中期提出來的。所謂虛擬儀器就是以計算機作為儀器統(tǒng)一的硬件平臺,充分利用計算機的運算、存儲、回放、調(diào)用、顯示及文件管理等智能化功能,同時把傳統(tǒng)儀器的專業(yè)化功能和面板控件軟件化,使之與計算機結合構成一臺從外觀到功能都完全與傳統(tǒng)硬件儀器相同,同時又充分享用了計算機智能資源的全新儀器系統(tǒng)。與傳統(tǒng)儀器相比,虛擬儀器有許多優(yōu)點:對測試量的處理和計算可更復雜且處理速度更快,測試結果的表達方式更加豐富多樣,可以方便地存儲和交換測試數(shù)據(jù),價格低,技術更新快。本文介紹一種自動氣象站的軟件設計方法,以美國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ù)保存四個模塊構成。如果數(shù)據(jù)采集周期沒有特別要求,可以將這四個模塊通過數(shù)據(jù)流連接起來,即每采集一次數(shù)據(jù)都需要經(jīng)過數(shù)據(jù)處理、顯示、保存后才能開始第二輪采集,對于這種情況,由于數(shù)據(jù)分析導致的時間延遲將會增大數(shù)據(jù)采集的周期。
由于自動氣象站對數(shù)據(jù)采集周期要求較高,基于數(shù)據(jù)流的方法顯然是不行的。因此,本文提出了基于隊列技術的數(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)還采用了定時結構和通知技術,通過通知器操作函數(shù)可以實現(xiàn)一段程序框圖在收到來自于定時結構中每秒發(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ù)保存模塊使用了通知技術,由主程序框圖中的定時器每秒發(fā)出一個通知信號,程序在第60秒時將這一分鐘內(nèi)從“保存數(shù)據(jù)”隊列中出列的數(shù)據(jù)都寫入以當前時間命名的文本文件中,并保存在當前路徑下data文件夾中,從而將每秒采集到的數(shù)據(jù)都進行了保存。
7 結論
本自動氣象站軟件以LabVIEW8.5為開發(fā)平臺,配合QLI50氣象數(shù)據(jù)采集器,實現(xiàn)了虛擬自動氣象站的基本功能。所構成的虛擬自動氣象站成功用于地面氣象觀測中,具有造價低,操作方便等特點。另外,軟件的幾個模塊都采用了子VI的設計,可以采用LabVIEW遠程VI調(diào)用技術,即通過本地VI調(diào)用另外一臺計算機上的VI,而用戶不需要考慮網(wǎng)絡通信的復雜細節(jié)。通過遠程VI調(diào)用可以方便地實現(xiàn)網(wǎng)絡分布式系統(tǒng),可以在本地計算機上實現(xiàn)自動氣象站的數(shù)據(jù)采集,而在另外遠程計算機上顯示自動氣象站的實時狀態(tài)。