• 1246查看
  • 0回复

[Autosar] 一文搞懂AUTOSAR的DEM模块

[复制链接]


该用户从未签到

发表于 29-8-2023 14:04:44 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


Dem全称为Diagnostic Event Manager,负责故障事件的处理、故障数据的存储和管理。简单说其功能是故障事件确认前的故障debounce,故障事件确认时的故障数据存储,故障发生后的故障老化、故障替代。

01.
AUTOSAR DEM模块整体框架
AUTOSAR标准中对Dem模块最上层分了两菜单栏(参见图1),分别是DemConfigSet,DemGeneral。其中DemConfigSet负责不同DTC、event等的配置,DemGeneral负责DTC、event的共用部分,包括冻结帧、扩展帧、使能条件等。

一文搞懂AUTOSAR的DEM模块w1.jpg

图1 Dem的上层架构

下面主要介绍上层菜单下的配置选项。
DemConfigSet
DemConfigSet下包含图2所示的配置项,下面针对常用的配置选项进行介绍。

一文搞懂AUTOSAR的DEM模块w2.jpg
图2 DemConfigSet配置项
1. DemComponent

DemComponent又名MonitorComponent,主要用于有关联的故障事件。比如传感本身发生故障,这时控制器读取的数据应该被视为无效。一个DemComponent是若干故障事件的集合,在DemComponent内部,故障事件有优先级,当最高优先级的故障事件状态为Failed导致其他故障事件状态也为Failed,或者父节点DemComponent的状态为Failed导致子节点DemComponent内的故障事件状态变成Failed,这种故障叫做连续错误(CONSECUTIVE FAULT),其他被认为是偶发错误(CAUSAL FAULT)。另外如果DemComponent内部故障事件优先级被忽略,那么仅有当父节点DemComponent的状态为Failed导致子节点DemComponent内的故障事件状态变成Failed被称作是连续错误(CONSECUTIVE FAULT)。

2. DemDTCAttributes

DemDTCAttributes用于配置DTC的属性,包括老化周期、故障优先级、存储方式(立即存储还是下电存储)、快照数据需记录的最大组数以及参考的冻结帧数据快照数据、故障数据存储的memory等,其中快照数据、扩展数据等需要在DemGeneral中配置。

3. DemDTC

DemDTC用于配置故障的DTC值(诊断故障码)、DTC的严重程度以及参考的DTC属性、Obd属性等。

4. DemDebounceCounterBaseClass、DemDebounceTimeBaseClass

这两项主要用于为不同的故障事件配置不同的debounce策略,可以是基于计数器的debounce策略,也可以是基于时间的debounce策略,或者由SWC自定义,具体请查看AUTOSAR故障Debounce策略。

5. DemObdDTC

DemObdDTC用于配置obd类故障事件是否支持Pto以及故障事件的DTC值等。

6. DemPidClass

用于配置Pid以及相关联的应用层信号。

7. DemEventParameter

DemEventParameter用于配置故障的类型(BSW or SWC)、故障需要多少个运行循环才能确认、是否支持预存储功能、故障事件的debounce策略以及参考的DTC属性、DemComponent、使能条件、运行循环等。

以上参数基本为DemConfigSet比较重要的配置项,其他未介绍的可以查看标准。

DemGeneral

DemGeneral主要用于配置DemConfigSet中不同event、DTC共用的一些参数,所以相对来说比较杂,下面针对一些进行介绍。

1. DemDataElementClass

DemDataElementClass用于配置内部、外部元素,如表1所示,用于配置扩展数据和快照数据的数据源。其中内部元素如表2所示,外部元素主要分通过C/S或S/R接口获取应用层的数据。

DemExternalCSDataElementClass

This container contains the configuration (parameters) for an external  client/server based data element class. It defines, how the Dem can obtain  the value of the data element from either a SWC or another BSW module. Whether  a client/server port or a C function-call is used, is defined by DemDataElementUsePort.

DemExternalSRDataElementClass

This container contains the configuration (parameters) for an external  sender/receiver based data elementclass. It defines, how the Dem can obtain  the value of the data element from a SWC, by using a sender/receiver port.

