摘要:基于虛擬儀器技術, 利用LabVIEW 語言進行信號采集系統(tǒng)的研制具有重要意義。文章介紹信號采集與處理系統(tǒng)的主要流程。詳細介紹PCI-1714 數(shù)據(jù)采集卡的原理及功能,通過數(shù)據(jù)采集程序實例介紹基于LabVIEW 語言實現(xiàn)PCI-1714 采集卡的全過程,利用LabVIEW 語言編寫的程序用于將存儲數(shù)據(jù)調出,并對信號波形特點進行分析。
1 概述
實驗室虛擬儀器工程平臺(LabVIEW)是一種專門用于數(shù)據(jù)采集、分析及儀器控制的圖形化軟件,它所開發(fā)的虛擬儀器將計算機強大的數(shù)據(jù)處理能力與儀器的硬件測試控制能力很好地結合在一起。
LabVIEW 的圖形化開發(fā)環(huán)境具有精確、高效、功能強大、開發(fā)簡易、實時性強、界面友好等優(yōu)點,為用戶提供了強大功能和使用的靈活性, 非常適合用于進行仿真、實時檢測和控制。目前,LabVIEW 已經(jīng)成為測試領域應用最廣泛和最有前途的軟件開發(fā)平臺之一,也是應用最廣、發(fā)展最快、功能最強的圖形化軟件開發(fā)集成環(huán)境之一。
虛擬儀器可以利用高性能的模塊化硬件, 結合高效靈活的軟件來完成各種測試、測量和自動化應用,與傳統(tǒng)的測量儀器相比,具有成本低、功能強大、集成度高、質量可靠、維護方便等優(yōu)點,能很方便地組建測試系統(tǒng),滿足多種測量要求。因此,基于虛擬儀器技術, 利用LabVIEW 語言進行信號采集系統(tǒng)的研制具有重要意義。
LabVIEW 虛擬儀器主要包括前面板、框圖和圖標/ 接口部件三部分。
前面板是VI 的交互式用戶界面, 即用戶與程序代碼發(fā)生聯(lián)系的窗口。VI 前面板是控件和指示器的組合,控件仿真常規(guī)儀器上的輸入輸出設備類型,如旋鈕和開關,并提供一種機制,將輸入從前面板傳送到基本框圖。
信號采集與處理系統(tǒng)主要應用的是數(shù)據(jù)采集卡的A / D(模/ 數(shù))轉換功能,通過數(shù)據(jù)采集卡將采集端采集到的模擬電信號利用高速模數(shù)轉換電路轉換為數(shù)字信號,經(jīng)過數(shù)據(jù)采集卡板載緩存,最后利用計算機中的程序不斷從緩存中提取數(shù)據(jù), 存入計算機中,并進行相關處理,提取有用數(shù)據(jù)進行硬盤存儲。
利用LabVIEW 語言編寫數(shù)據(jù)采集卡的驅動程序,對信號分析處理及存儲流程如圖1 所示。
圖1 信號采集與處理系統(tǒng)總流程圖。
2 PCI-1714 數(shù)據(jù)采集卡
Advantech 公司的PCI-1714 是一款PCI 接口的高速4 通道同步數(shù)據(jù)采集卡, 可用于高速數(shù)據(jù)采集應用,性價比較高,適用于儀器測試、圖像處理、視頻數(shù)字化處理及聲音與振動測試等領域。
PCI-1714 是高速、高分辨力、高容量的PCI 數(shù)據(jù)采集卡, 配備4 組模擬輸入端, 具備同步采集功能。其特性可歸納為:a)內含4 個獨立ADC(模數(shù)轉換器),可使4 個信道同步取樣,當4 組模擬輸入同時使用時,采樣頻率理論最高可達30 MS/s。b)每路ADC 內建32 K FIFO 內存,使用者在高速采樣時有足夠緩沖區(qū)可供暫存, 以維持數(shù)據(jù)采集速度及完整性。c)提供多種輸入范圍,包含±5 V、±2.5 V、±1 V、±0.5 V 等, 使用者通過工具程序即可輕松完成設定。d) 高達6 種觸發(fā)模式, 包含軟件觸發(fā)、Pacer、Post-Trigger、Pre-Trigger、Delay-Trigger 及About-Trigger 觸發(fā)方式,方便客戶按需求自行設定。
基于PCI-1714 的通用高速數(shù)據(jù)采集系統(tǒng)結構如圖2 所示。
圖2 基于PCI-1714 的高速數(shù)據(jù)采集系統(tǒng)結構框圖。
將需監(jiān)測的現(xiàn)場信號經(jīng)濾波器濾波后送入PCI-1714 板卡, 卡上A / D 轉換器對信號進行高速模數(shù)轉換。轉換數(shù)據(jù)首先暫存在板卡的32 K 板載FIFO (先入先出) 中, 當FIFO 半滿或全滿時,向DMA(動態(tài)內存存取)控制器發(fā)送DMA 請求,使用直接內存存取方式,經(jīng)PCI(外設組件互連)總線將數(shù)據(jù)從FIFO 輸出到內部緩沖區(qū)中,PCI 總線傳輸帶寬很寬, 可以滿足4 通道高速同步采樣時所帶來的高速數(shù)據(jù)傳輸要求。
內部緩沖區(qū)作為高速數(shù)據(jù)采集系統(tǒng)的海量緩存,它與用戶緩沖區(qū)一樣,都是數(shù)據(jù)采集程序動態(tài)分配給驅動程序使用的兩塊內存區(qū)域, 區(qū)別在于內部緩沖區(qū)存放的是從FIFO 取來的原始值, 用戶緩沖區(qū)存放的是經(jīng)轉換之后的電壓值。
在進行長時間高速數(shù)據(jù)采集時,PCI-1714 多采用循環(huán)方式。在此方式下,啟動一次采集過程能進行無數(shù)次的A / D 轉換。此時內部緩沖區(qū)分成前后對等的兩個半?yún)^(qū)使用,當前半?yún)^(qū)填滿后,將此半?yún)^(qū)的數(shù)據(jù)向用戶緩沖區(qū)傳送, 同時將新轉換的數(shù)據(jù)放在內部緩沖區(qū)的后半部分。當后半?yún)^(qū)填滿后,此半?yún)^(qū)數(shù)據(jù)向用戶緩沖區(qū)傳送。同時自動將新轉換的數(shù)據(jù)放到早已傳輸完畢的前半個緩沖區(qū)??赏ㄟ^查詢狀態(tài)寄存器的狀態(tài)來判斷FIFO 緩沖區(qū)的狀態(tài), 分別判斷空標志位(Empty flag)、半滿標志位(Half full flag)以及全滿標志位(Full flag)。
內部緩沖區(qū)和用戶緩沖區(qū)的數(shù)據(jù)可以在程序控制下以文件的形式保存至計算機中, 實現(xiàn)采集數(shù)據(jù)永久性存儲,便于后期數(shù)據(jù)分析處理。
3 基于LabVIEW 語言實現(xiàn)的PCI-1714采集卡數(shù)據(jù)采集程序實例
下面介紹用LabVIEW 語言編寫的PCI-1714 采集卡數(shù)據(jù)采集驅動程序。該程序能夠實現(xiàn)對傳感系統(tǒng)外界信號的數(shù)據(jù)進行連續(xù)采集, 并能根據(jù)需要對有用數(shù)據(jù)進行存儲。
從功能上分,該程序主要分為三部分:a)對采集卡進行初始化,完成采集卡重要工作參數(shù)的設置,如用戶緩存、采樣速率(scan rate)、輸入限制等。b)進行數(shù)據(jù)采集和有用數(shù)據(jù)的存儲, 就是將數(shù)據(jù)先放入采集卡的板載緩存FIFO 中, 再由計算機讀取板載緩存中的數(shù)據(jù), 寫入由計算機的內存中分配出的用戶緩存, 然后根據(jù)需要將有用數(shù)據(jù)從內存中存入計算機硬盤。具體存儲格式可以為多種,該部分中包括的子VI 有讀取數(shù)據(jù)模塊、數(shù)據(jù)存儲模塊以及顯示所采集信號的時域圖形的模塊。c)在采集結束后關閉采集卡。
為了使用PCI-1714 進行連續(xù)高速的數(shù)據(jù)采集,需要對采集速率、用戶緩存大小等重要參數(shù)進行合理設置。如前所述,數(shù)據(jù)采集卡進行A / D 轉換時是連續(xù)進行的, 也就是說采集卡往板載緩存中放入數(shù)據(jù)是連續(xù)進行的, 而計算機從板載緩存FIFO 中讀取數(shù)據(jù)放入用戶緩存時是在FIFO 半滿或全滿的狀態(tài)下批量讀取的,同時,如果要進行數(shù)據(jù)的存儲,從用戶緩存再向硬盤中寫入數(shù)據(jù)時也是批量進行的。
由于用戶緩存的大小受計算機內存空間大小的限制,不可能無限大,在使用過程中,只能盡量設得比較大,一般可以設為內存的十分之一左右。在保持一定的數(shù)據(jù)采樣率并且用戶緩存確定的情況下, 如果存儲過程中,單批量寫入硬盤的數(shù)據(jù)過少,會出現(xiàn)不能及時將數(shù)據(jù)從用戶緩存中讀出, 從而導致用戶緩存溢出的錯誤。而當單批量寫入硬盤的數(shù)據(jù)過多時,又會出現(xiàn)從用戶緩存讀取數(shù)據(jù)過快, 可能會讀出空數(shù)據(jù)的錯誤,所以這幾個參數(shù)必須互相配合設定才能使采集卡獲得良好的采集和數(shù)據(jù)存儲的性能。
4 基于LabVIEW 的數(shù)據(jù)調用與處理
利用上述程序完成信號采集的同時可以將有用信號存儲,用于后續(xù)分析,下面舉例說明如何將存儲之后的波形數(shù)據(jù)重新調出并進行分析。
將以TXT 格式存儲的數(shù)據(jù)從文件中調出并進行頻譜分析的程序。在程序前面板中可以同時將一段數(shù)據(jù)表示的信號時域波形及利用“FFT 功率譜”VI分析獲得功率譜波形顯示出來。
利用LabVIEW 語言編寫一個用于將存儲數(shù)據(jù)調出并對信號波形特點進行分析的程序,該程序可以將一個具有多信道的監(jiān)測信號從存儲文件中調出,不同信道的監(jiān)測信號各不相同,根據(jù)信號波形的特點,可以選用相關方法進行信號處理,分析各信號對應的監(jiān)測環(huán)境的變化。利用LabVIEW 所提供的“調用庫函數(shù)節(jié)點”模塊,可以很方便地把C 語言編寫的程序嵌入LabVIEW 程序中, 并且可以封裝成子VI,供主程序調用。適用于一些LabVIEW 語言編程效率不高的應用場合,利用“調用庫函數(shù)節(jié)點”模塊編寫的子VI 程序。
5 結束語
從以上分析可以看出, 利用LabVIEW 語言可以方便地解決信號采集與處理領域的相關問題,無論是對數(shù)據(jù)采集卡PCI1714 的驅動編寫、數(shù)據(jù)的存儲, 還是對數(shù)據(jù)的調用與分析都可以充分的調用該語言提供的專用VI, 并且在圖形化語言編寫環(huán)境中,獲得清晰的數(shù)據(jù)流程。而且LabVIEW 語言也支持用戶對VI 的二次開發(fā),并可以調用其他語言編寫的程序, 還可以將用戶自行編寫的程序方便地封裝成標準VI,供后續(xù)程序調用,為提高程序編寫的效率及擴展程序功能帶來極大方便。