林 霞,龔元明
(上海工程技術大學 汽車工程學院,上海 201620)
故障診斷功能已經成為新車出廠前測試和修理廠故障檢測不可或缺的重要手段[1]。現如今手機幾乎人手一部,智能手機也向著移動終端的方向發展。據統計2014年在全球智能手機操作系統中,Android系統以其顯著的開放性、豐富的硬件選擇等絕對優勢占據市場的最大份額。為實現汽車故障在線監測和診斷,本文將手機藍牙(Blue tooth)、CAN(Controller Area Network)總線、Android智能手機三者結合在一起,實現了基于藍牙技術的無線汽車故障診斷系統。
無線汽車故障診斷系統主要由下位機和上位機兩部分組成,如圖1所示。上位機是客戶端,基于手機Android系統;下位機即CAN轉藍牙控制器模塊(以下簡稱Bluetooth-CAN模塊),通過OBD接口(CAN總線)和汽車ECU(電子控制單元)通信,讀取來自ECU的報文信息[2],并轉換成藍牙串行數據格式,發送給上位機。手機客戶端有兩個線程,一個線程是子線程,負責接收和存儲數據,并在接收完一組數據,判斷數據格式正確后,給上位機回碼,請求發送下一組數據;另一個是主線程,提取子線程存儲的數據,與數據庫對比,對數據進行處理。
無線汽車故障診斷系統的基本流程是由Android手機自帶的藍牙API接口,通過APP(Application第三方應用程序)客戶端,實現手機藍牙設備與Bluetooth-CAN模塊的無線連接。設備連接正常后,遵循一定的數據格式即協議,采用串行數據通信實現數據的輸入、輸出。無線汽車故障診斷系統結構框架如圖2所示。其中,主要涉及的是ECU、Bluetooth-CAN模塊、手機端藍牙三者之間數據的傳輸和協議轉換(J1939協議和藍牙協議)。

圖1 無線汽車故障診斷系統的組成

圖2 無線汽車故障診斷系統結構框架
J1939協議是由美國汽車工程協會發布的,以CAN總線為基礎,支持閉環控制的在多個ECU之間高速通信的網絡協議。本系統通信基于J1939協議,采用CAN規范中的CAN2.0B擴展幀格式,波特率為250kBd/s。基于CAN通信的J1939協議的ECU能提供發動機性能監測參數和整車網絡通訊,實現整車網絡中多個ECU的數據共享;同時J1939協議還支持故障診斷,可以讀取或者清除診斷故障碼。
本系統ECU主要采用的通信方式為單幀通信和多幀通信。在監測和整車網絡通信時主要采用單幀通信的方式,但由于故障碼個數的多變性,在故障診斷時,單幀通信和多幀通信結合使用。
ECU發送的故障診斷數據幀主要包含:故障類型、故障碼(DTC)和參數組編號(PGN)等。故障類型主要分為當前故障和先前故障。診斷當前故障和先前故障所包含的故障碼有3種可能:無故障、單個故障和多個故障。無故障和單個故障可使用單個CAN數據幀發送全部信息,而汽車大多情況下存在多個故障,那么就需要多個數據幀才可以把信息發送完畢,這時就需要用J1939協議的拆裝和重組消息的傳輸協議功能。
任何藍牙設備必須遵循藍牙規范才能實現各廠商的產品互連互通,藍牙協議包括核心協議層、替代電纜協議層、電話控制協議層和選用協議層[3]。除了以上協議層外,藍牙協議棧中還包括2個接口:一個是HCI(主機控制接口),用來為基帶控制器、鏈路控制器以及訪問硬件狀態和控制寄存器等提供命令接口;另一個是與基帶處理部分直接相連的音頻接口,用以傳遞音頻數據。本系統用到的是HCI、邏輯鏈路控制和適配協議(L2CAP)、串行仿真RFCOMM、鏈路管理協議(LMP)、電話替代協議和選用協議。其中的鏈路管理協議(LMP)負責藍牙組件連接的建立,邏輯鏈路控制和適配協議(L2CAP)負責高層傳輸,應用層協議屏蔽基帶協議的適配協議即為適配層。
實現藍牙協議與J1939協議的連接,兩者之間必須有統一的協議規范來實現,稱為自定義協議。手機端自定義協議格式如圖3所示,發送固定為12字節。Bluetooth-CAN端自定義協議格式如圖4所示,發送固定為16字節。其中,ID數據幀標識符、PGN參數組編號和DT故障碼這些標號根據各個企業自己設定的不同而定。

