基于LabVIEW 語(yǔ)言的信號(hào)采集與處理
3 基于LabVIEW 語(yǔ)言實(shí)現(xiàn)的PCI-1714采集卡數(shù)據(jù)采集程序?qū)嵗?p> 下面介紹用LabVIEW 語(yǔ)言編寫的PCI-1714 采集卡數(shù)據(jù)采集驅(qū)動(dòng)程序。該程序能夠?qū)崿F(xiàn)對(duì)傳感系統(tǒng)外界信號(hào)的數(shù)據(jù)進(jìn)行連續(xù)采集, 并能根據(jù)需要對(duì)有用數(shù)據(jù)進(jìn)行存儲(chǔ)。
從功能上分,該程序主要分為三部分:a)對(duì)采集卡進(jìn)行初始化,完成采集卡重要工作參數(shù)的設(shè)置,如用戶緩存、采樣速率(scan rate)、輸入限制等。b)進(jìn)行數(shù)據(jù)采集和有用數(shù)據(jù)的存儲(chǔ), 就是將數(shù)據(jù)先放入采集卡的板載緩存FIFO 中, 再由計(jì)算機(jī)讀取板載緩存中的數(shù)據(jù), 寫入由計(jì)算機(jī)的內(nèi)存中分配出的用戶緩存, 然后根據(jù)需要將有用數(shù)據(jù)從內(nèi)存中存入計(jì)算機(jī)硬盤。具體存儲(chǔ)格式可以為多種,該部分中包括的子VI 有讀取數(shù)據(jù)模塊、數(shù)據(jù)存儲(chǔ)模塊以及顯示所采集信號(hào)的時(shí)域圖形的模塊。c)在采集結(jié)束后關(guān)閉采集卡。
為了使用PCI-1714 進(jìn)行連續(xù)高速的數(shù)據(jù)采集,需要對(duì)采集速率、用戶緩存大小等重要參數(shù)進(jìn)行合理設(shè)置。如前所述,數(shù)據(jù)采集卡進(jìn)行A / D 轉(zhuǎn)換時(shí)是連續(xù)進(jìn)行的, 也就是說(shuō)采集卡往板載緩存中放入數(shù)據(jù)是連續(xù)進(jìn)行的, 而計(jì)算機(jī)從板載緩存FIFO 中讀取數(shù)據(jù)放入用戶緩存時(shí)是在FIFO 半滿或全滿的狀態(tài)下批量讀取的,同時(shí),如果要進(jìn)行數(shù)據(jù)的存儲(chǔ),從用戶緩存再向硬盤中寫入數(shù)據(jù)時(shí)也是批量進(jìn)行的。
由于用戶緩存的大小受計(jì)算機(jī)內(nèi)存空間大小的限制,不可能無(wú)限大,在使用過(guò)程中,只能盡量設(shè)得比較大,一般可以設(shè)為內(nèi)存的十分之一左右。在保持一定的數(shù)據(jù)采樣率并且用戶緩存確定的情況下, 如果存儲(chǔ)過(guò)程中,單批量寫入硬盤的數(shù)據(jù)過(guò)少,會(huì)出現(xiàn)不能及時(shí)將數(shù)據(jù)從用戶緩存中讀出, 從而導(dǎo)致用戶緩存溢出的錯(cuò)誤。而當(dāng)單批量寫入硬盤的數(shù)據(jù)過(guò)多時(shí),又會(huì)出現(xiàn)從用戶緩存讀取數(shù)據(jù)過(guò)快, 可能會(huì)讀出空數(shù)據(jù)的錯(cuò)誤,所以這幾個(gè)參數(shù)必須互相配合設(shè)定才能使采集卡獲得良好的采集和數(shù)據(jù)存儲(chǔ)的性能。
4 基于LabVIEW 的數(shù)據(jù)調(diào)用與處理
利用上述程序完成信號(hào)采集的同時(shí)可以將有用信號(hào)存儲(chǔ),用于后續(xù)分析,下面舉例說(shuō)明如何將存儲(chǔ)之后的波形數(shù)據(jù)重新調(diào)出并進(jìn)行分析。
將以TXT 格式存儲(chǔ)的數(shù)據(jù)從文件中調(diào)出并進(jìn)行頻譜分析的程序。在程序前面板中可以同時(shí)將一段數(shù)據(jù)表示的信號(hào)時(shí)域波形及利用“FFT 功率譜”VI分析獲得功率譜波形顯示出來(lái)。
利用LabVIEW 語(yǔ)言編寫一個(gè)用于將存儲(chǔ)數(shù)據(jù)調(diào)出并對(duì)信號(hào)波形特點(diǎn)進(jìn)行分析的程序,該程序可以將一個(gè)具有多信道的監(jiān)測(cè)信號(hào)從存儲(chǔ)文件中調(diào)出,不同信道的監(jiān)測(cè)信號(hào)各不相同,根據(jù)信號(hào)波形的特點(diǎn),可以選用相關(guān)方法進(jìn)行信號(hào)處理,分析各信號(hào)對(duì)應(yīng)的監(jiān)測(cè)環(huán)境的變化。利用LabVIEW 所提供的“調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)”模塊,可以很方便地把C 語(yǔ)言編寫的程序嵌入LabVIEW 程序中, 并且可以封裝成子VI,供主程序調(diào)用。適用于一些LabVIEW 語(yǔ)言編程效率不高的應(yīng)用場(chǎng)合,利用“調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)”模塊編寫的子VI 程序。
5 結(jié)束語(yǔ)
從以上分析可以看出, 利用LabVIEW 語(yǔ)言可以方便地解決信號(hào)采集與處理領(lǐng)域的相關(guān)問(wèn)題,無(wú)論是對(duì)數(shù)據(jù)采集卡PCI1714 的驅(qū)動(dòng)編寫、數(shù)據(jù)的存儲(chǔ), 還是對(duì)數(shù)據(jù)的調(diào)用與分析都可以充分的調(diào)用該語(yǔ)言提供的專用VI, 并且在圖形化語(yǔ)言編寫環(huán)境中,獲得清晰的數(shù)據(jù)流程。而且LabVIEW 語(yǔ)言也支持用戶對(duì)VI 的二次開(kāi)發(fā),并可以調(diào)用其他語(yǔ)言編寫的程序, 還可以將用戶自行編寫的程序方便地封裝成標(biāo)準(zhǔn)VI,供后續(xù)程序調(diào)用,為提高程序編寫的效率及擴(kuò)展程序功能帶來(lái)極大方便。
評(píng)論