作者 | 寒月
小編 | CRYSTAL
DTC作為汽車故障診斷的核心標(biāo)識(shí),如同車輛的“醫(yī)療檔案”,可以讓工程師精準(zhǔn)定位故障。從簡(jiǎn)單的傳感器故障到復(fù)雜的網(wǎng)絡(luò)通信問(wèn)題,DTC系統(tǒng)通過(guò)精密的編碼規(guī)則、狀態(tài)管理和老化機(jī)制,構(gòu)建了一套完整的故障生命周期管理體系。本文內(nèi)容基于ISO14229-1和ISO15031-6規(guī)范創(chuàng)建,詳細(xì)介紹了DTC組成格式、DTC狀態(tài)位、DTC狀態(tài)置位的算法、DTC的老化機(jī)制。

DTC定義
DTC:Diagnostic Trouble Code,診斷故障碼,是故障類型的身份ID號(hào)碼,用于汽車故障時(shí)對(duì)故障部位及原因的排查。
當(dāng)ECU檢測(cè)到一個(gè)故障時(shí),其將在存儲(chǔ)器中存儲(chǔ)對(duì)應(yīng)的一個(gè)代碼,此代碼被稱為故障代碼。除故障代碼外,ECU還可能存儲(chǔ)與此故障相關(guān)的故障狀態(tài)、快照信息及擴(kuò)展信息。

DTC的組成
基本格式

其中,DTC High Byte和DTC Middle Byte這兩個(gè)字節(jié)表示故障內(nèi)碼,DTC Low Byte表示故障類型。
01
故障內(nèi)碼與5位標(biāo)準(zhǔn)故障碼的對(duì)應(yīng)關(guān)系
DTCHighByte、DTCMiddleByte這兩個(gè)字節(jié)表示故障內(nèi)碼,對(duì)應(yīng)5位標(biāo)準(zhǔn)故障碼(第一位是字母,后面四位是數(shù)字)。
示例:"B123416"這個(gè)故障碼中的"B1234"為故障內(nèi)碼;最后面的"16"則是DTCLowByte的內(nèi)容。故障內(nèi)碼與5位標(biāo)準(zhǔn)故障碼的位置對(duì)應(yīng)關(guān)系如下:

●第一位長(zhǎng)度2個(gè)bit(Bit15~14)是字母,表示故障所屬系統(tǒng);有如下的四種情況:

●第二位長(zhǎng)度2個(gè)Bit(Bit13~12)是數(shù)字,表示故障類型(用的哪種法規(guī));有如下的四種情況:

●第三位長(zhǎng)度4個(gè)Bit(Bit11~8)是數(shù)字,表示故障所屬的子系統(tǒng),按照4個(gè)Bit解析成1個(gè)16進(jìn)制字符
●第四和第五位長(zhǎng)度8個(gè)Bit(Bit7~0),分別按照4個(gè)Bit解析成2個(gè)16進(jìn)制字符,是數(shù)字,表示具體故障對(duì)象和類型
02
故障種類和子類型DTCLowByte
DTCLowByte這個(gè)字節(jié)表示Failure Type Byte(FTB),包含F(xiàn)ailure Category和Failure Sub Type兩個(gè)部分(ISO 15031-6中的DTCLowByte表示Failure Type Byte(FTB),而ISO 14229-1中的DTC LowByte表示ID序號(hào))。具體種類和類型在ISO15031-6中詳細(xì)定義。

ISO 14229-1中DTCLowByte定義
故障種類:


ISO 14229-1中故障類型定義

基本概念
操作循環(huán)(OperationCycle)
各種操作循環(huán)是計(jì)算周期相關(guān)狀態(tài)信息(如testCompleteThisOperationCycle)的基礎(chǔ),定義了測(cè)試的開始和結(jié)束條件,OperationCycle開始時(shí)開始檢測(cè)故障,結(jié)束時(shí)停止檢測(cè)。

確認(rèn)閾值(Confirmation Threshold)
確認(rèn)此故障一直存在的Operation Clycle個(gè)數(shù),將其認(rèn)定為歷史故障(ConfirmedDTC),在老化(aging)或手動(dòng)清除前confirmed DTC狀態(tài)位會(huì)一直存儲(chǔ)在EEPROM。
老化計(jì)數(shù)器(AgingCounter)
老化計(jì)數(shù)器用于特定診斷故障代碼的測(cè)試都沒(méi)有失?。╰estFailed)的連續(xù)操作循環(huán)的計(jì)數(shù)。當(dāng)一個(gè)OpreationCycle沒(méi)有檢測(cè)到testFailed,AgingCounter就會(huì)自加1,同時(shí)DTC status的bit0就會(huì)清0。該數(shù)值應(yīng)存儲(chǔ)于EEPROM。如果在一個(gè)操作循環(huán)中有任何已失敗的測(cè)試結(jié)果出現(xiàn),則老化計(jì)數(shù)器將重置為“0”。
老化閾值(Aging Threshold)
在制造商或法規(guī)規(guī)定的操作循環(huán)內(nèi),特定診斷故障代碼的測(cè)試未出現(xiàn)“失敗”結(jié)果,這個(gè)規(guī)定的操作循環(huán)的次數(shù)就稱為老化閾值。DTC的Confirmed狀態(tài)位將會(huì)被清除,同時(shí)DTC從non-volatile內(nèi)存中清除。也就是說(shuō)此故障已經(jīng)完成了老化,可以自愈。

