1

在 Autosar DEM 模块中,有两种去抖机制:基于计数器和基于定时器。哪种机制好?如何决定,需要为给定事件应用什么机制?

4

2 回答 2

1

去抖动算法在 AUTOSAR Dem 规范中进行了描述,简而言之:

  • 基于计数器的去抖动需要 Dem_SetEventStatus() 报告 PREPASSED 和 PREFAILED 状态,以便增加/减少计数器。

  • 基于定时器的去抖动只需要由 Dem_SetEventStatus() 触发一次报告,即可启动去抖动定时器。然后定时器由 Dem_Mainfunction() 在触发的方向上循环更新。

考虑以下用例:

  • 监视器只运行一次并立即给出结果 --> 基于计数器
    • 启动 RAM 测试失败,或
    • “已执行 EOL 检查”
  • 监视器循环运行,但它需要 N 次连续故障报告才能有一个活动的 DemEvent --> 基于计数器,例如,如果 Adc 采样失败(由于硬件问题)5 个周期,或者电压超出范围 3 个周期
  • Com 超时处理 --> 基于计时器的客户希望有 3 次消息周期超时。之后,您应该开始已经故障安全处理,但 DemEvent/DTC 只能在另外 1000 毫秒后激活。故障安全处理可能意味着使用最后已知的良好值或故障安全/默认值。

    • Com_TOut_MessageX() -> 发生超时(3x 消息周期)时,由 Com 调用一次
    • Com_RxAck_MessageX() -> 在收到消息时由 Com 调用一次
于 2018-05-13T00:46:32.893 回答
0

Timer base:适用于超时错误。

例子:

消息周期时间为 250ms,时基为 10ms。

消息在丢失 2 个周期后被认为超时,则 Dem 的配置计数器应为 50。

计数器基数:适用于事件错误(DLC、校验和...)。

例子:

消息在 3 个 DLC 错误周期后被认为有 DLC 错误,则 Dem 的配置计数器应为 2。

于 2018-06-15T11:33:27.093 回答