基于K線的BCM診斷的實(shí)現(xiàn)
[導(dǎo)讀] 引言:隨著汽車電子系統(tǒng)越來(lái)越復(fù)雜,診斷功能已經(jīng)成為ECU軟件設(shè)計(jì)的一個(gè)重要組成部分,對(duì)ECU控制系統(tǒng)的正常運(yùn)行及其大規(guī)模應(yīng)用的市場(chǎng)化過(guò)程非常關(guān)鍵。隨著ECU功能的增加以及升級(jí)換代的需要,診斷標(biāo)準(zhǔn)及廠商自定義診
引言:
隨著汽車電子系統(tǒng)越來(lái)越復(fù)雜,診斷功能已經(jīng)成為ECU軟件設(shè)計(jì)的一個(gè)重要組成部分,對(duì)ECU控制系統(tǒng)的正常運(yùn)行及其大規(guī)模應(yīng)用的市場(chǎng)化過(guò)程非常關(guān)鍵。隨著ECU功能的增加以及升級(jí)換代的需要,診斷標(biāo)準(zhǔn)及廠商自定義診斷功能越來(lái)越豐富,各種服務(wù)子功能也越來(lái)越細(xì)化,增加了診斷的難度,因此,深入研究診斷協(xié)議及其實(shí)現(xiàn)非常必要。K線和CAN總線是業(yè)內(nèi)廣泛采用的兩種診斷標(biāo)準(zhǔn)【1】,CAN總線在歐美車中廣泛使用,而K線在國(guó)產(chǎn)車中應(yīng)用廣泛,筆者結(jié)合為某國(guó)產(chǎn)車型開(kāi)發(fā)一款BCM(Body Control Module,車身控制模塊)的經(jīng)驗(yàn),分析K線規(guī)范,然后從故障自診斷和在線診斷兩個(gè)方面講述一下BCM診功能的設(shè)計(jì)與實(shí)現(xiàn)。
1 K線協(xié)議分析
K線是ISO9141定義的用于診斷通信的串行數(shù)據(jù)總線,ISO14230在ISO9141的基礎(chǔ)上將其總線電壓擴(kuò)展到24V,并完整定義了KWP2000協(xié)議,完善了診斷通信標(biāo)準(zhǔn),擴(kuò)展了診斷服務(wù)【2】。K線通信采用SCI數(shù)據(jù)格式,數(shù)據(jù)鏈路層在串口通信上以軟件形式實(shí)現(xiàn),物理層比較簡(jiǎn)單,通過(guò)單根物理線完成半雙工異步通信,選擇LIN總線物理層芯片即可完成物理電平與邏輯電平的轉(zhuǎn)換。
ISO14230-1定義了K線物理層協(xié)議,ISO14230-2定義了數(shù)據(jù)鏈路層協(xié)議,ISO14230-3定義了應(yīng)用層協(xié)議及各項(xiàng)診斷服務(wù),下面從報(bào)文結(jié)構(gòu)、初始化過(guò)程、定時(shí)參數(shù)三個(gè)方面重點(diǎn)介紹下其數(shù)據(jù)鏈路層協(xié)議。
1.1 報(bào)文結(jié)構(gòu)
K線診斷報(bào)文結(jié)構(gòu)如表1所示:
|
報(bào)文頭
|
數(shù)據(jù)字段
|
校驗(yàn)和
|
||||
|
Fmt
|
Tgt
|
Src
|
Len
|
Sid
|
Data
|
CS
|
|
最大4個(gè)字節(jié)
|
最大63字節(jié)或255字節(jié)
|
1個(gè)字節(jié)
|
||||
表1 K線診斷報(bào)文結(jié)構(gòu)
K線報(bào)文由報(bào)文頭、數(shù)據(jù)字段及校驗(yàn)和組成。報(bào)文頭包含格式字節(jié)Fmt、目標(biāo)地址Tgt、源地址Src和附加長(zhǎng)度信息Len;數(shù)據(jù)字段包括服務(wù)標(biāo)識(shí)符Sid和數(shù)據(jù)Data,其長(zhǎng)度由Fmt和Len決定;校驗(yàn)和CS為單字節(jié)校驗(yàn),計(jì)算方式為對(duì)報(bào)文頭和數(shù)據(jù)字段中的所有數(shù)據(jù)累加求和,忽略求和過(guò)程中產(chǎn)生的進(jìn)位。
1.2 初始化過(guò)程
診斷儀在對(duì)ECU進(jìn)行任何診斷服務(wù)之前,首先需要建立和ECU之間的診斷通訊,這是通過(guò)“初始化過(guò)程”實(shí)現(xiàn)的。ISO14230定義了兩種初始化方式-5 Baud初始化和快速初始化,5 Baud初始化是為了向后兼容ISO9141的需要,現(xiàn)在廣泛實(shí)現(xiàn)的是快速初始化方式。該過(guò)程如圖1所示,診斷儀發(fā)送一個(gè)WuP(WakeUp Pattern),然后發(fā)送StartCommunicationRequest,ECU檢測(cè)出WuP,然后發(fā)送StartCommunicationResponse,返回ECU支持的報(bào)文頭格式、定時(shí)參數(shù)等信息。
圖1 快速初始化過(guò)程
1.3 定時(shí)參數(shù)
在診斷過(guò)程中,需要遵守一些定時(shí)參數(shù)的約束,以保證正常的診斷通訊,ISO14230定義了4個(gè)定時(shí)參數(shù)管理字節(jié)間定時(shí)和報(bào)文間定時(shí),圖2為定時(shí)參數(shù)的示意圖,表2解釋了這4個(gè)定時(shí)參數(shù)的含義及取值區(qū)間。
圖2 定時(shí)參數(shù)示意圖
|
參數(shù)變量
|
描述
|
最小值(ms)
|
最大值(ms)
|
|
P1
|
ECU響應(yīng)的字節(jié)間時(shí)間間隔
|
0
|
20
|
|
P2
|
診斷儀請(qǐng)求結(jié)束和ECU響應(yīng)開(kāi)始的時(shí)間間隔,或ECU響應(yīng)結(jié)束和下一個(gè)ECU響應(yīng)開(kāi)始之間的時(shí)間間隔
|
25
|
50
|
|
P3
|
ECU響應(yīng)結(jié)束和診斷儀新的請(qǐng)求開(kāi)始之間的時(shí)間間隔
|
55
|
5000
|
|
P4
|
診斷儀請(qǐng)求的字節(jié)間時(shí)間間隔
|
5
|
20
|
表2 定時(shí)參數(shù)
2診斷
診斷是指汽車電子控制系統(tǒng)在運(yùn)行過(guò)程中不斷監(jiān)測(cè)各個(gè)組成部分的工作情況,進(jìn)行故障定位并存儲(chǔ),然后通過(guò)支持診斷協(xié)議的診斷工具進(jìn)行在線讀取,得到故障信息,它包括自診斷和在線診斷兩個(gè)部分【3】。
2.1 自診斷
自診斷是指以系統(tǒng)實(shí)時(shí)監(jiān)測(cè)為基礎(chǔ),據(jù)監(jiān)測(cè)現(xiàn)象反映的電控系統(tǒng)運(yùn)行狀態(tài),通過(guò)進(jìn)一步的數(shù)據(jù)分析,判斷故障位置、類型及原因,同時(shí)針對(duì)系統(tǒng)異常做出相應(yīng)調(diào)整的過(guò)程。
BCM的主要功能是控制門鎖、車窗、車燈、雨刷這些負(fù)載【4】,相應(yīng)地,BCM的主要故障是負(fù)載開(kāi)路及短路。開(kāi)路故障不會(huì)造成很嚴(yán)重的后果,可以利用負(fù)載驅(qū)動(dòng)芯片的電流鏡像功能實(shí)現(xiàn)。設(shè)置一定的采樣周期,通過(guò)取樣電阻對(duì)負(fù)載工作電流進(jìn)行周期性采樣,如果工作電流小于某個(gè)閾值并持續(xù)一段時(shí)間,則認(rèn)為出現(xiàn)開(kāi)路故障。
短路發(fā)生時(shí)的負(fù)載工作電流非常大,故障持續(xù)會(huì)造成相當(dāng)嚴(yán)重的后果,在實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn)車燈短路故障超過(guò)十毫秒量級(jí)就會(huì)把電量相對(duì)不足的供電電源拉低到地,這就會(huì)造成所有從汽車蓄電池上取電的ECU復(fù)位,因此短路故障需要及時(shí)得檢測(cè)出來(lái)并關(guān)斷相關(guān)負(fù)載的驅(qū)
動(dòng)電路。
由于負(fù)載剛啟動(dòng)時(shí)有很大的浪涌電流,需要和負(fù)載短路做出區(qū)分以免誤判。浪涌電流持續(xù)時(shí)間一般為毫秒量級(jí),設(shè)置負(fù)載工作電流的采樣周期為10毫秒,兩次采樣工作電流均超過(guò)閾值則認(rèn)為短路故障發(fā)生。在實(shí)際應(yīng)用中,10ms的采樣周期會(huì)影響系統(tǒng)運(yùn)行效率,增大電流消耗,而采樣周期設(shè)置過(guò)長(zhǎng)則可能會(huì)造成沒(méi)有及時(shí)檢測(cè)出短路故障的嚴(yán)重后果,為了提高系統(tǒng)效率和短路故障檢測(cè)的實(shí)時(shí)性,可以通過(guò)監(jiān)測(cè)負(fù)載驅(qū)動(dòng)電壓的方式實(shí)現(xiàn)短路故障檢測(cè)。
高端開(kāi)關(guān)MOSFET驅(qū)動(dòng)的負(fù)載對(duì)地短路時(shí),負(fù)載驅(qū)動(dòng)電壓為0 v,低端開(kāi)關(guān)MOSFET驅(qū)動(dòng)的負(fù)載對(duì)電源短路時(shí),負(fù)載驅(qū)動(dòng)電壓為電源電壓。對(duì)負(fù)載驅(qū)動(dòng)電壓進(jìn)行分壓處理,以可觸發(fā)中斷的處理器IO腳進(jìn)行檢測(cè),短路故障發(fā)生可以觸發(fā)IO腳中斷,這樣可以提高短路故障檢測(cè)的實(shí)時(shí)性,且不會(huì)出現(xiàn)誤判負(fù)載啟動(dòng)為負(fù)載短路的情況。
2.2 在線診斷
在線診斷是指診斷儀根據(jù)國(guó)際通用或企業(yè)自定義的診斷協(xié)議,發(fā)送診斷服務(wù)請(qǐng)求,ECU根據(jù)服務(wù)請(qǐng)求返回響應(yīng)的過(guò)程。需要指出的是,隨著汽車系統(tǒng)的愈加復(fù)雜和ECU功能的增加,在線診斷已不再局限于早期的讀取故障碼,還包括軟件升級(jí)、版本配置等功能。目前國(guó)際通用的診斷協(xié)議包括基于CAN總線的ISO15765和基于K線的ISO14230【5】。
基于K線的診斷網(wǎng)絡(luò)采用總線式網(wǎng)絡(luò)架構(gòu),多個(gè)ECU節(jié)點(diǎn)通過(guò)單根K線和診斷儀連接在一起,每個(gè)ECU有特定的物理地址和邏輯地址,診斷儀通過(guò)物理地址或邏輯地址對(duì)ECU進(jìn)行尋址,拓?fù)淙鐖D3所示:
圖3 診斷網(wǎng)絡(luò)拓?fù)?/font>
在線診斷過(guò)程如下:首先診斷儀通過(guò)初始化過(guò)程建立和特定地址ECU之間的“診斷通訊”,自動(dòng)進(jìn)入默認(rèn)模式的“診斷會(huì)話”,也可以通過(guò)SDS服務(wù)(StartDiagnosticSession Service)建立一個(gè)特定模式的“診斷會(huì)話”,該模式?jīng)Q定了在此診斷會(huì)話中可以進(jìn)行哪些診斷服務(wù),診斷結(jié)束后通過(guò)StopCommunication Service斷開(kāi)“診斷通訊”。診斷服務(wù)由表1中所述K線報(bào)文結(jié)構(gòu)中的服務(wù)標(biāo)識(shí)符Sid標(biāo)識(shí),ISO14230-3定義了各種診斷服務(wù)的Sid及Data,如清除診斷信息服務(wù)請(qǐng)求(ClearDiagnosticInformation Service request)的Sid為0x14,Data為兩個(gè)字節(jié)標(biāo)識(shí)的故障代碼組(groupOfDTC),0xFFFF表示所有故障代碼,0x0000-0xFFFE為整車廠自定義的故障代碼組合,該服務(wù)請(qǐng)求、肯定響應(yīng)及否應(yīng)響應(yīng)的定義如表3、表4及表5所示。其他診斷服務(wù)在此不再贅述。
|
清除診斷信息請(qǐng)求
|
||
|
參數(shù)
|
說(shuō)明
|
編碼
|
|
CLRDTC
|
清空診斷信息,這個(gè)服務(wù)允許擦去由一個(gè) ECU所記錄的診斷信息。
|
0x14
|
|
groupOfDTC
|
DTC組
|
0x0000-0xFFFE=廠商自定義故障組
0xFFFF=整個(gè)故障組
|
表3 清除診斷信息請(qǐng)求
|
清除診斷信息肯定響應(yīng)
|
||
|
參數(shù)
|
說(shuō)明
|
編碼
|
|
CLRDTCPR
|
清空診斷信息肯定響應(yīng)
|
0x54=0x14+0x40
|
|
groupOfDTC
|
DTC組
|
0x0000-0xFFFE=廠商自定義故障組
0xFFFF=整個(gè)故障組
|
表4 清除診斷信息肯定響應(yīng)
|
清除診斷信息否定響應(yīng)
|
||
|
參數(shù)
|
說(shuō)明
|
編碼
|
|
CLRDTCNR
|
清空診斷信息否定響應(yīng)
|
0x7f
|
|
CLRDTC
|
清空診斷信息請(qǐng)求Sid
|
0x14
|
|
RC
|
Response Code
|
0x12=不支持的子功能
0x22=條件不正確
0x78=回應(yīng)掛起
|
表5 清除診斷信息否定響應(yīng)
結(jié)語(yǔ)
隨著汽車電子的發(fā)展,診斷功能在ECU的開(kāi)發(fā)設(shè)計(jì)中已經(jīng)成為必不可少的一部分,基于K線的ISO14230是在國(guó)產(chǎn)車中得到廣泛應(yīng)用的一套非常完善的車載診斷協(xié)議標(biāo)準(zhǔn)。本文結(jié)合車身控制模塊BCM的診斷功能設(shè)計(jì),分析了K線診斷協(xié)議的數(shù)據(jù)鏈路層和應(yīng)用層規(guī)范,介紹了基于K線的BCM診斷的實(shí)現(xiàn),具有很好的借鑒意義。





