【Autosar DEM 四.Event Memory】

--------这一章是DEM的最后一章,小编在这里介绍的是DTC发生时,是怎么存储在非易失存储器中的。废话不多,让我们继续学习。

Event Memory
event memory是DEM的精髓所在。

event memory是用于存储故障的EventID、扩展数据、故障状态、冻结帧等故障相关的数据的存储块,这个存储块应当被写入非易失性存储空间。如果存在一个完整的上下电过程,可以在NvM_ReadAll的时候把数据读取到存储在RAM中的变量,当下电时,NvM_WriteAll写入NvM。Event memory管理负责故障相关数据的进入event memory(Entry)、更新(update)、和去除(remove)。

1. event memory分类
event memory分为四种:

在这里插入图片描述

2. primary memory

2.1 primary memory entry
primary memory是一个大小为DemMaxNumberEventEntryPrimary用于存储故障相关数据的非易失性存储空间。如果每个故障进入primary memory的条件(DemEventMemoryEntryStorageTrigger)是DEM_TRIGGER_ON_TEST_FAILED ,那么故障在test failed时就可以向Dem_MainFunction “申请”进入primary memory,在Dem_MainFunction中会轮询不同的SWC或者BSW报告的故障,如report故障且primary memory有足够的空间用于存储,把这些故障有序地进入primary memory。用于管理primary memory的数组或者管理单元会把故障的EventID与存在primary memory中的位置相关联,然后更新下一个存储位置的索引。流程图如下
在这里插入图片描述
有一个问题就是如何使得SWC调用Dem_SetEventStatus(EventId, EventState)在故障failed之后进入到event memory中,并在event memory中处理故障状态(pending、confirmed、warningIndicator、老化)和记录故障相关的数据(冻结帧、扩展数据等)。因为SWC的monitor程序和Dem_MainFunction()处在两个不同的任务中,可以使用一个队列用于管理申请进入primary memory的请求(request),SWC或者BSW在report故障时,做入队操作,把故障及故障状态入队,在Dem_MainFunction()做出队操作 。由此实现event memory entry

2.2 event memory 存储

在Dem_MainFunction任务中,在检查到故障event memory entry的请求,如何把故障存到event memory中呢?

基本思路如下图:
在这里插入图片描述
第一步,检查故障是否已经存在event memory中,如果已经存在,则进入event memory processing,增加error cycle counter、判断故障状态是否达到confirmed条件、判断是否需要更新冻结帧;

如果不存在,则在event memory中寻找空间用于存储故障及其状态,如果event memory中空间已满,可以使用replacement机制

在这里插入图片描述
2.3 event memory processing
进入primary memory之后应当先整理event memory中的顺序,使得event memory中故障存储的顺序是按照故障进入memory的先后顺序排序,也可在entry时排序,然后对所有的故障进行故障状态位(pending、confirmed、warningindicator)的处理、扩展数据计算、老化处理、对新加入的或者更新状态的故障执行冻结帧存储逻辑等等。

2.3.1 UDS 故障状态(PENDING 、confirmed 、warningIndicator)

1)pending

故障(testFailed)进入event memory之后便会在给event memory的状态或上PENDING的状态位。

pending由1变为0的条件如下两图:

在这里插入图片描述
在这里插入图片描述
2)confirmed

故障状态confirmed策略有两种情况:

① 在non-emission related ECU中

当故障状态故障testFailed之后,置PENDING位后confirmed位便会同时置位,如下图:

在这里插入图片描述
(2)emission-related ECU

在故障状态PENDING置位后,此时的tested and failed cyclescounter加一,如果此时tested and failed cycles counter达到DemEventFailureCycleCounterThreshold,且此时的OBD driving cycle 处于开启状态,confirmedDTC位才会置位。

在这里插入图片描述
2.4 冻结帧存储
冻结帧根据不同类型的也分emission related freeze frame和non-emission related freeze frame,此处仅以non-emission related冻结帧为例。

冻结帧主要用于在发生故障的一瞬间记录当时的工况,如故障发生时的车速、发动机或电机转速、KL30电电压、里程数等,这些冻结帧可以被所有的故障记录,也就是任何一个故障在发生时,都应当记录这几个数据,作为冻结帧,可以称之为公共冻结帧。但是每个故障有其独特的功能和特性,需要记录与其特性相关的冻结帧,如转子过温,故障发生时,可记录转子温度、冷却液温度、三相电流等与温度相关的数据作为该故障特有的冻结帧,可称这些冻结帧为特有冻结帧。

event-specific的冻结帧既可以提前配置好,也可以通过标定分配不同与之相关的冻结帧。

每一个冻结帧应当有一个独有的DID与之对应,用于区分不同冻结帧的含义,可以为检测仪读取冻结帧时识别不同冻结帧的含义及长度。

冻结帧相关参数:

在这里插入图片描述

  • 1
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值