林 霞,龔元明
(上海工程技術(shù)大學(xué) 汽車工程學(xué)院,上海 201620)
故障診斷功能已經(jīng)成為新車出廠前測試和修理廠故障檢測不可或缺的重要手段[1]?,F(xiàn)如今手機(jī)幾乎人手一部,智能手機(jī)也向著移動終端的方向發(fā)展。據(jù)統(tǒng)計(jì)2014年在全球智能手機(jī)操作系統(tǒng)中,Android系統(tǒng)以其顯著的開放性、豐富的硬件選擇等絕對優(yōu)勢占據(jù)市場的最大份額。為實(shí)現(xiàn)汽車故障在線監(jiān)測和診斷,本文將手機(jī)藍(lán)牙(Blue tooth)、CAN(Controller Area Network)總線、Android智能手機(jī)三者結(jié)合在一起,實(shí)現(xiàn)了基于藍(lán)牙技術(shù)的無線汽車故障診斷系統(tǒng)。
無線汽車故障診斷系統(tǒng)主要由下位機(jī)和上位機(jī)兩部分組成,如圖1所示。上位機(jī)是客戶端,基于手機(jī)Android系統(tǒng);下位機(jī)即CAN轉(zhuǎn)藍(lán)牙控制器模塊(以下簡稱Bluetooth-CAN模塊),通過OBD接口(CAN總線)和汽車ECU(電子控制單元)通信,讀取來自ECU的報文信息[2],并轉(zhuǎn)換成藍(lán)牙串行數(shù)據(jù)格式,發(fā)送給上位機(jī)。手機(jī)客戶端有兩個線程,一個線程是子線程,負(fù)責(zé)接收和存儲數(shù)據(jù),并在接收完一組數(shù)據(jù),判斷數(shù)據(jù)格式正確后,給上位機(jī)回碼,請求發(fā)送下一組數(shù)據(jù);另一個是主線程,提取子線程存儲的數(shù)據(jù),與數(shù)據(jù)庫對比,對數(shù)據(jù)進(jìn)行處理。
無線汽車故障診斷系統(tǒng)的基本流程是由Android手機(jī)自帶的藍(lán)牙API接口,通過APP(Application第三方應(yīng)用程序)客戶端,實(shí)現(xiàn)手機(jī)藍(lán)牙設(shè)備與Bluetooth-CAN模塊的無線連接。設(shè)備連接正常后,遵循一定的數(shù)據(jù)格式即協(xié)議,采用串行數(shù)據(jù)通信實(shí)現(xiàn)數(shù)據(jù)的輸入、輸出。無線汽車故障診斷系統(tǒng)結(jié)構(gòu)框架如圖2所示。其中,主要涉及的是ECU、Bluetooth-CAN模塊、手機(jī)端藍(lán)牙三者之間數(shù)據(jù)的傳輸和協(xié)議轉(zhuǎn)換(J1939協(xié)議和藍(lán)牙協(xié)議)。
圖1 無線汽車故障診斷系統(tǒng)的組成
圖2 無線汽車故障診斷系統(tǒng)結(jié)構(gòu)框架
J1939協(xié)議是由美國汽車工程協(xié)會發(fā)布的,以CAN總線為基礎(chǔ),支持閉環(huán)控制的在多個ECU之間高速通信的網(wǎng)絡(luò)協(xié)議。本系統(tǒng)通信基于J1939協(xié)議,采用CAN規(guī)范中的CAN2.0B擴(kuò)展幀格式,波特率為250kBd/s?;贑AN通信的J1939協(xié)議的ECU能提供發(fā)動機(jī)性能監(jiān)測參數(shù)和整車網(wǎng)絡(luò)通訊,實(shí)現(xiàn)整車網(wǎng)絡(luò)中多個ECU的數(shù)據(jù)共享;同時J1939協(xié)議還支持故障診斷,可以讀取或者清除診斷故障碼。
本系統(tǒng)ECU主要采用的通信方式為單幀通信和多幀通信。在監(jiān)測和整車網(wǎng)絡(luò)通信時主要采用單幀通信的方式,但由于故障碼個數(shù)的多變性,在故障診斷時,單幀通信和多幀通信結(jié)合使用。
ECU發(fā)送的故障診斷數(shù)據(jù)幀主要包含:故障類型、故障碼(DTC)和參數(shù)組編號(PGN)等。故障類型主要分為當(dāng)前故障和先前故障。診斷當(dāng)前故障和先前故障所包含的故障碼有3種可能:無故障、單個故障和多個故障。無故障和單個故障可使用單個CAN數(shù)據(jù)幀發(fā)送全部信息,而汽車大多情況下存在多個故障,那么就需要多個數(shù)據(jù)幀才可以把信息發(fā)送完畢,這時就需要用J1939協(xié)議的拆裝和重組消息的傳輸協(xié)議功能。
任何藍(lán)牙設(shè)備必須遵循藍(lán)牙規(guī)范才能實(shí)現(xiàn)各廠商的產(chǎn)品互連互通,藍(lán)牙協(xié)議包括核心協(xié)議層、替代電纜協(xié)議層、電話控制協(xié)議層和選用協(xié)議層[3]。除了以上協(xié)議層外,藍(lán)牙協(xié)議棧中還包括2個接口:一個是HCI(主機(jī)控制接口),用來為基帶控制器、鏈路控制器以及訪問硬件狀態(tài)和控制寄存器等提供命令接口;另一個是與基帶處理部分直接相連的音頻接口,用以傳遞音頻數(shù)據(jù)。本系統(tǒng)用到的是HCI、邏輯鏈路控制和適配協(xié)議(L2CAP)、串行仿真RFCOMM、鏈路管理協(xié)議(LMP)、電話替代協(xié)議和選用協(xié)議。其中的鏈路管理協(xié)議(LMP)負(fù)責(zé)藍(lán)牙組件連接的建立,邏輯鏈路控制和適配協(xié)議(L2CAP)負(fù)責(zé)高層傳輸,應(yīng)用層協(xié)議屏蔽基帶協(xié)議的適配協(xié)議即為適配層。
實(shí)現(xiàn)藍(lán)牙協(xié)議與J1939協(xié)議的連接,兩者之間必須有統(tǒng)一的協(xié)議規(guī)范來實(shí)現(xiàn),稱為自定義協(xié)議。手機(jī)端自定義協(xié)議格式如圖3所示,發(fā)送固定為12字節(jié)。Bluetooth-CAN端自定義協(xié)議格式如圖4所示,發(fā)送固定為16字節(jié)。其中,ID數(shù)據(jù)幀標(biāo)識符、PGN參數(shù)組編號和DT故障碼這些標(biāo)號根據(jù)各個企業(yè)自己設(shè)定的不同而定。
圖3 手機(jī)端自定義協(xié)議格式
圖4 Bluetooth-CAN端自定義協(xié)議格式
Bluetooth-CAN控制器模塊通過OBD接口與發(fā)動機(jī)控制ECU通信,讀取來自發(fā)動機(jī)控制ECU的信息,并轉(zhuǎn)換成藍(lán)牙數(shù)據(jù)發(fā)送給具有藍(lán)牙功能的Android手機(jī)。
3.1.1 Bluetooth-CAN控制器模塊的硬件設(shè)計(jì)
Bluetooth-CAN控制器模塊的硬件主要包括:微控制器模塊、CAN通信接口模塊和藍(lán)牙模塊。
(1)微控制器模塊:Bluetooth-CAN模塊采用的控制器芯片是XC2238N-40F,是Infineon公司的16位XC2200系列微控制器,它提供了192kB~832kB的閃存、可選的EEPROM仿真、最大可達(dá)82kB的SRAM、最大CPU時鐘頻率為100MHz。為了達(dá)到AUTOSAR標(biāo)準(zhǔn)程序模型中關(guān)于獨(dú)立于硬件進(jìn)行軟件開發(fā)的要求,控制器中集成了內(nèi)存保護(hù)單元(MPU)。此外,Infineon還提供了單獨(dú)的FlexRay通信控制器,可方便地添加到系統(tǒng)中。微控制器外圍電路圖如圖5所示。
圖5 微控制器外圍電路圖
(2)CAN通信接口模塊:CAN通信接口模塊是將汽車OBDII接口中CAN總線上的數(shù)據(jù)讀取到微控制器中,同時將微控制器的數(shù)據(jù)發(fā)送到汽車的CAN總線上,本系統(tǒng)采用的芯片型號為TLE6250。
(3)藍(lán)牙模塊:本系統(tǒng)采用的藍(lán)牙模塊芯片型號為EMX-02A,是Modiatek公司專為智能無線數(shù)據(jù)傳輸而打造的FBT06系列,模塊采用Bluetooth2.1,具有成本低、體積小、收發(fā)靈敏度高等優(yōu)點(diǎn)。
3.1.2 Bluetooth-CAN控制器模塊的軟件設(shè)計(jì)
CAN轉(zhuǎn)藍(lán)牙控制器模塊的軟件部分是框架性的單片機(jī)編程,編譯環(huán)境為Tasking。CAN轉(zhuǎn)藍(lán)牙控制器模塊程序如圖6所示。
Android手機(jī)端標(biāo)配之一的藍(lán)牙適配器連接的是Bluetooth-CAN中的藍(lán)牙模塊。當(dāng)Android的content中的設(shè)備連接正常后,通過BluetoothSocket采用串行數(shù)據(jù)通信實(shí)現(xiàn)與CAN轉(zhuǎn)藍(lán)牙控制器模塊的交互[4]。手機(jī)端界面設(shè)定如圖7~圖10所示。
主界面主要實(shí)現(xiàn)藍(lán)牙的搜索、連接和斷開,這個功能的Android程序已經(jīng)有很多資料可供參考,在此不再贅述。藍(lán)牙連接后跳入到連接界面,供客戶去選擇相應(yīng)的需求,即故障碼和數(shù)據(jù)流,后續(xù)也會有MAP表的標(biāo)定模式。
圖6 CAN轉(zhuǎn)藍(lán)牙控制器模塊程序
圖7 主界面
圖8 連接界面
圖9 故障碼界面
圖10 數(shù)據(jù)流界面
APP客戶端的框架構(gòu)建如圖11所示。其分兩個線程在運(yùn)行,子線程是手機(jī)端藍(lán)牙模塊與Bluetooth-CAN中的藍(lán)牙模塊之間的數(shù)據(jù)交互,當(dāng)前Activity中發(fā)出請求命令,Bluetooth-CAN模塊將相應(yīng)指令需求的數(shù)據(jù)從ECU中提取出來,進(jìn)行數(shù)據(jù)轉(zhuǎn)換處理,結(jié)果通過藍(lán)牙的BluetoothSocket發(fā)送到手機(jī)端藍(lán)牙,手機(jī)端接收數(shù)據(jù)并判斷數(shù)據(jù)是否完整,對數(shù)據(jù)進(jìn)行存儲并發(fā)送回碼(請求命令),請求下一組數(shù)據(jù);主線程完成對界面的初始化,并提取手機(jī)端存儲的數(shù)據(jù)與數(shù)據(jù)庫進(jìn)行對比,完成對數(shù)據(jù)的最終處理,并將結(jié)果直觀地顯示在相應(yīng)的故障碼或數(shù)據(jù)流界面。
圖11 APP客戶端的框架構(gòu)建
基于Android手機(jī)藍(lán)牙技術(shù)的汽車故障診斷系統(tǒng)的研究與設(shè)計(jì)能緊跟信息時代發(fā)展的最新潮流,是在已有傳統(tǒng)手持式汽車故障診斷設(shè)備和Android系統(tǒng)研究的基礎(chǔ)上研發(fā)的新型設(shè)備。系統(tǒng)具有價格便宜、體積小、使用方便的特點(diǎn),目前已經(jīng)投入市場,反響不錯,極具大規(guī)模推廣的市場前景。
[1] 陳新,胡小龍.基于GPRS的汽車故障診斷儀的遠(yuǎn)程診斷的設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2006,19(4):70-72.
[2] 羅峰,孫澤昌.汽車CAN總線系統(tǒng)原理、設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2010.
[3] 金純,林金朝.藍(lán)牙協(xié)議及其源代碼分析[M].北京:國防工業(yè)出版社,2006.
[4] 李寧.Android/Ophone開發(fā)完全講義[M].北京:中國水利水電出版社,2010.