呂霞付,楊江寧,陳建,楊晗
(重慶郵電大學,重慶 400065)
目前,要將汽車故障診斷數據從ECU(Electronic Control Unit,電子控制單元)中讀出,最主流的途徑就是通過診斷儀來實現汽車診斷。
便攜式汽車發動機故障診斷儀由于體積小、攜帶方便,一度受到人們追捧;然而隨著時代的發展,汽車發動機上電控單元(ECU)所監控以及獲取的數據越來越多,便攜式的汽車發動機診斷儀開始顯現出不能對電控單元進行編程、在線查看診斷報告內容和智能化的修理診斷指導等問題,已經不能勝任現代汽車發動機故障診斷的發展要求。而基于PC機的診斷系統依靠平臺強大、高效的數據處理能力,逐漸流行起來。
文中采用通信硬件與PC診斷軟件結合的方式,利用強大的PC機的數據處理能力,對故障診斷軟件采用面向對象的方式進行結構化與模塊化的程序設計,通過通信硬件完成物理層、數據鏈路層;結合關系數據庫系統通過PC應用診斷軟件,完成應用層要求。
KWP2000協議是基于K線的診斷協議標準,在國內普遍使用,它是針對汽車ECU和診斷設備之間的數據交換而制定。并且對串行通信的通用要求進行了規定。在診斷系統硬件與軟件結構中,通信模塊是重要組成部分之一,決定了通信質量的好壞。
KWP2000協議物理層以ISO9141標準為基礎,對網絡結構、電氣參數等相關內容進行了詳細規定,用以實現診斷服務,并將總線上電池電壓小于Vb的20%~30%時定義為邏輯“0”,大于Vb的70%~80%時定義為“1”。設計了K線到RS232轉換電路來實現物理層串行通信服務。
數據鏈路層主要包括兩方面,一方面定義報文的結構。報文格式如表1所示。

表1 KWP2000報文格式定義
幀頭是由3~4個字節構成,包含報文的格式、目標地址、源地址及數據段長度等相關信息。數據段中的第一個字節規定為服務類型標識碼。完整的數據段最大長度是255 Byte,校驗字節
另一方面,該層建立通信連接時的一系列服務操作。在診斷開始之前診斷設備須對ECU進行初始化處理,初始化之后ECU會返回關鍵字,而ECU所支持的幀頭和定時參數則都包含在關鍵字里面,例如ECU通信波特率、源地址、幀頭格式等信息。
系統采用基于K總線的ISO14230診斷協議,因此系統診斷實現和K總線通信的設計分別依據ISO14230協議中的應用層和數據鏈路層的規定。診斷系統的設計主要分為PC診斷軟件模塊和診斷通信硬件模塊兩部分。診斷系統總體框架圖如圖1所示。

圖1 系統診斷總體框圖
由TL718協議轉換電路、USB通信電路、K線通信電路以及擴展功能電路組成的硬件電路原理圖如圖2所示。其中,采用電腦USB接口提供5 V電源供電,汽車ECU提供24 V電源供電。

圖2 通信硬件電路圖
軟件開發環境利用了Java JDK1.8,多線程編程。首先,開始運行主線程則顯示人機交互界面并識別出虛擬串口、匹配波特率等信息,用于實現診斷軟件跟ECU的串口通信。通信連接時發送TL718芯片設置命令與ECU通信連接命令。
2.3.1 TL718芯片設置流程
(1)發送ATSP5選擇采用K總線通信協議;
(2)發送ATST03設置ECU應答時間12 ms;
(3)發送ATSW19設置TL718空閑等待握手時間500 ms;
(4)使用ATSH81 10 F1設置報文頭,其中10表示發動機ECU地址。
2.3.2 汽車ECU連接指令
TL718有兩種命令格式:第一種是以AT開頭的內部命令;另一種是OBD連接命令(即只包含16進制的ASCII碼)。只有發送OBD命令的時候,與車輛連接通信。當向發動機ECU發送OBD命令10 81時,開始建立連接通信,其中10是啟動通信服務標識,81是啟動通信請求服務標識,如表2所示。

表2 請求報文
通信連接流程圖如圖3所示。

圖3 通信連接程序流程圖
連接ECU功能整體程序如下:
private void 連接(object sender, EventArgs e)
{
SerialPort_Configure(); //掃描串口,初始化出口配置函數
SerialPort_Open(); // 打開串口函數
Ecu_Connect(); //連接到ECU函數
}
診斷軟件貫徹了軟件工程的設計原則,分為視圖層、診斷服務層、串口通信層3個層次。軟件總體結構如圖4所示。

圖4 軟件總體架構
視圖層提供友好人機交互界面接口。診斷服務層通過實現與診斷數據庫之間的交互,提供包括讀取ECU內存放的關于ECU版本相關信息、汽車故障碼、汽車行程記錄、參數測量等功能服務。串口通信層保證診斷軟件與ECU之間的通信。
通過運行汽車診斷系統獲得PC診斷應用軟件的診斷界面,診斷結果界面如圖5所示。
在一開始初始化主界面時,汽車發動機診斷系統軟件就已建立與汽車電控單元的通信連接,如圖5(a)所示。通過讀取故障碼功能,在新窗口表格中顯示故障碼的數量及每個故障碼的詳細信息,讀取故障碼之后,可以通過Excel保存于本地文件中,以供之后出現類似故障時作為參考信息,如圖5(b)所示。在使用清除故障碼功能后,用戶可以繼續操作其他診斷功能。使用汽車發動機的行駛記錄以及參數測量功能分別如圖5(c)、(d)所示。

圖5 PC診斷應用軟件運行界面
此次開發的PC式汽車發動機故障診斷系統是某公司針對其EDC17系列新型汽車發動機進行研制的,可以采集試驗臺發動機ECU中的數據。經測試,文中所設計的系統方案可用,診斷數據符合實際工況,診斷結果滿足用戶需求。
參考文獻:
[1]顏伏伍,王攀,胡杰,等.基于車載總線的PC式汽車故障診斷系統[J].武漢理工大學學報(信息與管理工程版),2011,33(5):758-762.
YAN F W,WANG P,HU J,et al.PC-style Car Fault Diagnosis System Based on On-board Bus[J].Journal of Wuhan University of Technology(Information & Management Engineering),2011,33(5):758-762.
[2]蔡浩.汽車故障診斷系統的設計和開發[D].上海:上海交通大學,2009.
[3]蔣紅楓,賈民平.汽車發動機故障診斷專家系統的研究[J].公路與汽運,2005(5):15-18.
[4]彭富明.汽車發動機故障檢測與診斷系統設計[J].計算機測量與控制,2005,13(12):1351-1353.
PENG F M.Design of the Fault Detection and Diagnosis System for Engine[J].Computer Measurement & Control,2005,13(12):1351-1353.
[5]王奎洋.汽車發動機檢測與診斷系統的開發和研究[D].南京:南京理工大學,2005.
[6]趙牧原,馮金芝.基于集成化的汽車故障診斷技術研究[J].制造業自動化,2014,36(3):24-28.
ZAHO M Y,FENG J Z.Research of an Integrated Automobile Fault Diagnosis System[J].Manufacturing Automation,2014,36(3):24-28.
[7]過錫雋,周文華.KWP2000診斷通信模塊的開發[J].江南大學學報(自然科學版),2007,6(5):547-550.
GUO X J,ZHOU W H.Development of Diagnostic Communication Module on KWP2000[J].Journal of Jiangnan University(Natural Science Edition),2007,6(5):547-550.