DemInternalDataElementClass

This container contains the configuration (parameters) for an internal  data element class.

表1 DemDataElementClass中三种数据


DEM_AGINGCTR_DOWNCNT

map  down-counting Dem-internal aging counter, max. range: 1 byte

DEM_AGINGCTR_UPCNT

map up-counting  Dem-internal aging counter, max. range: 1 byte

DEM_CURRENT_FDC

map up-counting  Dem-internal fault detection counter, max. range: 1 byte

DEM_CYCLES_SINCE_FIRST_FAILED

map Dem-internal  Operation Cycle Counter - Cycles since first failed, max. range: 1 byte

DEM_CYCLES_SINCE_LAST_FAILED

map Dem-internal  Operation CycleCounter - Cycles since last failed, max. range: 1 byte

DEM_FAILED_CYCLES

map Dem-internal  Operation Cycle Counter - Failed cycles, max. range: 1byte

DEM_MAX_FDC_DURING_CURRENT_CYCLE

map Dem-internal  DTC Fault Detection Counter maximum value during current operation cycle,  max. range: 1 byte

DEM_MAX_FDC_SINCE_LAST_CLEAR

map Dem-internal  DTC Fault Detection Counter maximum value since last clear, max. range: 1  byte

DEM_OCCCTR

map Dem-internal  occurrence counter, max. range: 1 byte

DEM_OVFLIND

map Dem-internal  overflow indication, max. range: 1 byte (0 = False, 1 =True)

DEM_SIGNIFICANCE

map (static)  Dem-internal event significance (refer to DemDTCSignificance), max. range: 1byte  (0 = OCCURRENCE, 1 = FAULT)

表2 内部参数

2. DemDidClass

DemDidClass用于配置快照数据的Did 以及对应的DemDataElementClass。

3. DemExtendedDataRecordClass

该项用于配置扩展数据的id、扩展数据触发储存条件和参考的DemDataElementClass。

4. DemFreezeFrameRecordClass

该项主要用于配置快照数据的触发存储条件以及快照id。

5. DemFreezeFrameClass

该项用于配置快照数据包含的数据,数据来自DemDataElementClass。

02.
DEM DTC的Debounce策略
故障诊断是由Dem模块和SWC共同完成的,如下图3所示,SWC中的Monitor Function对故障条件进行实时监控,并实时将故障条件的判定结果反馈至Dem模块判断是否发生故障,如图4所示。

一文搞懂AUTOSAR的DEM模块w3.jpg

图3 SWC与Dem模块

一文搞懂AUTOSAR的DEM模块w4.jpg

图4  Dem_SetEventStatus调用示意图

故障诊断由SWC与Dem模块共同完成的,故故障的debounce策略即可在SWC中实现,也可在Dem模块中实现。如果在SWC中,Dem_SetEventStatus()函数传给Dem的状态为passed或failed,如果在Dem,Dem_SetEventStatus()函数传给Dem的状态为prepassed或prefailed。下面主要介绍在Dem中实现的debounce策略。Dem中提供了两种debounce策略,分别为基于计数器的debounce策略和基于时间的debounce策略,如图5所示。
一文搞懂AUTOSAR的DEM模块w5.jpg

图5 dem模块支持的debounce策略

基于计数器的Debounce策略
在这种策略下,Dem会提供一个计数器(fault detection counter)用来记录判断的结果,当Diagnostic Monitor上报至dem的状态为prefailed,计数器会按步长增加,当达到设定的限值时,故障状态变成failed。当上报状态为prepassed,计数器按步长减少,当达到设定的限值时,故障状态变成passed。当以下对改策略涉及的重要参数进行解释。1、FDC(fault detection counter):错误计数器,其范围为-128~127;2、DemDebounceCounterFailedThreshold:故障从prefailed状态跳转至failed的限值;3、DemDebounceCounterPassedThreshold:故障从prepassed状态跳转至passed状态的限值;4、DemDebounceCounterIncrementStepSize:当DiagnosticMonitor上报Prefailed,错误计数器的增加量;5、DemDebounceCounterDecrementStepSize:当DiagnosticMonitor上报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功能使能,该变量定义了计数器的重置值;

