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