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