劉鑫爽,程洋
(柳州鐵道職業(yè)技術學院,廣西柳州,545616)
隨著科學技術的不斷發(fā)展,應用于汽車上的設備不斷改進和提升,這些裝置與傳統(tǒng)的機械設備相比,具有更高的通信及計算要求,從而,提升了汽車的性能、效率以及安全性[1-2]。對于復雜的汽車設備及裝置的控制,需要可靠的總線技術以及網絡技術來支撐,并適用于復雜的汽車環(huán)境。這些技術的發(fā)展成為汽車相關技術發(fā)展的必然趨勢[3]。CAN總線技術作為一種先進的支持串行的數(shù)據(jù)通信網絡,能夠在實時的以及分布式控制的系統(tǒng)上運行[4],已成為現(xiàn)場總線國際標準之一[5],廣泛應用于汽車工業(yè)領域,成為汽車的主干通信總線。目前,汽車運行過程中的狀態(tài)只有有限的信息通過車載儀表面板顯示,仍有很多重要的信息無法直觀地顯示,如故障報警信息等,而這些信息是能夠通過CAN總線向對應的ECU申請,由ECU響應并反饋這些信息數(shù)據(jù)的。因此設計一個通過CAN總線能獲取汽車各ECU的參數(shù)數(shù)據(jù),并直觀地顯示出來的監(jiān)控系統(tǒng),對汽車狀態(tài)進行監(jiān)測和故障診斷對于實現(xiàn)車輛安全運行具有重要的作用[6-7]。另外,對于車主而言,汽車運行狀態(tài)監(jiān)測技術可以讓車主準確、直接了解車輛的各種參數(shù)和狀態(tài),而不需要到專門的檢測部門進行了解,降低不必要的車輛維護成本[8-10]。
硬件電路設計如圖1所示。
圖1 汽車CAN總線協(xié)議分析儀系統(tǒng)框圖
系統(tǒng)采用嵌入式STM32F103VET6作為CPU,片內集成CAN控制器,采用TJA1050作為 CAN數(shù)據(jù)的收發(fā)器。通過OBDII接口連接到車載CAN總線接口。顯示器采用LCD串口顯示屏。電源模塊電路采用L7805三端穩(wěn)壓IC作為5V輸出的穩(wěn)壓芯片,為CAN收發(fā)模塊、3.3V穩(wěn)壓電路輸入以及光耦模塊提供電源。采用AMS1117_3.3穩(wěn)壓IC作為3.3V電壓輸出電路的電壓轉換芯片,為主控制器提供直流電源。
CAN協(xié)議數(shù)據(jù)幀定義包括ID的定義、幀數(shù)據(jù)的定義等,以發(fā)動機轉速為例,利用CAN協(xié)議分析儀和汽車診斷儀ISCANCAR VAG對斯柯達轎車的CAN通信數(shù)據(jù)進行采集。采集方法如下:首先,將汽車診斷儀通過汽車OBD-II接口接入大眾汽車的CAN總線,啟動汽車,然后將汽車診斷儀上切換到007通道,請求讀取發(fā)動機轉速。其次,把CAN協(xié)議分析儀的CAN接口與OBD-II接口中的CAN總線引腳連接,將CAN總線分析儀的CANPro計算機端軟件的CAN波特率配置為500kbps。此時CANPro協(xié)議分析平臺就可獲取到數(shù)據(jù)流通道號為07的發(fā)動機轉速的數(shù)據(jù)。
CAN總線分析儀讀取到的汽車發(fā)動機轉速的通信數(shù)據(jù)如圖2所示。
圖2 CAN總線分析儀獲取的由汽車診斷儀申請發(fā)動機轉速的數(shù)據(jù)
解析過程如下:
(1)對于序號為0和序號為1的這兩幀數(shù)據(jù)表示成功進入汽車發(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ù)流或者其它任務的執(zhí)行。
(3)序號為4的幀是CAN診斷儀發(fā)出的申請發(fā)動機07組參數(shù)的請求幀,其中“02 21”表示命令字;“07”表示的是參數(shù)組編號。
(4)序號為6到9和序號為12到15的幀ID為0x300表示的是汽車發(fā)動機ECU的響應幀,接收的第6幀和第12幀的最后兩個字節(jié)“01 13”和“02 13”就是發(fā)動機的轉速數(shù)據(jù)。將接收ECU幀的數(shù)據(jù)提取出來,轉速的計算公式為:(buf[6]*buf[7])/5。
監(jiān)控系統(tǒng)采用串口LCD顯示屏,通過對應的組態(tài)軟件,設計出友好的顯示界面,并定義各顯示元素的顯示屬性,根據(jù)串口顯示屏的通信協(xié)議,通過RS232串口與車載CAN總線監(jiān)控系統(tǒng)主機進行通訊,實現(xiàn)汽車狀態(tài)參數(shù)的實時顯示。
車載CAN總線監(jiān)控系統(tǒng)主機的軟件設計主要包括:系統(tǒng)時鐘配置模塊、串口中斷配置模塊、時鐘節(jié)拍配置模塊、串口屏程序初始化模塊、CAN初始化模塊等。軟件設計流程圖如圖3所示。監(jiān)控系統(tǒng)通過串口LCD屏,觸摸選擇實時顯示汽車狀態(tài)參數(shù),監(jiān)控主機向汽車對應ECU申請參數(shù),ECU響應并反饋參數(shù)信息,經解析后送至串口LCD屏實時該參數(shù)。
圖3 監(jiān)控系統(tǒng)軟件流程
實車測試是研發(fā)車型量產前的最后測試,也是最關鍵的測試[9]。文中以上海大眾的斯柯達轎車為測試對象,將車載CAN總線監(jiān)控系統(tǒng)的OBD-II接口通過Y型電纜分別于汽車的OBD-II接口和CAN總線分析的CAN接口連接。駕駛員啟動汽車,汽車檔位設置在空擋,加油,在不同的發(fā)動機轉數(shù)下,通過CAN分析儀的CANPro軟件讀取設計的CAN總線監(jiān)控系統(tǒng)請求發(fā)動機轉速請求幀及發(fā)動機ECU響應幀的數(shù)據(jù),通過讀取發(fā)動機ECU響應的參數(shù)組為07的幀的數(shù)據(jù)域數(shù)據(jù),解析出發(fā)動機轉速,與汽車的發(fā)動機轉速儀表以及CAN總線監(jiān)控系統(tǒng)的串口LCD顯示器顯示出的發(fā)動機轉速三者進行比較,如果相同,則可以驗證解析數(shù)據(jù)的準確性,以及車載CAN總線系統(tǒng)的可行性。
將接收到汽車發(fā)動機轉速的部分數(shù)據(jù)做成表格,如表1所示。
表1 斯柯達汽車CAN總線上的發(fā)動機轉速相關數(shù)據(jù)
將“C2 13”轉換成轉速值:194*19/5= 737.2,取整后得到轉速為737r/min,與圖4中顯示的發(fā)動機轉速一致。
圖4 汽車CAN總線監(jiān)控系統(tǒng)的顯示轉速值
測試表明:汽車CAN總線監(jiān)控系統(tǒng)能采集和解析斯柯達汽車的狀態(tài)參數(shù),并能實時實現(xiàn)這些參數(shù)。
文中以斯柯達汽車的發(fā)動機轉速為測試參數(shù)對象,驗證了CAN總線監(jiān)控系統(tǒng)的應用可行性。在監(jiān)控系統(tǒng)上,以同樣的數(shù)據(jù)采集和解析的方法,可以獲取汽車運行過程中的主要參數(shù)和報警信息,并實時顯示這些參數(shù),使汽車運行狀態(tài)參數(shù)可視化,有利于駕駛者了解汽車運行狀態(tài),提高安全性。