《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW改進(jìn)狀態(tài)機(jī)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于LabVIEW改進(jìn)狀態(tài)機(jī)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2014年第7期
王 智,李 智
(四川大學(xué) 電子信息學(xué)院,,四川 成都 610064)
摘要: 分析標(biāo)準(zhǔn)狀態(tài)機(jī)的不足,提出一種改進(jìn)事件狀態(tài)機(jī)的LabVIEW程序主框架,。驅(qū)動(dòng)USB 2.0采集卡進(jìn)行數(shù)據(jù)實(shí)時(shí)采集,聯(lián)合MATLAB混合編程進(jìn)行數(shù)據(jù)分析,,期間,,用戶可對數(shù)據(jù)按時(shí)間進(jìn)行自動(dòng)保存或手動(dòng)保存。此外,,該系統(tǒng)具有界面友好,、操作方便及功能易擴(kuò)充等優(yōu)點(diǎn)。
Abstract:
Key words :

摘  要: 分析標(biāo)準(zhǔn)狀態(tài)機(jī)的不足,,提出一種改進(jìn)事件狀態(tài)機(jī)的LabVIEW程序主框架,。驅(qū)動(dòng)USB 2.0采集卡進(jìn)行數(shù)據(jù)實(shí)時(shí)采集,聯(lián)合MATLAB混合編程進(jìn)行數(shù)據(jù)分析,,期間,,用戶可對數(shù)據(jù)按時(shí)間進(jìn)行自動(dòng)保存或手動(dòng)保存。此外,,該系統(tǒng)具有界面友好,、操作方便及功能易擴(kuò)充等優(yōu)點(diǎn)。
關(guān)鍵詞: LabVIEW;改進(jìn)狀態(tài)機(jī),;混合編程,;數(shù)據(jù)采集

1 采集卡硬件簡介
 采集卡利用USB 2.0接口進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸率可達(dá)480 Mb/s,。相對于其他接口USB 2.0具有突出的優(yōu)點(diǎn):它是一種便攜接口,,可以對外提供2.5 W的電源,不需要外部供電,。一般的筆記本電腦沒有PCI,、ISA等常規(guī)接口,而USB接口是筆記本電腦的標(biāo)準(zhǔn)配置,。
 采集卡ADC精度為12位、采樣速率達(dá)6 MHz,。并且在采集卡上集成了一個(gè)100 MHz的高速數(shù)字信號處理器(DSP)作為控制器,。同時(shí)提供了一組C語言開發(fā)的API,用于復(fù)雜功能的開發(fā),。
2 軟件設(shè)計(jì)
2.1 LabVIEW程序設(shè)計(jì)框架

 LabVIEW是一種以G語言(圖形化)編程的軟件開發(fā)平臺[1-2],,界面直觀并提供了大量的組件和庫函數(shù),特別適合數(shù)據(jù)采集分析軟件系統(tǒng)的開發(fā),。
G語言比較容易掌握,,但是LabVIEW程序框架設(shè)計(jì)卻很少有文獻(xiàn)提到。一個(gè)合理而高效的程序框架是開發(fā)高質(zhì)量軟件的基石,,因此想要開發(fā)一款性能優(yōu)良的軟件程序框架設(shè)計(jì)是第一步,。
在LabVIEW中提出了單循環(huán)應(yīng)用程序、對話框和標(biāo)準(zhǔn)狀態(tài)機(jī)等框架,。
 圖1所示框架可以滿足一些軟件開發(fā)的需求,,但對于數(shù)據(jù)采集軟件系統(tǒng)還不夠,因?yàn)樵摽蚣苋狈κ录奶幚?,如打開設(shè)備,、單次采集和文件保存等。

 在圖2中加入事件輪詢和事件處理程序,,每一個(gè)事件處理完后又開始不斷查詢事件,。利用該框架可以完成數(shù)據(jù)采集、文件保存和文件讀取等功能,。但是其中不足之處在于處理事件時(shí)不能執(zhí)行事件之外的程序,,如更新狀態(tài)和數(shù)據(jù)顯示等。尤其在連續(xù)采集中,,按照這種框架那么就必須為連續(xù)采集單獨(dú)提供一個(gè)示波器,,如果還有數(shù)據(jù)處理則又需要單獨(dú)提供一個(gè)示波器,因此示波器不能復(fù)用,導(dǎo)致用戶界面模塊增加,。

 針對上述不足,,改進(jìn)一種事件狀態(tài)機(jī)的框架如圖3所示,其中超時(shí)事件即當(dāng)一個(gè)事件完成后經(jīng)過設(shè)定的時(shí)間后會(huì)自動(dòng)執(zhí)行超時(shí)事件,。利用超時(shí)事件可以提供事件外程序執(zhí)行的機(jī)會(huì),,而每個(gè)事件只需要提供事件名稱的枚舉,然后進(jìn)入超時(shí)事件,,在超時(shí)事件里根據(jù)事件名稱執(zhí)行相應(yīng)功能,。采用移位寄存器作為數(shù)據(jù)傳遞媒介,這樣狀態(tài)及波形圖可以實(shí)時(shí)更新,。這種程序框架清晰而且易于擴(kuò)展,,擴(kuò)展一個(gè)新的功能只需要3步。

