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

由於數據採集程序是作為子程序,僅要求每次調用其時進行一次數據採樣就可以了,因此在程序設計時沒有加入循環控制結構。採集完的數據被放在一個字段為64,字長為4096的數組里,通過For循環結構的索引功能,每次都可以把一個字段裡的4096個數據取出來與十六進制FFFF進行相與處理,然後再轉換成電壓值,通過降採樣數組後把每個通道的電壓數值分離出來,降採樣數組的每個分支數組也是一個長度為1024的數組,採集到的風速和風溫數據分別放在最前面的兩個分支數組里,分別把其進行均值處理,從而得到期望的風速和風溫值,顯示在輸出顯示的控件上。最後,數據的採集與處理完畢後,通過ReleaseSystemEvent函數、StopDeviceDmaD函數、ReleaseDevice函數來停止數據的採樣並釋放數據採集硬件的設備資源,以準備下次啓動數據採樣使用。https://xfyuh.com