Autosar Dem模块之故障状态管理策略

事件状态管理概述

事件状态管理主要描述从SW-Cs和BSW上报结果到Dem模块,Dem模块同步处理monitor状态,同时Dem模块还会异步处理事件的DTC status,最后Dcm模块可以通过Dem模块API接口获取相关的状态信息。

事件状态配置

事件状态上报流程

Dem模块提供了Dem_SetEventStatus接口,SW-Cs和BSW模块可以调用该接口上报相关事件的检测结果。当Dem模块监视到一个新的检测结果时会通过内部逻辑改变Dem模块的UDS status。

Dem模块提供了Dem_ResetEventStatus接口,SW-Cs和BSW模块可以调用复位Dem模块的内部参数。Dem模块使用Dem_ResetEventStatus函数切换到正常模式,Dem模块的内部状态的Testfailed bit位置0,同时debounce复位成初始值,但是不会改变Dem模块的monitor status、UDS status Bit6以及快照数据。需要注意的是这个执行周期内事件已经检测过,Dem_ResetEventStatus函数会返回E_NOT_OK。

Dem模块提供了Dem_GetEventUdsStatus接口,SW-Cs和BSW模块可以调用该接口获取指定事件的UDS status。

Dem模块提供了Dem_GetMonitorStatus接口,SW-Cs和BSW模块可以调用该接口获取指定事件的monitor status。

Dem模块的DemEventRecoverableInSameOperationCycle参数。当设置为flase,在本运行周期内,只要事件的UDS status bit1TestFailedThisOperationCycle)为1,事件的passed结果都会被忽略。

Dem模块会周期调用Dem_SetEventStatus函数,根据Sw-Cs和BSW模块上报的检测结果,同步处理Monitor status,同时Dem模块会异步处理UDS status

当状态改变时Dem模块会通知monitor和别的组件,同时Dem模块会根据每个event状态和DTC的状态改变触发特定的函数。通过DemCallbackEventUdsStatusChanged参数可以配置多个Ports。通过配置参数,当Monitor status发生改变时,Dem模块会调用DemGeneralCallbackMonitorStatusChangedFnc函数;当UDS status发生改变时,Dem模块会调用DemCallbackDTCStatusChangedFnc函数。

Monitor status

Monitor status type

Bit0:DEM_MONITOR_STATUS_TF,当前的检测结果.

Bit1DEM_MONITOR_STATUS_TNCTOC,本运行周期内是否完成检测。

Monitor status update

Dem模块为每个event提供了monitor status(存放当前状态信息)。SW-Cs和BSW模块通过调用Dem_SetEventStatus接口来更新monitor status。Dem模块会根据Dem_SetEventStatus函数上报的结果计算debounce值。

Dem模块提供DemGeneralCallbackMonitorStatusChangedFnc参数。若配置回调函数,任何一个eventmonitor status改变,Dem模块都会调用这个回调函数。

通过14服务清除DTC之后,所有event的monitor status都会设置为0x40。

UDS status

UDS状态描述如下图所示,我们来聊聊状态切换的细节。

Testfailed

代表最近的测试结果。若为false,代表最近一次故障检测结果是成功,或是当前运行周期还未完成检测;若            为true,代表最近一次故障检测结果是失败。

上图为Testfailed 状态位的切换流程:

  • Testfailed初始状态为 false;
  • 最近检测结果为Passed,Testfailed状态为 false;最近检测结果为Failed,Testfailed状态为 true。
  • 清除诊断DTC(14服务)后,Testfailed状态为 false。

TestFailedThisOperationCycle

代表在当前运行周期内是否上报过失败结果。若为false,代表当前运行周期内故障检测结果全部成功,或是当前运行周期还未完成检测;若为true,代表当前运行周期内故障检测结果有发生过失败。

上图为TestFailedThisOperationCycle 状态位的切换流程:

  • TestFailedThisOperationCycle初始状态为 false;
  • 在运行周期内,检测结果为Failed,TestFailedThisOperationCycle状态为 true。只要在运行周期内发生过Failed,无论之后检测结果是Passed还是Failed,TestFailedThisOperationCycle状态都为 true。
  • 直到新的周期开始时,TestFailedThisOperationCycle状态为 false
  • 清除诊断DTC(14服务)后,TestFailedThisOperationCycle状态为 false。

PendingDTC

代表在当前运行周期和上一次运行周期内是否上报过失败结果。若为false,代表在当前运行周期和上一次运行周期内故障检测结果全部成功,或是当前运行周期还未完成检测;若为true,代表在当前运行周期和上一次运行周期内故障检测结果有发生过失败。

 上图为PendingDTC 状态位的切换流程:

  • PendingDTC初始状态为 false;

  • 在运行周期内,检测结果为Failed,PendingDTC状态为 true。只要上次运行周期和本次运行周期发生过Failed,无论之后检测结果是Passed还是Failed,PendingDTC状态都为 true。

  • 上次运行周期和本次运行周期全部检测结果为Passed时,PendingDTC状态为 false。

  • 清除诊断DTC(14服务)后,PendingDTC状态为 false。

