基于malab的實(shí)時(shí)信號(hào)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于malab的實(shí)時(shí)信號(hào)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于malab的實(shí)時(shí)信號(hào)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于malab的實(shí)時(shí)信號(hào)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于malab的實(shí)時(shí)信號(hào)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于malab的實(shí)時(shí)信號(hào)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

0基于pci總線(xiàn)的高速模擬量輸入卡隨著微型計(jì)算機(jī)技術(shù)的快速發(fā)展,硬件平臺(tái)的信號(hào)采集和數(shù)據(jù)處理系統(tǒng)得到了廣泛應(yīng)用。工控機(jī)通過(guò)數(shù)據(jù)采集卡對(duì)外部的信號(hào)進(jìn)行采集,通過(guò)軟件讀取數(shù)據(jù)并完成分析處理。PCL-1713是研華公司生產(chǎn)的一款基于PCI總線(xiàn)的隔離高速模擬量輸入卡。它有以下主要特點(diǎn):(1)2500V(DC)隔離保護(hù);(2)32路單端或16路差分模擬量輸入,或組合輸入方式;(3)12位AD轉(zhuǎn)換;(4)采樣速率可達(dá)100Kb/s;(5)每個(gè)輸入通道均可增益編程;(6)卡上4K采樣FIFO緩沖器;(7)支持軟件、內(nèi)部定時(shí)器觸發(fā)或外部觸發(fā);(8)自動(dòng)通道/增益掃描。其輸入范圍可分為單極性和雙極性:雙極性:±0.625V,±1.25V,±2.5V,±5V,±10V;單極性:0~1.25V,0~2.5V,0~5V,0~10V。1采集系統(tǒng)的設(shè)計(jì)1.1板卡pcl-173的安裝參照安裝手冊(cè),完成PCI-1713數(shù)據(jù)采集卡的安裝和測(cè)試。如圖1所示,安裝完驅(qū)動(dòng)程序后,在DeviceManager界面下,顯示板卡PCL-1713已成功安裝,圖中的C000H是由工控機(jī)自動(dòng)為PCI-1713數(shù)據(jù)采集卡分配的基地址,在每次安裝時(shí)都可能不同,序號(hào)(如000,001,002)是板卡安裝在工控機(jī)上的順序,它在采集系統(tǒng)軟件實(shí)現(xiàn)過(guò)程中,有著重要的作用。1.2環(huán)境開(kāi)發(fā)的設(shè)計(jì)采集系統(tǒng)在Microsoft公司的VisualC++環(huán)境下進(jìn)行開(kāi)發(fā)。有兩種方法可以實(shí)現(xiàn)VC++基礎(chǔ)上的數(shù)據(jù)采集:DAQ控件和研華提供的動(dòng)態(tài)庫(kù)函數(shù)編程。下面,將對(duì)這兩種方法進(jìn)行探討。1.2.1daqa.c.numhen首先安裝DAQ控件,并在VC中添加DAQ-AI控件到對(duì)話(huà)框的控件欄中。把控件拖至對(duì)話(huà)框中,此時(shí)在程序中自動(dòng)添加了有關(guān)DAQ控件封裝的類(lèi),為控件關(guān)聯(lián)一個(gè)變量m_Daqai。在研華所給的程序例程中,有一個(gè)需要選取設(shè)備的過(guò)程,即調(diào)用函數(shù)SelectDevice打開(kāi)對(duì)話(huà)框來(lái)選擇所需的板卡。這在實(shí)際測(cè)試流程中,使用極不方便,不能實(shí)現(xiàn)真正的自動(dòng)檢測(cè)。我們可以采用如下方法來(lái)跳過(guò)選擇設(shè)備的步驟。如圖2所示:右擊控件,選擇屬性,在ALL中有一項(xiàng)DeviceNumber,默認(rèn)情況下為-1,即為不選擇任何板卡。根據(jù)圖1所示板卡在工控機(jī)上的安裝順序,我們將-1改為0,此時(shí),當(dāng)變量m_Daqai調(diào)用函數(shù)時(shí),已經(jīng)默認(rèn)的板卡即為PCI-1713,不需要再進(jìn)行設(shè)備板卡的選擇。如果在某些情況下采集系統(tǒng)需要有兩塊和更多的數(shù)據(jù)采集卡來(lái)進(jìn)行數(shù)據(jù)采集,這時(shí)一般采用一個(gè)DAQ控件對(duì)應(yīng)一個(gè)數(shù)據(jù)采集卡的方法,對(duì)每個(gè)控件都實(shí)行上述屬性的改變,相應(yīng)的參數(shù)也是由DeviceManager確定的。數(shù)據(jù)讀取流程如下:m_Daqai.OpenDevice();//打開(kāi)設(shè)備m_Daqai.SetOverallInputRange(4);//采集電壓范圍的選取。doubleAdconvert=m_daqai.RealInput(0);//讀取通道0的電壓信號(hào)并保存到變量中。在程序結(jié)束時(shí),要調(diào)用CloseDevice函數(shù),來(lái)釋放所分配的內(nèi)存。m_Daqai.CloseDevice();這里只調(diào)用了SetOverallInputRange函數(shù)來(lái)設(shè)定采集電壓范圍,其參數(shù)值可取為0~8。各數(shù)的代表電壓范圍如表1所示。根據(jù)需要,可以在采集系統(tǒng)調(diào)用控件的接口函數(shù)中進(jìn)行采集參數(shù)設(shè)置,如(觸發(fā)方式,數(shù)據(jù)采集方式等),詳細(xì)情況請(qǐng)參照研華公司的DAQ用戶(hù)手冊(cè)。DAQ控件的使用,大大簡(jiǎn)化了編程,在一般的信號(hào)測(cè)量中,有著重要的作用。1.2.2壓力和設(shè)備設(shè)置在研華公司提供的數(shù)據(jù)采集動(dòng)態(tài)鏈接庫(kù)中,封裝了用于該采集卡的各類(lèi)應(yīng)用函數(shù),如打開(kāi)設(shè)備函數(shù)、關(guān)閉設(shè)備函數(shù)、獲取設(shè)備設(shè)置函數(shù)、讀取信號(hào)函數(shù)等。具體的函數(shù)調(diào)用順序如圖3所示:在系統(tǒng)開(kāi)發(fā)過(guò)程中,可以利用這些函數(shù)來(lái)完成數(shù)據(jù)的采集工作。首先導(dǎo)入外部頭文件和函數(shù),將Adsapi32.lib,Driver.h直接拷貝到這個(gè)工程所在的文件夾中。具體添加的程序代碼如下:staticPT_AIVoltageInptAIVoltageIn;staticPT_AIConfigptAIConfig;staticDEVFEATURESDevFeatures;staticPT_DeviceGetFeaturesptDevFeatures;這一步為定義采集函數(shù)動(dòng)態(tài)鏈接庫(kù)中結(jié)構(gòu)的變量,為下一步調(diào)用各結(jié)構(gòu)中的成員變量做準(zhǔn)備。通過(guò)調(diào)用成員變量為其賦值,獲取設(shè)備信息并對(duì)信息進(jìn)行修改,如改變采集范圍、采集通道、采集模式等。打開(kāi)設(shè)備的操作是在使用設(shè)備進(jìn)行數(shù)據(jù)采集等編程操作之前必須進(jìn)行的,調(diào)用DRV_DeviceOpen(0,(LONGfar*)&DriverHandle)函數(shù)實(shí)現(xiàn)。第一個(gè)參數(shù)0是設(shè)備號(hào),也就是在圖1中查看到的序號(hào)000,用它表示所打開(kāi)的是在工控機(jī)中排序第一個(gè)設(shè)備,在實(shí)際的操作中,我們要根據(jù)設(shè)備在工控機(jī)中具體的排序來(lái)確定第一個(gè)參數(shù)的值;DriverHandle:設(shè)備句柄,對(duì)每塊板卡唯一標(biāo)識(shí)。在以后函數(shù)調(diào)用中,想要操作哪個(gè)設(shè)備,直接調(diào)用此設(shè)備句柄就可以實(shí)現(xiàn)。同樣,在多設(shè)備的背景下,我們需要為每一個(gè)設(shè)備都賦予一個(gè)不同的設(shè)備句柄,代表著不同的設(shè)備。接下來(lái),就要進(jìn)行獲取設(shè)備設(shè)置的操作,具體代碼如下,獲取設(shè)備設(shè)置后將值賦予結(jié)構(gòu)的變量。如果獲取失敗,說(shuō)明此設(shè)備出現(xiàn)故障,將不能正確的進(jìn)行信號(hào)采集,就需要報(bào)警并退出采集系統(tǒng)。ptDevFeatures.buffer=(LPDEVFEATURES)&DevFeatures;ptDevFeatures.size=sizeof(DEVFEATURES);if((ErrCde=DRV_DeviceGetFeatures(DriverHandle,(LPT_DeviceGetFeatures)&ptDevFeatures))!=SUCCESS){DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);MessageBox((LPCSTR)szErrMsg,“DriverMessage”,MB_OK);DRV_DeviceClose((LONGfar*)&DriverHandle);return;}在上面兩步工作做好之后,我們就要對(duì)設(shè)備信息進(jìn)行設(shè)定以便可以得到快速、準(zhǔn)確的數(shù)據(jù)采集。直接賦值給結(jié)構(gòu)變量ptAIConfig設(shè)定采集范圍和采集通道,通過(guò)調(diào)用DRV_AIConfig函數(shù)將對(duì)設(shè)備參數(shù)進(jìn)行設(shè)置。調(diào)用DRV_AIVoltageIn函數(shù)讀取設(shè)置通道的信號(hào),保存到變量中。ptAIConfig.DasGain=DevFeatures.glGainList[gwGain].usGainCde;//設(shè)定測(cè)量范圍ptAIConfig.DasChan=gwChannel;DRV_AIConfig(DriverHandle,(LPT_AIConfig)&ptAIConfig);ptAIVoltageIn.chan=ptAIConfig.DasChan;//采集通道ptAIVoltageIn.gain=ptAIConfig.DasGain;ptAIVoltageIn.TrigMode=0;//軟件觸發(fā)ptAIVoltageIn.voltage=(FLOATfar*)&fVoltage;DRV_AIVoltageIn(DriverHandle,(LPT_AIVoltageIn)&ptAIVoltageIn));在程序結(jié)束時(shí),要調(diào)用DRV_DeviceClose函數(shù)來(lái)釋放為其分配的內(nèi)存。DRV_DeviceClose((LONGfar*)&DriverHandle);在實(shí)際檢測(cè)流程中,若是需要采集信號(hào)時(shí)都進(jìn)行上述代碼編寫(xiě),十分不方便。可將此段代碼封裝到一個(gè)采集函數(shù)AdConvert(intchannel,intgwgain)中,其參數(shù)為采集通道與電壓范圍,并返回所采集的電壓值,通過(guò)調(diào)用此采集函數(shù)就可以完成信號(hào)的采集,大大減少了代碼冗余。參數(shù)gwgain為測(cè)量電壓范圍設(shè)定,其意義和DAQ控件采集中的取值電壓范圍參數(shù)設(shè)定相同。如果采集前知道信號(hào)的大體范圍,就可以通過(guò)設(shè)定正確的gwgain值,獲取更為精確的采集電壓值。2數(shù)字干擾技術(shù)2.1響應(yīng)信號(hào)的實(shí)時(shí)采集通過(guò)對(duì)以上兩種信號(hào)采集方法進(jìn)行實(shí)時(shí)信號(hào)采集和對(duì)比分析,檢測(cè)結(jié)果基本相同。我們可以根據(jù)實(shí)際情況采取一種信號(hào)采集方法。但是,在微機(jī)化測(cè)控系統(tǒng)的測(cè)量通道中總難免竄入這樣或那樣的隨機(jī)干擾,從而使A/D輸入微機(jī)的數(shù)據(jù)中存在誤差。就一次測(cè)量而言,這樣的隨機(jī)誤差沒(méi)有規(guī)律,不可預(yù)測(cè)。但測(cè)量次數(shù)足夠多時(shí),其總體服從統(tǒng)計(jì)學(xué)規(guī)律。數(shù)字濾波是為了提高檢測(cè)精度而采取的軟件抗干擾措施,即通過(guò)一定的計(jì)算程序,對(duì)采集的數(shù)據(jù)進(jìn)行處理,消除或減弱干擾信號(hào)的影響,提高測(cè)量的可靠性和精度。通常采用的方法有中值濾波、算術(shù)平均值濾波、去極值平均濾波等多種濾波方法。在此采用算術(shù)平均值濾波法,算術(shù)平均值濾波是尋找一個(gè)y值,使該值與各采樣值之間誤差的平方和為最小。即如下公式所示:E=min[∑i=1ne2i]=min[∑i=1n(y?xi)2]E=min[∑i=1nei2]=min[∑i=1n(y-xi)2]由一元函數(shù)求極值原理可求得:y=1n[∑i=1nxi]y=1n[∑i=1nxi]式中:xi為第i次采樣值,n為采樣次數(shù),y為n次的采樣的算術(shù)平均值。在實(shí)際測(cè)量中,對(duì)每個(gè)響應(yīng)信號(hào)采集20次,求其算術(shù)平均值。對(duì)+5V電壓信號(hào)實(shí)時(shí)采集信號(hào)20次后所得到的數(shù)據(jù)結(jié)果如表2所示。采用算術(shù)平均值濾波法,求得y值為5.043101V。2.2采集結(jié)果分析同樣采用算術(shù)平均值濾波法,對(duì)電壓信號(hào)分別為-8V,-5V,-3V,-1V,0V,1V,3V,5V,8V進(jìn)行采集,采集結(jié)果如下表3所示。采用非線(xiàn)性校證中的直線(xiàn)擬合法,利用最小二乘法原理,對(duì)以上數(shù)據(jù),求一條直線(xiàn)最接近于這些數(shù)據(jù)點(diǎn)。以實(shí)測(cè)值為x點(diǎn),理論值為y點(diǎn)建立坐標(biāo)系。設(shè)最佳擬合直線(xiàn)方程為y=a0x+a1,根據(jù)最小二乘法原理,以MATLAB為工具,可求得回歸系數(shù)a0=0.992652,a1=-0.006144。即:y=0.992652x-0.0061442.3y3.5擬合直線(xiàn)方程對(duì)2.5V,-2.5V電壓信號(hào)采用算術(shù)平均值濾波法進(jìn)行采集,結(jié)果分別為2.527460V,-2.510254V,代入擬合直線(xiàn)方程,擬合后的值為y2.5=2.502744V,y-2.5=-2.497953V。其誤差分別0.002744V,0.002047V。實(shí)驗(yàn)結(jié)果滿(mǎn)足實(shí)際測(cè)量需求。3數(shù)據(jù)采集處理實(shí)驗(yàn)兩種信號(hào)采集方法,一個(gè)是通過(guò)定義控件變量確定控制板卡,一個(gè)通過(guò)設(shè)定儀器句柄確定控制板卡,在函數(shù)的調(diào)用和采集步驟上各有不同,但是卻都與設(shè)備在工控機(jī)上所處位置相關(guān)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論