圖3 手機端自定義協議格式

圖4 Bluetooth-CAN端自定義協議格式
Bluetooth-CAN控制器模塊通過OBD接口與發動機控制ECU通信,讀取來自發動機控制ECU的信息,并轉換成藍牙數據發送給具有藍牙功能的Android手機。
3.1.1 Bluetooth-CAN控制器模塊的硬件設計
Bluetooth-CAN控制器模塊的硬件主要包括:微控制器模塊、CAN通信接口模塊和藍牙模塊。
(1)微控制器模塊:Bluetooth-CAN模塊采用的控制器芯片是XC2238N-40F,是Infineon公司的16位XC2200系列微控制器,它提供了192kB~832kB的閃存、可選的EEPROM仿真、最大可達82kB的SRAM、最大CPU時鐘頻率為100MHz。為了達到AUTOSAR標準程序模型中關于獨立于硬件進行軟件開發的要求,控制器中集成了內存保護單元(MPU)。此外,Infineon還提供了單獨的FlexRay通信控制器,可方便地添加到系統中。微控制器外圍電路圖如圖5所示。

圖5 微控制器外圍電路圖
(2)CAN通信接口模塊:CAN通信接口模塊是將汽車OBDII接口中CAN總線上的數據讀取到微控制器中,同時將微控制器的數據發送到汽車的CAN總線上,本系統采用的芯片型號為TLE6250。
(3)藍牙模塊:本系統采用的藍牙模塊芯片型號為EMX-02A,是Modiatek公司專為智能無線數據傳輸而打造的FBT06系列,模塊采用Bluetooth2.1,具有成本低、體積小、收發靈敏度高等優點。
3.1.2 Bluetooth-CAN控制器模塊的軟件設計
CAN轉藍牙控制器模塊的軟件部分是框架性的單片機編程,編譯環境為Tasking。CAN轉藍牙控制器模塊程序如圖6所示。
Android手機端標配之一的藍牙適配器連接的是Bluetooth-CAN中的藍牙模塊。當Android的content中的設備連接正常后,通過BluetoothSocket采用串行數據通信實現與CAN轉藍牙控制器模塊的交互[4]。手機端界面設定如圖7~圖10所示。
主界面主要實現藍牙的搜索、連接和斷開,這個功能的Android程序已經有很多資料可供參考,在此不再贅述。藍牙連接后跳入到連接界面,供客戶去選擇相應的需求,即故障碼和數據流,后續也會有MAP表的標定模式。

圖6 CAN轉藍牙控制器模塊程序

圖7 主界面

圖8 連接界面

圖9 故障碼界面

圖10 數據流界面
APP客戶端的框架構建如圖11所示。其分兩個線程在運行,子線程是手機端藍牙模塊與Bluetooth-CAN中的藍牙模塊之間的數據交互,當前Activity中發出請求命令,Bluetooth-CAN模塊將相應指令需求的數據從ECU中提取出來,進行數據轉換處理,結果通過藍牙的BluetoothSocket發送到手機端藍牙,手機端接收數據并判斷數據是否完整,對數據進行存儲并發送回碼(請求命令),請求下一組數據;主線程完成對界面的初始化,并提取手機端存儲的數據與數據庫進行對比,完成對數據的最終處理,并將結果直觀地顯示在相應的故障碼或數據流界面。

圖11 APP客戶端的框架構建
基于Android手機藍牙技術的汽車故障診斷系統的研究與設計能緊跟信息時代發展的最新潮流,是在已有傳統手持式汽車故障診斷設備和Android系統研究的基礎上研發的新型設備。系統具有價格便宜、體積小、使用方便的特點,目前已經投入市場,反響不錯,極具大規模推廣的市場前景。
[1] 陳新,胡小龍.基于GPRS的汽車故障診斷儀的遠程診斷的設計[J].工業控制計算機,2006,19(4):70-72.
[2] 羅峰,孫澤昌.汽車CAN總線系統原理、設計與應用[M].北京:電子工業出版社,2010.
[3] 金純,林金朝.藍牙協議及其源代碼分析[M].北京:國防工業出版社,2006.
[4] 李寧.Android/Ophone開發完全講義[M].北京:中國水利水電出版社,2010.