數(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://www.sz-dkm.com