event memory是DEM的精髓所在。 event memory是用于存储故障的EventID、扩展数据、故障状态、冻结帧等故障相关的数据的存储块,这个存储块应当被写入非易失性存储空间。如果存在一个完整的上下电过程,可以在NvM_ReadAll的时候把数据读取到存储在RAM中的变量,当下电时,NvM_WriteAll写入NvM。Event memory管理负责故障相关数据的进入event memory(Entry)、更新(update)、和去除(remove)。 event memory分为四种: 类型 DemPrimaryMemory 存储EventId、故障状态、冻结帧、扩展数据 DemUserDefinedMemory DemMirrorMemory permanent event memory 用于存储OBD-relevant DTC 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。 在Dem_MainFunction任务中,在检查到故障event memory entry的请求,如何把故障存到event memory中呢? 基本思路如下图: 第一步,检查故障是否已经存在event memory中,如果已经存在,则进入event memory processing,增加error cycle counter、判断故障状态是否达到confirmed条件、判断是否需要更新冻结帧; 如果不存在,则在event memory中寻找空间用于存储故障及其状态,如果event memory中空间已满,可以使用replacement机制。 DemEventDisplacementStrategy DEM_DISPLACEMENT_FULL 替换机制考虑优先级、故障状态active或者passive和故障出现次数 DEM_DISPLACEMENT_NONE 替换机制失能 DEM_DISPLACEMENT_PRIO_OCC 替换机制考虑优先级、故障出现次数 replacement机制基本逻辑流程图如下: 进入primary memory之后应当先整理event memory中的顺序,使得event memory中故障存储的顺序是按照故障进入memory的先后顺序排序,也可在entry时排序,然后对所有的故障进行故障状态位(pending、confirmed、warningindicator)的处理、扩展数据计算、老化处理、对新加入的或者更新状态的故障执行冻结帧存储逻辑等等。 (1)pending 故障(testFailed)进入event memory之后便会在给event memory的状态或上PENDING的状态位。 pending由1变为0的条件如下两图: 从图中标记5可以看出,如果连续两个operation cycle, event的状态都是test passed,那么PENDING的状态位即可由1变为0,event memory的PENDING状态即可清零。图中还可看出PENDING位由1变0的条件为:在两个operation cycle中故障都未发生,在第二个testPassed的operation cycle 结束的时候,PENDING位清零。但是对于没有shut down过程即直接掉电的ECU而言,可以在下一个operation cycle开启时把PENDING位清零。 (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位才会置位。 冻结帧根据不同类型的也分emission related freeze frame和non-emission related freeze frame,此处仅以non-emission related冻结帧为例。 冻结帧主要用于在发生故障的一瞬间记录当时的工况,如故障发生时的车速、发动机或电机转速、KL30电电压、里程数等,这些冻结帧可以被所有的故障记录,也就是任何一个故障在发生时,都应当记录这几个数据,作为冻结帧,可以称之为公共冻结帧。但是每个故障有其独特的功能和特性,需要记录与其特性相关的冻结帧,如转子过温,故障发生时,可记录转子温度、冷却液温度、三相电流等与温度相关的数据作为该故障特有的冻结帧,可称这些冻结帧为特有冻结帧。 event-specific的冻结帧既可以提前配置好,也可以通过标定分配不同与之相关的冻结帧。 每一个冻结帧应当有一个独有的DID与之对应,用于区分不同冻结帧的含义,可以为检测仪读取冻结帧时识别不同冻结帧的含义及长度。 冻结帧相关参数: DemFreezeFrameRecordTrigger 冻结帧存储的触发条件 DEM_TRIGGER_ON_CONFIRMED UDS故障状态bit3(confirmedDTC)由0变为1时触发存储冻结帧 DEM_TRIGGER_ON_FDC_THRESHOLD 当FDC到达阈值时触发冻结帧存储 DEM_TRIGGER_ON_PENDING UDS故障状态bit2(PENDING)由0到1触发冻结帧存储 DEM_TRIGGER_ON_TEST_FAILED UDS故障状态bit1(testFailed)由0变为1触发冻结帧存储 DemFreezeFrameRecordUpdate 该参数定义了冻结帧存储和更新的条件 DEM_UPDATE_RECORD_NO This record is only captured for new event memory entries. 记录只在第一次进入event memory时捕捉,及时第一次存储后不再更新。 DEM_UPDATE_RECORD_YES This record is captured every time. 记录每次触发都会捕捉 Event Memory
1. event memory分类
2. primary memory
2.1 primary memory entry

2.2 event memory 存储


2.3 event memory processing
2.3.1 UDS 故障状态(PENDING 、confirmed 、warningIndicator)




2.4 冻结帧存储
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)