【发布时间】:2012-01-26 19:18:48
【问题描述】:
我知道在 CAN 控制器中,如果错误计数达到某个阈值(例如 255),则会发生总线关闭,这意味着特定的 CAN 节点将从 CAN 网络中关闭。所以根本不会有任何交流。但是,如果在包含ECU(包括 CAN 控制器)的汽车行驶时发生上述情况怎么办?
CAN 控制器中是否有任何自动恢复机制来避免上述任何情况?
【问题讨论】:
标签: can-bus
我知道在 CAN 控制器中,如果错误计数达到某个阈值(例如 255),则会发生总线关闭,这意味着特定的 CAN 节点将从 CAN 网络中关闭。所以根本不会有任何交流。但是,如果在包含ECU(包括 CAN 控制器)的汽车行驶时发生上述情况怎么办?
CAN 控制器中是否有任何自动恢复机制来避免上述任何情况?
【问题讨论】:
标签: can-bus
在总线关闭期间,节点将被隔离。
CAN 等待强制时间段,即 128 x 11 位(1408 位 - 250 kbit/s 系统为 5.6 毫秒)的时间,然后尝试重新初始化节点。
【讨论】:
是的,如果 CAN Tx 错误计数达到 255,则节点将关闭并可能自行重置。如果问题仍然存在,一个好的实现不会继续重置节点。
除了这种安全机制之外,ECU(电子控制单元)还会对它们期望接收到的消息的有效传输之间的持续时间进行计时。因此,如果发动机控制器离线,几乎车辆中的每个 ECU 都会报告“与发动机控制器失去通信”。
通常,这些类型的 CAN 问题由以 U 开头的 DTC(诊断故障代码)来识别,例如:http://www.obd-codes.com/u0115
根据问题的严重程度,车辆可能会进入“跛行回家”模式,或者可能完全禁用。车辆上的 CAN 总线问题极为罕见,除非有一些篡改。
【讨论】:
即使发动机控制单元失去 CAN 通信,也不会发生任何惊人的事情。汽车将继续行驶。
【讨论】:
当总线断开时,CAN 网络会隔离该节点,然后重置能够开始通信的节点。
【讨论】:
恢复机制取决于正在使用的软件堆栈。大多数新车都安装了符合 AUTOSAR 标准的软件。在 AUTOSAR 通信堆栈中,CanSM(状态管理器)模块具有可配置的 BusOff 监控和恢复。您可以在http://autosar.org 阅读更多内容。
但是,BusOff 在行驶中的车辆中是一种严重的情况。在车辆级别如何处理这取决于系统设计。但是,在大多数情况下,系统会进入安全运行模式,所有参数都会采用预设的故障值,让车辆在功能减少的情况下运行。您会看到仪表板上的警告灯熄灭以提醒驾驶员。 ECU 通常符合某种级别的 ASIL (https://en.wikipedia.org/wiki/Automotive_Safety_Integrity_Level) 标准。这样可以确保在设计和开发过程中考虑并考虑到此类情况。
【讨论】:
正如您所提到的,在达到特定错误计数后,该节点会断开/禁止在总线上传输任何内容。这是总线端的描述。
在控制器端,每个 CAN 控制器都会在 BUS_OFF 上生成一个中断。控制器有责任重置 CAN 控制器并将其恢复到正常状态。
任何汽车中的每个 CAN 控制器都严格遵循这一点。而这一切都在几毫秒内发生……所以对于司机来说,什么都没有发生!
【讨论】:
当 ECU 检测到 BUS_OFF 故障时,ECU 应该停止其排放,所以这是一个很好的问题。
有自动恢复机制:
【讨论】:
汽车有一种叫做跛行回家模式的东西。这就是汽车网络中所有 ECU 都发生故障的情况。然后初始化 ECU 的一组默认参数,然后是系统,即您的汽车只能继续运行一段时间,然后才能由 OEM 正确维修。
【讨论】:
我知道这是一个旧线程,但就 OP 问题而言,答案与我观察到的情况有些不同。
根据经验,我的 ECU 在发动机运行时停止与诊断工具通信,显然它已进入 CAN 关闭状态。我知道的唯一原因是我有一个用于发动机参数的 OBD 2 插件监视器。我没有得到任何 DTC,反正大部分时间都是这样。有时我会得到不适用于我的车辆的 DTC,以及一些 U 代码。
也就是说,这辆车继续运行很好,如果我没有外挂显示器,我不知道有问题!我现在很确定引擎的 ECU 存在通信问题,并且碰到错误计数器并关闭,这是唯一有意义的事情。我用 2 通道 O 型示波器检查了 CAN 信号,与我的其他汽车相比,它们有点嘈杂,所以我下一步是更换 ECU 并查看是否可以修复它。我已经换掉了 TIPM(总集成电源模块),它作为 2 个 CAN 网络之间的路由器,到 OBD2 端口。显然不是这样。
【讨论】:
如果 CAN Tx 或 RX 错误计数器达到 255,节点将关闭并被隔离
【讨论】:
如果汽车行驶时 CAN 控制器发生总线关闭错误会怎样?
1)可以在can网络中进行HARD SWAPPING。
例如:假设在 CAN 总线网络中连接了四 (4) 个节点 (ECUS)。如果我们断开一个
ecus 然后总线也可以正常工作。
2)在BUSS OFF状态下,它可以听到总线网络上的每个信号但它不能传输
短信(信号)。如果汽车在运动中或处于静止位置。
例如:Ecus(ABS) 用于获得更好的性能,但实际工作由执行器 (DISK BRAKE) 完成。
【讨论】: