1.診斷故障基礎(chǔ)
當(dāng)人患了疾病,便需要醫(yī)治,醫(yī)生根據(jù)各種檢驗(yàn)結(jié)果找出病因,并得出診治策略。當(dāng)汽車出現(xiàn)故障時(shí),DTC故障碼就等同于“檢驗(yàn)結(jié)果”,汽車工程師通過該標(biāo)識(shí)碼便可以查表的方式獲得該故障信息,如故障觸發(fā)條件、故障解除條件、系統(tǒng)功能表現(xiàn)等,得出解決該故障的策略。 DTC(DiagnosticTrouble Code)顧名思義診斷故障碼,一種用來記錄當(dāng)ECU發(fā)生或者檢測(cè)到某種故障時(shí)呈現(xiàn)給大家的標(biāo)識(shí)碼。
1.1 DTC的組成
DTC故障碼是一個(gè)4個(gè)字節(jié)的標(biāo)識(shí)符,由以下兩部分組成:DTC Catogory與Failure Type,其中DTC Catogory 又可以根據(jù)Powertrain、Body、Chasis、N etwork四大子系統(tǒng)來進(jìn)一步定義其范圍,簡稱PBCU四大子系統(tǒng),如下表所示:
1.2 DTC的意義
故障碼有以下兩點(diǎn)意義:
1)產(chǎn)線下線檢測(cè):一輛車的零部件的開發(fā),系統(tǒng)集成,整車組裝,其中涉及的流程之長,零部件數(shù)量之多,可以說是相當(dāng)復(fù)雜。為了產(chǎn)線生產(chǎn)的車能正常下線,安全上路,就需要確保在車輛下線前,各零部件本身以及零部件相互配合是沒有問題的。因此在產(chǎn)線電檢流程中,會(huì)讀取整車故障碼,通過故障碼說明車輛是否正常。
2)車輛維修:當(dāng)車輛出故障時(shí),維修工程師是如何快速定位到故障零部件呢?車輛是由上萬個(gè)零部件組成,如果依賴于維修工程根據(jù)經(jīng)驗(yàn)慢慢排查,效率會(huì)極其低下。因此,維修工程師會(huì)使用診斷儀讀取整車故障碼,并將故障碼與故障現(xiàn)象對(duì)照,快速得出維修策略。
1.3 DTC故障類型
以非排放相關(guān)的ECU為例,可以將DTC故障類型分為以下幾個(gè)部分:
硬件故障:如RAM、Flash、CPU時(shí)鐘等硬件本身失效的問題
軟件故障:如配置字故障,標(biāo)定故障或客戶定義的軟件功能性故障
外部環(huán)境故障:電壓過高或者欠壓、環(huán)境溫度過高或過低等
通訊相關(guān)故障:如報(bào)文丟失、信號(hào)無效,Checksum/Rolling 障等
1.4DTC狀態(tài)位介紹
每個(gè)DTC都有一個(gè)字節(jié)用來表示該故障的狀態(tài),這個(gè)字節(jié)中每個(gè)bit的含義如下:
status Of DTC: bit field name | Bit | Bit state | Description |
testFailed | 0 | 0 | DTC is not failed at the time of the request |
testFailedThisOperationCycle | 1 | 0 | DTC failed during the current operation cycle |
pendingDTC | 2 | 0 |
DTC was not failed on the current or previous operation cycle |
confirmedDTC | 3 | 0 | DTC is not confirmed at the time of the request |
testNotCompletedSinceLastClear | 4 | 0 | DTC test was completed since the last code clear |
testFailedSinceLastClear | 5 | 0 | DTC test never failed since last code clear |
testNotCompletedThisOperationCycle | 6 | 0 | DTC test completed this operation cycle |
warningIndicatorRequested | 7 | 0 | Server is not requesting warningIndicator to beactive |
具體解釋如下: Bit0:請(qǐng)求時(shí)刻測(cè)試結(jié)果為失敗; Bit1:在當(dāng)前點(diǎn)火循環(huán)至少失敗過1次;
Bit2:在當(dāng)前或者上一個(gè)點(diǎn)火循環(huán)測(cè)試結(jié)果不為失敗;
Bit3:請(qǐng)求時(shí)刻DTC被確認(rèn),一般確認(rèn)是在一個(gè)點(diǎn)火周期內(nèi)發(fā)生錯(cuò)誤1次;
Bit4:自上次清除DTC之后測(cè)試結(jié)果已完成,即測(cè)試結(jié)果為PASS或者FAIL結(jié)果;
Bit5:自上次清除DTC后測(cè)試結(jié)果都不是FAIL;
Bit6:在當(dāng)前點(diǎn)火周期內(nèi)測(cè)試結(jié)果已完成,即為PASS或FAIL狀態(tài);
Bit7:ECU沒有得到點(diǎn)亮警示燈請(qǐng)求
1.5凍結(jié)幀與擴(kuò)展數(shù)據(jù)
從上文可知,DTC中8bit位可以描述DTC狀態(tài),但8個(gè)bit位能夠承載的信息是有限的,僅能說明故障是當(dāng)前故障還是歷史故障。故障發(fā)生時(shí)的車速,溫度,油量,電量等關(guān)鍵信息怎么記錄呢?
UDS中規(guī)定了凍結(jié)幀可以用來記錄故障發(fā)生時(shí)的詳細(xì)情況,擴(kuò)展數(shù)據(jù)可以提供故障碼相關(guān)的擴(kuò)展信息,包括老化計(jì)數(shù)器。
類型 | 組成 | 內(nèi)容 |
凍結(jié)幀 | 由一系列DID組成,用戶可以自定義DID內(nèi)容 | 描述車速,溫度,油量,等信息 |
擴(kuò)展信息 | 由一系列DID組成,DID內(nèi)容由BSW規(guī)定 | 描述故障碼的額外信息,比如老化周期數(shù)量。 |
2.DEM詳解
2.1 DEM主要功能
Dem全稱Diagnostic Event Manager,負(fù)責(zé)診斷故障事件的處理,存儲(chǔ)診斷故障事件以及故障事件相關(guān)聯(lián)的數(shù)據(jù)(故障發(fā)生時(shí)溫度,車速等)。簡而言之,Dem發(fā)揮了AUTOSAR架構(gòu)中故障”中央處理器作用”,用戶軟件模塊只需要將故障上報(bào)給DEM,所有故障信息的處理都由DEM執(zhí)行:
1.故障確認(rèn)前:用戶模塊上報(bào)故障的Debounce防抖處理,確保對(duì)應(yīng)故障不為誤報(bào)故障。
2. 故障確認(rèn)時(shí):故障事件確認(rèn)時(shí)的故障數(shù)據(jù)存儲(chǔ)至NVM,保證故障能長期保存。
3. 故障確認(rèn)后:故障的老化,替代,實(shí)現(xiàn)故障修復(fù)后,故障能被清除的功能。例如,儀表上的發(fā)動(dòng)機(jī)故障燈,在發(fā)動(dòng)機(jī)修好后一段時(shí)間后就會(huì)熄滅。
2.2 DEM與其他模塊關(guān)系
1)DEM在AUTOSAR架構(gòu)位置
Dem位于AUTOSAR架構(gòu)系統(tǒng)服務(wù)層,系統(tǒng)服務(wù)層提供了以下服務(wù):
1.操作系統(tǒng)調(diào)度與監(jiān)控服務(wù)、
2.通信與網(wǎng)絡(luò)管理服務(wù)
3.存儲(chǔ)服務(wù)
4.診斷服務(wù)(UDS通信服務(wù)以及故障服務(wù))
5.ECU狀態(tài)管理服務(wù)
從下面架構(gòu)圖可以看出,Dcm與Dem作為“診斷雙雄”,完整提供了所有的診斷服務(wù)。區(qū)別在于,Dcm主修“UDS診斷通信服務(wù)”,對(duì)下與通信協(xié)議棧聯(lián)系,與外部診斷儀交互提供診斷通信服務(wù)(10,22等服務(wù));Dem主修故障診斷服務(wù),與上層SWC,BSW模塊交互,接收故障上報(bào),與NVM交互使用存儲(chǔ)功能。
AUTOSAR架構(gòu)圖
2)Dem與其他模塊依賴關(guān)系
Dem與其他模塊關(guān)系鏈路圖
NVM: Nvm能夠提供存儲(chǔ)服務(wù)給Dem使用,即提供診斷故障存儲(chǔ)所需的NVM BLOCK。需要注意的是,Nvm給Dem提供了兩類存儲(chǔ)服務(wù)接口,Nvm_WriteBlock()供DEM實(shí)時(shí)存儲(chǔ)診斷故障,NvM_SetRamBlockStatus()供Dem下電存儲(chǔ)診斷故障,上述存儲(chǔ)模式可以在DTC配置屬性中體現(xiàn)。
DCM:從上圖中可以看出,DCM在接收到診斷儀的19服務(wù)(get Dtc),14服務(wù)(Clear Dtc)時(shí),需要實(shí)時(shí)通過Dem獲取DTC數(shù)據(jù)以及對(duì)DTC進(jìn)行清除操作。
ECUM:對(duì)Dem模塊執(zhí)行初始化以及ShutDown操作。
SWC(Monitor):監(jiān)控診斷故障事件Event,通過使用Dem_SetEventStatus()函數(shù),將Event狀態(tài)上報(bào)給Dem。使用Dem_SetOperationCycleState()對(duì)操作循環(huán)狀態(tài)進(jìn)行控制。
2.3 DEM核心Event
在介紹DEM的具體功能前,先引入概念“Diagnosticevent”,“Diagnostic event”也是DEM模塊中最重要的元素。對(duì)于AUTOSAR軟件架構(gòu),DTC只是展示給診斷儀使用者,而Event才是DTC狀態(tài)實(shí)際操控者,同時(shí)Event也是診斷NVM數(shù)據(jù)存儲(chǔ)實(shí)際控制者。
各位讀者肯定會(huì)有如下問題:
為什么要引入 “Diagnostic event”呢?
“Diagnostic event”來源?
“Diagnostic event”有哪些特性呢?
“Diagnostic event”怎么控制DTC?
“Diagnostic event”怎么控制診斷數(shù)據(jù)存儲(chǔ)?
接下來將會(huì)給大家一一解答上述問題。
1)Event與DTC的聯(lián)系與區(qū)別
區(qū)別:
1.描述層級(jí):DTC是系統(tǒng)層面對(duì)于故障的描述,而Event是軟件層面對(duì)故障監(jiān)控的最小單元。
例子:某個(gè)電機(jī)故障會(huì)由電壓過高造成,但軟件是無法直接識(shí)別該故障,軟件只能監(jiān)控是否產(chǎn)生了電壓過高的時(shí)間Event,從而計(jì)算出是否產(chǎn)生DTC.
2.鏈接關(guān)系:多個(gè)event可以mapping 同一個(gè)DTC;而同一個(gè)event不能mapping 多個(gè)DTC;
3.可見度:DTC可以直接可見,但Event需通過進(jìn)一步手段才能看到,有時(shí)僅對(duì)ECU供應(yīng)商可見;
聯(lián)系:
1.DTC代表某類event集中表現(xiàn),而event則是某個(gè)DTC的具體實(shí)例;
2.event的優(yōu)先級(jí)決定了DTC的優(yōu)先級(jí);
3.event之間的依賴關(guān)系決定了DTC的依賴關(guān)系;
2)“Diagnostic event的上報(bào)方式
上文提到了SWC監(jiān)控故障Event的狀態(tài),并可以通過Dem_SetEventStatus(EventId,EventStatus)向DEM上報(bào)Event狀態(tài)。那么對(duì)于SWC,應(yīng)該怎樣上報(bào)Event狀態(tài)呢?周期調(diào)用Dem_SetEventStatus上報(bào)即為周期循環(huán)上報(bào);當(dāng)Event狀態(tài)變化時(shí),調(diào)用Dem_SetEventStatus上報(bào)為觸發(fā)上報(bào)。兩種上報(bào)方式各有優(yōu)缺點(diǎn),如下圖所示,切不可一刀切。
一般來說,對(duì)于小型控制器,需要上報(bào)Event數(shù)量不多,可以選擇周期循環(huán)上報(bào)。
對(duì)于域控制器,需要上報(bào)的Event數(shù)量龐大,為了保證負(fù)載率穩(wěn)定,應(yīng)該選擇觸發(fā)上報(bào)。
3)“Diagnostic event”有哪些特性呢?
1.Event Kind
Event Kind根據(jù)故障事件上報(bào)方式可分為:BSW Event與SWC Event。
Event Kind | 來源 | 上報(bào)方式 | 函數(shù)名 |
BSW Event | BSW模塊 | 標(biāo)準(zhǔn)C接口 | Dem_ReportErrorStatus |
SWC Event | SWC模塊 | RTE接口 | SetEventStatus(RTE) |
2.Event priority
對(duì)于診斷,能夠存儲(chǔ)的故障事件以及對(duì)應(yīng)凍結(jié)幀等相關(guān)數(shù)據(jù)的數(shù)量是恒定的,需要軟件開發(fā)工程師提前配置。當(dāng)內(nèi)部存儲(chǔ)的故障事件已經(jīng)滿了,Event優(yōu)先級(jí)可以解決新的故障事件如何存儲(chǔ)的問題。
一般來說,診斷優(yōu)先級(jí)的設(shè)定由診斷系統(tǒng)工程師從整車功能出發(fā),根據(jù)診斷故障的重要性,安全性,嚴(yán)重性綜合評(píng)估。比如汽車的動(dòng)力故障遠(yuǎn)比空調(diào)故障嚴(yán)重,所以動(dòng)力相關(guān)故障優(yōu)先級(jí)一般會(huì)大于空調(diào)相關(guān)故障。
診斷事件優(yōu)先級(jí)有下面幾個(gè)重要特點(diǎn):
1)診斷事件優(yōu)先級(jí)數(shù)值越小,優(yōu)先級(jí)越高,數(shù)值為1優(yōu)先級(jí)最大。
2)Event優(yōu)先級(jí)僅在診斷事件已經(jīng)存滿情況下發(fā)揮作用,其余情況根據(jù)FIFO原則存儲(chǔ)。
3.Event occurrence
Event occurrence顧名思義就是故障事件上報(bào)計(jì)數(shù)器,故障上報(bào)次數(shù)越多,Event occurrence值越大,標(biāo)志著該故障越“老”。“新”‘老’故障標(biāo)簽在后續(xù)新的故障事件如何存儲(chǔ)的仲裁機(jī)制上也會(huì)發(fā)揮重要作用,這部分內(nèi)容在后面的內(nèi)容會(huì)詳細(xì)說明。
Event occurrence存在以下特點(diǎn),如下所示:
1.每一個(gè)event memory entry都有對(duì)應(yīng)的Event occurrence。
2.Event occurrence最大值為255。
3.Event occurrence的計(jì)數(shù)方式有如下兩種配置選擇:
配置屬性 | 計(jì)數(shù)方式 |
DEM_PROCESS_OCCCTR_TF | Bit0(TestFail)由0跳變至1,Event occurrence +1 |
DEM_PROCESS_OCCCTR_CDTC | Bit0(TestFail)由0跳變至1和Bit3由0跳變至1,Event occurrence +1 |
2.4 EventMemory存儲(chǔ)內(nèi)容
上文對(duì)Event,凍結(jié)幀,擴(kuò)展數(shù)據(jù)等作了詳細(xì)描述,那么,這些數(shù)據(jù)在DEM中是怎么存儲(chǔ)的呢?DEM提供了Event Memory概念,將Event,凍結(jié)幀,擴(kuò)展數(shù)據(jù)全部歸納起來做了統(tǒng)一管理。廢話不多說,開始探索Event Memory吧。
EventMemory分類:
類型 | 含義 |
DemPrimaryMemory | 存儲(chǔ)EventId,故障狀態(tài),凍結(jié)幀,擴(kuò)展數(shù)據(jù) |
DemMirrorMemory | |
Permanent Event Memory | 用于存儲(chǔ)OBD相關(guān)的DTC |
Event Memory的組成架構(gòu)如下圖所示:
Event Memory組成架構(gòu)圖
S1:Dem模塊必須支持PrimaryMemory,Mirror和Permanent memory可根據(jù)用戶需要具體選擇,一般用不上。
S2: Primary Memory是一個(gè)大小為DemMaxNumberEventEntryPrimary用于存儲(chǔ)故障數(shù)據(jù)的非易失性存儲(chǔ)空間。也就是PrimaryMemory由DemMaxNumberEventEntryPrimary個(gè)EventMemory Entry組成。
本質(zhì)上,DemMaxNumberEventEntryPrimary設(shè)置為多少,NVM就會(huì)提供多少個(gè)NVMBlock用于存儲(chǔ)Primary Memory,就只能存儲(chǔ)多少個(gè)Event信息。
S3:每個(gè)Event Memory Entry存儲(chǔ)的內(nèi)容有:EventId,Occurance Counter,凍結(jié)幀,擴(kuò)展數(shù)據(jù),老化周期等。
2.5 EventMemory management
當(dāng)SWC或者BSW上報(bào)Event后,會(huì)經(jīng)過哪些處理最終變成Flash中的Event Memory呢?
從下圖中可以看出,Event上報(bào)后需要經(jīng)過下列處理: Event使能條件檢測(cè)
Event控制DTC Bit位更新 Event Memory Retention
Event Memory management流程圖
1)Event使能條件檢測(cè)
Event使能條件就相當(dāng)于Dem中的一個(gè)閘門,只有在條件合適的情況下Event才能真正進(jìn)入Dem的處理流程中。
Event使能條件流程圖
從圖中可以看出,Event上報(bào)至最終能到第二階段Event控制DTC bit位跳變,需要經(jīng)歷很多流程,接下來對(duì)上述流程進(jìn)行詳解。
S1:首先,需要判斷當(dāng)前是否開啟了操作循環(huán),操作循環(huán)一般指的是點(diǎn)火循環(huán),一個(gè)操作循環(huán)可以認(rèn)為是DTC檢測(cè)的一個(gè)周期。如果操作循環(huán)開啟了,則開始下列的Enable Condition判斷,否則直接退出整個(gè)Event Memorymanagement流程。
S2::EnableCondition判斷指的是Event上報(bào)增加的一個(gè)附加條件判斷,Dem通過對(duì)應(yīng)的接口給SWC使用,SWC實(shí)現(xiàn)附件條件處理。一般可以用來處理一些電壓,車輛模式等限制條件。如果Enable Condition條件滿足,則進(jìn)行85服務(wù)判斷;如果Enable Condition條件不滿足,則直接退出Event Memorymanagement流程。
S3: 若現(xiàn)在使用了85服務(wù)抑制DTC使能,則直接退出整個(gè)Event Memory management流程。若沒有執(zhí)行85服務(wù),開始Event Debounce流程。
S4:經(jīng)過Debounce后,如果最終Event結(jié)果為Pass或者Fail,則開始下一階段Event控制DTC跳變;否則直接跳出退出整個(gè)Event Memory management流程。
Event Debounce “Debounce”顧名思義,指對(duì)于Event的防抖處理,防止Event誤報(bào)導(dǎo)致DTC誤報(bào)。 SWC通過Dem_SetEventStatus(EventId,EventStatus)上報(bào)Passed/Failed/PrePassed/Prefailed四種狀態(tài)。 1)當(dāng)SWC上報(bào)Passed和Failed狀態(tài)時(shí),Dem不需要進(jìn)行Debounce處理。 2)當(dāng)SWC上報(bào)Prefailed和Prepassed狀態(tài)時(shí),Dem需要進(jìn)行Debounce處理。
本質(zhì)上,Dem提供的Debounce為通過特定機(jī)制,處理PrePassed/Prefailed至Passed/Failed狀態(tài)變化。
Dem提供了兩種Debounce機(jī)制,即“Base Time”和“Base Counter”。
1.基于計(jì)數(shù)器的Debounce策略
基于Counter的Debounce策略的幾個(gè)重要參數(shù)如下表格:
參數(shù) | 含義 |
FDC(Fault Detection Counter) | 錯(cuò)誤計(jì)數(shù)器,值范圍為-128-127 |
DemDebounceCounterFailedThreshold | 使Event診斷事件狀態(tài)最終為Failed的Debounce Counter閾值 |
DemDebounceCounterPassedThreshold | 使Event診斷事件狀態(tài)最終為Passed的Debounce Counter閾值 |
DemDebounceCounterIncrementStepSize | 當(dāng)SWC上報(bào)Prefailed,錯(cuò)誤計(jì)數(shù)器增加量 |
DemDebounceCounterDecrementStepSize | 當(dāng)SWC上報(bào)Prepassed,錯(cuò)誤計(jì)數(shù)器增加量 |
基于Couneter的Debounce機(jī)制
如上圖所示,在基于Counter的Deboucne機(jī)制中,Dem會(huì)提供一個(gè)計(jì)數(shù)器(FDC)用于記錄判斷的結(jié)果,當(dāng)SWC上報(bào)給Dem的Event狀態(tài)為Prefialed,計(jì)數(shù)器會(huì)按照步長增加,當(dāng)達(dá)到設(shè)定的限值時(shí),故障狀態(tài)變成Failed。當(dāng)上報(bào)狀態(tài)為PrePassed時(shí),計(jì)數(shù)器按照步長減少,當(dāng)達(dá)到設(shè)定的限值時(shí),故障狀態(tài)變成Passed。
2.基于時(shí)間的Debounce策略
基于時(shí)間的Debounce策略的幾個(gè)重要參數(shù)如下表格:
參數(shù) | 含義 |
DebounceTimeBasedTaskTime | 基本的檢測(cè)周期 |
DemDebounceTimeFailedThreshold | 定義故障狀態(tài)從PreFailed跳轉(zhuǎn)至Failed需要多少個(gè)DebounceTimeBasedTaskTime周期 |
DemDebounceTimePassedThreshold | 定義故障狀態(tài)從PrePassed跳轉(zhuǎn)至Passed需要多少個(gè)DebounceTimeBasedTaskTime周期 |
基于時(shí)間的Debounce機(jī)制
在這種策略下,當(dāng)SWC開始上報(bào)Event狀態(tài)后,Dem模塊會(huì)提供一個(gè)計(jì)時(shí)器用于記錄判斷的結(jié)果,計(jì)時(shí)器的增長方向由Event狀態(tài)決定。當(dāng)計(jì)時(shí)器累積到一定閾值后,故障狀態(tài)變?yōu)镻assed或者Failed。
3)Event 控制DTC狀態(tài)更新
當(dāng)Event經(jīng)過一系列處理,最終能夠?qū)TC狀態(tài)進(jìn)行更新,DTC 8個(gè)bit更新邏輯如下:
DTC Bit0 更新邏輯
Bit位更新 | 條件 |
0 -> 1 | 經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed |
1 -> 0 |
經(jīng)Debounce后最終上報(bào)狀態(tài)為Passed OR 使用14服務(wù)清除DTC OR 復(fù)位事件狀態(tài) |
DTC Bit0 更新邏輯圖
DTC Bit1更新邏輯
Bit位更新 | 條件 |
0 -> 1 | 經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed |
1 -> 0 |
操作循環(huán)更新 OR 使用14服務(wù)清除DTC |
DTC Bit1 更新邏輯圖
DTC Bit2更新邏輯
Bit位更新 | 條件 |
0 -> 1 | 經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed |
1 -> 0 |
(操作循環(huán)更新 AND TestFailedThisOperationCycle == 0) OR 使用14服務(wù)清除DTC OR TestNotCompeleteThisOperationCycle == 0 |
DTC Bit2 更新邏輯圖
DTC Bit3更新狀態(tài)
Bit位更新 | 條件 |
0 -> 1 |
經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed AND Fialure Counter > = 故障確認(rèn)閾值 |
1 -> 0 |
達(dá)到老化條件 OR 使用14服務(wù)清除DTC OR 故障溢出被替換 |
DTC Bit3 更新邏輯圖
DTC Bit4更新邏輯
Bit位更新 | 條件 |
0 -> 1 | 經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed |
1 -> 0 | 使用14服務(wù)清除DTC |
DTC Bit4 更新邏輯圖
DTC Bit5更新邏輯
Bit位更新 | 條件 |
0 -> 1 | 經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed |
1 -> 0 | 使用14服務(wù)清除DTC |
DTCBit5 更新邏輯圖
DTC Bit6更新邏輯
Bit位更新 | 條件 |
0 -> 1 | 經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed |
1 -> 0 |
使用14服務(wù)清除DTC OR 操作循環(huán)更新 |
DTCBit6更新邏輯圖
DTC Bit7更新邏輯
Bit位更新 | 條件 |
0 -> 1 |
經(jīng)Debounce后最終上報(bào)狀態(tài)為Failed AND 點(diǎn)燈條件滿足 |
1 -> 0 |
使用14服務(wù)清除DTC OR 點(diǎn)燈條件不滿足 |
DTCBit7更新邏輯
4)Retention條件檢測(cè)
當(dāng)DTC狀態(tài)完成更新后,Dem將開始進(jìn)行Retention條件檢測(cè)。Dem給用戶提供多種策略用以判斷是否需要分配Event Memory Entry。分配策略由配置DemEventMemoryEntryStorageTrigger決定,具體如下面表格所示:
DemEventMemoryEntryStorageTrigger | 分配條件 |
DEM_TRIGGER_ON_TEST_FAILED | DTC bit0 由0跳變成1 |
DEM_TRIGGER_ON_CONFIRMED | DTC bit3 由0跳變成1 |
DEM_TRIGGER_ON_PENDING | DTC bit2 由0跳變成1 |
DEM_TRIGGER_ON_FDC_THRESHOLD |
DTC bit0 由0跳變成1 OR DTC bit1由0跳變成1 OR DTC bit2由0跳變成1 OR DTC bit3由0跳變成1 |
5)Event Memory Retention處理
Event上報(bào)經(jīng)過了使能條件檢測(cè),Event控制DTC Bit位狀態(tài)更新,Retention條件檢測(cè)重重難關(guān),最終被允許進(jìn)入Event Memory,Dem會(huì)怎樣將Event(DTCs),DTC狀態(tài),快照,擴(kuò)展數(shù)據(jù)存入Event Memory中呢?
基本思路如下:
Event Memory Retention處理機(jī)制
S1:在Event Mmeory所有Event Mmeory Entry中搜索,檢查該Event及相關(guān)數(shù)據(jù)是否已經(jīng)存入Event Memory中,如果已經(jīng)存在,則進(jìn)入Event MemoryEntry Storage。如果不存在,則在Event Memory中尋找空間用于存儲(chǔ)Event內(nèi)容,如果Event Memory中空間已滿,則需要使用Replacement機(jī)制。
S2:當(dāng)進(jìn)入Event memory Storage,Occurance Counter需要加1,判斷是否需要更新凍結(jié)幀,擴(kuò)展數(shù)據(jù)。 EventDisplacement處理 Event Memory存儲(chǔ)了數(shù)量為DemMaxNumberEventEntryPrimary的Event MemoryEntry,當(dāng)Event Memory Entry已滿,需要進(jìn)行Replacement,即根據(jù)一定的策略決定新增的Event如何存儲(chǔ)。Dem模塊提供了一套完善的機(jī)制用于Replacement,該機(jī)制有三個(gè)核心原則:
1.Event Priority(數(shù)字越小存儲(chǔ)優(yōu)先級(jí)越高)
2.Event Active或者Event Passive狀態(tài)(Active優(yōu)先級(jí)高于Passive優(yōu)先級(jí))
3.Event Occurance Counter(最近發(fā)生的存儲(chǔ)優(yōu)先級(jí)高于之前發(fā)生的)
被替換的Event對(duì)應(yīng)DTC中Bit2,Bit3 ,Bit5會(huì)被設(shè)置為0.
下圖展示了整套Event Displacement機(jī)制,體現(xiàn)了三個(gè)核心原則在替換機(jī)制中的作用。
Event Displacement機(jī)制
總結(jié)
DEM是以DTC為核心的AUTOSAR基礎(chǔ)軟件模塊,實(shí)現(xiàn)了對(duì)DTC的監(jiān)控上報(bào),存儲(chǔ)等功能,如果需要對(duì)AUTOSAR診斷進(jìn)行進(jìn)一步學(xué)習(xí),還需要對(duì)DCM,Doip,Cantp等模塊進(jìn)行系統(tǒng)性學(xué)習(xí)。
審核編輯:劉清
-
FlaSh
+關(guān)注
關(guān)注
10文章
1642瀏覽量
148683 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
115024 -
MUDS
+關(guān)注
關(guān)注
0文章
2瀏覽量
5607 -
DTC控制
+關(guān)注
關(guān)注
0文章
18瀏覽量
1204
原文標(biāo)題:全面講解系統(tǒng)診斷管理模塊設(shè)計(jì)
文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論