0

在我的应用程序中,我们的内部客户有关于诊断的要求。经过一番讨论,我们定义了多达 20 个诊断案例,如果需要,我们将要发送到目标车辆。但到目前为止,我们从未致力于诊断。

 我知道有一些标准,如 OBD 或 UDS,但我找不到任何关于如何在 CAN 中管理诊断的论文。

我对 Autosar 中的诊断系统的理解是,如果发生错误情况,ECU 会将其存储到具有特定 ID 的特定地址。然后,如果诊断会话开始请求来自 CAN,ECU 将允许以某种方式读取诊断内存。

这些会话请求是否仅来自诊断工具?如果我的 ECU 坏了,我该如何通知 BUS?如果总线能够启动诊断会话,这是否会定期发生?有没有什么方法可以在不触及 UDS 的情况下以更简单的方式处理这个问题?

4

1 回答 1

0

提供关于诊断协议、车辆诊断和堆栈溢出中的 AUTOSAR 诊断堆栈的基本培训是不现实的,但更多的是几周辅导的主题。

但是,这是简短的版本:

  • 从理论上讲,您可以使用“事件响应”功能来通知车载或非车载诊断客户端 DTC 已更改状态。
  • 实际上,我从未在其他 ECU 需要此信息的用例中看到此信息。
  • 通常,车辆会定义周期性的 CAN 信号,这些信号用于报告足够多的信息,以便在需要时改变其行为。
  • 然后在消息中存在汇总位,例如在节点消息中,通知车辆是否确认了任何DTC。

在 AUTOSAR 应用程序中,您将执行以下操作:

  • 您的软件组件具有到诊断事件管理器的客户端接口,以通知它有关诊断事件
  • 诊断事件管理器将它们映射到 DTC,并与诊断通信管理器、传输协议和其他与通信相关的模块一起提供接口供诊断客户端读取。
  • 另一个软件组件从诊断事件管理器轮询状态并根据该信息设置 COM 信号。
于 2021-12-03T19:54:49.777 回答