《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW的虛擬自動(dòng)氣象站軟件設(shè)計(jì)
基于LabVIEW的虛擬自動(dòng)氣象站軟件設(shè)計(jì)
摘要: 本文介紹一種自動(dòng)氣象站的軟件設(shè)計(jì)方法,以美國(guó)NI公司的LabVIEW8.5為平臺(tái),配合QLI50氣象數(shù)據(jù)采集器,實(shí)現(xiàn)虛擬自動(dòng)氣象站設(shè)計(jì)。
Abstract:
Key words :

1 引言

  虛擬儀器(VI)的概念是美國(guó)NI公司在20世紀(jì)80年代中期提出來的。所謂虛擬儀器就是以計(jì)算機(jī)作為儀器統(tǒng)一的硬件平臺(tái),充分利用計(jì)算機(jī)的運(yùn)算、存儲(chǔ)、回放、調(diào)用、顯示及文件管理等智能化功能,同時(shí)把傳統(tǒng)儀器的專業(yè)化功能和面板控件軟件化,使之與計(jì)算機(jī)結(jié)合構(gòu)成一臺(tái)從外觀到功能都完全與傳統(tǒng)硬件儀器相同,同時(shí)又充分享用了計(jì)算機(jī)智能資源的全新儀器系統(tǒng)。與傳統(tǒng)儀器相比,虛擬儀器有許多優(yōu)點(diǎn):對(duì)測(cè)試量的處理和計(jì)算可更復(fù)雜且處理速度更快,測(cè)試結(jié)果的表達(dá)方式更加豐富多樣,可以方便地存儲(chǔ)和交換測(cè)試數(shù)據(jù),價(jià)格低,技術(shù)更新快。本文介紹一種自動(dòng)氣象站的軟件設(shè)計(jì)方法,以美國(guó)NI公司的LabVIEW8.5為平臺(tái),配合QLI50氣象數(shù)據(jù)采集器,實(shí)現(xiàn)虛擬自動(dòng)氣象站設(shè)計(jì)。