下面用图6来讲解以上参数及基于计数器的debounde策略。

一文搞懂AUTOSAR的DEM模块w6.jpg

图6 基于计数器的debounce策略图
其中:

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策略
在这种策略下,计数器的初始值为0,其范围为-128~127,当Dem接收到Diagnostic Monitor发送的状态值开始计数,计数器的增长方向由接收到的状态决定,当计数器的值在一定时间达到阈值,完成此次判断,如果在未达到阈值时,Dem接收的状态发生变化,计数器会重新开始计数,并且计数方向也发生转变。对于基于时间debounce的策略主要配置以下几个参数:
1、DebounceTimeBasedTaskTime:该变量定义基本的检测周期;

2、DemDebounceTimeFailedThreshold:定义故障状态从prefailed跳转至failed需要多少个DebounceTimeBasedTaskTime周期;

3、DemDebounceTimeFailedThreshold:定义故障状态从prepassed跳转至passed需要多少个DebounceTimeBasedTaskTime周期;
下面用图7来讲解以上参数以及基于时间的debounce策略。
一文搞懂AUTOSAR的DEM模块w7.jpg

图7 基于时间的debounce策略图
其中:
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、表示故障未发生;
03.
DEM 故障数据存储策略在AUTOSAR的Dem模块中提供了DemEventDisplacementStrategy配置选项用于选择不同故障数据存储策略,分别为DEM_DISPLACEMENT_NONE,DEM_DISPLACEMENT_PRIO_OCC,DEM_DISPLACEMENT_FULL。当故障存储策略选择为DEM_DISPLACEMENT_NONE,如果故障数据存储区存满时,新发生故障的数据不会被存储;当故障存储策略选择DEM_DISPLACEMENT_PRIO_OCC,通过比较故障优先级(Priority)、故障发生时间(Occurrence)、bit6(TestNotCompletedThisOperationCycle bit)状态判断故障数据是否存储;当故存储策略选择DEM_DISPLACEMENT_FULL时,通过比较故障优先级(Priority)、故障发生时间(Occurrence)、bit6(TestNotCompletedThisOperationCycle bit)状态和故障状态(Active/Passive status)判断故障数据是否存储。其中故障优先级(Priority)是在开发Dem模块时,对各故障配置一个固定的优先级;故障发生时间(Occurrence)是指故障上报至Dem模块的时间,当故障再次发生(同一个驾驶循环)新的故障数据会覆盖上次一的故障数据;故障状态(Active/Passive status)是指故障当前的状态,Active代表故障发生,Passive代表故障未发生。图8是AUTOSAR故障数据存储的详细逻辑图。
一文搞懂AUTOSAR的DEM模块w8.jpg

图8 故障存储策略

如果DemOBDEventDisplacement设置为TRUE,,则故障存储策略会忽略满足以下条件的故障:
已有故障为排放相关的故障(AND)已有故障触发了MIL(OR)Pending位置位为1(OR)(已有故障有合法的冻结帧数据(OR)已有故障优先级大于或等于当前故障)。
04.
DEM DTC 状态位含义DTC status表示一个故障的状态,是故障数据存储、故障老化等机制的依据条件之一,DTC status总共包含8位,各位的含义见表3:

Bit

描述

0

TestFailed

1

TestFailedThisOperationCycle

2

PendingDTC

3

ConfirmedDTC

4

testNotCompletedSinceLastClear

5

testFailedSinceLastClear

6

TestNotCompletedThisOperationCycle

7

WarningIndicatorRequested
表3 DTC status

下面先对八个状态位进行详细介绍。

Bit0 testFailed

故障诊断通常是周期性执行的,如果当前周期检测到故障条件满足,表示故障发生了,testFailed会立即置1,下一个周期如果检测到该故障条件未满足,则testFailed会立即恢复为0。testFailed恢复为0还有两种情况:一种调用Dem<…>clearDTC函数清除故障信息(USD 0x14服务,或OBD 0x04服务),第二种调用Dem_ResetEventStatus函数对该故障状态位进行复位。testFailed逻辑图见图9。

