劉鑫爽,程洋
(柳州鐵道職業(yè)技術(shù)學(xué)院,廣西柳州,545616)
CAN總線技術(shù)作為一種先進(jìn)的支持串行的數(shù)據(jù)通信網(wǎng)絡(luò),能夠在實時的以及分布式控制的系統(tǒng)上運行[1],已成為現(xiàn)場總線國際標(biāo)準(zhǔn)之一[2],也因此成為汽車的主干通信總線。目前,汽車運行過程中只有有限的信息狀態(tài)是通過車載儀表面板顯示出來的,還有一些如故障報警信息等重要的信息并沒有直觀地顯示。而這些信息是能夠通過CAN總線向?qū)?yīng)的ECU申請,由ECU響應(yīng)并反饋這些信息數(shù)據(jù)的。因此設(shè)計一個通過CAN總線能獲取汽車各ECU的參數(shù)數(shù)據(jù),并直觀地顯示出來的監(jiān)控系統(tǒng),對汽車狀態(tài)進(jìn)行監(jiān)測和故障診斷對于實現(xiàn)車輛安全運行具有重要的作用[3-4]。此外,汽車運行狀態(tài)監(jiān)測技術(shù)可以讓車主準(zhǔn)確、直接了解車輛的各種參數(shù)和狀態(tài),而不需要到專門的檢測部門進(jìn)行了解,降低不必要的車輛維護(hù)成本[5-7]的同時,也為車主提供了極大的方便。
本文設(shè)計的車載CAN總線監(jiān)控系統(tǒng)的系統(tǒng)原理框圖如圖1所示。由汽車診斷儀和CAN協(xié)議分析儀構(gòu)成汽車某參數(shù)的協(xié)議數(shù)據(jù)獲取工具,通過CANPro獲取協(xié)議數(shù)據(jù),分析并解析出該參數(shù)通信協(xié)議。根據(jù)解析出的通信協(xié)議,通過CANoe搭建仿真模型,用顯示面板實時顯示參數(shù)。下面以大眾汽車發(fā)動機轉(zhuǎn)速參數(shù)為例,描述參數(shù)獲取、協(xié)議數(shù)據(jù)分析、CANoe仿真系統(tǒng)搭建與仿真結(jié)果分析。
圖1 CAN總線監(jiān)控系統(tǒng)的系統(tǒng)原理框圖
下面以獲取大眾汽車發(fā)動機轉(zhuǎn)速為例,描述汽車參數(shù)的獲取和分析過程。大眾汽車CAN總線應(yīng)用層協(xié)議采用標(biāo)準(zhǔn)幀格式,所以以標(biāo)準(zhǔn)幀格式對斯柯達(dá)汽車CAN數(shù)據(jù)進(jìn)行提取和解析。
利用CAN協(xié)議分析儀和汽車診斷儀ISCANCAR VAG對斯柯達(dá)轎車的CAN通信數(shù)據(jù)進(jìn)行采集。將汽車診斷儀通過OBD-II接口接入大眾汽車的CAN總線,啟動汽車,然后將汽車診斷儀上切換到007通道,請求讀取發(fā)動機轉(zhuǎn)速。
將CAN協(xié)議分析儀的CAN接口與OBD-II接口中的CAN總線引腳連接,將CAN總線分析儀的CANPro計算機端軟件的CAN波特率配置為500kbps;CANPro協(xié)議分析平臺就可獲取到數(shù)據(jù)流通道號為07的發(fā)動機轉(zhuǎn)速的協(xié)議數(shù)據(jù)。
CAN總線分析儀讀取到的汽車發(fā)動機轉(zhuǎn)速的通信數(shù)據(jù)如圖2所示。
圖2 CAN總線分析儀獲取的由汽車診斷儀申請發(fā)動機轉(zhuǎn)速的數(shù)據(jù)
(1)對于序號為0和序號為1的這兩幀數(shù)據(jù)表示成功進(jìn)入汽車發(fā)動機(Engine)系統(tǒng),握手成功。在這兩幀數(shù)據(jù)塊中:
發(fā)送:01 C0 00 10 00 03 01 接收:00 D0 00 03 40 07 01
在發(fā)送這行的第0個字節(jié)“01” 表示的是發(fā)動機系統(tǒng)的觸發(fā)地址碼,在接收幀的第五個字節(jié)和第六個字節(jié)“07 01” 表示的是發(fā)動機系統(tǒng)的系統(tǒng)地址碼。
(2)序號為2和序號為3這兩數(shù)據(jù)幀是空閑幀,表示的是在等待讀取數(shù)據(jù)流或者其它任務(wù)的執(zhí)行。
(3)序號為4的幀是CAN診斷儀發(fā)出的申請發(fā)動機07組參數(shù)的請求幀,其中“02 21”表示命令字;“07”表示的是參數(shù)組編號。
(4)序號為6到9和序號為12到15的幀ID為0x300表示的是汽車發(fā)動機ECU的響應(yīng)幀,接收的第6幀和第12幀的最后兩個字節(jié)“01 13”和“02 13”就是發(fā)動機的轉(zhuǎn)速數(shù)據(jù)。將接收ECU幀的數(shù)據(jù)提取出來,轉(zhuǎn)速的計算公式為:(buf[6]* buf[7])/5。
仿真系統(tǒng)包含發(fā)動機控制單元節(jié)點(Engine)、控制節(jié)點(control)、發(fā)送節(jié)點(Send)3個節(jié)點;發(fā)動機控制單元節(jié)點用于解析發(fā)動機轉(zhuǎn)速數(shù)據(jù)協(xié)議幀,并將轉(zhuǎn)速數(shù)據(jù)在顯示面板上顯示;發(fā)送節(jié)點用于定時發(fā)送發(fā)送機轉(zhuǎn)速參數(shù)的請求幀,向ECU申請發(fā)動機轉(zhuǎn)速數(shù)據(jù),ECU收到請求后,發(fā)送發(fā)動機轉(zhuǎn)速數(shù)據(jù)協(xié)議幀;控制節(jié)點用于在全仿真方式下,模擬汽車ECU在收到發(fā)動機轉(zhuǎn)速參數(shù)申請幀后,發(fā)送轉(zhuǎn)速數(shù)據(jù)幀;在半實物仿真方式下,監(jiān)控系統(tǒng)的OBDII接口直接與車載CAN總線連接,替代控制節(jié)點,此時發(fā)送節(jié)點向汽車ECU發(fā)送發(fā)動機轉(zhuǎn)速參數(shù)請求幀,網(wǎng)絡(luò)拓?fù)鋱D如圖3所示。
圖3 CAN總線網(wǎng)絡(luò)拓?fù)鋱D
CANdb++是一種集成在CANoe開發(fā)環(huán)境中的數(shù)據(jù)庫操作工具,它包含了整個系統(tǒng)的各個節(jié)點、環(huán)境變量、消息的設(shè)定以及信號在消息中的相對位置的配置。通過使用數(shù)據(jù)庫編輯工具CANdb++把汽車CAN應(yīng)用層協(xié)議定義的各個參數(shù)和報文信息編輯到一個數(shù)據(jù)庫中,以消息的形式定義報文數(shù)據(jù)幀,再以信號的形式定義各個參數(shù),最終把建立好的數(shù)據(jù)庫DBC文件導(dǎo)入仿真系統(tǒng)中。根據(jù)前面分析出的汽車發(fā)動機轉(zhuǎn)速協(xié)議數(shù)據(jù)制作如表1所示。
表1 數(shù)據(jù)庫編輯應(yīng)用表
在創(chuàng)建完網(wǎng)絡(luò)節(jié)點、消息、信號和環(huán)境變量,并且相互之間關(guān)聯(lián)后,基本上構(gòu)成了一個網(wǎng)絡(luò)數(shù)據(jù)庫,對數(shù)據(jù)庫里的網(wǎng)絡(luò)、節(jié)點、消息和信號建立屬性,如圖4所示;采用在CANoe軟件中自帶的Panel Designer工具來編輯面板。
圖4 DBC數(shù)據(jù)庫建立
建立好了的網(wǎng)絡(luò)數(shù)據(jù)庫和顯示面板的設(shè)計,但各節(jié)點還沒進(jìn)行相互通信,對發(fā)出的報文無法做出響應(yīng)及處理,因此需對各節(jié)點進(jìn)行CAPL語言的編程從而實現(xiàn)相應(yīng)的功能。編程時用到了系統(tǒng)事件(on start)、CAN消息事件(on message)、時間事件(on time)和環(huán)境變量事件(on envVar)等。
發(fā)動機系統(tǒng)節(jié)點Engine,用于從CAN總線上獲取汽車發(fā)動機轉(zhuǎn)速的協(xié)議數(shù)據(jù)幀,解析出轉(zhuǎn)速后在顯示面板上顯示:
系統(tǒng)的仿真結(jié)果如圖5 所示。從CANoe軟件的Trace跟蹤窗口可以查看仿真系統(tǒng)中進(jìn)行通信時,能正常發(fā)送與接收的報文,可以驗證該仿真系統(tǒng)是可以正常通信的。跟蹤窗口中記錄了獲取發(fā)動機轉(zhuǎn)速參數(shù)的報文,同時通過在CANoe中的顯示面板上顯示出相應(yīng)的發(fā)動機轉(zhuǎn)速值。
圖5 發(fā)動機轉(zhuǎn)速數(shù)據(jù)及儀表顯示
使用汽車診斷儀獲取斯柯達(dá)汽車的發(fā)動機轉(zhuǎn)速值如圖6所示。仿真系統(tǒng)獲得發(fā)動機轉(zhuǎn)速與汽車診斷儀所是一致的。從而驗證了所解析出來的發(fā)動機系統(tǒng)轉(zhuǎn)速參數(shù)的協(xié)議的準(zhǔn)確性。
圖6 使用汽車診斷儀獲取斯柯達(dá)汽車的發(fā)動機轉(zhuǎn)速值
文中以斯柯達(dá)汽車的發(fā)動機轉(zhuǎn)速為測試參數(shù)對象,驗證了CAN總線監(jiān)控系統(tǒng)的應(yīng)用可行性。在監(jiān)控系統(tǒng)上,以同樣的數(shù)據(jù)采集和解析的方法,可以獲取汽車運行過程中的主要參數(shù)和報警信息,并實時顯示這些參數(shù),使汽車運行狀態(tài)參數(shù)可視化,有利于駕駛者了解汽車運行狀態(tài),提高行車安全性。