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 bit1(TestFailedThisOperationCycle)为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,当前的检测结果.

Bit1:DEM_MONITOR_STATUS_TNCTOC,本运行周期内是否完成检测。

Monitor status update

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

Dem模块提供DemGeneralCallbackMonitorStatusChangedFnc参数。若配置回调函数,任何一个event的monitor 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

代表当前运行周期内是否完成故障检测。若为false,代表本次运行周期还未完成一次检测操作;若为true,代表本次运行周期完成一次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。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值