基于LabVIEW的四通道多參數(shù)測(cè)試系統(tǒng)軟件設(shè)計(jì)
2.2 電路編程
根據(jù)每次試驗(yàn)的不同情況,需要根據(jù)實(shí)驗(yàn)的環(huán)境和實(shí)驗(yàn)要求對(duì)硬件電路進(jìn)行重新設(shè)置,電路編程模塊通過(guò)USB讀數(shù)口可以方便快捷地對(duì)硬件電路進(jìn)行重新設(shè)置,電路編程模塊實(shí)現(xiàn)了設(shè)定電路的存儲(chǔ)器容量、延遲時(shí)間、環(huán)境控制和采樣策略選擇等。
2.3 定標(biāo)讀值
定標(biāo)讀值是指通過(guò)事先對(duì)電路和傳感器標(biāo)定的靈敏度將各通道的數(shù)字量轉(zhuǎn)換成其具有物理意義的信號(hào)量,使波形圖顯示的原始曲線轉(zhuǎn)換成相應(yīng)的加速度-時(shí)間等曲線。在定標(biāo)界面中可以對(duì)標(biāo)定了的數(shù)據(jù)進(jìn)行相應(yīng)的數(shù)據(jù)處理,例如數(shù)據(jù)轉(zhuǎn)換、打印等。
2.4 導(dǎo)出波形
通過(guò)導(dǎo)出波形模塊用戶可以將波形圖中顯現(xiàn)的曲線圖以圖片的形式保存在計(jì)算機(jī)中,方便用戶打印輸出、存檔保存以便日后查閱。該功能的實(shí)現(xiàn)通過(guò)波形圖的屬性節(jié)點(diǎn)調(diào)用實(shí)現(xiàn)。
2.5 多通道顯示
多通道顯示模塊允許用戶通過(guò)對(duì)通道的選擇來(lái)顯示某一通道的數(shù)據(jù)曲線,也可以同時(shí)顯示四個(gè)通道的數(shù)據(jù)曲線并以不同的顏色來(lái)顯示各個(gè)通道的數(shù)據(jù)曲線,方便用戶對(duì)曲線進(jìn)行觀察和對(duì)比,在LabVIEW中通過(guò)復(fù)選框?qū)崿F(xiàn)各個(gè)通道的選擇。
3 軟件的關(guān)鍵問(wèn)題
3.1 通道數(shù)據(jù)分離和糾錯(cuò)
在數(shù)據(jù)采集的過(guò)程中,四路信號(hào)是同時(shí)存儲(chǔ)的。當(dāng)在存儲(chǔ)數(shù)據(jù)和顯示數(shù)據(jù)曲線時(shí),需要對(duì)數(shù)據(jù)進(jìn)行處理,防止讀取或存儲(chǔ)的數(shù)據(jù)發(fā)生錯(cuò)位現(xiàn)象,同時(shí)便于對(duì)錯(cuò)誤進(jìn)行跟蹤查找,最終能使各通道數(shù)據(jù)能夠完整地整合到一起。因此采取了相應(yīng)的措施,在每個(gè)數(shù)據(jù)存儲(chǔ)的過(guò)程中給每個(gè)通道的信號(hào)加上通道信息。
當(dāng)多路信號(hào)采集完一個(gè)周期后,存儲(chǔ)一些通道信息作為區(qū)分每包數(shù)據(jù)的信號(hào)。這樣即使某包數(shù)據(jù)出了問(wèn)題,也可以很容易地確定各個(gè)通道信號(hào)的數(shù)據(jù),不會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)位現(xiàn)象。通過(guò)判斷數(shù)據(jù)的通道號(hào)來(lái)確定數(shù)據(jù)是否正確,當(dāng)出現(xiàn)錯(cuò)誤時(shí)用相對(duì)應(yīng)的上一包的數(shù)據(jù)進(jìn)行替換,具體步驟如圖3所示。本文引用地址:http://www.ex-cimer.com/article/172058.htm
3.2 動(dòng)態(tài)鏈接庫(kù)的調(diào)用
動(dòng)態(tài)鏈接庫(kù)(DLL)是存放在.dll文件中編譯過(guò)的小型庫(kù)文件,該文件封裝了一些功能和代碼及一組接口函數(shù)供LabVIEW調(diào)用,應(yīng)用程序可以在運(yùn)行時(shí)鏈接并使用它。在LabVIEW中提供了調(diào)用庫(kù)函數(shù)節(jié)點(diǎn),通過(guò)該節(jié)點(diǎn)進(jìn)行配置就可以調(diào)用DLL。
動(dòng)態(tài)鏈接庫(kù)的工作原理如下:當(dāng)它收到應(yīng)用程序的數(shù)據(jù)傳輸請(qǐng)求后,會(huì)創(chuàng)建兩個(gè)線程:數(shù)據(jù)傳輸線程和記錄、顯示線程,其中數(shù)據(jù)傳輸線程負(fù)責(zé)將數(shù)據(jù)寫到應(yīng)用程序要提交的內(nèi)存;而記錄、顯示線程則負(fù)責(zé)給應(yīng)用程序發(fā)送記錄和顯示消息。當(dāng)應(yīng)用程序接收到此消息后,便從它提交的內(nèi)存中讀取數(shù)據(jù)并存。
用戶應(yīng)用程序的主要功能是開啟或關(guān)閉USB設(shè)備、檢測(cè)USB設(shè)備、設(shè)置數(shù)據(jù)傳輸幀數(shù)、通過(guò)USB接口傳輸并顯示數(shù)據(jù),本系統(tǒng)軟件調(diào)用DLL68013.dll庫(kù)文件對(duì)USB設(shè)備進(jìn)行控制。下面就本系統(tǒng)信號(hào)采集關(guān)鍵DLL函數(shù)進(jìn)行簡(jiǎn)單的說(shuō)明,這些都在調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)的配置中進(jìn)行設(shè)定,在配置過(guò)程中要注意調(diào)用規(guī)范,該系統(tǒng)采用stdcall(WINAPI)。
①TranVerCmmd(),該函數(shù)是向USB設(shè)備中發(fā)送控制命令,用于控制USB設(shè)備,該函數(shù)就一個(gè)參數(shù),向這個(gè)函數(shù)發(fā)送HB4初始化讀數(shù)口控制命令。
②BulkWrite(),該函數(shù)是控制向設(shè)備中發(fā)送數(shù)據(jù),包括三個(gè)參數(shù),第一個(gè)參數(shù)是要操作的管道號(hào),第二個(gè)參數(shù)是要寫入的數(shù)據(jù),第三個(gè)參數(shù)是數(shù)據(jù)的大小。
③BulkRead(),該函數(shù)是控制向設(shè)備中發(fā)送數(shù)據(jù),包括三個(gè)參數(shù),第一個(gè)參數(shù)是要操作的管道號(hào),第二個(gè)參數(shù)是要讀取的數(shù)據(jù),第三個(gè)參數(shù)是數(shù)據(jù)的大小。
評(píng)論