DTC狀態(tài)位
從汽車ECU中讀取儲(chǔ)存的DTC故障碼時(shí),除了故障碼本身,還可以讀出很多其它的信息,包括優(yōu)先級(jí)、發(fā)生次數(shù)計(jì)數(shù)器、發(fā)生時(shí)的里程和時(shí)間,以及本節(jié)中所講的狀態(tài)位(DTC status)。
這個(gè)狀態(tài)位包含1個(gè)byte,這里面的8個(gè)bit都有各自的含義,但是這8個(gè)bit不一定都要使用,各個(gè)主機(jī)廠可以根據(jù)自己的需求使用其中的幾個(gè),也可以全部使用。下圖是UDS對(duì)DTC status這8個(gè)bit的定義。

bit0:testFailed(當(dāng)前故障)
通常來(lái)說(shuō),ECU會(huì)周期地檢測(cè)故障是否存在,如果在最近一次的測(cè)試中,測(cè)試結(jié)果為失敗,則相應(yīng)DTC的這一個(gè)狀態(tài)位就要被置1,表示出錯(cuò)。但是它不一定被ECU存儲(chǔ)到non-volatile memory中,只有當(dāng)pendingDTC或confirmedDTC被置1時(shí)DTC才會(huì)被存儲(chǔ)。當(dāng)錯(cuò)誤消失或者診斷儀執(zhí)行了清除DTC指令時(shí),testFailed會(huì)再次被置0。
testFailed狀態(tài)位置位算法:

ISO 14229-1中testFailed狀態(tài)位置位示意圖
● 置1:表示該DTC此時(shí)發(fā)生了故障
● 清0:a)testPass;b)14服務(wù)清除DTC
bit1:testFailedThisOperationCycle
這個(gè)bit用于標(biāo)識(shí)某個(gè)DTC在當(dāng)前的OperationCycle中是否出現(xiàn)過(guò)testFailed置1的情況,即是否出現(xiàn)過(guò)錯(cuò)誤。OperationCycle的起始點(diǎn)是ECU通過(guò)網(wǎng)絡(luò)管理喚醒到ECU通過(guò)網(wǎng)絡(luò)管理進(jìn)入睡眠,對(duì)于沒(méi)有網(wǎng)絡(luò)管理的ECU,這個(gè)起始點(diǎn)就是KL15通斷。通過(guò)bit0我們無(wú)法判斷某個(gè)DTC是否出現(xiàn)過(guò),比如,當(dāng)前testFailed=0,說(shuō)明當(dāng)前這個(gè)DTC沒(méi)有出錯(cuò),如果testFailedThisOperationCycle=1的話,就說(shuō)明這個(gè)DTC在當(dāng)前這個(gè)OperationCycle中出過(guò)錯(cuò),但是當(dāng)前錯(cuò)誤又消失了。
testFailedThisOperationCycle狀態(tài)位置位算法:

ISO 14229-1中testFailedThisOperationCycle狀態(tài)位置位示意圖
● 置1:在當(dāng)前的操作循環(huán)內(nèi),該DTC發(fā)生過(guò)故障
● 清0:a)開啟新的操作循環(huán);b)14服務(wù)清除DTC
bit2:pendingDTC
根據(jù)規(guī)范的解釋,pendingDTC=1表示某個(gè)DTC在當(dāng)前或者上一個(gè)OperationCycle中是否出現(xiàn)過(guò)。pendingDTC位其實(shí)是位于testFailed和confirmedDTC之間的一個(gè)狀態(tài),有的DTC被確認(rèn)的判定條件比較嚴(yán)苛,需要在多個(gè)OperationCycle中出現(xiàn)才可以被判定為confirmed的狀態(tài),此時(shí)就需要借助于pendingDTC位了。pendingDTC=1的時(shí)候,DTC就要被存儲(chǔ)下來(lái)了。如果當(dāng)前OperationCycle中故障發(fā)生,pendingDTC=1,但是在下一個(gè)OperationCycle中,故障沒(méi)有了,pendingDTC仍然為1,再下一個(gè)OperationCycle中,故障仍然不存在,那么pendingDTC就可以置0了。
pendingDTC狀態(tài)位置位算法:

ISO 14229-1中pendingDTC狀態(tài)位置位示意圖
● 置1:原本無(wú)故障,但在上一次或當(dāng)前操作循環(huán)中出現(xiàn)一次測(cè)試結(jié)果為Failed
● 清0:a)在上一個(gè)操作循環(huán)和當(dāng)前操作循環(huán)均未發(fā)生故障(pending被置位后,需要連續(xù)兩次OperateCycle沒(méi)有監(jiān)測(cè)到故障);b)14服務(wù)清除DTC
bit3:confirmedDTC(歷史故障)
當(dāng)confirmedDTC=1時(shí),則說(shuō)明某個(gè)DTC已經(jīng)被存儲(chǔ)到ECU的non-volatile memory中,說(shuō)明這個(gè)DTC曾經(jīng)滿足了被confirmed的條件。但是請(qǐng)注意,confirmedDTC=1時(shí),并不意味著當(dāng)前這個(gè)DTC仍然出錯(cuò),如果confirmedDTC=1,但testFailed=0,則說(shuō)明這個(gè)DTC表示的故障目前已經(jīng)消失了。
confirmedDTC狀態(tài)位置位算法:

ISO 14229-1中confirmedDTC狀態(tài)位置位示意圖
● 置1:滿足confirmed條件(幾個(gè)連續(xù)的操作循環(huán)檢測(cè)到故障),此時(shí)該DTC已被存儲(chǔ)至EEPROM中
● 清0:a)當(dāng)操作循環(huán)次數(shù)已滿足老化閾值;b)14服務(wù)清除DTC;c)故障記憶溢出
bit4:testNotCompletedSinceLastClear
這個(gè)bit用于表示,自從上次調(diào)用了清除DTC的服務(wù)之后,是否成功地執(zhí)行了對(duì)某個(gè)DTC的測(cè)試(不管測(cè)試結(jié)果是什么,只關(guān)心是否測(cè)了)。因?yàn)楹芏郉TC的測(cè)試也是需要滿足某些邊界條件的,并不是ECU上電就一定會(huì)對(duì)DTC進(jìn)行檢測(cè)。
testNotCompletedSinceLastClear狀態(tài)位置位算法:

ISO 14229-1中testNotCompletedSinceLastClear狀態(tài)位置位示意圖
● 置1:自從清DTC之后還沒(méi)有完成過(guò)針對(duì)該DTC的測(cè)試
● 清0:自從清DTC之后已經(jīng)完成過(guò)針對(duì)該DTC的測(cè)試
bit5:testFailedSinceLastClear
這個(gè)位與bit1:testFailedThisOperationCycle有些類似,后者表示某個(gè)DTC在當(dāng)前的OperationCycle中是否出現(xiàn)過(guò)testFailed置1的情況,而testFailedSinceLastClear表示的是在上次執(zhí)行過(guò)清除DTC之后某個(gè)DTC是否出過(guò)錯(cuò)。
testFailedSinceLastClear狀態(tài)位置位算法:

ISO 14229-1中testFailedSinceLastClear狀態(tài)位置位示意圖
● 置1:自上次清除診斷信息以來(lái),DTC測(cè)試至少返回了一次失敗的結(jié)果
● 清0:a)滿足老化閾值;b)故障記憶溢出;c)清除DTC后
bit6:testNotCompletedThisOperationCycle
這個(gè)位與bit4:testNotCompletedSinceLastClear類似,后者表示自從上次調(diào)用了清除DTC的服務(wù)之后,是否成功地執(zhí)行了對(duì)某個(gè)DTC的測(cè)試。而testNotCompletedThisOperationCycle則表示在當(dāng)前OperationCycle中是否成功地執(zhí)行了對(duì)某個(gè)DTC的測(cè)試。
testNotCompletedThisOperationCycle狀態(tài)位置位算法:

ISO 14229-1中testNotCompletedThisOperationCycle狀態(tài)位置位示意圖
● 置1:a)指示DTC測(cè)試在當(dāng)前操作循環(huán)內(nèi)尚未運(yùn)行完畢;b)14服務(wù)清除DTC
● 清0:測(cè)試運(yùn)行并且通過(guò)或失?。?/p>
bit7:warningIndicatorRequested
某些比較嚴(yán)重的DTC會(huì)與用戶可見的警告指示相關(guān)聯(lián),比如儀表上的報(bào)警燈,或者是文字,或者是聲音。這個(gè)warningIndicatorRequested就用于此類DTC。如果這個(gè)DTC不支持警告指示,則這個(gè)位永遠(yuǎn)置0。
warningIndicatorRequested狀態(tài)位置位算法:

ISO 14229-1中WarningIndicatorRequested狀態(tài)位置位示意圖
● 置1:ECU請(qǐng)求激活警告指示
● 清0:ECU不請(qǐng)求激活警告指示

