Dem負(fù)責(zé)DTC的處理,包括凍結(jié)幀、擴(kuò)展數(shù)據(jù)、運(yùn)行循環(huán)、debounce策略等。
從最上層來看,Dem分別是DemConfigSet、DemGeneral兩大部分。其中DemConfigSet是圍繞Event的配置,DemGeneral負(fù)責(zé)DTC和Event的通用部分,包括凍結(jié)幀、擴(kuò)展幀、使能條件、運(yùn)行循環(huán)等。
DemGeneral
DemGeneral分小部分,通用配置、凍結(jié)幀配置、擴(kuò)展數(shù)據(jù)配置。
通用配置:
DemAvailabilitySupport:定義是否支持通過 Dem_SetEventAvailable接口設(shè)置Event的有效性 ,用于在運(yùn)行時(shí)切換事件的可用性。
DemBswErrorBufferSize:配置BSW Event的數(shù)量,在Event配置里,需要配置event是BSW_KIND還是SWC_KIND;
DemClearDTCBehavior:定義Dcm回復(fù)肯定響應(yīng)的時(shí)機(jī)。
VOLATILE:Dem清除RAM中的DTC數(shù)據(jù)之后,Dcm回復(fù)肯定響應(yīng);
NONVOLATILE_TRIGGER:Dem清除RAM中數(shù)據(jù)并且啟動(dòng)NVM清除數(shù)據(jù),Dcm回復(fù)肯定響應(yīng);
NONVOLATILE_FINISH:Dem清除RAM中數(shù)據(jù),同時(shí)啟動(dòng)并完成NVM清除數(shù)據(jù),Dcm回復(fù)肯定響應(yīng)。
DemClearDTCLimitation:DTC清除配置;
ALL_SUPPORTED_DTCS:支持所有的DTC值;
ONLY_CLEAR_ALL_DTCS: 僅支持清除所有DTC;
ONLY_CLEAR_SINGLE_AND_ALL_DTCS:支持單個(gè)和所有DTC清除;
DemDataElementDefaultEndianness:定義數(shù)據(jù)元素的字節(jié)序;
DemDebounceCounterBasedSupport、 DemDebounceTimeBasedSupport :定義是否支持計(jì)數(shù)或計(jì)時(shí)debounce。這個(gè)配置限制了Event中debounce處理。
DemDtcStatusAvailabilityMask:設(shè)置0x19服務(wù)支持的狀態(tài)位;
DemEnvironmentDataCapture:設(shè)置凍結(jié)幀和擴(kuò)展數(shù)據(jù)的獲取是同步還是異步,也就是在當(dāng)前周期,還是下個(gè)周期;
?DemEventCombinationSupport:是否支持多個(gè)Event映射到一個(gè)DTC;
?DemEventDisplacementStrategy:配置DTC的替代策略,這AutoSAR提供了幾種,也可以自定義。
?DemEventMemoryEntryStorageTrigger:定義凍結(jié)幀和擴(kuò)展數(shù)據(jù)的觸發(fā)存儲(chǔ)的條件,一般是選test_fail,意味著test_fail從0—>1觸發(fā)。
?DemGeneralInterfaceSupport:環(huán)境數(shù)據(jù)和eventstatus改變是否,提供callback接口,一般選擇false;
?DemImmediateNvStorageLimit:定義NVM立即寫的限制數(shù)量,DemGeneral/DemImmediateNvStorageSupport和DemConfigSet/DemDTCClass/DemImmediateNvStorage需要開啟;
?DemMaxNumberEventEntryEventBuffer:定義環(huán)境數(shù)據(jù)緩存的大小;
?DemMaxNumberPrestoredFF:定義預(yù)存儲(chǔ)快照的最大數(shù)量;一般存儲(chǔ)的凍結(jié)幀里有快速變化的數(shù)據(jù),需要配置;
?DemResetConfirmedBitOnOverflow:定義當(dāng)事件存儲(chǔ)被取代時(shí),confirmed位是否復(fù)位,一般設(shè)置為true;
?DemStatusBitHandlingTestFailedSinceLastClear:定義老化和內(nèi)存替代后是否設(shè)置“TestFailedSinceLastClear”狀態(tài)位。
?DemStatusBitStorageTestFailed:定義testfail位是否存儲(chǔ);
?DemSuppressionSupport:定義是否支持DTC或者Event抑制;
?DemTypeOfDTCSupported:定義DTC的格式;
?DemTypeOfFreezeFrameRecordNumeration:定義如何分配快照號(hào)
?DemNvRamBlockIds:設(shè)置Event Memory數(shù)量,從NvM引用;
?DemOperationCycle:運(yùn)行循環(huán)設(shè)置,這里雖然可以配置不同的運(yùn)行循環(huán),但是循環(huán)的控制還是需要在代碼里去實(shí)現(xiàn);
?DemStorageCondition:設(shè)置環(huán)境數(shù)據(jù)是否可以存儲(chǔ);用于Event引用;
?DemDTCofgroup:可以將DTC分成不同的組,后面會(huì)詳細(xì)講。
凍結(jié)幀配置:
1.DemDataElementClass:用于配置所需的凍結(jié)幀數(shù)據(jù)以及擴(kuò)展數(shù)據(jù),這些數(shù)據(jù)可以來自模塊定義好的,也可以通過SR接口獲取,
2.DemDidClass:定義凍結(jié)幀的數(shù)據(jù)的DID;
3.DemFreezeFrameClass:選擇需要參考的DemDidClass;
4.DemFreezeFrameRecRecordClass:定義凍結(jié)幀的觸發(fā)條件,以及是否更新;
5.DemFreezeFrameRecNumClass:對需要record的數(shù)據(jù)進(jìn)行打包成一個(gè)凍結(jié)幀結(jié)構(gòu);
對于快照數(shù)據(jù):可以選擇一個(gè)DID映射一個(gè)數(shù)據(jù),這樣的好處是數(shù)據(jù)和DID明確的,解析也方便,當(dāng)時(shí)劣勢是占的空間大,每個(gè)DID需要占2個(gè)byte;另外一種方案是用一個(gè)DID定義一大塊內(nèi)存,上層軟件去做數(shù)據(jù)打包,這樣就節(jié)省空間,劣勢就是需要自己打包,以及上位機(jī)按照下位機(jī)的格式進(jìn)行數(shù)據(jù)解析。
擴(kuò)展數(shù)據(jù):
1.DemExtendedDataRecorderClass:選擇DemDataElementClass中的數(shù)據(jù),并設(shè)置更新策略以及數(shù)據(jù)ID;
2.DemExtendedDataClass:打包擴(kuò)展數(shù)據(jù),用于Event引用。
DemConfigSet
DemConfigSet這個(gè)菜單主要是圍繞Event來展開配置的。首先來梳理一下Event和DTC的一些基礎(chǔ)信息。
Event是指系統(tǒng)診斷事件,Dem用EventId來區(qū)分不同的診斷事件,通常使用來說Event和DTC是一一對應(yīng)的,但是如果是使用Event combination,則可以多個(gè)Event對一個(gè)DTC。
Event的基礎(chǔ)信息包括Event Priority、Event occurrence、Event Kind。
1.Event Priority是指事件的優(yōu)先級,其中1表示優(yōu)先級最高,數(shù)據(jù)越大優(yōu)先級越低;
2.Event occurrence主要是根據(jù)DemGeneral中配置的DemOccurrenceCounterProcessing來處理,一種是testfailbit 0—>1,一種是在confirmbit為1的情況下,testfail bit0—>1,兩者統(tǒng)計(jì)的大小會(huì)相差1.
3.Event kind主要是將Event分為BSW和SWC兩種,在DemGeneral中也配置了BSWerror的buffer大小。其兩者的區(qū)別是,BSW kind是通過配置來關(guān)聯(lián)到Dem模塊,比如在Busoff故障,可以直接在CANSM中直接關(guān)聯(lián)Dem。
4.BSW和SWC的區(qū)別在與,在Dem_PreInit后,就可以處理BSW kind故障,而SWC kind需要在Dem_Init后才能處理。
Eventdependencies
Event之間的依賴目的是過濾部分級聯(lián)故障以及節(jié)省存儲(chǔ)。其主要通過DemComponent來實(shí)現(xiàn)的,比如傳感本身發(fā)生故障,這時(shí)控制器讀取的數(shù)據(jù)也應(yīng)該無效。
一個(gè)DemComponent是若干event的集合,在DemComponent內(nèi)部,故障事件有優(yōu)先級,當(dāng)一個(gè)DemComponent內(nèi)部最高優(yōu)先級的故障事件狀態(tài)為Failed導(dǎo)致其他故障事件狀態(tài)也為Failed,或者父節(jié)點(diǎn)DemComponent的狀態(tài)為Failed導(dǎo)致子節(jié)點(diǎn)DemComponent內(nèi)的故障事件狀態(tài)Failed,這種故障叫做連續(xù)錯(cuò)誤(CONSECUTIVE FAULT),其他被認(rèn)為是偶發(fā)錯(cuò)誤(CAUSAL FAULT)。
另外如果DemComponent內(nèi)部故障事件優(yōu)先級被忽略,那么僅有當(dāng)父節(jié)DemComponent的狀態(tài)為Failed導(dǎo)致子節(jié)點(diǎn)DemComponent內(nèi)的故障事件狀態(tài)變成Failed被稱作是連續(xù)錯(cuò)誤(CONSECUTIVE FAULT)。連續(xù)故障則不會(huì)記錄環(huán)境數(shù)據(jù)。
1.DTC format是指DTC的格式,分別為15031和14229兩種,15031的格式為U150293,14229為D50293。
2.DTC severity是指用于表示故障的嚴(yán)重程度,主要從售后的角度來看,分為,立即檢查、下次檢查、立即維修。
3.DTCsignificance 是用于區(qū)分是ECU或系統(tǒng)的fault還是外部fault。
4.SuppressDTC output是指DemGeneral中DemSuppressionSupport 配置參數(shù),如果參數(shù)配置為true,則可以通過Dem_SetDTCSuppression 接口抑制某些DTC,抑制后對外是不可見的。
5.DTCgroup只需要一個(gè)參數(shù)就可以確定,就是DTC的界限(下界),上圖中兩個(gè)DTC組它們的各自參數(shù)就是該組DTC的下界,一個(gè)DTC組中的包含的DTC是該組配置的DTC界限與本組緊接的下一組的界限之間的DTC,但是不包括這兩個(gè)界限。這就可以用于0x14或0x85服務(wù)進(jìn)行單獨(dú)操作。當(dāng)前內(nèi)部預(yù)制了兩個(gè)組如下。
DemConfigSet-Debounce策略
基于計(jì)數(shù)器的Debounce策略
在這種策略下,Dem模塊會(huì)提供一個(gè)計(jì)數(shù)器(fault detection counter)用來記錄判斷的結(jié)果,當(dāng)Diagnostic Monitor上報(bào)至dem的狀態(tài)為prefailed,計(jì)數(shù)器會(huì)按步長增加,當(dāng)上報(bào)狀態(tài)為prepassed,計(jì)數(shù)器按步長減少。
1、5表示JumpDown功能,
3、4表示JumpUp功能,
2表示當(dāng)前計(jì)數(shù)器小于DemDebounceCounterJumpDownValue ,所以JumpDown功能沒有激活,
6表示DemDebounceCounterJumpDownValue ,
7表示DemDebounceCounterJumpUpValue,
8表示DemDebounceCounterFailedThreshold ,
9表示DemDebounceCounterPassedThreshold ,
10、12表示故障確認(rèn),由于計(jì)數(shù)器的值達(dá)到了fail的限值,
11故障恢復(fù),由于計(jì)數(shù)器的值達(dá)到pass的限值,
13表示Dem接收的狀態(tài)為failed,所以故障直接置位;
14表示Dem接到的狀態(tài)為passed,所以故障恢復(fù);
15表示DemDebounceCounterIncrementStepSize,
16表示DemDebounceCounterDecrementStepSize,
基于次數(shù)的debounce涉及的配置項(xiàng)含義如下:
1、FDC(fault detection counter):錯(cuò)誤計(jì)數(shù)器,其范圍為-128~127;
2、DemDebounceCounterFailedThreshold:故障從prefailed狀態(tài)跳轉(zhuǎn)至failed的限值;
3、DemDebounceCounterPassedThreshold:故障從prepassed狀態(tài)跳轉(zhuǎn)至passed狀態(tài)的限值。
4、DemDebounceCounterIncrementStepSize:當(dāng)Diagnostic Monitor上報(bào)Prefailed,錯(cuò)誤計(jì)數(shù)器的增加量;
5、DemDebounceCounterDecrementStepSize:當(dāng)Diagnostic Monitor上報(bào)Prepassed,錯(cuò)誤計(jì)數(shù)器減少量;
6、DemDebounceCounterJumpDown:是否使能JumpDown功能,JumpDown功能是指當(dāng)上一次Diagnostic Monitor上報(bào)的狀態(tài)是prefailed,而這次上報(bào)的是prepassed,且當(dāng)前計(jì)數(shù)器的值大于DemDebounceCounterJumpDownValue,錯(cuò)誤計(jì)數(shù)器的值會(huì)重置為DemDebounceCounterJumpDownValue。如果JumpDown功能禁止,計(jì)數(shù)器按照步長減少。
7、DemDebounceCounterJumpDownValue:當(dāng)JumpDown功能使能,該變量定義了計(jì)數(shù)器的重置值。
8、DemDebounceCounterJumpUp:是否使能JumpUp功能,JumpUp功能是指當(dāng)上一次Diagnostic Monitor上報(bào)的狀態(tài)是prepassed,而這次上報(bào)的是prefailed,且當(dāng)前計(jì)數(shù)器的值小于DemDebounceCounterJumpUpValue,錯(cuò)誤計(jì)數(shù)器的值會(huì)重置為DemDebounceCounterJumpUpValue。如果JumpUp功能禁止,計(jì)數(shù)器按照步長增加。
9:DemDebounceCounterJumpUpValue:當(dāng)JumpUp功能使能,該變量定義了計(jì)數(shù)器的重置值。
基于時(shí)間的Debounce策略
計(jì)數(shù)器的初始值為0,其范圍為-128~127,當(dāng)Dem接收到Diagnostic Monitor發(fā)送的狀態(tài)值開始計(jì)數(shù),計(jì)數(shù)器的增長方向有接收到的狀態(tài)決定,當(dāng)計(jì)數(shù)器的值在一定時(shí)間達(dá)到閾值,完成此次判斷,如果在未達(dá)到閾值之前,Dem收到的狀態(tài)發(fā)生變化,計(jì)數(shù)器會(huì)重新開始計(jì)數(shù),并且計(jì)數(shù)方向也發(fā)生轉(zhuǎn)變。
t failed:表示故障failed需要的時(shí)間,該值等于DebounceTimeBasedTaskTime乘以DemDebounceTimeFailedThreshold;
t passed:表示故障passed需要的時(shí)間,該值等于DebounceTimeBasedTaskTime乘以DemDebounceTimePassedThreshold;
1、表示Diagnostic Monitor傳至Dem的狀態(tài)為prefailed;并經(jīng)過t failed時(shí)間故障狀態(tài)編程failed;
2、表示Diagnostic Monitor傳至Dem的狀態(tài)為prepassed;此時(shí)計(jì)數(shù)器重新開始計(jì)數(shù);
3、由于2時(shí)刻開始計(jì)數(shù)未達(dá)到閾值時(shí),Dem接收的狀態(tài)發(fā)生變化,此時(shí)計(jì)數(shù)器開始重新計(jì)數(shù),并計(jì)數(shù)方向發(fā)生變化,經(jīng)過t failed時(shí)間后,故障狀態(tài)編程failed。
4、Dem接收到的狀態(tài)為failed,所以故障直接置位了;
5、Dem接收到的狀態(tài)為passed,所以故障直接恢復(fù)了;
6、表示故障已發(fā)生;
7、表示故障未發(fā)生;
對于基于時(shí)間Debounce的策略主要配置以下幾個(gè)參數(shù):
1、DebounceTimeBasedTaskTime:該變量定義基本的檢測周期
2、DemDebounceTimeFailedThreshold:定義故障狀態(tài)從prefailed跳轉(zhuǎn)至failed需要多少個(gè)DebounceTimeBasedTaskTime周期;
3、DemDebounceTimeFailedThreshold:定義故障狀態(tài)從prepassed跳轉(zhuǎn)至passed需要多少個(gè)DebounceTimeBasedTaskTime周期;
審核編輯:劉清
-
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
115041 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2269瀏覽量
95016 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
363瀏覽量
21789 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2011瀏覽量
61364 -
NVM
+關(guān)注
關(guān)注
1文章
41瀏覽量
19169
原文標(biāo)題:AutoSAR Dem配置項(xiàng)梳理
文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
AUTOSAR存儲(chǔ)模塊的基礎(chǔ)知識(shí)
第25章 DHCP動(dòng)態(tài)主機(jī)配置協(xié)議基礎(chǔ)知識(shí)
關(guān)于AUTOSAR架構(gòu)的知識(shí)點(diǎn)看完你就懂了
C語言基礎(chǔ)知識(shí)的樹狀結(jié)構(gòu)是如何組成的
嵌入式系統(tǒng)概述知識(shí)梳理
電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)
![電源管理<b class='flag-5'>基礎(chǔ)知識(shí)</b>電源管理<b class='flag-5'>基礎(chǔ)知識(shí)</b>電源管理<b class='flag-5'>基礎(chǔ)知識(shí)</b>](https://file.elecfans.com/web2/M00/49/C3/pYYBAGKhvFqABdB4AAAacroJI7Q433.png)
適合C語言小白看的基礎(chǔ)知識(shí)梳理總結(jié)
OpenVINO開發(fā)配置應(yīng)必備哪些基礎(chǔ)知識(shí)?
![OpenVINO開發(fā)<b class='flag-5'>配置</b>應(yīng)必備哪些<b class='flag-5'>基礎(chǔ)知識(shí)</b>?](https://file.elecfans.com/web1/M00/EF/EA/pIYBAGCjFQCAJJOIAAAnyH1pFTI447.png)
嵌入式C語言基礎(chǔ)知識(shí)梳理
![嵌入式C語言<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>梳理</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
關(guān)于AUTOSAR-DEM模塊的簡要介紹和幾點(diǎn)思考
DEM功能詳解
![<b class='flag-5'>DEM</b>功能詳解](https://file1.elecfans.com/web2/M00/88/8A/wKgaomRsEv6ATOopAAAj6cLvECQ349.png)
在TI SoC上集成AUTOSAR:基礎(chǔ)知識(shí)
![在TI SoC上集成<b class='flag-5'>AUTOSAR</b>:<b class='flag-5'>基礎(chǔ)知識(shí)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論