基于虛擬儀器的汽車檢測儀設(shè)計與實現(xiàn)
0 引 言
汽車產(chǎn)業(yè)已成為國民經(jīng)濟增長的一個亮點,隨著科學(xué)技術(shù)的發(fā)展,汽車檢測經(jīng)歷了人工檢驗、簡單儀器儀表測量、電腦控制的自診斷系統(tǒng)和專用的故障診斷儀等階段。這些檢測手段不同程度地存在著操作復(fù)雜、穩(wěn)定性差、檢測效率低、檢測誤差大等缺點。電子技術(shù)和計算機技術(shù)在汽車上的普及運用,對汽車售后維修服務(wù)提出了更高要求,促使在汽車的故障診斷中采用更多的快速、簡便和智能化儀器,要求檢測儀器實時采集和反映汽車工況的技術(shù)數(shù)據(jù)或曲線,以此來進(jìn)行汽車故障的診斷。近年來,國內(nèi)外很多公司和高校把虛擬儀器技術(shù)運用到生產(chǎn)和科研中,取得了一定的經(jīng)濟和社會效益。虛擬儀器相對于傳統(tǒng)儀器具有以下優(yōu)勢:(1)儀器功能由用戶自行定義;(2)豐富并增強了傳統(tǒng)儀器的功能;(3)測量穩(wěn)定性與重復(fù)性好;(4)經(jīng)濟性好;(5)系統(tǒng)構(gòu)建周期短,易于進(jìn)行功能擴展。將虛擬儀器引入到汽車行業(yè),為汽車檢測技術(shù)帶來了新的活力。
影響最大的虛擬儀器編程語言是美國NI公司的LabVEIW和LabWindoWs/CVI,還有其他基于WINDOWS操作系統(tǒng)的可視化編程工具如VB、C++、Delphi等。VB是一種非常方便的Windows應(yīng)用程序編程開發(fā)平臺,它最有力的就是快速創(chuàng)建可視化用戶界面,把復(fù)雜而完善的Windows操作系統(tǒng)的使用融于易于學(xué)習(xí)和使用的高級語言中,因而受到廣大工程技術(shù)人員的普遍歡迎。
1 虛擬式汽車檢測儀的結(jié)構(gòu)
開發(fā)的汽車檢測儀是基于數(shù)據(jù)采集卡的PC-DAQ結(jié)構(gòu)。系統(tǒng)的結(jié)構(gòu)如圖1所示,由硬件和軟件兩大部分構(gòu)成。
硬件的核心是一臺PC,I/O接口設(shè)備采用阿爾泰的PCI2006數(shù)據(jù)采集卡。該卡具有14位分辨率的A/D轉(zhuǎn)換器,提供了16(雙極)/32(單極)模擬輸入通道,輸入信號幅度可以經(jīng)程控增益放大至合適的范圍,保證最佳轉(zhuǎn)換精度;32位PCI總線,支持PCI2.2協(xié)議,即插即用;單通道400 kHz采樣頻率,偽同步采樣減少通道間的采樣時差,8 KB深度FIFO存儲器保證數(shù)據(jù)的完整性;軟件部分支持Windows XP系統(tǒng)下的I/O接口儀器驅(qū)動程序,包括對VB、C++、Delphi以及LabVEIW的驅(qū)動程序,編程使用的VB語言運用其相應(yīng)的驅(qū)動程序?qū)υ摽ㄟM(jìn)行數(shù)據(jù)采集的編程。
該卡主要分為4大塊:(1)模擬前端的信號輸入、調(diào)理電路;(2)對模擬輸入信號進(jìn)行AD轉(zhuǎn)換的模數(shù)轉(zhuǎn)換部分;(3)基于FPGA的控制部分;(4)和上位機進(jìn)行通信的接口電路。
2 PCI2006數(shù)據(jù)采集的編程實現(xiàn)
該卡能用3種不同方式即非空查詢方式、半滿方式和中斷方式進(jìn)行數(shù)據(jù)采集。
2.1 PCI2006的設(shè)備管理
由于驅(qū)動程序采用面向?qū)ο缶幊?,所以要使用設(shè)備的一切功能,用CreateDevice函數(shù)創(chuàng)建一個設(shè)備對象句柄hDevice,有了這個句柄,就擁有了對該設(shè)備的絕對控制權(quán)。然后將此句柄作為參數(shù)傳遞給其他函數(shù),如Init-DeviceProAD可以使用hDevice句柄以程序查詢方式初始化設(shè)備的A/D部件,ReadDeviceProAD函數(shù)可以用hDe-vice句柄實現(xiàn)對A/D數(shù)據(jù)的采樣讀取,SetDeviceDO函數(shù)可用實現(xiàn)開關(guān)量的輸出等。最后可以通過ReleaseDevice將hDevice釋放掉。
2.2 用非空查詢方式采集數(shù)據(jù)
有了hDevice設(shè)備對象句柄后,便可用InitDeviceProAD函數(shù)初始化A/D部件,關(guān)于采樣通道、頻率等參數(shù)的設(shè)置是由這個函數(shù)的pPara參數(shù)結(jié)構(gòu)體決定的。只需要對這個pPara參數(shù)結(jié)構(gòu)體的各個成員簡單賦值即可實現(xiàn)所有硬件參數(shù)和設(shè)備狀態(tài)的初始化。然后用StartDeviceProAD啟動A/D部件,開始A/D采樣,然后用ReadDeviceProAD_No-tEmpty反復(fù)讀取A/D數(shù)據(jù)以實現(xiàn)連續(xù)不間斷采樣。當(dāng)需要暫停設(shè)備時,執(zhí)行StopDeviceProAD,當(dāng)需要關(guān)閉AD設(shè)備時,ReleaseDeviceProAD便可實現(xiàn),但設(shè)備對象hDevice依然存在。ReadDeviceProAD_NotEmpty雖然主要面對批量讀取,高速連續(xù)采集而設(shè)計,但亦可用它以單點或幾點的方式讀取A/D數(shù)據(jù),以滿足慢速采集需要。具體執(zhí)行程序框圖如圖2所示。
2.3 用半滿方式采集數(shù)據(jù)
用StartDeviceProAD啟動A/D部件,開始A/D采樣,接著調(diào)用GetDevStatusAD_Half函數(shù)以查詢A/D的存儲器FIFO的半滿狀態(tài),如果達(dá)到半滿狀態(tài),即可用ReadDeviceProAD_Half函數(shù)一批半滿長度(或半滿以下)的A/D數(shù)據(jù),然后再接著查詢FIFO的半滿狀態(tài),若有效再讀取,就這樣反復(fù)查詢狀態(tài)反復(fù)瀆取A/D數(shù)據(jù)即可實現(xiàn)連續(xù)不間斷采樣。
評論