2 虛擬自動(dòng)氣象站功能介紹

  自動(dòng)氣象站由傳感器、數(shù)據(jù)采集器、數(shù)據(jù)處理終端等組成。傳感器感應(yīng)氣象要素的變化;數(shù)據(jù)采集器可對(duì)氣溫、濕度、風(fēng)向、風(fēng)速、雨量和氣壓等氣象要素進(jìn)行自動(dòng)采集和預(yù)處理,數(shù)據(jù)處理終端能對(duì)數(shù)據(jù)采集器獲取的數(shù)據(jù)進(jìn)行進(jìn)一步運(yùn)算處理,能在屏幕上按規(guī)定的格式顯示實(shí)時(shí)數(shù)據(jù),并能按規(guī)定的格式自動(dòng)進(jìn)行資料的存儲(chǔ)。

  為實(shí)現(xiàn)上述自動(dòng)氣象站的功能,本文設(shè)計(jì)的虛擬自動(dòng)氣象站系統(tǒng)主要由數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)顯示、數(shù)據(jù)保存四個(gè)模塊構(gòu)成。如果數(shù)據(jù)采集周期沒有特別要求,可以將這四個(gè)模塊通過數(shù)據(jù)流連接起來,即每采集一次數(shù)據(jù)都需要經(jīng)過數(shù)據(jù)處理、顯示、保存后才能開始第二輪采集,對(duì)于這種情況,由于數(shù)據(jù)分析導(dǎo)致的時(shí)間延遲將會(huì)增大數(shù)據(jù)采集的周期。

  由于自動(dòng)氣象站對(duì)數(shù)據(jù)采集周期要求較高,基于數(shù)據(jù)流的方法顯然是不行的。因此,本文提出了基于隊(duì)列技術(shù)的數(shù)據(jù)采集模式:即利用多個(gè)并行循環(huán)處理不同的任務(wù),每一個(gè)循環(huán)都具有獨(dú)立的線程,相互間互不干擾。拿數(shù)據(jù)采集循環(huán)和數(shù)據(jù)處理循環(huán)的數(shù)據(jù)傳遞為例:數(shù)據(jù)采集循環(huán)不間斷地采集數(shù)據(jù),并將采集到的數(shù)據(jù)放在隊(duì)列中,數(shù)據(jù)處理循環(huán)不間斷地從隊(duì)列中取出數(shù)據(jù)進(jìn)行數(shù)據(jù)處理。如果處理數(shù)據(jù)的周期大于采集周期,那么新采集的數(shù)據(jù)將會(huì)緩存在隊(duì)列中,隊(duì)列只要沒有滿就不會(huì)丟失采集到的數(shù)據(jù)。如果處理數(shù)據(jù)的周期小于采集周期,那么在隊(duì)列為空時(shí),數(shù)據(jù)處理循環(huán)將處于等待狀態(tài),因此也不會(huì)導(dǎo)致數(shù)據(jù)的重復(fù)分析。當(dāng)數(shù)據(jù)采集循環(huán)停止時(shí),若隊(duì)列中還有數(shù)據(jù),則數(shù)據(jù)分析循環(huán)也會(huì)將剩余的數(shù)據(jù)全部分析,因此停止數(shù)據(jù)采集也不會(huì)丟失前面采集到的數(shù)據(jù)。數(shù)據(jù)顯示循環(huán)和數(shù)據(jù)保存循環(huán)亦是如此,四個(gè)循環(huán)并行進(jìn)行從而實(shí)現(xiàn)自動(dòng)氣象站的功能。

  另外,為了精確的控制時(shí)間,系統(tǒng)還采用了定時(shí)結(jié)構(gòu)和通知技術(shù),通過通知器操作函數(shù)可以實(shí)現(xiàn)一段程序框圖在收到來自于定時(shí)結(jié)構(gòu)中每秒發(fā)出的通知消息前保持等待狀態(tài),從而實(shí)現(xiàn)了程序中每秒顯示一次數(shù)據(jù)和每分鐘保存一次數(shù)據(jù)的功能。

3 數(shù)據(jù)采集

  數(shù)據(jù)采集模塊用來獲取QLI50氣象數(shù)據(jù)采集器所采集到的數(shù)據(jù)。數(shù)據(jù)采集模塊的框圖如圖1所示。


圖1 數(shù)據(jù)采集框圖程序

  首先用“打開TCP連接”函數(shù)打開由地址和遠(yuǎn)程端口所指定的TCP網(wǎng)絡(luò)連接,同時(shí)用“獲取隊(duì)列引用”函數(shù)創(chuàng)建以名為“網(wǎng)口數(shù)據(jù)”的隊(duì)列,再用“讀取TCP數(shù)據(jù)”函數(shù)從TCP網(wǎng)絡(luò)連接讀取字節(jié),并把字節(jié)放入“網(wǎng)口數(shù)據(jù)”隊(duì)列中,等待數(shù)據(jù)處理循環(huán)讀取隊(duì)列中數(shù)據(jù),同時(shí)開始采集下一秒的數(shù)據(jù)。

4 數(shù)據(jù)處理

  數(shù)據(jù)處理模塊用來將采集到的數(shù)據(jù)進(jìn)行預(yù)處理。數(shù)據(jù)處理模塊的框圖如圖2所示。

圖2 數(shù)據(jù)處理框圖程序

  由于采集的原始數(shù)據(jù)是一系列編碼,要得到各氣象要素的數(shù)據(jù)還必須解碼。數(shù)據(jù)從“網(wǎng)口數(shù)據(jù)”隊(duì)列中出列,用“預(yù)處理”子VI可以將出列的數(shù)據(jù)分離開,并通過FOR循環(huán)的自動(dòng)索引功能將它們按順序加入“處理數(shù)據(jù)”隊(duì)列中,等待數(shù)據(jù)顯示循環(huán)讀取隊(duì)列中數(shù)據(jù),同時(shí)繼續(xù)從“網(wǎng)口數(shù)據(jù)”隊(duì)列中讀取數(shù)據(jù)。