ConfirmedDTC

代表经过足够长时间的检测故障是否确认。若为false,自从上次清除DTC到当前时刻DTC未确认,或者是DTC已经完成老化;若为true,自从上次清除DTC到当前时刻DTC已确认,同时DTC还未完成老化流程。

  上图为ConfirmedDTC状态位的切换流程:

  • ConfirmedDTC初始状态为 false;
  • 检测结果为Failed和TripCountWithTestFailed满足要求,ConfirmedDTC状态为 true。
  • 当完成老化流程后,ConfirmedDTC状态为 false。
  • 清除诊断DTC(14服务)后,ConfirmedDTC状态为 false。

TestNotCompletedSinceLastClear

代表自从上次清除DTC(14服务)到当前是否完成故障检测。若为false,代表自上次清除DTC到目前时刻完成一次Passed或者Failed结果的检测;若为true,代表自上次清除DTC到目前时刻还未完成一次检测操作。

  上图为TestNotCompletedSinceLastClear状态位的切换流程:

  • TestNotCompletedSinceLastClear初始状态为 true;
  • 自上次清除DTC到目前时刻,完成一次Passed或者Failed结果的检测,TestNotCompletedSinceLastClear状态为 false。
  • 清除诊断DTC(14服务)后,TestNotCompletedSinceLastClear状态为 true。

TestFailedSinceLastClear

代表自从上次清除DTC(14服务)到当前是否发生过故障。若为false,代表自上次清除DTC到目前时刻检测结果都是Passed;若为true,代表自上次清除DTC到目前时刻检测到Failed结果。

  上图为TestFailedSinceLastClear状态位的切换流程:

  • TestFailedSinceLastClear初始状态为 false;
  • 自上次清除DTC到目前时刻,检测一次Failed结果,TestFailedSinceLastClear状态为 true。
  • 清除诊断DTC(14服务)后,TestFailedSinceLastClear状态为 false。

TestNotCompletedThisOperationCycle

代表当前运行周期内是否完成故障检测。若为true,代表本次运行周期还未完成一次检测操作;若为false,代表本次运行周期完成一次Passed或者Failed结果的检测。

  上图为TestNotCompletedThisOperationCycle状态位的切换流程:

  • TestNotCompletedThisOperationCycle初始状态为 true;
  • 本次运行周期,完成一次Passed或者Failed结果的检测,TestNotCompletedThisOperationCycle状态为 false。
  • 清除诊断DTC(14服务)后,TestNotCompletedThisOperationCycle状态为 true。

WarningIndicatorRequested

代表是否上报与特定DTC相关联的警告指示。若为false,服务器未请求警告指示;若为false,服务器请求警告指示。

 上图为WarningIndicatorRequested状态位的切换流程:

  • WarningIndicatorRequested初始状态为 false;
  • DTC存在警告指示并且confirmed bit为1(或者满足特定警告指示的标椎),同时当前检测结果为Failed,WarningIndicatorRequested状态为 true。
  • 当前检测结果为Failed,或者不满足特定警告指示的标椎,WarningIndicatorRequested状态为 false。
  • 清除诊断DTC(14服务)后,WarningIndicatorRequested状态为 false。

总结

本章节主要描述了事件状态的上报流程以及事件monitor状态和DTC status状态的改变机制,以及相关Autosar配置。这些功能仅仅是Dem模块的一小部分,同时我们还需要了解Dem模块其他功能和Autosar工具的配置选项,这样才能灵活使用Autosar工具配置和调试相关的BUG。

本章节主要参考Autosar标准的Dem模块相关文档和ISO14229标准等。

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
AUTOSAR中,DEM(Diagnostic Event Manager)模块是负责诊断和管理车辆故障模块DEM模块的工作过程涉及以下几个主要步骤: 1. 事件监测:DEM模块监测车辆系统中可能发生的故障事件。这些事件可以来自各个子系统或传感器,如发动机控制单元、刹车系统、气囊系统等。 2. 事件分类和存储:DEM模块对监测到的故障事件进行分类和存储。它根据预定义的故障码规则和逻辑,将事件进行分类,确定其严重性级别,并生成相应的DTC(Diagnostic Trouble Code)。 3. DTC报告和通信:DEM模块生成的DTC可以通过诊断接口(如UDS、OBD等)进行报告和通信。这使得车辆的故障信息可以被读取、记录和传输给诊断工具和服务中心。 4. 诊断决策:DEM模块可以根据故障事件的严重性和其他条件,做出相应的诊断决策。例如,触发告警灯、限制车辆功能或建议驾驶员采取特定的操作等。 5. 故障处理:DEM模块可以与其他AUTOSAR模块(如BSW模块)协同工作,以进行故障处理和故障恢复。它可以触发相应的故障处理策略,如重新初始化故障系统、执行自适应校准等。 总之,DEM模块AUTOSAR中负责诊断和管理车辆故障。它监测故障事件、分类和存储故障信息,生成DTC报告并进行通信,做出诊断决策,并与其他模块协同处理故障DEM的工作过程有助于提高车辆故障诊断的效率和准确性,并确保车辆的安全和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值