數(shù)據(jù)采集是檢測平臺需要實現(xiàn)的重要目標(biāo),,因此數(shù)據(jù)采集軟件的設(shè)計是整個檢測平臺設(shè)計的重要組成部分。根據(jù)實驗室現(xiàn)有的資源條件,,采用北京阿爾泰科技發(fā)展有限公司的PCI8757數(shù)據(jù)采集卡作為整個檢測平臺的硬件,。PCI8757具有如下性能:
a)具有正負(fù)10V、正負(fù)5V,、正負(fù)2.5V,、0—10V、0—5V多個輸入量程可選,;
b)具有16位轉(zhuǎn)換精度,;
c)具有3—800KHz的采樣頻率;
d)具有4通道的物理通道數(shù),;
e)雙端模擬輸入,;
f)具有8K字(點)FIFO存儲器。
g)四通道四芯片獨立工作,;
h)系統(tǒng)測量精度為0.01%,。
由于檢測平臺測量的氣體溫度、速度信號的變化不快,,因此采用PCI8757數(shù)據(jù)采集卡完全符合檢測平臺的使用要求,。PCI8757數(shù)據(jù)采集卡提供了VB、VC的數(shù)據(jù)采集程序,,特別是支持NI的LabVIEW軟件開發(fā)的相關(guān)例程和底層驅(qū)動函數(shù),,這為編寫其在LabVIEW上的數(shù)據(jù)采集程序提供了無縫的連接。在PCI8757數(shù)據(jù)采集卡中,,適用于本數(shù)據(jù)采集軟件設(shè)計的LabVIEW驅(qū)動函數(shù)主要有:沖溢出標(biāo)志等),。需要設(shè)置的參數(shù)有hDevice設(shè)備對象句柄、pDMAStatus結(jié)構(gòu)體指針,。若調(diào)用成功,,則返回TRUE,否則返回錯誤碼,。
該函數(shù)的功能是用于停止AD在任何時候的采樣,,但并不改變設(shè)備的其他任何狀態(tài)。需要設(shè)置的參數(shù)有hDevice設(shè)備對象句柄,。若成功,,返回TRUE,表示AD被停止,否則返回FALSE,。
該函數(shù)的功能是釋放設(shè)備對象所占有的系統(tǒng)資源及設(shè)備對象本身,。需要設(shè)置的參數(shù)有hDevice設(shè)備對象句柄。若成功,,則返回TRUE,,否則返回FALSE。通過理解上述函數(shù)后,,就可以著手編寫數(shù)據(jù)采集軟件程序,。整個檢測平臺需要采集干燥箱的風(fēng)速和風(fēng)溫信號,因此只需要PCI8757的2個數(shù)據(jù)采集通道來分別對風(fēng)速和風(fēng)溫信號來進(jìn)行數(shù)據(jù)采集就可以了,。由于在檢測平臺的每次測量中需要測量的點數(shù)較多,,因此宜把數(shù)據(jù)采集程序?qū)懗蓡为毜淖映绦颍苑奖阏麄€系統(tǒng)程序?qū)ζ涞恼{(diào)用,。把數(shù)據(jù)采集程序?qū)懗勺映绦蛐枰⒁鉃槠湓O(shè)計相關(guān)的輸入輸出接口,,用于對數(shù)據(jù)采集參數(shù)的設(shè)置。該數(shù)據(jù)采集子程序根據(jù)實際數(shù)據(jù)采集的需要,,設(shè)計了一個采樣頻率的輸入接口和風(fēng)速,、風(fēng)溫兩個數(shù)據(jù)輸出接口。數(shù)據(jù)采集子程序的數(shù)據(jù)輸入輸出接口如圖5-16所示,,其生成的作為被調(diào)用子程序的圖標(biāo)如圖5-17所示,。
該數(shù)據(jù)采集子程序的LabVIEW后面板代碼如圖5-18所示。由圖5-18數(shù)據(jù)采集子程序的LabVIEW后面板可以看出該子程序進(jìn)行數(shù)據(jù)采集的原理,。首先是要設(shè)置好相關(guān)的硬件采集參數(shù):具體包括通過CreateDevice來創(chuàng)建PCI8757數(shù)據(jù)采集卡的設(shè)備對象句柄,,由于本檢測平臺僅需一塊PCI8757數(shù)據(jù)采集卡,因此該函數(shù)的DeviceID參數(shù)采用默認(rèn)值0,;設(shè)置PXI8757_PARA_AD結(jié)構(gòu)體參數(shù),,根據(jù)實際數(shù)據(jù)采集的需要,把PCI8757數(shù)據(jù)采集卡的第0,、1兩個通道參數(shù)設(shè)置為1,,表示使用這兩個通道,第2,、3兩個通道參數(shù)設(shè)置為0,,表示不使用這兩個通道,把四個輸入量程參數(shù)均設(shè)置為0,,表示他們的輸入量程范圍為正負(fù)10V,由于希望數(shù)據(jù)采樣頻率可以根據(jù)需要來改變設(shè)置,,因此把對其參數(shù)的設(shè)置采用輸入控件的方法來完成,其他參數(shù),,如字長,、字段、觸發(fā)源和觸發(fā)方式等參數(shù)選擇默認(rèn)的設(shè)置即可,。
其次是要數(shù)據(jù)采集的具體實現(xiàn),。該數(shù)據(jù)采集程序采用了DMA直接數(shù)據(jù)存儲技術(shù)和線程處理技術(shù),,這既可以提高對數(shù)據(jù)的處理效率,也可以大大減輕CPU工作的負(fù)擔(dān),。當(dāng)參數(shù)設(shè)置完成后,,運行程序,上面程序框里的CreateSystemEvent函數(shù)會創(chuàng)建一個內(nèi)核事件對象句柄hDmaEvent賦給IniDeviceintAD的相應(yīng)參數(shù),,以作為Dma事件的變量,,接著用StartDeviceDmaAd啟動AD部件開始數(shù)據(jù)采樣,進(jìn)而調(diào)用Win32API函數(shù)WaitForSingleObject來等待hDmaEvent事件的發(fā)生,,當(dāng)當(dāng)前緩沖段沒被DMA完成時,,自動使所在線程進(jìn)入睡眠狀態(tài)(不消耗CPU的時間),否則,,則立即喚醒所在線程,,執(zhí)行它下面的代碼,這時通過GetDevStatusDmaAD函數(shù)來確定哪一段緩沖是新的數(shù)據(jù),,即刻處理該段數(shù)據(jù),,直到所有的緩沖段變?yōu)榕f數(shù)據(jù)段,然后再回到WaitForSingleObject狀態(tài)來等待新的hDmaEvent事件的發(fā)生,,這樣就可以實現(xiàn)不間斷的數(shù)據(jù)采樣,。
由于數(shù)據(jù)采集程序是作為子程序,僅要求每次調(diào)用其時進(jìn)行一次數(shù)據(jù)采樣就可以了,,因此在程序設(shè)計時沒有加入循環(huán)控制結(jié)構(gòu),。采集完的數(shù)據(jù)被放在一個字段為64,字長為4096的數(shù)組里,,通過For循環(huán)結(jié)構(gòu)的索引功能,,每次都可以把一個字段里的4096個數(shù)據(jù)取出來與十六進(jìn)制FFFF進(jìn)行相與處理,然后再轉(zhuǎn)換成電壓值,,通過降采樣數(shù)組后把每個通道的電壓數(shù)值分離出來,,降采樣數(shù)組的每個分支數(shù)組也是一個長度為1024的數(shù)組,采集到的風(fēng)速和風(fēng)溫數(shù)據(jù)分別放在最前面的兩個分支數(shù)組里,,分別把其進(jìn)行均值處理,,從而得到期望的風(fēng)速和風(fēng)溫值,顯示在輸出顯示的控件上,。最后,,數(shù)據(jù)的采集與處理完畢后,通過ReleaseSystemEvent函數(shù),、StopDeviceDmaD函數(shù),、ReleaseDevice函數(shù)來停止數(shù)據(jù)的采樣并釋放數(shù)據(jù)采集硬件的設(shè)備資源,以準(zhǔn)備下次啟動數(shù)據(jù)采樣使用。http://ywxsfz.com.cn