5 數(shù)據(jù)顯示

  數(shù)據(jù)顯示模塊用來在虛擬前面板上按規(guī)定的格式顯示實(shí)時(shí)數(shù)據(jù)。數(shù)據(jù)顯示模塊的框圖如圖3所示。

圖3 數(shù)據(jù)顯示框圖程序

  各氣象要素?cái)?shù)據(jù)從“處理數(shù)據(jù)”隊(duì)列出列,通過全局變量“一次讀取數(shù)據(jù)”將數(shù)據(jù)傳送到主界面程序框圖中的波形圖表,可以實(shí)時(shí)顯示出各氣象要素?cái)?shù)據(jù)的變化曲線。另外,因?yàn)榍懊姘屣@示的是各氣象要素一分鐘的平均數(shù)據(jù),所以出隊(duì)列的數(shù)據(jù)還通過一個(gè)“均值”函數(shù),并將一分鐘內(nèi)的平均數(shù)據(jù)通過全局變量“分鐘平均數(shù)據(jù)”傳送到主界面來顯示各氣象要素一分鐘內(nèi)的平均值。為了數(shù)據(jù)保存的需要,創(chuàng)建“保存數(shù)據(jù)”隊(duì)列,將“處理數(shù)據(jù)”隊(duì)列出列的數(shù)據(jù)加入到“保存數(shù)據(jù)”中,等待數(shù)據(jù)保存循環(huán)讀取隊(duì)列中數(shù)據(jù),同時(shí)繼續(xù)從“處理數(shù)據(jù)”隊(duì)列中讀取數(shù)據(jù)。

6 數(shù)據(jù)保存

  數(shù)據(jù)保存模塊用來將采集到的數(shù)據(jù)按規(guī)定的格式自動(dòng)進(jìn)行資料的存儲(chǔ)。數(shù)據(jù)保存模塊的框圖如圖4所示。

圖4 數(shù)據(jù)保存框圖程序

  數(shù)據(jù)保存模塊使用了通知技術(shù),由主程序框圖中的定時(shí)器每秒發(fā)出一個(gè)通知信號(hào),程序在第60秒時(shí)將這一分鐘內(nèi)從“保存數(shù)據(jù)”隊(duì)列中出列的數(shù)據(jù)都寫入以當(dāng)前時(shí)間命名的文本文件中,并保存在當(dāng)前路徑下data文件夾中,從而將每秒采集到的數(shù)據(jù)都進(jìn)行了保存。

7 結(jié)論

  本自動(dòng)氣象站軟件以LabVIEW8.5為開發(fā)平臺(tái),配合QLI50氣象數(shù)據(jù)采集器,實(shí)現(xiàn)了虛擬自動(dòng)氣象站的基本功能。所構(gòu)成的虛擬自動(dòng)氣象站成功用于地面氣象觀測(cè)中,具有造價(jià)低,操作方便等特點(diǎn)。另外,軟件的幾個(gè)模塊都采用了子VI的設(shè)計(jì),可以采用LabVIEW遠(yuǎn)程VI調(diào)用技術(shù),即通過本地VI調(diào)用另外一臺(tái)計(jì)算機(jī)上的VI,而用戶不需要考慮網(wǎng)絡(luò)通信的復(fù)雜細(xì)節(jié)。通過遠(yuǎn)程VI調(diào)用可以方便地實(shí)現(xiàn)網(wǎng)絡(luò)分布式系統(tǒng),可以在本地計(jì)算機(jī)上實(shí)現(xiàn)自動(dòng)氣象站的數(shù)據(jù)采集,而在另外遠(yuǎn)程計(jì)算機(jī)上顯示自動(dòng)氣象站的實(shí)時(shí)狀態(tài)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。