《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(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ì)
來(lái)源:微型機(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ù)分析,,期間,用戶可對(duì)數(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ù)分析,期間,,用戶可對(duì)數(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 采集卡硬件簡(jiǎn)介
 采集卡利用USB 2.0接口進(jìn)行數(shù)據(jù)傳輸,,數(shù)據(jù)傳輸率可達(dá)480 Mb/s。相對(duì)于其他接口USB 2.0具有突出的優(yōu)點(diǎn):它是一種便攜接口,,可以對(duì)外提供2.5 W的電源,,不需要外部供電。一般的筆記本電腦沒(méi)有PCI,、ISA等常規(guī)接口,,而USB接口是筆記本電腦的標(biāo)準(zhǔn)配置。
 采集卡ADC精度為12位,、采樣速率達(dá)6 MHz,。并且在采集卡上集成了一個(gè)100 MHz的高速數(shù)字信號(hào)處理器(DSP)作為控制器。同時(shí)提供了一組C語(yǔ)言開(kāi)發(fā)的API,,用于復(fù)雜功能的開(kāi)發(fā),。
2 軟件設(shè)計(jì)
2.1 LabVIEW程序設(shè)計(jì)框架

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

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

 針對(duì)上述不足,改進(jìn)一種事件狀態(tài)機(jī)的框架如圖3所示,,其中超時(shí)事件即當(dāng)一個(gè)事件完成后經(jīng)過(guò)設(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步,。

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

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

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

3.3 波形顯示
 利用LabVIEW的波形圖可以完成大部分顯示功能,,但是對(duì)于頻域顯示,,則需要用到XY波形圖。波形顯示放到大循環(huán)中,,每調(diào)用一個(gè)事件時(shí),,執(zhí)行超時(shí)事件之后,會(huì)執(zhí)行波形更新,,這就使用較少的示波器顯示所需的數(shù)據(jù),。
 對(duì)于LabVIEW的波形圖,在運(yùn)行時(shí)不能很好地交互,,如伸縮X,、Y軸,利用屬性節(jié)點(diǎn)編程,,可以解決該問(wèn)題,。
3.4 文件處理
 對(duì)于不管是單次采集、連續(xù)采集還是調(diào)用算法處理后的數(shù)據(jù),,當(dāng)用戶希望保存時(shí)都要對(duì)用戶請(qǐng)求進(jìn)行響應(yīng),。單次采集比較容易,,可以利用文件對(duì)話框選擇路徑和文件名,然后保存數(shù)據(jù),。但是在連續(xù)采集中,,打開(kāi)文件對(duì)話框會(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)該用毫秒級(jí)的時(shí)間作為文件名,。另外,在文件名中不能出現(xiàn)‘:’,,因此需要將‘:’替換為其他字符,,在本系統(tǒng)中用下劃線做的替換。此外還加入了進(jìn)度條和狀態(tài)欄,,顯示文件保存的情況,。
3.5 信號(hào)處理
 對(duì)采集到的信號(hào)進(jìn)行分析和處理是本系統(tǒng)的后期任務(wù),前期完成的有FFT變換,、小波去噪和加噪等,,如圖7所示,將處理后的信號(hào)輸出到示波器中便可,。對(duì)于復(fù)雜信號(hào)的處理借助MATLAB混合編程可以輕松實(shí)現(xiàn),。
本文分析了LabVIEW程序設(shè)計(jì)的框架問(wèn)題,根據(jù)其中的不足提出了一種改進(jìn)的事件狀態(tài)機(jī)程序框架,,并在該框架下開(kāi)發(fā)了一套功能完善的實(shí)時(shí)數(shù)據(jù)采集分析系統(tǒng),。該系統(tǒng)性能良好且已投入使用,友好美觀的界面和文件自動(dòng)保存設(shè)計(jì)是本系統(tǒng)的一大特色。利用該程序設(shè)計(jì)模式可以快速高效地開(kāi)發(fā)相應(yīng)的軟件系統(tǒng),,并且后期算法處理也極為簡(jiǎn)單,只要MATLAB算法即可,,因此可以使算法設(shè)計(jì)獨(dú)立開(kāi)來(lái),。
參考文獻(xiàn)
[1] 戴敬.LabVIEW基礎(chǔ)教程[M].北京:科學(xué)出版社,2004.
[2] 楊樂(lè)平,,李海濤.LabVIEW程序設(shè)計(jì)與應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,,2004.
[3] 柴敬安,廖克儉.LabVIEW和MATLAB混合編程方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,,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)載。