孫玲
(江蘇信息職業(yè)技術學院電子信息工程系,江蘇無錫214153)
數(shù)據(jù)采集在現(xiàn)代工業(yè)生產及科學研究中的重要地位日益突出,在信號測量、圖像處理、音頻信號處理等測量中,都要求進行高速、高精度的數(shù)據(jù)采集。這就對數(shù)據(jù)采集系統(tǒng)的設計提出了2方面的要求:1)要求接口簡單靈活且有較高的數(shù)據(jù)傳輸率;2)由于數(shù)據(jù)量通常較大,要求主機能夠對數(shù)據(jù)做出快速反應,并及時進行分析和處理。常用的數(shù)據(jù)采集卡一般是PCI卡或是ISA卡,這些采集卡存在諸多缺點,比如安裝不方便,傳輸速度慢,受計算機插槽數(shù)量、地址、中斷等資源的限制,可擴展性差等。而通用串行總線(Universal Serial Bus,簡稱USB)具有高傳輸速度、易擴展、熱插拔和即插即用等特點,很好地克服了數(shù)據(jù)采集卡的缺點,容易實現(xiàn)低成本、高可靠性、多點的數(shù)據(jù)采集[1-2]。
USB-6281是National Instruments推出的一款USB高精度多功能M系列數(shù)據(jù)采集(DAQ)板卡,在高采樣率下也能保持高精度。USB-6281是專為移動應用或空間上有限制的應用設計的,其即插即用的安裝最大程度降低了配置和設置時間,同時它直接與螺絲端子相連,從而降低了成本并簡化信號的連接。NI-DAQmx驅動程序和測量服務軟件提供了簡單易用的配置和編程界面,以USB-6281為硬件平臺,借助其提供的USB接口和NI-DAQmx驅動軟件,采用VC++高級語言編程,完成數(shù)據(jù)高速采集系統(tǒng)。
USB-6281適用于地質監(jiān)測、材料分析、環(huán)境感知、光學、光譜學、結構測量及氣體探測,還包括醫(yī)療設備儀器,如心率監(jiān)測等儀器測試等領域。其主要特性如下:1)包含18位A/D轉換器,相比傳統(tǒng)16位設備其分辨率提高4倍,同時還提供了增強型模擬輸出通道,能夠實現(xiàn)量程及偏移量可編程設定;2)集成了NI-PGIA 2自定義放大器和NI-MCal自校準來縮短校準時間,提高精度。板載的低通濾波器能夠通過編程消除高頻噪聲,從而進一步提高測量精度。在±10 V范圍內分辨力可達980 μV,在±100 mV范圍內可達28 μV;3)NI信號讀寫實現(xiàn)USB上的雙向高速數(shù)據(jù)流;4)具有16條單端或8條差分的模擬輸入通道,2條模擬輸出通道及24位數(shù)字I/O通道(DIO),提供高達625 kS/s的18位模擬輸入(掃描時速度為500 kS/s)、速度為833 kS/s的16位模擬輸出;5)包含NI-DAQmx驅動軟件和NI LabVIEW SignalExpress LE。NIDAQmx驅動具有節(jié)省開發(fā)時間的特點,能夠實現(xiàn)LabVIEW圖形化開發(fā)環(huán)境及基于文本語言(如ANSI C/C++、C#、Visual Basic.NET及Visual Basic 6.0)的代碼生成,包含超過3 000種測量實例、仿真設備及接線圖。
基于USB-6281的高速數(shù)據(jù)采集系統(tǒng)結構如圖1所示。
圖1 基于USB-6281的高速數(shù)據(jù)采集系統(tǒng)結構圖Fig.1 Diagram of high speed data acquisition system based on USB-6281
采用NI的USB-6281數(shù)據(jù)采集卡以400 kHz的采樣頻率對被測信號進行波形數(shù)據(jù)采集,然后對采集數(shù)據(jù)進行正弦波擬合,通過提取出正弦信號的幅度、頻率等參數(shù),計算出擬合正弦曲線。測量數(shù)據(jù)與擬合曲線模型對應點的偏差值作為相應點波形失真測量值,然后計算出測量序列的失真有效值,進而最終獲得被測信號總失真度的測量值。
目前測量信號失真度的原理大致分為2類:基波剔除法和頻譜分析法。本文采用頻譜分析法,即通過計算出各次諧波的大小來計算失真度。測量方法采用數(shù)字化方法,先通過將信號數(shù)字化并送入計算機,再由計算機計算出失真度。失真度的計算方法采用快速傅里葉變換法(FFT),快速傅里葉變換比直接傅里葉變換(DFT)在計算量上要小得多。采用FFT對量化后的被測信號處理,獲得基波和各次諧波的電壓,從而計算出失真度。這種方法實現(xiàn)起來比較簡單,而且通過一些補償算法可以有效減少誤差[6]。
計算機通過高速數(shù)字采集卡采集被測信號,經(jīng)A/D轉換后讀入計算機,由計算機對采集的信號進行FFT變換,形成被測信號的二維幅度—頻率數(shù)組。計算機顯示出信號的幅度—頻率特性曲線,同時,對數(shù)組計算得到基波系數(shù)和各次諧波系數(shù),最后,由基波和各次諧波系數(shù)計算出失真度。諧波失真是諧波分量的幅值和基波幅值的相對量[7],假如基波的幅值是A1,而二次諧波的幅值是A2,三次諧波的幅值是A3,N次諧波的幅值是AN,總諧波失真THD為
利用NI-DAQmx驅動軟件和VC++,設計本系統(tǒng)數(shù)據(jù)采集流程圖如圖2所示,并給出主要部分程序代碼。
圖2 系統(tǒng)流程Fig.2 Flow chart of system
//設置波形發(fā)生任務
DAQmxErrChk(DAQmxCreateTask(“”,&taskHandleVo));
DAQmxErrChk(DAQmxCreateAOVoltageChan(taskHandleVo,
“Dev1/ao0”,“”,-1.5,1.5,DAQmx_Val_Volts,NULL));DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandleVo,“”,OUTFREQ,
DAQmx_Val_Rising,DAQmx_Val_ContSamps,OUTOUNT));
DAQmxErrChk(DAQmxRegisterDoneEvent(taskHandleVo,0,DoneCallback,NULL));
//把波形數(shù)據(jù)送到采集卡
DAQmxErrChk(DAQmxWriteAnalogF64(taskHandleVo,OUTCOUNT,0,10.0,
DAQmx_Val_GroupByChannel,dataout,&write,NULL));
//設置采樣任務
DAQmxErrChk(DAQmxCreateTask(“”,&taskHandleVi));
DAQmxErrChk(DAQmxCreateAIVoltageChan(taskHandle-Vi,“Dev1/ai0”,“”,
DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL));
DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandleVi,“”,SCANFREQ,
DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,SCANCOUNT));
//開始產生正弦波形
DAQmxErrChk(DAQmxStartTask(taskHandleVo));
//開始采樣任務
DAQmxErrChk(DAQmxStartTask(taskHandleVi));
//從采集卡讀取測量到的數(shù)據(jù)
DAQmxErrChk(DAQmxReadAnalogF64(taskHandleVi,-1,10.0,
DAQmx_Val_GroupByChannel,datain,SCANCOUNT,&read,NULL));
//輸出幅度(峰峰值)
Vout.SetTestResult(j,0,(maxvalue-minvalue));
Vout.SetTestResult(j,0,sqrt(rms/SCANCOUNT)*2.828);
//作FFT變換
FftConvert(datain,SCANCOUNT);
//計算失真度(10個諧波)后,關閉設備
DAQmxStopTask(taskHandleVi);
DAQmxStopTask(taskHandleVi);
DAQmxStopTask(taskHandleVo);
Error:
if(DAQmxFailed(error))
{
DAQmxGetExtendedErrorInfo(errBuff,2048);
MessageBox(NULL,errBuff,NULL,0);
}
//結束波形采樣任務
DAQmxStopTask(taskHandleVi);
DAQmxClearTask(taskHandleVi);
//結束波形輸出任務
DAQmxStopTask(taskHandleVo);
DAQmxClearTask(taskHandleVo);
if(DAQmxFailed(error)){}
//printf(“DAQmx Error:%s\n”,errBuff);
//printf(“End of program,press Enter key to quit\n”);
DAQmxErrChk(status);
Error:
if(DAQmxFailed(error))
DAQmxGetExtendedErrorInfo(errBuff,2048);
DAQmxClearTask(taskHandle);
printf(“DAQmx Error:%s\n”,errBuff);
//FFT函數(shù)調用
void FftConvert(float64 xrt[],int npoint)
//計算旋轉因子
void Calculcf()
//數(shù)據(jù)作蝶形排列
void ChangeOrder(float64 xr[],float64 xi[],int N)
//FFT函數(shù)實現(xiàn)
void Fft(float64 xr[],int npoint)
實際應用中對正弦信號進行數(shù)據(jù)采集,對一個1 kHz的正弦波,用400 kHz的采樣頻率,采樣點數(shù)為4 096、單通道情況下進行數(shù)據(jù)采集。圖3是采集數(shù)據(jù)的圖形顯示,頻率為0.976 kHz,說明本采樣系統(tǒng)能夠精確采樣。
圖3 采集數(shù)據(jù)的圖形顯示Fig.3 Graphical display of data acquisition system
本系統(tǒng)采用NI的USB-6281作為高速數(shù)據(jù)采集系統(tǒng)的硬件平臺,以NI-DAQmx驅動軟件和VC++為編程語言,實現(xiàn)了高速數(shù)據(jù)采集。USB總線接口使用方便,熱插拔,即插即用,節(jié)省系統(tǒng)資源,成本低,性能可靠,在高采樣率下也能保持高精度。NI-DAQmx驅動程序和測量服務軟件提供了簡單易用的配置和編程界面,系統(tǒng)的擴展性和通用性好,應用面廣,可實現(xiàn)對工業(yè)生產中諸如溫度、壓力等各種物理量的測量和顯示。
[1]趙鵬,羅文廣,王伍成.基于USB2.0的高速數(shù)據(jù)采集系統(tǒng)設計與實現(xiàn)[J].電子測量技術,2009,32(10):136-139,142.
ZHAO Peng,LUO Wen-guang,WANG Wu-cheng.Design and implementation of the high speed data acquisition system based on USB2.0[J].Electronic Measurement Technology,2009,32(10):136-139,142.
[2]李朋勃,張洪平.基于USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].電子技術應用,2009,35(10):109-112.
LI Peng-bo,ZHANG Hong-ping.High-speed data acquisition system based on USB2.0[J].Application of Electronic Technique,2009,35(10):109-112.
[3]美國國家儀器公司.NI推出高精度多功能USB接口數(shù)據(jù)采集設備[EB/OL].(2008-05-04)[2009-07-20].http://www.gkong.com/co/ni/news_detail.asp?news_id=21419.
[4]葉果,李威,王禹橋,等.基于PCI-1716的高速數(shù)據(jù)采集系統(tǒng)設計[J].微計算機信息,2009,25(4):86-88.
YE Guo,LI Wei,WANG Yu-qiao,et al.A design for high speed data acquisition system based on PCI-1716[J].Microcomputer Information,2009,25(4):86-88.
[5]周承仙,李仰軍,武錦輝,等.基于LabWindows/CVI的多路高速數(shù)據(jù)采集系統(tǒng)設計[J].電子測量技術,2007,30(12):66-69.
ZHOU Cheng-xian,LI Yang-jun,WU Jin-hui,et al.Design for multi-channel high speed data acquisition system based on LabWindows/CVI[J].Electronic Measurement Technology,2007,30(12):66-69.
[6]應懷樵.波形和頻譜分析與隨機數(shù)據(jù)處理[M].北京:中國鐵道出版社,1983.
[7]胡朝煒.數(shù)據(jù)采集設備的失真度測試方法研究[J].電子測量技術,2009(1):137-139,150.
HU Chao-wei.Study on methods of distortion measurement of data acquisition equipment[J].Electronic Measurement Technology,2009(1):137-139,150.