AUTOSAR标准中对testFailed还有关于是否需要存储的描述,可以通过配置项DemStatusBitStorageTestFailed进行配置。对于支持WWH-OBD的控制器则需将该配置项配置为true。

一文搞懂AUTOSAR的DEM模块w9.jpg

图9 testFailed位逻辑图

Bit1 TestFailedThisOperationCycle

TestFailedThisOperationCycle用于表示当前运行循环是否出现过testFailed = 1。一旦testFailed出现过置1的情况,TestFailedThisOperationCycle会被置1,TestFailedThisOperationCycle位恢复为0的条件有两种:第一种是用Dem<…>clearDTC函数清除故障信息(USD 0x14服务,或OBD 0x04服务);第二种是该运行循环结束或新的运行循环开始。TestFailedThisOperationCycle的变化逻辑请参照图10.

一文搞懂AUTOSAR的DEM模块w10.jpg

图10 TestFailedThisOperationCycle位逻辑图

Bit2 PendingDTC

PendingDTC用于表示故障在当前运行循环或者上一个运行循环出现过testFailed被置位为1,并且PendingDTC的状态只有在当前循环测试完毕之后才会更新,也就是说如果上一个循环故障发生了,PendingDTC位置1,当前循环故障没有发生,但是PendingDTC仍为1,只有在下一个循环才会恢复为0。该位恢复0的条件有两种:第一种是用Dem<…>clearDTC函数清除故障信息(USD 0x14服务,或OBD 0x04服务);第二种是当前运行TestFailedThisOperationCycle未置为1,且TestNotCompletedThisOperationCycle未置为1,同时运行循环结束或者下一个运行循环开始。该位的逻辑图见图11。

PendingDTC主要用于某些故障需要多个运行循环才能确认(Bit3 confirmedDTC=1)的情况下,目前遇到的主要是OBD排放相关的故障需要实现PendingDTC位。

一文搞懂AUTOSAR的DEM模块w11.jpg

图11 PendingDTC逻辑图

Bit3 confirmedDTC

confirmedDTC表示故障已经确认,故障数据存储至EEPROM或者FEE(如果支持实时存故障数据)。另外需要注意的是confirmedDTC置位为1不表示故障还发生,故障当前是否发生主要由testFailed状态确定。该位恢复为0的条件有以下三种:第一种为故障老化;第二种为故障替代;第三种是用Dem<…>clearDTC函数(USD 0x14服务,OBD为 0x04服务)清除故障信息。该位的逻辑图见图12.

一文搞懂AUTOSAR的DEM模块w12.jpg

图12 confirmedDTC逻辑图

Bit4 TestNotCompletedSinceLastClear

TestNotCompletedSinceLastClear表示自从上次调用Dem<…>clearDTC函数清除故障信息后,是否成功执行对故障进行检测,该位的逻辑图见图13。

TestNotCompletedSinceLastClear=1,表示该故障自从上次清除之后还未进行检测。

TestNotCompletedSinceLastClear =0,表示该故障自从上次清除之后已成功进行检测。

一文搞懂AUTOSAR的DEM模块w13.jpg

图13 TestNotCompletedSinceLastClear逻辑图

Bit5 TestFailedSinceLastClear

TestFailedSinceLastClear表示自从上次动用Dem<…>clearDTC函数清除故障信息后,testFailed是否出现过置位为1。TestFailedSinceLastClear=0表示自从上次清除DTC之后,故障未发生过,TestFailedSinceLastClear=1表示自从上次清除之后故障又发生过。该位的复位条件有三种:第一种为调用Dem<…>clearDTC函数(USD 0x14服务,OBD为 0x04服务)清除故障信息,第二种是故障老化;第三种为故障替代。该位的逻辑图请参照图14。

一文搞懂AUTOSAR的DEM模块w14.jpg

图14 TestFailedSinceLastClear逻辑图