DTCAging(DTC老化)
DTC診斷故障代碼一旦生成,將會(huì)一直保留,直到通過(guò)發(fā)送診斷指令清除,或者通過(guò)診斷故障代碼老化機(jī)制確定此故障不復(fù)存在。當(dāng)一直處于TestPassed,可將這個(gè)DTC清除掉,這個(gè)過(guò)程的結(jié)果被稱為self-healing,而這個(gè)過(guò)程,我們就叫做DTC的老化。
在診斷自恢復(fù)過(guò)程中,往往會(huì)定義30個(gè)或40個(gè)循環(huán)周期作為自恢復(fù)的條件。原因是:在一個(gè)相對(duì)較長(zhǎng)的過(guò)程中,如果車輛沒(méi)有發(fā)生這個(gè)故障,可以認(rèn)為這個(gè)故障是一個(gè)偶發(fā)的現(xiàn)象,也可以認(rèn)為現(xiàn)在的車輛處于一個(gè)相對(duì)穩(wěn)定的狀態(tài),因而,可以將這個(gè)故障碼清除。
DTC AgingCounter例子

ISO 14229-1中DTC AgingCounter示例
1
DTCAging計(jì)數(shù)器在完成測(cè)試未失敗的第一個(gè)操作循環(huán)后遞增為1,DTCAging計(jì)數(shù)器開始計(jì)數(shù)的條件是:testFailed=0,PendingDTC=0,ComfiredDTC=1。
2
pendingDTC=0的條件是在一個(gè)操作循環(huán)后測(cè)試完成且未失?。╰estNotCompletedThisOperationCycle=0,tesetFailed=0,tesetFailedThisOperationCycle=0)。如果ECU不支持掉電順序(即在關(guān)閉點(diǎn)火開關(guān)時(shí)立即斷電),則將無(wú)法檢測(cè)到操作循環(huán)的結(jié)束。因此,在下一個(gè)操作循環(huán)開始時(shí)將pendingDTC設(shè)置為零也是有效的。
3
DTCAging計(jì)數(shù)器在完成測(cè)試未失敗的第二個(gè)操作循環(huán)后遞增為2。testNotCompleted-ThisOperationCycle=0,tesetFailed=0。
4
DTCAging計(jì)數(shù)器繼續(xù)遞增,因?yàn)闇y(cè)試在這些操作循環(huán)中沒(méi)有失敗。tesetFailed=0。
5
當(dāng)完全滿足老化標(biāo)準(zhǔn)時(shí)(例如,DTCAging計(jì)數(shù)器達(dá)到特定值),confirmedDTC設(shè)置為零,DTC會(huì)從內(nèi)存中清除掉。
6
DTCAging計(jì)數(shù)器達(dá)到最大值(例如40),此時(shí)confirmedDTC被清除。
7
車輛制造商有責(zé)任指定testFailedSinceLastClear位是否通過(guò)老化標(biāo)準(zhǔn)或由于故障存儲(chǔ)器溢出而重置。
通過(guò)本文的系統(tǒng)性介紹,我們?nèi)娼馕隽薉TC從編碼規(guī)則、狀態(tài)管理到老化清除的完整生命周期。DTC不僅是簡(jiǎn)單的故障代碼,更是連接車輛故障現(xiàn)象與根本原因的橋梁。掌握DTC的運(yùn)作機(jī)制,就如同擁有了診斷汽車電子系統(tǒng)的“解碼器”,能夠從海量故障數(shù)據(jù)中提取有價(jià)值的信息,為故障排查、系統(tǒng)優(yōu)化和品質(zhì)提升提供堅(jiān)實(shí)的數(shù)據(jù)支撐。
北匯信息在汽車診斷領(lǐng)域擁有深厚的技術(shù)積累,依托與多家主流OEM的長(zhǎng)期合作,深入理解DTC在實(shí)際車型中的應(yīng)用與診斷需求,積累了豐富的故障診斷測(cè)試經(jīng)驗(yàn)。如您有相關(guān)測(cè)試或診斷開發(fā)需求,歡迎隨時(shí)與我們聯(lián)系。
參考文獻(xiàn):
[1] Road vehicles — Unified diagnostic services (UDS) — Part 1:Application layer
[2] Road vehicles — Communication between vehicle and external equipment for emissions-related diagnostics Part 6: Diagnostic trouble code definitions
-
汽車電子
+關(guān)注
關(guān)注
3046文章
9083瀏覽量
173104 -
DTC控制
+關(guān)注
關(guān)注
0文章
21瀏覽量
1395 -
汽車
+關(guān)注
關(guān)注
15文章
4223瀏覽量
41313
發(fā)布評(píng)論請(qǐng)先 登錄
【科普系列】DTC深度剖析
評(píng)論