Davinci学习-Dem

Davinci学习–Dem

2020/11/2 10:08

DEM模块笔记

诊断事件管理器

Dem全称为Diagnostic Event Manager,负责故障事件的处理、故障数据的存储和管理。简单说其功能是故障事件确认前的故障debounce,故障事件确认时的故障数据存储,故障发生后的故障老化、故障替代(AUTOSAR的故障存储策略)。AUTOSAR标准中对Dem模块最上层分了两菜单栏(参见图1),分别是DemConfigSet,DemGeneral。其中DemConfigSet负责不同DTC、event等的配置,DemGeneral负责DTC、event的共用部分,包括冻结帧、扩展帧、使能条件等。

Dem负责处理和存储诊断事件,此外,Dem还向Dcm提供故障信息数据

故障诊断是由Dem模块和SWC共同完成的,SWC中的Monitor Function对故障条件进行实时监控,并实时将故障条件的判定结果反馈至Dem模块判断是否发生故障

其他

由于跨模块通信,建议将Dem和J1939Dcm映射到同一个任务,以便为RTE配置正确的呼叫上下文

缩写

DTC := diagnostic trouble code

OBD := on board diagnostic

配置依赖关系

DEM–>NvM–>Fee–>Fls

DEM模块架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x7GGI5ul-1605070193520)(image/-1.png)]

  1. 对于每个配置了Dem访问的OS分区,一个专门的DemSatellite服务SWC提供了接口DiagnosticMonitor和DiagnosticInfo
  2. 对于一个操作系统分区,DemMaster服务SWC提供AUTOSAR接口的其余部分

Debounce策略

Debounce策略

  1. 基于计数器的Debounce策略

Dem会提供一个计数器(fault detection counter)用来记录判断的结果,当Diagnostic Monitor上报至dem的状态为prefailed,计数器会按步长增加,当达到设定的限值时,故障状态变成failed。当上报状态为prepassed,计数器按步长减少,当达到设定的限值时,故障状态变成passed

Debounce配置描述

  1. 基于时间的Debounce策略

计数器的初始值为0,其范围为-128~127,当Dem接收到Diagnostic Monitor发送的状态值开始计数,计数器的增长方向由接收到的状态决定,当计数器的值在一定时间达到阈值,完成此次判断,如果在未达到阈值时,Dem接收的状态发生变化,计数器会重新开始计数,并且计数方向也发生转变。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TUPXzb4V-1605070193533)(image/-5.png)]

ECU中DTC的状态位

Dem应将DTC值报告为一个uint32,字节0=低字节,字节1=中字节,字节2=高字节,字节3未使用。对于OBD DTC格式,只使用两个字节(HighByte,LowByte)。DEM Service应 将这些DTC报告为一个uint32,字节1=LowByte,字节2=HighByte,字节3未使用,字节0=0x00

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4QwcNehO-1605070193534)(image/-6.png)]

重要接口

InitMonitorForEvent

如果InitMonitorForEvent的多个触发器同时发生,InitMforE只能被调用一次。根据优先级选择原因。DEM_INIT_MONITOR_CLEAR (最高优先级), DEM_INIT_MONITOR_RESTART, DEM_INIT_MONITOR_REENABLED(最低优先级)。

Dem_SetEventStatus重要

diagnositc monitor将事件结果通知给Dem

monitor状态包含定义在Dem_MonitorStatusType中的信息

在调用Dem_MonitorStatusType的情况下,会同步执行就业计数器的debouncing,之后会以与UDS状态相同的方式处理monitor状态:

  • bit0(TestFailed)
  • bit1( TestNotCompleteThisOperationCycle)

monitor状态字节的处理将在Dem_SetEventStatus函数的上下文同步中完成

Dem_SetEventStatusWithMonitorData

功能与Dem_SetEventStatus相同,但提供更多的参数以储存相关的事件数据

Dem_ResetEventStatus

将事件状态位设置为0

并复位Dem内部的debounce算法到初始值(在后面的时间点,异步执行)

Dem_ResetEventStatus不会改变monitor状态和UDS状态位6,也不会清除预存的冻结帧

如果该事件在这个操作周期已经被测试过了(UDS状态位6设置为0),则Dem_ResetEventStatus返回E_NOT_OK

Dem_GetEEventUdsStatus

返回特定事件的单签时间状态字节(event status byte),该接口是提供给SWC和BSW模块(eg FiM)的,而DEM在DTC层次使用函数Dem_GetStatusOfDTC

Dem_GetDebouncingOfEvent

报告事件的debouncing状态

其他接口

_DemTriggerOnMonitorStatus

每当monitor状态发生变化时,Dem会调用根据monitor状态改变的callback函数

CallbackMonitorStatusChange

对于DemEventKind = DEM_EVENT_KIND_SWC的事件,若配置了C/S接口,一旦monitor状态发生变化,Dem应调用monitor状态callback C/S接口CallbackMonitorStatusChange(当DemGeneralInterfaceSupport被设置为TRUE时)

Event Memory

每个以DemClient为参数的API调用,都只能存在该DemClient配置的Event Memory

Event Memory Layout Example

  • 4
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值