趙文杰,張曉東,李 靜,董建奇
(北奔重汽(北京)汽車(chē)研發(fā)有限公司,北京 102308)
隨著整車(chē)電控系統(tǒng)的不斷增多,整車(chē)電控系統(tǒng)故障診斷各自分離,像發(fā)動(dòng)機(jī)、變速器、防抱死系統(tǒng)、車(chē)身系統(tǒng)等,它們都有各自專(zhuān)用診斷工具,診斷工具品種多,傳輸協(xié)議不一致,連接接口不一致,診斷效率低。為了提高整車(chē)電控系統(tǒng)故障診斷效率,解決主機(jī)廠集成診斷的問(wèn)題,在整車(chē)網(wǎng)絡(luò)架構(gòu)基礎(chǔ)上,基于控制器診斷協(xié)議以及主機(jī)廠故障解決經(jīng)驗(yàn),結(jié)合系統(tǒng)臺(tái)架、實(shí)車(chē)測(cè)試手段,開(kāi)發(fā)一款診斷功能覆蓋全面、擴(kuò)展性強(qiáng)的多功能診斷儀系統(tǒng),滿(mǎn)足主機(jī)廠和售后服務(wù)系統(tǒng)診斷需求。
首先對(duì)北奔重型載貨汽車(chē)的網(wǎng)絡(luò)架構(gòu)進(jìn)行分析。目前北奔重型載貨汽車(chē)主要由車(chē)身總線和動(dòng)力總線組成。以北奔重型載貨某款車(chē)型為例,車(chē)身總線主要有組合儀表IC、車(chē)載終端TP、駕駛員門(mén)模塊TMFTMB、車(chē)身控制器CBCU等節(jié)點(diǎn)。動(dòng)力總線主要有發(fā)動(dòng)機(jī)控制器EMS、后處理單元DCU、防抱死系統(tǒng)ABS、變速器單元TCU、緩速器單元RCU等節(jié)點(diǎn)。根據(jù)整車(chē)網(wǎng)絡(luò)規(guī)劃以及控制器診斷需求,車(chē)身總線、動(dòng)力總線以及部分控制器診斷總線均在整車(chē)OBD預(yù)留點(diǎn)位定義口。整車(chē)網(wǎng)絡(luò)如圖1所示。
根據(jù)對(duì)不同廠家控制器的診斷協(xié)議調(diào)研,目前控制器的診斷主要有K線診斷和CAN線診斷。
K線診斷主要采用的是Keyword Protocol 2000(KWP2000)協(xié)議,采用ISO 14230標(biāo)準(zhǔn)。其OSI參考模型如圖2所示。
ISO 14230-1中規(guī)定了K線通信的信號(hào)和電氣特性,包括信號(hào)傳輸電壓、波特率、編碼方式等信息。根據(jù)對(duì)供應(yīng)商控制器診斷協(xié)議調(diào)研,K線采用的波特率為10 400b/s。
圖1 某車(chē)型網(wǎng)絡(luò)架構(gòu)
圖2 KWP2000 OSI參考模型
ISO 14230-2中規(guī)定了數(shù)據(jù)鏈路層規(guī)范,包括報(bào)文結(jié)構(gòu)、初始化過(guò)程、通信連接管理、定時(shí)參數(shù)和錯(cuò)誤處理等內(nèi)容。KWP2000協(xié)議報(bào)文結(jié)構(gòu)由報(bào)文頭、數(shù)據(jù)字節(jié)以及校驗(yàn)和3部分組成。如圖3所示。
圖3 KWP2000報(bào)文數(shù)據(jù)格式
1)報(bào)文頭。最大由4個(gè)字節(jié)組成:①格式字節(jié)(Fmt)包含了報(bào)文的形式和形態(tài)信息。2個(gè)比特位(A0和A1)給出尋址信息,6個(gè)比特位(L0-L5)給出數(shù)據(jù)字節(jié)。②目標(biāo)地址(Tgt)指明向哪個(gè)通信節(jié)點(diǎn)傳輸信息。③源地址(Src)指出信息來(lái)自哪一條通信節(jié)點(diǎn)。④長(zhǎng)度(Len)確定有用數(shù)據(jù)字節(jié)的數(shù)量,最大255個(gè)字節(jié)。目標(biāo)字節(jié)、源地址以及長(zhǎng)度字節(jié)都與格式字節(jié)的參數(shù)有關(guān)。
2)數(shù)據(jù)域。每個(gè)報(bào)文可發(fā)送最高255個(gè)字節(jié)的有用數(shù)據(jù),有用數(shù)據(jù)的第一個(gè)字節(jié)總是服務(wù)標(biāo)識(shí)字節(jié)(Sid),之后緊跟著的是與該服務(wù)有關(guān)的數(shù)據(jù)字節(jié)。
3)校驗(yàn)和。除校驗(yàn)和自己之外的報(bào)文中全部字節(jié)的模數(shù)值。
ISO標(biāo)準(zhǔn)中給出了2種初始化方法:5波特率初始化和快速初始化。目前控制器使用的是快速初始化。在快速初始化時(shí),診斷儀發(fā)送1個(gè)喚醒模式(WuP)。該模式由一個(gè)25 ms的低電平和一個(gè)25 ms的高電平組成。在WuP發(fā)送完后,診斷儀發(fā)送10 400b/s波特率的通信服務(wù),控制器回復(fù)1個(gè)包括關(guān)鍵字節(jié)在內(nèi)的主動(dòng)應(yīng)答。此后結(jié)束初始化,可以開(kāi)始常規(guī)通信。如圖4所示。
圖4 K線初始化
ISO 14230-3規(guī)定了應(yīng)用層的服務(wù)規(guī)范,包括診斷管理功能組、數(shù)據(jù)傳輸功能組、診斷信息傳輸功能組、輸入/輸出控制功能組、遠(yuǎn)程啟動(dòng)ECU例程功能組、數(shù)據(jù)上載/下載功能組和擴(kuò)展功能組等服務(wù)。
CAN線主要采用的協(xié)議為UDS(Unified diagnostic services)協(xié)議。其OSI參考模型如圖5所示。
基于CAN總線的KWP2000協(xié)議,即ISO15765協(xié)議,其中ISO 15765-1為物理層和數(shù)據(jù)鏈路層,ISO 15765-2對(duì)應(yīng)網(wǎng)絡(luò)層,ISO 15765-3對(duì)應(yīng)于應(yīng)用層。在早期的版本中,ISO 15765使用的是ISO 14230的應(yīng)用層,在以后的版本中采用的是ISO 14229的標(biāo)準(zhǔn)。ISO 15765-3規(guī)定了服務(wù)命令的格式,沒(méi)有規(guī)定服務(wù)的具體內(nèi)容,ISO 14229-1規(guī)定了服務(wù)的具體內(nèi)容?;贑AN總線的UDS是在ISO 15765-3和ISO 14229-1兩個(gè)相關(guān)的協(xié)議基礎(chǔ)上定義的診斷服務(wù)。
在基于CAN總線的診斷協(xié)議中,物理層和數(shù)據(jù)鏈路層采用基于ISO 11898的CAN總線底層協(xié)議。調(diào)研的診斷協(xié)議中波特率分為250kb/s和1Mb/s兩種。采用物理尋址的方式。物理地址格式如表1所示。
圖5 UDS OSI參考模型
表1 CAN ID格式
網(wǎng)絡(luò)層15765-2中定義了數(shù)據(jù)的封裝與解封裝、分包和組包、多幀處理等問(wèn)題。其中數(shù)據(jù)幀分為以下4種情況:?jiǎn)螏⊿F)、首幀(FF)、連續(xù)幀(CF)、流控制(FC)。如表2所示。
表2 幀格式
應(yīng)用層采用ISO 14229-1和ISO 14230-3協(xié)議,主要定義了診斷服務(wù)功能,包括診斷服務(wù)管理、數(shù)據(jù)傳輸、輸入輸出控制、啟動(dòng)例程等服務(wù)。
經(jīng)過(guò)調(diào)研,控制器診斷協(xié)議主要分為CAN線診斷和K線診斷。K線診斷的控制器在物理層和數(shù)據(jù)鏈路層都基本一致,在應(yīng)用層診斷協(xié)議有所差異。CAN線診斷的控制器在波特率和應(yīng)用層診斷協(xié)議有差異,其他基本一致。如表3所示。
在應(yīng)用層協(xié)議中,不同控制器使用的診斷服務(wù)不同,比如K線的控制器在讀取故障碼功能時(shí),使用的服務(wù)有18(readDiagnosticTroubleCodesByStatus)和13(readDiagnosticTroubleCodes)服務(wù)。CAN線的控制器在讀取故障碼功能時(shí),使用的服務(wù)有17(readStatusOfDiagnostic TroubleCodes)、19(readDTCInformation)和18(readDiag nosticTroubleCodesByStatus)服務(wù)。各控制器診斷服務(wù)的子服務(wù)也存在較大差別。
表3 控制器診斷協(xié)議匯總
根據(jù)整車(chē)網(wǎng)絡(luò)架構(gòu)以及控制器診斷協(xié)議的分析,結(jié)合主機(jī)廠實(shí)際診斷需求設(shè)計(jì)診斷系統(tǒng)。
根據(jù)上述診斷協(xié)議分析,設(shè)計(jì)診斷系統(tǒng)診斷功能如下。
1)系統(tǒng)識(shí)別功能 診斷儀可以識(shí)別不同控制器的軟、硬件版本等信息。
2)讀取/清除故障碼功能 ①讀故障碼:診斷儀可以讀取控制器當(dāng)前故障和歷史故障;②清故障碼:通過(guò)診斷儀能夠?qū)崿F(xiàn)歷史故障的清除;③凍結(jié)幀:診斷儀可以讀取控制器故障碼的凍結(jié)幀。
3)執(zhí)行器動(dòng)作測(cè)試 診斷儀可以對(duì)電控單元發(fā)送命令,使其執(zhí)行負(fù)載動(dòng)作,對(duì)負(fù)載進(jìn)行檢測(cè)。
4)控制器標(biāo)定 診斷儀能對(duì)控制器參數(shù)進(jìn)行標(biāo)定。
5)數(shù)據(jù)流監(jiān)控 診斷儀可以動(dòng)態(tài)監(jiān)控控制器端口信號(hào)的輸入輸出狀況。
6)數(shù)據(jù)刷寫(xiě) 診斷儀可以實(shí)現(xiàn)控制器應(yīng)用層數(shù)據(jù)的刷寫(xiě)。
7)故障維修指導(dǎo) 診斷儀配備整車(chē)電控系統(tǒng)故障維修數(shù)據(jù)庫(kù),當(dāng)出現(xiàn)故障時(shí),診斷儀可以給出相應(yīng)故障的維修指導(dǎo),方便用戶(hù)排查故障。
診斷系統(tǒng)主要由PC軟件和硬件適配器組成。在診斷應(yīng)用模塊中,進(jìn)行控制器診斷參數(shù)(診斷協(xié)議、波特率、診斷方式、適配器參數(shù)等)配置,之后調(diào)用協(xié)議棧模塊進(jìn)行診斷命令請(qǐng)求發(fā)送,硬件驅(qū)動(dòng)模塊驅(qū)動(dòng)適配器發(fā)送報(bào)文與整車(chē)網(wǎng)絡(luò)中的控制器進(jìn)行信息交互,診斷響應(yīng)模塊根據(jù)控制器響應(yīng)命令進(jìn)行邏輯處理,之后將信息傳輸給報(bào)文解析模塊并向上層輸出顯示接口,最后界面顯示模塊進(jìn)行數(shù)據(jù)顯示。數(shù)據(jù)管理模塊用于用戶(hù)權(quán)限、控制器分類(lèi)、診斷參數(shù)等信息管理。數(shù)據(jù)庫(kù)模塊用于診斷系統(tǒng)數(shù)據(jù)存儲(chǔ)管理。維修幫助模塊用于整車(chē)電控系統(tǒng)故障維修指導(dǎo)管理。系統(tǒng)框架如圖6所示。
圖6 診斷系統(tǒng)框架
根據(jù)不同控制器的診斷協(xié)議以及診斷功能的設(shè)計(jì),診斷系統(tǒng)軟件架構(gòu)設(shè)計(jì)為適配器驅(qū)動(dòng)層、標(biāo)準(zhǔn)協(xié)議層、業(yè)務(wù)邏輯層、業(yè)務(wù)顯示層和控制器業(yè)務(wù)顯示層。如圖7所示。
1)適配器驅(qū)動(dòng)層 將適配器驅(qū)動(dòng)進(jìn)行二次封裝,輸出統(tǒng)一接口供上層調(diào)用。
圖7 軟件架構(gòu)
2)標(biāo)準(zhǔn)協(xié)議層 實(shí)現(xiàn)標(biāo)準(zhǔn)協(xié)議的各種標(biāo)準(zhǔn)服務(wù)(各標(biāo)準(zhǔn)協(xié)議對(duì)應(yīng)OSI模型中的數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、應(yīng)用層的實(shí)現(xiàn)),為上一層提供標(biāo)準(zhǔn)服務(wù)調(diào)用接口。
3)業(yè)務(wù)邏輯層 實(shí)現(xiàn)讀/清故障碼、系統(tǒng)信息、數(shù)據(jù)流、執(zhí)行器測(cè)試、參數(shù)標(biāo)定、數(shù)據(jù)刷寫(xiě)等各種業(yè)務(wù)的通信邏輯,并向上一層輸出顯示結(jié)果。
4)業(yè)務(wù)顯示層 UI設(shè)計(jì),實(shí)現(xiàn)各個(gè)業(yè)務(wù)的顯示,供上層動(dòng)態(tài)調(diào)用。
5)控制器業(yè)務(wù)顯示層 實(shí)現(xiàn)用戶(hù)權(quán)限管理、車(chē)型分類(lèi)、控制器選擇等功能,并根據(jù)配置信息調(diào)用下層接口,顯示控制器診斷功能。
硬件適配器的主要功能就是對(duì)整車(chē)網(wǎng)路中CAN線、K線數(shù)據(jù)進(jìn)行收發(fā),并將數(shù)據(jù)轉(zhuǎn)化為USB數(shù)據(jù)或WIFI數(shù)據(jù)傳給上位機(jī)。
根據(jù)控制器診斷協(xié)議分析以及整車(chē)控制器網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)適配器。適配器一端通過(guò)USB/WIFI方式與上位機(jī)通信,另一端直接連接整車(chē)OBD口。適配器收到上位機(jī)發(fā)送的信號(hào)后,控制跳線器電路,將適配器的CAN/K路與所需的整車(chē)OBD口的CAN路/K路導(dǎo)通,隨后MCU即可發(fā)送CAN/K數(shù)據(jù)與整車(chē)網(wǎng)絡(luò)中的控制器進(jìn)行數(shù)據(jù)交互。硬件結(jié)構(gòu)如圖8所示。
圖8 系統(tǒng)硬件結(jié)構(gòu)
經(jīng)過(guò)臺(tái)架和實(shí)車(chē)測(cè)試,多功能診斷儀系統(tǒng)可以根據(jù)需要與整車(chē)任意CAN/K網(wǎng)絡(luò)通信。設(shè)計(jì)的多功能診斷儀系統(tǒng)可以實(shí)現(xiàn)不同廠家控制器的診斷功能,可以實(shí)現(xiàn)控制器信息讀取、歷史故障碼清除、故障碼查看、凍結(jié)幀查看、動(dòng)態(tài)數(shù)據(jù)流監(jiān)測(cè)、執(zhí)行器動(dòng)作測(cè)試、參數(shù)標(biāo)定、控制器應(yīng)用層程序刷寫(xiě)等診斷功能。多功能診斷儀系統(tǒng)配備故障維修系統(tǒng),提供相關(guān)故障維修指導(dǎo)幫助,方便指導(dǎo)用戶(hù)快速維修故障。
通過(guò)以上方法設(shè)計(jì)的多功能診斷儀系統(tǒng),實(shí)現(xiàn)了一套系統(tǒng)即可實(shí)現(xiàn)不同控制器的診斷,實(shí)現(xiàn)北奔全系列車(chē)型電控系統(tǒng)的診斷功能。北奔多功能診斷儀系統(tǒng)具備可擴(kuò)展性,可以快速增加新控制的診斷功能。目前北奔多功能診斷儀系統(tǒng)已經(jīng)批量應(yīng)用于北奔研發(fā)系統(tǒng)、生產(chǎn)系統(tǒng)和售后服務(wù)系統(tǒng),有效解決了電控系統(tǒng)故障診斷問(wèn)題,提高故障診斷效率,得到廣大用戶(hù)的一致好評(píng)。
參考文獻(xiàn):
[1] 郭凱凱.CAN總線UDS的研究與應(yīng)用[D]. 淮南:安徽理工大學(xué),2013.
[2] 李銳.基于ISO15765的車(chē)載CAN網(wǎng)絡(luò)診斷設(shè)計(jì)[J].計(jì)算機(jī)工程,2012(38):36-38.
[3] 張宏, 詹德凱, 林長(zhǎng)加. 基于CAN 總線的汽車(chē)故障診斷系統(tǒng)[J]. 汽車(chē)工程, 2008, 30(10):934-937.
[4] ISO 15765-2:2004 Road vehieles-Diagnostics on Controller Area Networks (CAN) -Part2:Network layer services[S].
[5] ISO 15765-3:2004 Road vehieles-Diagnostics on Controller Area Networks (CAN) –Part3:Implementation of unified diagnostic services(UDS on CAN) [S].
[6]ISO14230-3:Keyword protocol 2000 - Part 3:ApplicationLayer[S].
[7][德]萊夫(Reif,K.). BOSH汽車(chē)電氣與電子[M].孫澤昌,譯.北京:北京理工大學(xué)出版社,2014.