Bit6 testNotCompletedThisOperationCycle

testNotCompletedThisOperationCycle表示该运行循环故障是否进行检测,或者说故障是否进行测试,该位的逻辑图见图15。

testNotCompletedThisOperationCycle=0表示当前循环已对该故障进行检测,进行测试。

testNotCompletedThisOperationCycle=1表示当前循环还未对该故障进行检测,进行测试。

一文搞懂AUTOSAR的DEM模块w15.jpg

图15 testNotCompletedThisOperationCycle逻辑图

Bit7 WarningIndicatorRequested

WarningIndicatorRequested用于某些故障发生需要通过仪表盘的MIL灯通知用户。

WarningIndicatorRequested=1表示请求点亮仪表盘的MIL灯。

WarningIndicatorRequested=0表示不请求点亮仪表盘的MIL灯。

对于不需要通过仪表盘告知用户的故障,WarningIndicatorRequested始终为0,该位的逻辑图见图16.

一文搞懂AUTOSAR的DEM模块w16.jpg

图16 WarningIndicatorRequested逻辑图

上面主要单独对DTC status的各位进项介绍,下面通过一张状态图(如图17)来介绍各状态位的变化。

一文搞懂AUTOSAR的DEM模块w17.jpg
图17 状态图
其中:
一文搞懂AUTOSAR的DEM模块w18.jpg
0 表示接收到清除故障信息命令,初始化DTCstatus byte;1,2表示在运行循环1中故障检测,或者说故障测试已经开始,所以bit4、bit6状态发生变化;3,4,5,6表示testFailed,TestFailedThisOperationCycle,pendingDTC,testFailedSinceLastClear位同时从0变为1,表示已检测到故障发生,但该故障需要两个运行周期才能确认,所以confirmedDTC还是为0.7表示故障恢复;8表示故障再次发生;9,10表示在运行循环1结束,运行循环2开始的分界点,由于运行循环2中故障还未进行故障诊,所以testFailedThisOperationCycle状态从1变成0,testNotCompletedThisOperationCycle状态从0变成1;11表示在运行循环2中故障检测还未开始,这时testfailed的状态可以有制造商指定是否保留上一个循环中testFailed的状态,在AUTOSAR中可以通过DemStatusBitStorageTestFailed配置项配置;12表示在运行循环2中故障检测已经执行;13、14表示在运行循环2中故障发生了,所以testfailed、testFailedThisMonitoringCycle置位为1;15、由于故障在两个循环中都存在,confirmedDTC置位为1;16、用于记录故障连续在多少个运行循环出现,用于确认故障的confirmedDTC是否达到置1的条件;



该用户从未签到

发表于 18-3-2025 00:52:08 | 显示全部楼层
AUTOSAR的DEM模块,即Diagnostic Event Manager,其核心框架包括两大模块:DemConfigSet和DemGeneral。其中,DemConfigSet主要负责各类诊断故障代码(DTC)和事件的配置,为用户提供定制化的配置服务;而DemGeneral则处理这些事件的共用部分,涵盖冻结帧、扩展帧以及使能条件等管理功能。此模块的主要职责在于故障事件的处理、存储和管理,确保在故障事件确认前进行去抖操作,故障发生时实现数据的存储,并进行故障老化和替代的管理。此模块设计遵循AUTOSAR标准,保证了其高度的模块化和标准化。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 00:52:08 | 显示全部楼层
AUTOSAR中的DEM模块即Diagnostic Event Manager,是负责故障事件处理的核心组件。其整体框架分为DemConfigSet和DemGeneral两大菜单栏。其中,DemConfigSet主要负责不同诊断故障代码(DTC)和事件的配置,以实现个性化的设置。而DemGeneral则管理这些DTC和事件的共用部分,如冻结帧、扩展帧及使能条件等,确保故障数据的正确存储和管理。简单而言,DEM模块在故障确认前进行事件去抖(debounce),确认时进行数据存储,发生后进行故障老化和替代,为故障诊断提供可靠依据。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 02:21 , Processed in 0.415108 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.