【问题标题】:What happens if a bus-off error occurs in a CAN controller while a car is in motion?如果在汽车行驶时 CAN 控制器中发生总线关闭错误会发生什么?
【发布时间】:2012-01-26 19:18:48
【问题描述】:

我知道在 CAN 控制器中,如果错误计数达到某个阈值(例如 255),则会发生总线关闭,这意味着特定的 CAN 节点将从 CAN 网络中关闭。所以根本不会有任何交流。但是,如果在包含ECU(包括 CAN 控制器)的汽车行驶时发生上述情况怎么办?

CAN 控制器中是否有任何自动恢复机制来避免上述任何情况?

【问题讨论】:

    标签: can-bus


    【解决方案1】:

    在总线关闭期间,节点将被隔离。

    CAN 等待强制时间段,即 128 x 11 位(1408 位 - 250 kbit/s 系统为 5.6 毫秒)的时间,然后尝试重新初始化节点。

    【讨论】:

    • 这是更好的答案。
    • Re "CAN waits":CAN 总线没有监控器。等待的是设备本身(处于总线关闭模式)。
    【解决方案2】:

    是的,如果 CAN Tx 错误计数达到 255,则节点将关闭并可能自行重置。如果问题仍然存在,一个好的实现不会继续重置节点。

    除了这种安全机制之外,ECU(电子控制单元)还会对它们期望接收到的消息的有效传输之间的持续时间进行计时。因此,如果发动机控制器离线,几乎车辆中的每个 ECU 都会报告“与发动机控制器失去通信”。

    通常,这些类型的 CAN 问题由以 U 开头的 DTC(诊断故障代码)来识别,例如:http://www.obd-codes.com/u0115

    根据问题的严重程度,车辆可能会进入“跛行回家”模式,或者可能完全禁用。车辆上的 CAN 总线问题极为罕见,除非有一些篡改。

    【讨论】:

    • Re “车辆上的 CAN 总线问题极为罕见”:例如由于物理层面的问题(电缆和连接器) - 断开和短路(例如由于腐蚀或(盐)水进入)。这些问题真的那么罕见吗?
    【解决方案3】:

    即使发动机控制单元失去 CAN 通信,也不会发生任何惊人的事情。汽车将继续行驶。

    【讨论】:

    • 这太漂亮了,太幸福了,你刚刚写的! :] 我真的很害怕,如果我的车在旅途中停下来,只是因为其中一个 CAN 节点导致了一些错误! :] +1,如果你用这个很酷的答案让我很开心! :]
    • 这可能是真的,但你能限定它吗?例如,是否存在不正确的情况?
    【解决方案4】:

    当总线断开时,CAN 网络会隔离该节点,然后重置能够开始通信的节点。

    【讨论】:

    • @Jeganraj:- CAN 具有自复位算法。转到下面的链接,gaw.ru/data/Interface/CAN_BUS.PDF 阅读 A 部分 - 第 9 页的段落。你会有更好的想法。
    • 为什么要添加一个链接到你的博客(而不是特定的帖子?)它没有回答问题,也没有告诉我“你的想法”是什么——甚至为什么它很重要。 TBH 我已经非常接近将其标记为垃圾邮件以进行自我推销
    • 你确定吗?重置机制是什么?它不会自行重置(经过一些比特时间)吗?
    【解决方案5】:

    恢复机制取决于正在使用的软件堆栈。大多数新车都安装了符合 AUTOSAR 标准的软件。在 AUTOSAR 通信堆栈中,CanSM(状态管理器)模块具有可配置的 BusOff 监控和恢复。您可以在http://autosar.org 阅读更多内容。

    但是,BusOff 在行驶中的车辆中是一种严重的情况。在车辆级别如何处理这取决于系统设计。但是,在大多数情况下,系统会进入安全运行模式,所有参数都会采用预设的故障值,让车辆在功能减少的情况下运行。您会看到仪表板上的警告灯熄灭以提醒驾驶员。 ECU 通常符合某种级别的 ASIL (https://en.wikipedia.org/wiki/Automotive_Safety_Integrity_Level) 标准。这样可以确保在设计和开发过程中考虑并考虑到此类情况。

    【讨论】:

      【解决方案6】:

      正如您所提到的,在达到特定错误计数后,该节点会断开/禁止在总线上传输任何内容。这是总线端的描述。

      在控制器端,每个 CAN 控制器都会在 BUS_OFF 上生成一个中断。控制器有责任重置 CAN 控制器并将其恢复到正常状态。

      任何汽车中的每个 CAN 控制器都严格遵循这一点。而这一切都在几毫秒内发生……所以对于司机来说,什么都没有发生!

      【讨论】:

      • 我怀疑@jurij,Coz Engine 使用相同的 CAN 总线,并且 CAN 非常强大。
      • 是的,但没有任何通信对发动机运行至关重要。您可能会使 ABS、ESP、安全气囊、动力方向盘、仪表组等脱机,但发动机仍会运行。
      • Re “断开连接”:机制是什么?它不会自行断开连接吗?
      【解决方案7】:

      当 ECU 检测到 BUS_OFF 故障时,ECU 应该停止其排放,所以这是一个很好的问题。

      有自动恢复机制:

      • 对于前三个检测,CAN 控制器会立即重置其寄存器
      • 对于下一次检测,ECU 在复位前等待 1 秒

      【讨论】:

      • 关于 ECU 在重置前等待 1 秒:您有该声明的来源吗?
      【解决方案8】:

      汽车有一种叫做跛行回家模式的东西。这就是汽车网络中所有 ECU 都发生故障的情况。然后初始化 ECU 的一组默认参数,然后是系统,即您的汽车只能继续运行一段时间,然后才能由 OEM 正确维修。

      【讨论】:

        【解决方案9】:

        我知道这是一个旧线程,但就 OP 问题而言,答案与我观察到的情况有些不同。

        根据经验,我的 ECU 在发动机运行时停止与诊断工具通信,显然它已进入 CAN 关闭状态。我知道的唯一原因是我有一个用于发动机参数的 OBD 2 插件监视器。我没有得到任何 DTC,反正大部分时间都是这样。有时我会得到不适用于我的车辆的 DTC,以及一些 U 代码。

        也就是说,这辆车继续运行很好,如果我没有外挂显示器,我不知道有问题!我现在很确定引擎的 ECU 存在通信问题,并且碰到错误计数器并关闭,这是唯一有意义的事情。我用 2 通道 O 型示波器检查了 CAN 信号,与我的其他汽车相比,它们有点嘈杂,所以我下一步是更换 ECU 并查看是否可以修复它。我已经换掉了 TIPM(总集成电源模块),它作为 2 个 CAN 网络之间的路由器,到 OBD2 端口。显然不是这样。

        【讨论】:

          【解决方案10】:

          如果 CAN Tx 或 RX 错误计数器达到 255,节点将关闭并被隔离

          【讨论】:

            【解决方案11】:

            如果汽车行驶时 CAN 控制器发生总线关闭错误会怎样?

            1)可以在can网络中进行HARD SWAPPING。 例如:假设在 CAN 总线网络中连接了四 (4) 个节点 (ECUS)。如果我们断开一个 ecus 然后总线也可以正常工作。
            2)在BUSS OFF状态下,它可以听到总线网络上的每个信号但它不能传输 短信(信号)。如果汽车在运动中或处于静止位置。 例如:Ecus(ABS) 用于获得更好的性能,但实际工作由执行器 (DISK BRAKE) 完成。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-12-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-20
              相关资源
              最近更新 更多