基于LabVIEW語言的信號采集與處理
基于PCI-1714 的通用高速數據采集系統結構如圖2 所示。

圖2 基于PCI-1714 的高速數據采集系統結構框圖。
將需監測的現場信號經濾波器濾波后送入PCI-1714 板卡, 卡上A / D 轉換器對信號進行高速模數轉換。轉換數據首先暫存在板卡的32 K 板載FIFO (先入先出) 中, 當FIFO 半滿或全滿時,向DMA(動態內存存取)控制器發送DMA 請求,使用直接內存存取方式,經PCI(外設組件互連)總線將數據從FIFO 輸出到內部緩沖區中,PCI 總線傳輸帶寬很寬, 可以滿足4 通道高速同步采樣時所帶來的高速數據傳輸要求。
內部緩沖區作為高速數據采集系統的海量緩存,它與用戶緩沖區一樣,都是數據采集程序動態分配給驅動程序使用的兩塊內存區域, 區別在于內部緩沖區存放的是從FIFO 取來的原始值, 用戶緩沖區存放的是經轉換之后的電壓值。
在進行長時間高速數據采集時,PCI-1714 多采用循環方式。在此方式下,啟動一次采集過程能進行無數次的A / D 轉換。此時內部緩沖區分成前后對等的兩個半區使用,當前半區填滿后,將此半區的數據向用戶緩沖區傳送, 同時將新轉換的數據放在內部緩沖區的后半部分。當后半區填滿后,此半區數據向用戶緩沖區傳送。同時自動將新轉換的數據放到早已傳輸完畢的前半個緩沖區。可通過查詢狀態寄存器的狀態來判斷FIFO 緩沖區的狀態, 分別判斷空標志位(Empty flag)、半滿標志位(Half full flag)以及全滿標志位(Full flag)。
內部緩沖區和用戶緩沖區的數據可以在程序控制下以文件的形式保存至計算機中, 實現采集數據永久性存儲,便于后期數據分析處理。
3 基于LabVIEW 語言實現的PCI-1714采集卡數據采集程序實例
下面介紹用LabVIEW 語言編寫的PCI-1714 采集卡數據采集驅動程序。該程序能夠實現對傳感系統外界信號的數據進行連續采集, 并能根據需要對有用數據進行存儲。
從功能上分,該程序主要分為三部分:a)對采集卡進行初始化,完成采集卡重要工作參數的設置,如用戶緩存、采樣速率(scan rate)、輸入限制等。b)進行數據采集和有用數據的存儲, 就是將數據先放入采集卡的板載緩存FIFO 中, 再由計算機讀取板載緩存中的數據, 寫入由計算機的內存中分配出的用戶緩存, 然后根據需要將有用數據從內存中存入計算機硬盤。具體存儲格式可以為多種,該部分中包括的子VI 有讀取數據模塊、數據存儲模塊以及顯示所采集信號的時域圖形的模塊。c)在采集結束后關閉采集卡。
為了使用PCI-1714 進行連續高速的數據采集,需要對采集速率、用戶緩存大小等重要參數進行合理設置。如前所述,數據采集卡進行A / D 轉換時是連續進行的, 也就是說采集卡往板載緩存中放入數據是連續進行的, 而計算機從板載緩存FIFO 中讀取數據放入用戶緩存時是在FIFO 半滿或全滿的狀態下批量讀取的,同時,如果要進行數據的存儲,從用戶緩存再向硬盤中寫入數據時也是批量進行的。
由于用戶緩存的大小受計算機內存空間大小的限制,不可能無限大,在使用過程中,只能盡量設得比較大,一般可以設為內存的十分之一左右。在保持一定的數據采樣率并且用戶緩存確定的情況下, 如果存儲過程中,單批量寫入硬盤的數據過少,會出現不能及時將數據從用戶緩存中讀出, 從而導致用戶緩存溢出的錯誤。而當單批量寫入硬盤的數據過多時,又會出現從用戶緩存讀取數據過快, 可能會讀出空數據的錯誤,所以這幾個參數必須互相配合設定才能使采集卡獲得良好的采集和數據存儲的性能。
4 基于LabVIEW 的數據調用與處理
利用上述程序完成信號采集的同時可以將有用信號存儲,用于后續分析,下面舉例說明如何將存儲之后的波形數據重新調出并進行分析。
將以TXT 格式存儲的數據從文件中調出并進行頻譜分析的程序。在程序前面板中可以同時將一段數據表示的信號時域波形及利用“FFT 功率譜”VI分析獲得功率譜波形顯示出來。
利用LabVIEW 語言編寫一個用于將存儲數據調出并對信號波形特點進行分析的程序,該程序可以將一個具有多信道的監測信號從存儲文件中調出,不同信道的監測信號各不相同,根據信號波形的特點,可以選用相關方法進行信號處理,分析各信號對應的監測環境的變化。利用LabVIEW 所提供的“調用庫函數節點”模塊,可以很方便地把C 語言編寫的程序嵌入LabVIEW 程序中, 并且可以封裝成子VI,供主程序調用。適用于一些LabVIEW 語言編程效率不高的應用場合,利用“調用庫函數節點”模塊編寫的子VI 程序。
5 結束語
從以上分析可以看出, 利用LabVIEW 語言可以方便地解決信號采集與處理領域的相關問題,無論是對數據采集卡PCI1714 的驅動編寫、數據的存儲, 還是對數據的調用與分析都可以充分的調用該語言提供的專用VI, 并且在圖形化語言編寫環境中,獲得清晰的數據流程。而且LabVIEW 語言也支持用戶對VI 的二次開發,并可以調用其他語言編寫的程序, 還可以將用戶自行編寫的程序方便地封裝成標準VI,供后續程序調用,為提高程序編寫的效率及擴展程序功能帶來極大方便。
lc振蕩電路相關文章:lc振蕩電路原理














評論