Design of the Virtual Signal Analyzer on LabWindows/CVI Platform
張 揚 肖世德
(西南交通大學(xué)機械工程學(xué)院,四川 成都 610031)
?
LabWindows/CVI平臺下虛擬信號分析儀的設(shè)計
Design of the Virtual Signal Analyzer on LabWindows/CVI Platform
張揚肖世德
(西南交通大學(xué)機械工程學(xué)院,四川 成都610031)
摘要:針對目前傳統(tǒng)信號分析儀功能單一、修改不易、使用不便等缺點,以LabWindows/CVI為平臺,研究開發(fā)了一種多功能虛擬信號分析儀。設(shè)計時把人機交互界面的響應(yīng)處理和信號采集與顯示分開成兩個線程運行,大大縮短用戶操作的等待時間,提高了系統(tǒng)運行效率。該信號分析儀具備偽隨機信號產(chǎn)生、雙通道信號采集、時域分析、頻譜分析、互相關(guān)函數(shù)計算等功能。實驗測試表明,該虛擬信號分析儀基本功能完全實現(xiàn),信號分析結(jié)果正確,說明了推廣發(fā)展虛擬儀器的可行性和必要性。
關(guān)鍵詞:虛擬儀器集成電路通信C語言信號處理時域頻域測量儀器濾波干擾傅里葉變換
Abstract:Aiming at the disadvantages of traditional single analyzers, e.g., unitary function, uneasy to revise, and inconvenient to use, with LabWindows/CVI as the platform, the multi-function virtual signal analyzer has been researched and developed. In the design, the response processing of man machine interactive interface and signal acquisition and display are separated into two threads for running, thus the waiting time of user operation is shortened, and the system operating efficiency is enhanced. The signal analyzer offers multiple functions, including random signal generation, dual-channel signal acquisition, time domain analysis, spectral analysis, correlation function calculation, etc. The experimental tests show that the virtual signal analyzer fully realizes the basic functions, the results of signal analysis are correct, thus the feasibility and necessity of developing virtual instruments are illustrated.
Keywords:Virtual instrumentIntegrated circuitCommunicationC languageSignal processingTime domainFrequency domain
Measuring instrumentFilteringInterferenceFourier transform
0引言
虛擬儀器技術(shù)是伴隨著集成電路、計算機技術(shù)和通信技術(shù)的迅速發(fā)展而產(chǎn)生的。它通過軟件將儀器與計算機有機地融合為一體,從而把計算機強大的數(shù)據(jù)計算處理能力和儀器硬件的測量、控制能力結(jié)合在一起,大大減少了儀器硬件成本,并且顯著縮小了儀器體積[1]。與傳統(tǒng)的固定儀器相比,用戶可以根據(jù)需求,靈活地對虛擬儀器進行功能設(shè)計、維護和系統(tǒng)升級。
目前能夠用于虛擬儀器系統(tǒng)開發(fā)且比較成熟的開發(fā)工具可以分為兩類:第一類是通用的可視化編程軟件,主要有Microsoft公司的Visual C++和Visual Basic等;第二類是專用于虛擬儀器開發(fā)的編程軟件,主要有NI公司圖形化的編程環(huán)境LabVIEW和文本語言的編程環(huán)境LabWindows/CVI,以及NI公司和Microsoft合作開發(fā)的Measurement Studio等[2-8]。
多功能虛擬信號分析儀設(shè)計所采用的LabWindows/CVI是以ANSIC為核心的交互式C語言開發(fā)平臺,它將功能強大、使用靈活的C語言平臺與用于數(shù)據(jù)采集分析和顯示的測控專業(yè)工具有機地結(jié)合起來。利用集成化開發(fā)環(huán)境、交互式編程方法、函數(shù)面板和豐富的庫函數(shù)大大增強C語言的功能,為C語言的開發(fā)設(shè)計人員編寫檢測系統(tǒng)、自動測試環(huán)境、數(shù)據(jù)采集系統(tǒng)、過程監(jiān)控系統(tǒng)等應(yīng)用軟件提供了一個理想的軟件開發(fā)環(huán)境。
1信號采集與處理的關(guān)鍵技術(shù)
信號處理是指對信號進行某種加工變換或運算(如濾波、變換、估計、識別等)。廣義的信號處理可把信號分析也包括在內(nèi)。信號處理包括時域和頻域處理。時域處理中最典型的是波形分析,例如示波器就是一種最通用的波形分析和測量儀器。把信號從時域變換到頻域進行分析和處理,可以獲得更多的信息。
因此頻域處理更為重要。信號處理主要是濾波,把信號中感興趣的部分(有效信號)提取出來,抑制(削弱或濾除)不感興趣的部分(干擾或噪聲)[5-6]。
1.1信號時域處理的關(guān)鍵技術(shù)
時域分析是對信號的時域波形的分析,從記錄的信號中提取各種有用的信息或?qū)⒂涗浀男盘栟D(zhuǎn)換成所需要的形式。通過不同的時域處理方法,可以確定實測波形的幅值和時間歷程。通常時域分析包括信號參數(shù)測試(峰值、有效值、均值等)、自相關(guān)、微積分、抽取等分析算法。
1.1.1自相關(guān)分析
在測試結(jié)果的分析中,相關(guān)是一個非常重要的概念[3]。相關(guān)是指變量之間的線性關(guān)系。變量x、y之間相關(guān)程度可以用相關(guān)系數(shù)ρxy來表示:
(1)
式中:E為數(shù)學(xué)期望;μx、μy分別為x、y的均值;σx、σy分別為x、y的標(biāo)準(zhǔn)差。
設(shè)x(t)是某各態(tài)歷經(jīng)過程的一個記錄樣本(所謂各態(tài)歷經(jīng)過程是指樣本的集合平均等于時間平均),x(t+τ)是x(t)時移τ后的樣本。x(t)的自相關(guān)函數(shù)定義為:
(2)
設(shè)x(t)、x(t+τ)的相關(guān)系數(shù)為ρx(t)x(t+τ),簡寫作ρx(τ)。因為x(t+τ)、x(t)具有相同的均差和標(biāo)準(zhǔn)差,所以:
(3)
將式(3)的分母移項到等式的左邊,就可以得到:
(4)
在實際測量中,只能得到信號x(t)的N個采樣值x(n),所以必須通過這N個點采樣值來估計信號的自相關(guān)函數(shù)r(m),計算:
(5)
由于只有N個值,因此對于每一個固定的延遲,可以利用的數(shù)據(jù)只有N-1-|m|個。根據(jù)式(5)則可得到實際計算中使用的算法為:
(6)
LabWindows/CVI所使用的計算公式與式(6)略有不同,LabWindows/CVI中自相關(guān)函數(shù)的計算公式為:
(7)
1.1.2互相關(guān)分析
兩個隨機信號x(t)和y(t)的互相關(guān)函數(shù)Rxy(τ)定義為:
(8)
由于:
(9)
因為|ρxy|≤1,故有μxμy-σxσy≤Rxy(τ)≤μxμy+σxσy。對于多數(shù)隨機過程,若x(t)和y(t)之間沒有同頻率的周期成分,那么當(dāng)時移τ很大時彼此無關(guān),即ρxy(τ→∞)→0,Rxy(τ→∞)→μxμy。
互相關(guān)函數(shù)有重要的應(yīng)用,它是在噪聲背景下提取有用信息的一個非常有效的手段。設(shè)噪聲信號的N個采樣序列為x(n)、y(n),LabWindows/CVI中使用的互相關(guān)函數(shù)算法為:
(10)
1.2信號頻域處理的關(guān)鍵技術(shù)
1.2.1 快速傅里葉變換(FFT)
對于離散時間周期信號,其傅里葉級數(shù)形式如下:
(11)
(12)
(13)
(14)
式(13)、(14)為離散傅里葉變換對,在時頻域均為有限長且都是離散的。
由上述可知,X(k)將是x(n)的傅里葉變換或是對其傅里葉變換的某種程度上的近似。
分裂基算法是最好的快速傅里葉變換算法,該算法的基本思路是對偶序號輸出使用基2算法,對奇序號輸出使用基4算法。算法推導(dǎo)如下。
對于N=2M點DFT,對k的偶序號項用頻率抽取(DIF)基2的FFT算法,即:
(15)
對k的奇序號項用基4的算法,即:
(16)
(17)
式中:r=0,1,2,…,N/4-1。式(15)、(16)、(17)構(gòu)成了分裂基算法的L型算法結(jié)構(gòu)。
1.2.2自功率譜密度分析
一個信號可以從時域描述,也可以從頻域來描述,這兩種描述是存在一個對應(yīng)關(guān)系的。功率譜分析能夠提供信號的頻域信息,是研究平穩(wěn)隨機過程的重要方法。對于遍歷隨機過程的一個樣本序列,這個序列只是無窮多個可能的隨機序列中的一個,因此這個序列實際上不能真正代表整個隨機過程。但是不管選取哪個序列,通過該序列計算得到的自相關(guān)函數(shù)總是相同的,即由某一個序列計算得到的自相關(guān)函數(shù)能夠作為對過程本質(zhì)的描述。因此,可從自相關(guān)函數(shù)出發(fā)考慮信號的功率譜問題。
信號x(t)的自功率譜密度定義為其自相關(guān)函數(shù)的傅里葉變換。設(shè)x(t)的自相關(guān)函數(shù)為Rx(τ),則x(t)的自功率譜密度為:
(18)
同時有:
(19)
自功率譜密度簡稱自功率譜或自譜。
若τ=0,根據(jù)式(2)自相關(guān)函數(shù)Rx(τ)和式(18)自功率譜Px(f)的定義,可以得到:
(20)
(21)
Px(f)表示了信號的功率沿頻率軸的分布,故稱Px(f)為自功率譜密度函數(shù)。
經(jīng)典譜估計的基本方法:在實際應(yīng)用中,由于只能獲得測量信號的有限長觀察序列,因此只能用所得的有限長序列來估計信號的功率譜,這就產(chǎn)生了譜估計。經(jīng)典譜估計的方法有直接法和間接法兩種。直接法又稱周期圖法。設(shè)x(n)為時域信號的N點采樣序列,x(k)是采樣序列的傅里葉變換,則用周期圖法估計的信號功率譜為:
(22)
(23)
1.2.3互功率譜密度分析
互功率譜密度分析類似于自功率譜密度,如果信號x(t)和y(t)的互相關(guān)函數(shù)Rxy(τ)滿足傅里葉變換的條件:
(24)
則信號x(t)和y(t)的互功率譜密度函數(shù)定義為:
(25)
對于一個單輸入單輸出的線性系統(tǒng),設(shè)系統(tǒng)的頻率響應(yīng)為H(f),若其輸入為x(t),輸出為y(t),則有:
Pxy(f)=H(f)Px(f)
(26)
故由輸入信號的自功率譜和輸入輸出的互功率譜就可以直接得到系統(tǒng)的頻率響應(yīng)函數(shù)。所得到的H(f)不僅含有幅頻特性,而且含有相頻特性。
對于N點離散序列x(n)、y(n),設(shè)其傅里葉變換為X(k)、Y(k),LabWindows/CVI使用的互譜計算公式為:
(27)
2虛擬信號分析儀的設(shè)計
本文設(shè)計的雙通道多功能虛擬信號分析儀共由兩大部分組成:硬件部分和軟件部分。
2.1硬件部分
系統(tǒng)硬件采用某公司的STM32F4開發(fā)板。使用STM32F407ZGT6內(nèi)部ADC對信號進行采樣。由于外部輸入信號可能有負壓部分,因此需要對信號進行平移。輸入級采用1 MΩ下拉電阻接同相放大器的結(jié)構(gòu)(下拉電阻在原理圖上未畫出),使輸入阻抗約為1 MΩ。經(jīng)過緩沖結(jié)構(gòu)后,將信號與參考源產(chǎn)生的1.5 V直流電壓相加,結(jié)構(gòu)采用同相加法器,如圖1所示。
圖1 輸入緩沖和信號平移電路圖
為了在緩沖級能夠處理直流信號和負壓信號,運放部分需要采用雙電源供電,而開發(fā)板提供的電壓只有+5 V和+3.3 V兩種。由于這里需要的電流較小、噪聲小,所以采用反向電荷泵來產(chǎn)生-3.3 V的電壓,采用的芯片為TPS60400,僅需3個外部1 F電容即可以產(chǎn)生-3.3 V,使得整體電路簡單方便。具體電路如圖2所示。
圖2 電荷泵電路圖
參考源采用TL431產(chǎn)生2.495 V的電壓,通過兩個電阻分壓產(chǎn)生1.5 V的參考電壓,經(jīng)過運放緩沖給加法器提供參考。具體電路如圖3所示。
圖3 參考源電路圖
2.2 軟件部分
軟件部分按功能劃分為上位機和下位機。上位機負責(zé)數(shù)據(jù)處理與人機交互,下位機負責(zé)信號采樣。上位機和下位機之間采用開發(fā)板自帶的USB串口通信。
2.2.1上位機部分
上位機共有兩個線程。第一線程利用中斷的方法,主要對面板的按鍵和文本輸入框等控件進行響應(yīng),以獲取用戶的設(shè)置信息。第二線程的軟件流程圖如圖4所示,主要負責(zé)數(shù)據(jù)的采集和信號的顯示[7,9]。
圖4 第二線程流程圖
2.2.2串口通信
波特率設(shè)置為115 200 bit/s,信號位8位,1位終止位,無校驗。上位機的串口設(shè)置為1~15,檢測不到串口時會有提示,此時檢查連線,若連線正常,打開控制面板→設(shè)備管理器,查看開發(fā)板的端口號是否在1~15內(nèi),若不在,修改端口號。
2.2.3下位機部分
(1)下位機的主函數(shù)流程圖如圖5所示,主函數(shù)主要執(zhí)行兩個任務(wù),一是各模塊的初始化(系統(tǒng)時鐘、ADC、定時器、串口),二是循環(huán)檢測串口是否接收到數(shù)據(jù)。為了防止誤收數(shù)據(jù),設(shè)定采樣率必須以“SR”(SampleRate)開頭,后跟兩個8位數(shù)據(jù)有效,并且為了防止設(shè)置的采樣率過高,與0x1fff按位與,使設(shè)定的采樣率不大于4 096個/s。
圖5 主函數(shù)流程圖
(2)ADC采用PB0(ADC1通道8)PC4(ADC1通道14),具體設(shè)定如下。
//先初始化PB0(ADC1通道8)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
//PB0 通道8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
//模擬輸入
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//不帶上下拉
GPIO_Init(GPIOB, &GPIO_InitStructure);
//初始化
//再初始化PC4(ADC1通道14)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
//PC4 通道14
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
//模擬輸入
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//不帶上下拉
GPIO_Init(GPIOC, &GPIO_InitStructure);
//初始化
(3)串口的端口配置和初始化設(shè)置如下。
//USART1端口配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
//GPIOA9與GPIOA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
//復(fù)用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//速度50 MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
//推挽復(fù)用輸出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
//上拉
GPIO_Init(GPIOA,&GPIO_InitStructure);
//初始化PA9,PA10
//USART1初始化設(shè)置
USART_InitStructure.USART_BaudRate = bound;
//波特率設(shè)置
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
//字長為8位數(shù)據(jù)格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;
//一個停止位
USART_InitStructure.USART_Parity = USART_Parity_No;
//無奇偶校驗位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
//無硬件數(shù)據(jù)流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
//收發(fā)模式
USART_Init(USART1, &USART_InitStructure);
//初始化串口1
(4)系統(tǒng)時鐘采用168 MHz即可滿足要求,定時器的設(shè)定時間公式為:
Tout=[(arr+1)×(psc+1)]/Tclk
式中:Tclk為TIM3的輸入時鐘頻率,MHz;Tout為TIM3溢出時間,μs。
為了使采樣率從1~4 096之間步進1時,有采樣間隔時間的改變,設(shè)置分頻系數(shù)(psc)為839,這樣采樣率與定時器計數(shù)個數(shù)(arr)之間的關(guān)系為arr=100 000/SR-1。因此需要改變采樣率時,只需要根據(jù)公式計算出arr的值并修改定時器中斷時間即可。這里為了分辨X通道和Y通道的數(shù)據(jù),在兩組數(shù)據(jù)發(fā)送前,發(fā)送“X”和“Y”以作區(qū)分。ADC采樣為12位數(shù)據(jù),因此傳遞數(shù)據(jù)時需要先發(fā)高8位再發(fā)低8位。定時器中斷流程圖如圖6所示。
圖6 定時器中斷流程圖
3系統(tǒng)功能測試
將溫度傳感器LM35輸出端接入X通道,此時信號分析儀經(jīng)測試得到該信號平均值為0.252 V,有效值也為0.252 V,萬用表測得傳感器LM35輸出電壓為219 mV。
將兩個溫度傳感器LM35輸出端分別接入X和Y通道,信號分析儀經(jīng)測試得到X通道信號平均值為0.249 V,有效值為0.250 V,萬用表測得連接X通道的傳感器LM35輸出電壓為221 mV;Y通道信號平均值為0.232 V,有效值為0.233 V,萬用表測得連接Y通道的傳感器LM35輸出電壓為228 mV。
使用函數(shù)發(fā)生器產(chǎn)生一個該信號分析儀量程內(nèi)的正弦波,分別連接到示波器和本信號分析儀輸入端,兩者顯示效果相近,測試結(jié)果符合預(yù)期要求。
4結(jié)束語
傳統(tǒng)儀器功能相對單一,并且不容易進行擴展。為順應(yīng)儀器發(fā)展的趨勢,需要進行虛擬儀器的研究設(shè)計。在LabWindows/CVI環(huán)境下,通過硬件電路設(shè)計及上位機和下位機軟件的編寫,開發(fā)完成了虛擬信號分析儀,尤其是采用多線程數(shù)據(jù)采集技術(shù),在響應(yīng)用戶操作方面取得了比較明顯的效果。通過測試,該儀器能夠完成數(shù)據(jù)采集、實現(xiàn)信號時域波形顯示、相關(guān)性計算以及統(tǒng)計信息實時顯示線性振幅譜等功能,結(jié)果正確可靠,表明了推廣發(fā)展虛擬儀器的可行之性。
參考文獻
[1] 馬青亮,周倫彬,李振娜. 基于LabWindows/CVI的信號分析儀的設(shè)計[J]. 中國測試, 2009,35(6):50-53.
[2] 馬青亮. 基于LabWindows/CVI的信號分析儀的研究[D]. 廣州:廣東工業(yè)大學(xué),2008.
[3] 周林,栗秋華,張鳳.基于虛擬儀器的信號頻域分析與處理系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代科學(xué)儀器,2006(6):44-47.
[4] 周浩敏. 信號處理技術(shù)基礎(chǔ)[M]. 北京:北京航空航天大學(xué)出版社,2004:35-37.
[5] 詹惠琴,古軍,袁亮. 虛擬儀器設(shè)計[M]. 北京:高等教育出版社,2008:163-167.
[6] 奧本海姆. 信號與系統(tǒng)[M].西安:西安交通大學(xué)出版社,1997:371-374.
[7] 陳莉,林圳杰.基于LabWindows/CVL多線程研究與工程應(yīng)用[J].工業(yè)控制技術(shù),2006(10):92-94.
[8] 崔紅梅,麻碩士,裴喜春,等.基于LabWindows/CVI平臺的虛擬數(shù)字信號分析儀的研究與開發(fā)[J].計量技術(shù),2005(11): 24-26.
[9] 李改利,王紅軍,趙建輝. LabWindows/CVI平臺下數(shù)據(jù)共享技術(shù)研究[J]. 機械工業(yè)學(xué)院學(xué)報, 2007(3):20-22.
中圖分類號:TH7;TP311
文獻標(biāo)志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201602023
修改稿收到日期:2015-05-18。
第一作者張揚(1987-),男,現(xiàn)為西南交通大學(xué)機械工程專業(yè)在讀碩士研究生;主要從事信號分析與虛擬儀器的研究。