摘 要:簡(jiǎn)要介紹了虛擬儀器的組成,基于Labwindows/CVI和NI公司的PXI-6670E數(shù)據(jù)采集卡,,設(shè)計(jì)了一個(gè)虛擬數(shù)字示波器,。該系統(tǒng)功能強(qiáng)大,不僅具有實(shí)時(shí)采集功能,,還具有頻譜分析,、加窗處理、濾波功能和數(shù)字存儲(chǔ)等功能,。
關(guān)鍵詞:虛擬儀器,;Labwindows/CVI;數(shù)據(jù)采集卡,;頻譜分析;虛擬示波器
引言
虛擬儀器中有一類是基于多功能DAQ卡的虛擬儀器,,結(jié)構(gòu)簡(jiǎn)單,開發(fā)成本低,,目前已經(jīng)得到了廣泛的應(yīng)用,。本文以一個(gè)基于多功能DAQ卡的虛擬數(shù)字示波器為例,來(lái)說(shuō)明如何開發(fā)基于多功能DAQ卡的虛擬儀器,。
虛擬數(shù)字示波器的結(jié)構(gòu)與組成
虛擬數(shù)字示波器由一塊PXI總線的多功能數(shù)據(jù)采集卡和相應(yīng)的軟件組成,。將它們安裝在一臺(tái)運(yùn)行Windows的PC上,即構(gòu)成一個(gè)功能強(qiáng)大的可存儲(chǔ)數(shù)字示波器,。數(shù)字示波器的前面板如圖1所示,。
● 數(shù)據(jù)采集卡。
設(shè)計(jì)中所采用的是NI公司生產(chǎn)的多功能數(shù)據(jù)采集卡PXI-6670E,,其主要功能如下:
64路單端/32路差分模擬輸入,;12位精度;1.25MSPS采樣速度,;1.25MSPS磁盤寫入速度,;±0.05~±10V輸入范圍;兩路12位模擬輸出,;8條數(shù)字I/O線,;兩路24位計(jì)數(shù)器/定時(shí)器。
● 儀器功能,。
本例虛擬數(shù)字示波器具有實(shí)時(shí)數(shù)據(jù)采集,、頻譜分析、加窗處理和濾波等功能,。在虛擬數(shù)字示波器主面板上有數(shù)據(jù)采集,、頻譜分析,、加窗處理,、濾波功能等功能鍵,,按相應(yīng)的功能鍵就可進(jìn)入相應(yīng)的子面板。
軟件的設(shè)計(jì)與實(shí)現(xiàn) ,。
● 軟件開發(fā)環(huán)境,。
虛擬數(shù)字示波器軟件設(shè)計(jì)采用了基于C語(yǔ)言的編程環(huán)境LabWindows/CVI。LabWindows/CVI支持?jǐn)?shù)值型,、布爾型,、文本型和串等數(shù)據(jù)類型,而且最大優(yōu)點(diǎn)是能夠通過對(duì)話框形式的交互式操作生成標(biāo)準(zhǔn)C程序代碼,。另外LabWindows/CVI提供了非常豐富的調(diào)試工具,包括單步執(zhí)行,、斷點(diǎn)、變量查看,、監(jiān)視窗口等,,這些功能使程序的調(diào)試變 得更為容易。
● 主要功能模塊,。
虛擬數(shù)字示波器主要由軟件控制完成信號(hào)的采集和顯示處理,,功能結(jié)構(gòu)框圖如圖2所示。
在數(shù)據(jù)采集面板中主要完成以下功能:設(shè)置通道,、設(shè)置采樣頻率,、設(shè)置產(chǎn)生方式、顯示波形等,,其軟面板如圖3所示,。
在數(shù)據(jù)采集面板中主要完成以下功能:對(duì)實(shí)時(shí)采集的信號(hào)和自行產(chǎn)生的信號(hào)進(jìn)行頻譜分析,查看譜線等功能,,其軟面板如圖4所示,。
加窗處理面板對(duì)實(shí)時(shí)采集的信號(hào)和自行產(chǎn)生的信號(hào)加窗處理(包括海明窗、漢明窗,、平滑窗和布拉克曼窗等),,其軟面板如圖5所示。
在濾波處理面板中包括以下功能:對(duì)實(shí)時(shí)采集的信號(hào)和自行產(chǎn)生的信號(hào)進(jìn)行濾波處理(包括單步濾波法,、多步濾波法和傳統(tǒng)方法等),,其軟面板如圖6所示。
● 源程序文件的生成,。
當(dāng)完成面板各個(gè)控件的設(shè)置后,,就可以產(chǎn)生程序的代碼函數(shù)了。具體方法為:把已完成的面板定為當(dāng)前響應(yīng)狀態(tài),,在[Code]菜單中,,選中[Generate]中的[All Code],在彈出的對(duì)話框中選定函數(shù)主面板和退出函數(shù),,就能產(chǎn)生與用戶接口文件相對(duì)應(yīng)的框架代碼函數(shù),。
● 添加程序代碼,。
上一步自動(dòng)生成的是控件對(duì)應(yīng)的函數(shù)的框架,要使控件完成一定的功能,,必須添加程序代碼來(lái)控制控件,。其中main()函數(shù)是程序的入口,它的功能是初始化程序,,裝載用戶面板并顯示,,如要完成其他功能須添加代碼。以下這段代碼實(shí)現(xiàn)數(shù)據(jù)采集功能,,程序通過調(diào)用數(shù)據(jù)采集按鈕的回調(diào)函數(shù)SHOU進(jìn)行外部采集,。
int CVICALLBACK SHOW(int panel,int CONTROL,int event,void *callbackData,int eventData1,int eventData2)
{
int NumChan;/*定義所用通道*/
double ActScanRate;/*定義采樣速率*/
SWITCH (event)
{
case EVENT_COMMIT:
nidaqAICreateTask(“daq::1!(0)”, kNidaqWaveformCapture, &NumChan,&AiTask);/*創(chuàng)建采樣任務(wù)*/
nidaqAIConfigScanClockRate(AiTask,400000,&ActScanRate); /*設(shè)置采樣速率*/
nidaqAIConfigBuffer(AiTask,1000,kNidaqFinite);/*設(shè)置采樣數(shù)據(jù)緩沖區(qū)*/
nidaqAIStart(AiTask);/*啟動(dòng)采樣*/
nidaqAIRead(AiTask,“daq::1!(0)”,1000,-1.0,wave);/*讀取采樣數(shù)據(jù)*/
nidaqAIStop(AiTask);/*結(jié)束采樣*/
DeleteGraphPlot(EEpanel,EEPANEL_WAVEGRAPH, -1,VAL_IMMEDIATE_DRA);/*刪除顯示的波形*/
PlotY(EEpanel, EEPANEL_WAVEGRAPH, wave, 1000, VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_YELLOW); /*顯示波形*/
break;
}
return 0;
}
限于篇幅,其他功能模塊的實(shí)現(xiàn)這里就不一一介紹了,。
● 保存項(xiàng)目文件,,然后編譯運(yùn)行。
結(jié)論
本文設(shè)計(jì)的虛擬數(shù)字示波器不僅具有一般臺(tái)式數(shù)字存儲(chǔ)器的功能,,而且充分發(fā)揮了微機(jī)強(qiáng)大的功能和軟件設(shè)計(jì)的靈活性,,而且此虛擬數(shù)字示波器的設(shè)計(jì)包含了基于多功能DAQ卡的虛擬儀器設(shè)計(jì)的基本思路和方法,用戶可以參照這種方法來(lái)設(shè)計(jì)其他虛擬儀器,。