王昊 吳勇
1.山東信息職業(yè)技術(shù)學(xué)院 山東省濰坊市 261061 2.山東海事職業(yè)學(xué)院 山東省濰坊市 261108
傳統(tǒng)的汽車故障診斷方法借助“看、聽、摸、嗅”等手段,配合基本的檢測(cè)設(shè)備,只能大致地確定汽車的性能狀況,對(duì)故障的檢測(cè)主要依賴于技術(shù)人員的經(jīng)驗(yàn)判斷?,F(xiàn)代汽車裝備了大量的電子元件,可以實(shí)時(shí)、動(dòng)態(tài)地對(duì)發(fā)動(dòng)機(jī)運(yùn)行狀況進(jìn)行檢測(cè),催生出現(xiàn)代化的汽車檢測(cè)診斷方法。本文從職業(yè)院校的教學(xué)實(shí)際出發(fā),借助成熟的CAN總線分析儀,利用LabVIEW虛擬儀器平臺(tái)開發(fā)出一套汽車發(fā)動(dòng)機(jī)在線檢測(cè)系統(tǒng),具有一定的教學(xué)應(yīng)用價(jià)值。
為了便于對(duì)車輛排放進(jìn)行檢測(cè),汽車車載診斷(OBD)系統(tǒng)中對(duì)基于CAN總線的網(wǎng)絡(luò)各層所使用的標(biāo)準(zhǔn)進(jìn)行了規(guī)定,如表1所示。
本課題所設(shè)計(jì)的汽車發(fā)動(dòng)機(jī)測(cè)控教學(xué)系統(tǒng)主要借助于通用OBD診斷協(xié)議中的應(yīng)用層協(xié)議即ISO 15031-5協(xié)議,實(shí)現(xiàn)汽車在線檢測(cè)與故障診斷模塊。
本課題設(shè)計(jì)開發(fā)的汽車發(fā)動(dòng)機(jī)測(cè)控系統(tǒng)使用CANalyst-II分析儀采集卡采集4G15T型發(fā)動(dòng)機(jī)各傳感器在運(yùn)行過程中產(chǎn)生的各種信號(hào),通過CAN數(shù)據(jù)采集卡采集汽車CAN總線實(shí)時(shí)數(shù)據(jù),利用USB接口傳遞到PC機(jī),經(jīng)過分析,借助于Labview虛擬儀器軟件進(jìn)行系統(tǒng)登錄,數(shù)據(jù)顯示等功能硬件連接如圖1所示。
數(shù)據(jù)采集卡用來采集汽車CAN總線的數(shù)據(jù)并通過USB接口傳輸?shù)絇C機(jī),本文選用的是珠海創(chuàng)芯光電科技有限公司生產(chǎn)的CANalyst-II 分析儀。它配備了2個(gè)通道CAN接口,支持CAN2.0A和CAN2.0B協(xié)議,支持標(biāo)準(zhǔn)幀和擴(kuò)展幀。通過USB接口連接電腦,便可以實(shí)現(xiàn)數(shù)據(jù)的獲取與傳輸。
表1 基于OSI模型汽車CAN總線各層的診斷協(xié)議
圖1 硬件連接示意圖
為了能動(dòng)態(tài)檢測(cè)發(fā)動(dòng)機(jī)運(yùn)行時(shí)的各項(xiàng)數(shù)據(jù),本程序主要設(shè)計(jì)了設(shè)備的打開與初始化,發(fā)送請(qǐng)求報(bào)文,接收響應(yīng)報(bào)文并處理顯示這三個(gè)部分。為了與CANalyst-II分析儀的硬件配置相結(jié)合,在軟件設(shè)計(jì)時(shí)主要是采用調(diào)用庫函數(shù)節(jié)點(diǎn)的方法來實(shí)現(xiàn)。首先要調(diào)用設(shè)備打開與初始化函數(shù),使CAN分析儀工作并將相應(yīng)通道初始化。
在CAN總線通信中,請(qǐng)求報(bào)文最終是以數(shù)組的方式來發(fā)送的,所以采用LabVIEW的創(chuàng)建數(shù)組函數(shù)來創(chuàng)建CAN報(bào)文。按照CAN報(bào)文的格式來創(chuàng)建數(shù)組,VCI_CAN_OBJ結(jié)構(gòu)體總共是24個(gè)字節(jié),每個(gè)字節(jié)長度是8位,其中只有Data中的8個(gè)字節(jié)是請(qǐng)求報(bào)文的內(nèi)容。將創(chuàng)建的數(shù)組經(jīng)過VCI_Transmit函數(shù)進(jìn)行發(fā)送,使用VCI_Receive函數(shù)從指定的設(shè)備CAN通道的接收緩沖區(qū)中讀取數(shù)據(jù)。
對(duì)于獲取到的數(shù)據(jù),首先對(duì)其ID進(jìn)行判定,通常ECU返回的地址為“0x7E8”。然后使用索引數(shù)組函數(shù)將指定ID的數(shù)據(jù)進(jìn)行拆分,拆分為8個(gè)字節(jié)。大部分OBD指令長度只有一個(gè)字節(jié)或2個(gè)字節(jié)。使用條件結(jié)構(gòu)對(duì)響應(yīng)報(bào)文的PID代碼進(jìn)行判定,然后提取相應(yīng)字節(jié)的數(shù)據(jù)進(jìn)行不同的顯示。以PID 0C為例,其代表發(fā)動(dòng)機(jī)轉(zhuǎn)速的數(shù)據(jù),在報(bào)文數(shù)據(jù)第3、4字節(jié)表示發(fā)動(dòng)機(jī)轉(zhuǎn)速的數(shù)值,換算關(guān)系為((A*256)+B)/4。
根據(jù)不同的PID代碼,分別設(shè)置不同的換算關(guān)系,我們就可以得到車速、冷卻液溫度、進(jìn)氣溫度、節(jié)氣門開度等其他數(shù)據(jù)了。相應(yīng)數(shù)據(jù)的接收與數(shù)據(jù)顯示的程序框圖如圖2所示:
將硬件線路連接到實(shí)驗(yàn)車輛的OBD診斷座上,然后運(yùn)行我們所設(shè)計(jì)的汽車發(fā)動(dòng)機(jī)測(cè)控教學(xué)系統(tǒng)軟件,進(jìn)入發(fā)動(dòng)機(jī)運(yùn)行數(shù)據(jù)顯示界面。啟動(dòng)車輛,使發(fā)動(dòng)機(jī)在怠速狀態(tài)下運(yùn)行,在軟件面板中設(shè)置好總線的波特率,點(diǎn)擊“打開設(shè)備”按鈕,可以看到面板上出現(xiàn)了動(dòng)態(tài)的實(shí)車運(yùn)行數(shù)據(jù)。
圖2 CAN響應(yīng)報(bào)文數(shù)據(jù)接收與顯示程序框圖
圖3 汽車發(fā)動(dòng)機(jī)測(cè)控系統(tǒng)實(shí)時(shí)監(jiān)測(cè)系統(tǒng)運(yùn)行界面
可以看到,系統(tǒng)顯示的數(shù)據(jù)動(dòng)態(tài)變化,可以通過數(shù)值、儀表、波形等多種方式進(jìn)行顯示,實(shí)時(shí)性好。將本系統(tǒng)應(yīng)用于汽車檢測(cè)相關(guān)專業(yè)的教學(xué)實(shí)踐中,可以極大降低設(shè)備采購成本,易于進(jìn)行二次開發(fā),功能豐富而且實(shí)用,具有較高的推廣價(jià)值。