基于LabVIEW的虛擬頻譜分析儀的設(shè)計與實現(xiàn)
O 引言
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一種圖形化的編程語言,集成了滿足GPIB、VXI、RS-232和RS-485協(xié)議的硬件及數(shù)據(jù)采集卡通訊的全部功能,還內(nèi)置了便于應(yīng)用TCP/IP、ActiveX等軟件標準的庫函數(shù)。利用LabVIEW可以方便地建立各種虛擬儀器。
頻譜分析儀是對無線電信號進行測量的必備手段,是從事電子產(chǎn)品研發(fā)、生產(chǎn)、檢驗的常用工具,應(yīng)用十分廣泛,被稱為工程師的射頻萬用表。傳統(tǒng)的頻譜分析儀的前端電路是一定帶寬內(nèi)可調(diào)諧的接收機,輸入信號經(jīng)變頻器變頻后由低通濾器輸出。濾波輸出信號作為垂直分量,頻率作為水平分量,在示波器屏幕上繪出坐標圖,就是輸入信號的頻譜圖。由于變頻器可以達到很寬的頻率,例如30Hz-30GHz,與外部混頻器配合,可擴展到100GHz以上,所以頻潛分析儀是頻率覆蓋最寬的測量儀器之一,無論測量連續(xù)信號或調(diào)制信號,頻譜分析儀都是很理想的測量工具。但是傳統(tǒng)的頻譜分析儀只能測量頻率的幅度,缺少相位信息,因此屬于標量儀器,而且體積龐大。利用LabVIEW強大的虛擬儀器開發(fā)功能,可實現(xiàn)基于快速傅里葉變換(FFT)的現(xiàn)代頻譜分析儀功能,采用數(shù)字方法直接由模擬/數(shù)字轉(zhuǎn)換器(ADC)對輸入信號取樣,再經(jīng)FFT處理后獲得頻譜圖,可以解決傳統(tǒng)頻譜分析儀價格昂貴,攜帶不便等缺點。
1 虛擬頻譜分析儀總體設(shè)計方案
虛擬頻譜分析儀由數(shù)據(jù)采集卡、計算機和在其上運行的用LabVIEW開發(fā)的應(yīng)用軟件組成,如圖1所示。
虛擬頻譜分析儀利用數(shù)據(jù)采集卡的模擬輸入和模擬輸出兩個功能,用模擬輸出功能產(chǎn)生所需的激勵信號,并將其加到被測網(wǎng)絡(luò)上,再用兩個模擬輸入通道將激勵信號和網(wǎng)絡(luò)輸出端的響應(yīng)信號同時采集到計算機中,經(jīng)處理后,構(gòu)成幅頻和相頻特性曲線,并顯示在計算機屏幕上,最后對模擬生成的信號進行分析,在計算機屏幕上輸出模擬信號的幅頻/相頻特性。
2 虛擬頻譜分析儀組成及功能
2.1 虛擬儀器和頻譜分析儀組成
本文設(shè)計的虛擬頻譜分析儀由周期性信號發(fā)生器、濾波器以及幅頻/相頻特性、頻譜分析結(jié)果三個子模塊組成。信號發(fā)生器子模塊生成兩路模擬輸入信號,一路是可調(diào)頻率、相位和振幅的正弦信號,另一路是指可調(diào)頻率、相位和振幅的余弦信號,最后利用信號合成器把兩路信號混合起來作為生成的2路模擬信號;頻譜分析和濾波器子模塊利用LabVIEW強大的數(shù)字信號處理功能,對這組數(shù)據(jù)進行濾波、加窗、FFT運算處理,得到信號的實部譜和虛部譜,最重要的是得到信號的幅頻特性曲線和相頻特性曲線;在頻譜分析的結(jié)果子模塊中,對生成信號的頻譜進行分析,并將均方根值、一個周期內(nèi)的信號均值等參數(shù)在系統(tǒng)退出時保存到文本文件中。其中,在濾波設(shè)置中可以控制濾波的通過方式以及截止頻率,最后顯示出頻譜分析結(jié)果,系統(tǒng)退出時提示保存當前數(shù)據(jù)到文本文件。
虛擬頻譜分析儀前面板分為3部分:周期性信號發(fā)生器、周期性信號濾波器及幅頻/相頻特性和周期性信號頻譜分析結(jié)果,如圖2所示。圖中顯示的是周期性信號發(fā)生器的界面,圖中正弦波和余弦波信號可以通過鼠標拖拽和旋轉(zhuǎn)按鈕來改變信號的頻率、振幅及相位。當拖拽的時候可以發(fā)現(xiàn)下方的"2路原始模擬信號波形"會發(fā)生變化,而且橫坐標軸的最大值也會發(fā)生變化。程序內(nèi)部通過調(diào)用后面介紹的"XScaleControl.VI"就可以實現(xiàn)這個功能;對于"周期性信號濾波器及幅頻/相頻特性"和"周期性信號頻譜分析結(jié)果"這兩個功能模塊界面限于篇幅不再贅述。
虛擬頻譜分析儀后面板由五個子模塊組成:波形生成模塊,波形分析模塊,控制X軸范圍,濾波器以及幅頻/相頻特性和數(shù)據(jù)保存模塊,如圖3所示。
2.2 虛擬頻譜分析儀子模塊的設(shè)計
(1)波形生成子模塊
要進行頻譜分析,首先得生成模擬信號,本文采取系統(tǒng)的兩個子模塊:Triangle waveform.VI和Sinewaveform.VI生成2路模擬輸入信號,為了實現(xiàn)模擬信號的頻率、相位和幅度的調(diào)節(jié)增加了幾個控制輸入,引腳圖4和圖5所示。
在圖4和圖5中,輸入引腳和輸出引腳完全相同,"offset"是指波形的偏移量,一般不進行設(shè)置;"resetsignal"是一個布爾型的輸入控制,若加載為True時則可以復位波形,若為False則不對波形進行復位;"frequency"是指生成信號的頻率;"amplitude"是指想要生成信號的振幅;"phase"是指生成信號的相位;"error in"和"error out"是指當程序有異常發(fā)生時的輸入和輸出;"sampling info"是指要生成信號的采樣率,缺省設(shè)定為1000,即一秒采樣1000個點;"Duty Cycle"即占空比,是指一串理想的脈沖序列中(如方波),正脈沖的持續(xù)時間與脈沖總周期的比值。
(2)控制X軸范圍子模塊
子模塊XscaleControl.VI用于實現(xiàn)動態(tài)控制波形X軸范圍,共有4個輸入引腳,其中3個是引用型reference輸入,一個是常數(shù)型輸入引腳。隨著輸入信號頻率的增大,若輸出波形的X軸范圍固定不變?yōu)?的話,那么波形顯示太密,導致根本看不清楚圖形,故需要當頻率增大時,波形x軸范圍相對縮小,讓波形顯示更加清楚。其中三個引用型輸入引腳分別指代正弦波頻率、三角波頻率和波形控件WaveformGraph三個原控件的屬性節(jié)點(propertynode)。內(nèi)部工作原理是當正弦波頻率和三角波形頻率二者中有任一個大于10HZ時就按照二者頻率之中較大的那個頻率的倒數(shù)的數(shù)值來當作波形控件WaveformGraph的橫坐標軸的最大值,實現(xiàn)了當模擬信號頻率增大時波形依然清晰的功能,從而實現(xiàn)了動態(tài)地控制波形控件x軸的范圍。
(3)波形分析子模塊
LabVIEW提供了豐富的波形頻譜分析工具,最典型的就是Amplitude and Level Measurement.VI,它的存放路徑是后面板中Functions->Signal Analysis,參數(shù)對話框中共分為4個區(qū)域,分別是要求進行的幅值特征值求取的項目(Amplitude Measurements)、當前信號幅值求取的結(jié)果(Results)、輸入信號預(yù)覽窗口(Input Signal)和加窗后信號預(yù)覽窗口(Result Signal),其中最重要的是幅值特征值求取項目的設(shè)置,需要求取哪個特征值,就在它前面劃勾,Amplitude and Level Measurement.VI自動在其圖標中添加這一輸出端口。頻譜分析Amplitudeand Level Measurement.VI功能引腳如圖7所示。
該模塊有3個輸入引腳和8個輸出引腳。3個輸入引腳分別如下:"Restart Averaging"引腳標識是否重啟選定的平均處理過程,缺省為False;"Signals"引腳是輸入要分析的信號;"error in(no error)"引腳是對在執(zhí)行到這個VI之前若是發(fā)生錯誤條件的描述;8個輸出引腳敘述如下:"RMS"引腳指信號均方根值;"Positive Peak"引腳指正向峰值;"error out"引腳指子VI執(zhí)行錯誤時的輸出信息;"Cycle Average"引腳指一個周期的平均值;"Cycle RMS"引腳指一個周期的均方根值;"Mean(DC)"引腳指信號均值;"Negative Peak"引腳指負向峰值;"Peak to Peak"引腳指峰一峰值,即輸入信號波形的正向和負向的最大振幅值。
把模擬生成的2路信號作為此VI的輸入引腳"Signals",就可以對生成的信號進行分析,從而輸出該信號的一些參數(shù)信息,如信號均值、峰值和一個周期的均方根值等。
另外一個比較典型的信號分析VI就是FFTSpectrum(Real-Im).VI,該VI可以對輸入的時域信號計算出快速傅立葉變換頻譜,并分別返回波形的實部譜和虛部譜,在實際應(yīng)用中進行實部譜和虛部譜的分析也很有意義,傅立葉頻譜變換FFT Spectrum.VI功能引腳如圖8所示。
該模塊共有10個引腳。其中"restart averaging(F)"引腳和上面提到的功能一樣,用來標識是否重啟選定的平均處理過程;"time signals"引腳標識輸入的時域信號;"window"引腳指加窗設(shè)置,加窗方式包括可以有多種不同的方式,如Uniform、Hanning、Hamming以及Blackman等;"error in(noerror)"引腳和"error out"引腳標識執(zhí)行此VI有錯誤發(fā)生時的輸入和輸出信息;"averaging parameters"引腳指輸入波形信號的平均參數(shù);"real parts"引腳標識波形的實部譜,輸出可以是用graph圖像直觀描述的方式也可以是一堆參數(shù)的描述形式;"imaginary parts"引腳指輸入波形的虛部譜,描述方式同實部譜;其余兩個引腳"averaging done"引腳和"averages completed"引腳一般不用,都是對輸入波形的一些不常用的參數(shù)的敘述。
(4)濾波器以及幅頻/相頻特性子模塊
濾波器子模塊處于Functions->Signal Analysis子模板中,它的設(shè)置分為4個區(qū)域,分別為濾波器參數(shù)設(shè)置(Filtering Type)、兩個預(yù)覽窗口和預(yù)覽模式設(shè)定區(qū)域(VIew Mode)。濾波器種類有四種,分別為高通、低通、帶通以及平滑濾波。前三種都容易理解,而平滑濾波主要用于對信號進行局部平均,消除周期性噪聲或白噪聲。低通濾波器子模塊Filter.VI的功能引腳如圖9所示。
帶通濾波器子模塊BandFilter.VI的功能引腳如圖10所示。顧名思義,帶通濾波器的意思就是頻率在某個范圍內(nèi)的波形可以通過,它比圖9中的低通濾波器就多了一個引腳Upper Cut-Off。
(5)數(shù)據(jù)保存子模塊
數(shù)據(jù)保存子模塊即SaveData.VI功能引腳如圖11所示。它把想要保存的數(shù)據(jù)處理成統(tǒng)一的格式,在系統(tǒng)退出時保存到文本文件中。
其中,只有兩個引腳是輸出端,即"string"和"系統(tǒng)日期和時間",分別代表格式化輸出的字符串和系統(tǒng)當期日期和時間。輸出端"string"在系統(tǒng)自動存儲文件中的一條記錄格式如下:
"周期平均值:-0.258667正峰值:2.845332信號均方根值:2.845332 3dB帶寬:392.968235.
2007年8月21日12:21:32"。其中,"周期平均值"表示波形信號在一個周期內(nèi)的信號平均值;"正峰值"表示波形信號達到的最大幅度值;"信號均方根值"表示波形信號按均方根公式求出的值;"3dB帶寬"表示通過子VI求出的帶寬幅度值;最后一個代表的是存儲該條記錄的日期和時間。其中主要用到LabVIEW提供的Format函數(shù),通過把多個中文字符串和一個數(shù)字通過Fromat函數(shù)格式化到同一個字符串"string"中輸出,從而為系統(tǒng)退出時保存數(shù)據(jù)做準備,因為若是把保存數(shù)據(jù)放到while循環(huán)里,則會因一直提示保存數(shù)據(jù)而導致程序死循環(huán)。
圖11中,有六個輸入端引腳,其中"RMS"引腳表示信號的周期平均值,"Positive Peak"引腳表示正向最大峰值,"CycleAverage"引腳表示信號均方根值,"detected frequencies"引腳是指檢測到的頻率,而"3db帶寬"引腳和"上限帶寬"引腳是通過嵌套的—個子Ⅵ即Compute 3db bandwidth.VI計算出來的。
3 結(jié)語
基于LabVIEW編程環(huán)境下的虛擬頻譜分析儀主要實現(xiàn)了時域分析和頻域分析兩個功能。信號的時域分析主要是測量測試信號經(jīng)濾波處理后的特征值,這些特征值以一個數(shù)值表示信號的某些時域特征,是對測試信號最簡單直觀的時域描述。將測試信號采集到計算機后,在測試VI中進行信號特征值處理,并在測試VI前面板上直觀地表示出信號的特征值,可以給測試VI的使用者提供一個了解測試信號變化的快速途徑。信號的特征值分為幅值特征值、時間特征值和相位特征值,本文對幅值特征值的分析進行了設(shè)計。
信號的頻域分析就是根據(jù)信號的頻域描述來估計和分析信號的組成和特征量。也就是研究信號的頻率結(jié)構(gòu),即求取其分量的幅值、相位按頻率的分布規(guī)律,并建立以頻率為橫軸的各種譜。對于周期信號可將其展開為傅立葉系數(shù),其頻譜具有離散性、諧波性和收斂性;對于非周期信號可用頻譜密度函數(shù)分析其頻率構(gòu)成,其頻譜具有連續(xù)性。
頻域分析包括頻譜分析、功率譜分析、相干函數(shù)分析以及頻率響應(yīng)函數(shù)分析。本文實現(xiàn)了頻譜分析,即信號的幅頻特性和相頻特性。