?。?)為新功能提供事件處理,。
 (2)在事件處理中把自身的事件名稱更新到事件枚舉中去,。
?。?)在超時(shí)事件中新增事件狀態(tài),并完成相應(yīng)功能,。
 在這個(gè)框架中,,可以簡化前面板的設(shè)計(jì),程序框圖的設(shè)計(jì)也模式化,,使用極為方便,。
2.2 MATLAB混合編程
 在信號處理上MATLAB功能強(qiáng)大,在LabVIEW中可以通過MATLAB Script與MATLAB服務(wù)器通信,,從而完成信號處理和數(shù)據(jù)的傳遞,。
 需要注意的是計(jì)算機(jī)中必須安裝有MATLAB 5.0及以上版本,而且只能用于Windows平臺,,還有就是二者在數(shù)據(jù)通信時(shí)數(shù)據(jù)類型需要匹配[3],。此外,MATLAB會(huì)占用過多的內(nèi)存,,因此這種混合編程最好用于復(fù)雜的信號處理上,。
3 設(shè)計(jì)實(shí)例
3.1 前面板

 美觀而友好的界面是軟件開發(fā)重要的一個(gè)環(huán)節(jié),本套系統(tǒng)最終設(shè)計(jì)界面如圖4所示,。從功能上主要分為采集卡控制,、波形顯示、文件處理和信號處理4個(gè)模塊,,其他輔助設(shè)計(jì)如狀態(tài)欄,、進(jìn)度條,、指示燈和系統(tǒng)時(shí)間等。
3.2 采集卡控制
 根據(jù)改進(jìn)的事件狀態(tài)機(jī)程序框架,,為采集卡控制提供開啟設(shè)備,、關(guān)閉設(shè)備、單次采集和連續(xù)采集4個(gè)事件,。每個(gè)事件調(diào)用采集卡相應(yīng)的API,,這里需要用到LabVIEW中的調(diào)用庫函數(shù)[4]。具體做法是把提供的dll文件拷貝到工程中,,然后在庫函數(shù)中配置路徑和輸入輸出參數(shù),。輸入?yún)?shù)由前面板提供。圖4中ReadAdc為讀取數(shù)據(jù)采集卡的庫函數(shù)調(diào)用,,由返回參數(shù)的正確性判斷是否繼續(xù)執(zhí)行,,這樣能增加程序的魯棒性。

 圖5為單次采集事件在超時(shí)事件中的響應(yīng),。首先將事件枚舉更新為等待用戶操作,,再利用API讀取ADC緩沖,如果讀取成功,,則利用的MATLAB腳本對數(shù)據(jù)進(jìn)行處理,也可以用LabVIEW提供的數(shù)組函數(shù)進(jìn)行處理,。然后將處理后的數(shù)據(jù)傳遞到事件外,,事件處理完畢后會(huì)進(jìn)行大循環(huán)執(zhí)行狀態(tài)欄和示波器的更新,然后執(zhí)行超時(shí)事件的等待用戶操作,。其他事件的處理也類似,。

