問題引出
在LabVIEW中編寫測試軟體特別是做算法分析時肯定離不開測試數據,而測試數據的來源無外乎下面兩個主要渠道:
1. 從硬體採集得到
2. 從軟體仿真得到
但一般情況下對於整個系統(如數據採集分析系統)的設計,硬體部分工作往往要落後於軟體部分的工作,但軟體部分也不可能等硬體平臺調試完成後才動工,這時候用於前期算法驗證的數據來源就要依靠於軟體仿真了。
在LabVIEW中表示測試信號的數據類型有數組、波形數據和動態數據三種,針對不同的數據形式,LabVIEW中也有三個不同層次的信號發生器函數,如下圖所示:
這三種層次的函數都能產生基本測試信號,但其使用的難易程度和靈活性不同。其中,ExpressⅥ仿真信號發生器產生動態數據類型的信號,使用起來最簡單,但限制比較多,如一些參數不能在程序中動態設置;普通信號發生器VI產生數組類型的信號,使用起來比較複雜,但更靈活,更接近於其它如C語言的編程方式;波形發生器VI產生波形數據,使用的複雜程度介於兩者之間。
相對來說,波形數據是LabVIEW中最常用的一種方式。波形數據在本質上是由時間起始值t0、dt值(兩個採樣點的時間間隔)以及一維數組Y組合成的一個簇(對應於C語言中的結構體)類型,其物理意義是,對一個模擬信號x(t),從時間t0開始進行採樣和A/D轉換,採樣率為fs,對應採樣時間間隔dt=1/fs,數組Y為各個時刻的採樣值。
對于波形數據的產生,LabVIEW中提供了非常方便的函數,在函數面板中位於「信號處理」-->「波形生成」子選板中,如下圖所示:
下面通過一個簡單的例子演示LabVIEW中仿真波形數據的產生方法。
實例說明
該例要求設計一個簡易的仿真多波形發生器,能夠產生常用的波形數據,包括正弦波、三角波、方波及鋸齒波等常用信號,且可疊加均勻白噪聲,在軟體界面上可設置信號類型、頻率、幅值、偏移量、採樣信息等常用參數。軟體運行主界面如下圖所示:
程序框圖實現
該例程序框圖代碼如下圖所示:
程序代碼較為簡單,主框架採用while循環結構,每隔100ms刷新一次波形。主要調用了「基本函數發生器」及「均勻白噪聲波形」函數,兩者疊加實現,將前面板上對應的參數直接連接到函數中對應的參數即可。
其中,兩個主要函數的參數說明如下圖所示:
本例在前面板上僅設置了幾個主要參數,對於其它的參數採用了默認值。另外,需要注意的是,兩個函數的「採樣信息」參數必須設置完全一樣,才能保證信號疊加的正確性。
總結
這兒介紹了LabVIEW中如何產生常用波形測試數據的方法,對於其它複雜的波形,甚至自定義波形,LabVIEW中也提供了相關的函數,在程序中直接調用即可,大家可以查閱相關的幫助文檔及參考示例。
如果這篇文章對你有用的話,請關注+轉發+收藏+點讚吧。