基于LabVIEW的虛擬自動(dòng)氣象站軟件設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 引言
虛擬儀器(VI)的概念是美國(guó)NI公司在20世紀(jì)80年代中期提出來(lái)的。所謂虛擬儀器就是以計(jì)算機(jī)作為儀器統(tǒng)一的硬件平臺(tái),充分利用計(jì)算機(jī)的運(yùn)算、存儲(chǔ)、回放、調(diào)用、顯示及文件管理等智能化功能,同時(shí)把傳統(tǒng)儀器的專(zhuān)業(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ù)采集周期沒(méi)有特別要求,可以將這四個(gè)模塊通過(guò)數(shù)據(jù)流連接起來(lái),即每采集一次數(shù)據(jù)都需要經(jīng)過(guò)數(shù)據(jù)處理、顯示、保存后才能開(kāi)始第二輪采集,對(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ì)列只要沒(méi)有滿就不會(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ù),通過(guò)通知器操作函數(shù)可以實(shí)現(xiàn)一段程序框圖在收到來(lái)自于定時(shí)結(jié)構(gòu)中每秒發(fā)出的通知消息前保持等待狀態(tài),從而實(shí)現(xiàn)了程序中每秒顯示一次數(shù)據(jù)和每分鐘保存一次數(shù)據(jù)的功能。
3 數(shù)據(jù)采集
數(shù)據(jù)采集模塊用來(lái)獲取QLI50氣象數(shù)據(jù)采集器所采集到的數(shù)據(jù)。數(shù)據(jù)采集模塊的框圖如圖1所示。
圖1 數(shù)據(jù)采集框圖程序
首先用“打開(kāi)TCP連接”函數(shù)打開(kāi)由地址和遠(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í)開(kāi)始采集下一秒的數(shù)據(jù)。
4 數(shù)據(jù)處理
數(shù)據(jù)處理模塊用來(lái)將采集到的數(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ù)分離開(kāi),并通過(guò)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ù)顯示模塊用來(lái)在虛擬前面板上按規(guī)定的格式顯示實(shí)時(shí)數(shù)據(jù)。數(shù)據(jù)顯示模塊的框圖如圖3所示。
圖3 數(shù)據(jù)顯示框圖程序
各氣象要素?cái)?shù)據(jù)從“處理數(shù)據(jù)”隊(duì)列出列,通過(guò)全局變量“一次讀取數(shù)據(jù)”將數(shù)據(jù)傳送到主界面程序框圖中的波形圖表,可以實(shí)時(shí)顯示出各氣象要素?cái)?shù)據(jù)的變化曲線。另外,因?yàn)榍懊姘屣@示的是各氣象要素一分鐘的平均數(shù)據(jù),所以出隊(duì)列的數(shù)據(jù)還通過(guò)一個(gè)“均值”函數(shù),并將一分鐘內(nèi)的平均數(shù)據(jù)通過(guò)全局變量“分鐘平均數(shù)據(jù)”傳送到主界面來(lái)顯示各氣象要素一分鐘內(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ù)保存模塊用來(lái)將采集到的數(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ù)都寫(xiě)入以當(dāng)前時(shí)間命名的文本文件中,并保存在當(dāng)前路徑下data文件夾中,從而將每秒采集到的數(shù)據(jù)都進(jìn)行了保存。
7 結(jié)論
本自動(dòng)氣象站軟件以LabVIEW8.5為開(kāi)發(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ù),即通過(guò)本地VI調(diào)用另外一臺(tái)計(jì)算機(jī)上的VI,而用戶不需要考慮網(wǎng)絡(luò)通信的復(fù)雜細(xì)節(jié)。通過(guò)遠(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)。