3.3 波形顯示
 利用LabVIEW的波形圖可以完成大部分顯示功能,但是對于頻域顯示,,則需要用到XY波形圖,。波形顯示放到大循環(huán)中,每調(diào)用一個(gè)事件時(shí),,執(zhí)行超時(shí)事件之后,,會(huì)執(zhí)行波形更新,這就使用較少的示波器顯示所需的數(shù)據(jù),。
 對于LabVIEW的波形圖,,在運(yùn)行時(shí)不能很好地交互,如伸縮X,、Y軸,,利用屬性節(jié)點(diǎn)編程,可以解決該問題,。
3.4 文件處理
 對于不管是單次采集,、連續(xù)采集還是調(diào)用算法處理后的數(shù)據(jù),,當(dāng)用戶希望保存時(shí)都要對用戶請求進(jìn)行響應(yīng)。單次采集比較容易,,可以利用文件對話框選擇路徑和文件名,,然后保存數(shù)據(jù)。但是在連續(xù)采集中,,打開文件對話框會(huì)中斷連續(xù)采集事件的處理,,因此需要設(shè)計(jì)出一種自動(dòng)保存文件的程序如圖6所示。

 

 

 在程序啟動(dòng)時(shí),,生成一個(gè)默認(rèn)的文件路徑,。考慮到數(shù)據(jù)文件比較多,,在文件路徑中加入日期,,文件名由用戶確定,同時(shí)在文件名中加入采集的時(shí)間,;若考慮連續(xù)采集,,還需要由用戶確定保存的文件數(shù)。本系統(tǒng)采用的單次采集文件名格式如:data_12_00_00,。
 需要注意的是,,時(shí)間每隔1 s更新一次,所以在連續(xù)采樣中當(dāng)采樣間隔小于1 s時(shí),,數(shù)據(jù)文件在1 s內(nèi)數(shù)據(jù)會(huì)被覆蓋,,如果需要更短的時(shí)間,那么應(yīng)該用毫秒級的時(shí)間作為文件名,。另外,,在文件名中不能出現(xiàn)‘:’,因此需要將‘:’替換為其他字符,,在本系統(tǒng)中用下劃線做的替換,。此外還加入了進(jìn)度條和狀態(tài)欄,顯示文件保存的情況,。
3.5 信號處理
 對采集到的信號進(jìn)行分析和處理是本系統(tǒng)的后期任務(wù),,前期完成的有FFT變換、小波去噪和加噪等,,如圖7所示,,將處理后的信號輸出到示波器中便可。對于復(fù)雜信號的處理借助MATLAB混合編程可以輕松實(shí)現(xiàn),。
本文分析了LabVIEW程序設(shè)計(jì)的框架問題,,根據(jù)其中的不足提出了一種改進(jìn)的事件狀態(tài)機(jī)程序框架,并在該框架下開發(fā)了一套功能完善的實(shí)時(shí)數(shù)據(jù)采集分析系統(tǒng),。該系統(tǒng)性能良好且已投入使用,,友好美觀的界面和文件自動(dòng)保存設(shè)計(jì)是本系統(tǒng)的一大特色,。利用該程序設(shè)計(jì)模式可以快速高效地開發(fā)相應(yīng)的軟件系統(tǒng),并且后期算法處理也極為簡單,,只要MATLAB算法即可,,因此可以使算法設(shè)計(jì)獨(dú)立開來。
參考文獻(xiàn)
[1] 戴敬.LabVIEW基礎(chǔ)教程[M].北京:科學(xué)出版社,,2004.
[2] 楊樂平,,李海濤.LabVIEW程序設(shè)計(jì)與應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,2004.
[3] 柴敬安,,廖克儉.LabVIEW和MATLAB混合編程方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,,2008,16(5):737-739.
[4] 戴新.?dāng)?shù)據(jù)采集卡在LabVIEW中的驅(qū)動(dòng)方法[J].計(jì)算機(jī)應(yīng)用與軟件,,2008,,25(3):156-158.

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