我知道在 CAN 控制器中,如果错误计数达到某个阈值(例如 255),则会发生总线关闭,这意味着特定的 CAN 节点将从 CAN 网络中关闭。所以根本不会有任何交流。但是,如果在包含ECU(包括 CAN 控制器)的汽车行驶时发生上述情况怎么办?
CAN 控制器中是否有任何自动恢复机制来避免上述任何情况?
我知道在 CAN 控制器中,如果错误计数达到某个阈值(例如 255),则会发生总线关闭,这意味着特定的 CAN 节点将从 CAN 网络中关闭。所以根本不会有任何交流。但是,如果在包含ECU(包括 CAN 控制器)的汽车行驶时发生上述情况怎么办?
CAN 控制器中是否有任何自动恢复机制来避免上述任何情况?
在总线关闭期间,节点将被隔离。
CAN 等待强制时间段,128 x 11 位(1408 位 - 250 kbit/s 系统为 5.6 ms)的时间,然后尝试重新初始化节点。
是的,如果 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 正确维修之前继续运行一段时间。
如果在汽车行驶时 CAN 控制器中发生总线关闭错误会发生什么?
1)可以在can网络中进行HARD SWAPPING。例如:假设四(4)个节点(ECUS)连接在can bus网络中。如果我们断开一个ecus,那么can bus也可以正常工作。
2)在BUSS OFF状态下,它可以听到总线网络上的每个信号,但它不能传输mssgs(信号)。如果汽车在运动中或处于静止位置。例如:Ecus(ABS)用于更好的性能,但实际工作由执行器(DISK BRAKE)完成。
我知道这是一个旧线程,但就 OP 问题而言,答案与我观察到的情况有点不同。
根据经验,我的 ECU 在发动机运行时停止与诊断工具通信,显然它已进入 CAN 关闭状态。我知道的唯一原因是我有一个用于发动机参数的 OBD 2 插件监视器。我没有得到任何 DTC,无论如何大部分时间.. 有时我会得到不适用于我的车辆的 DTC,以及一些 U 代码。
话虽如此,车辆继续运行良好,如果我没有插件显示器,我不知道有问题!我现在很确定引擎的 ECU 存在通信问题,并且碰到错误计数器并关闭,这是唯一有意义的事情。我用 2 通道 O 型示波器检查了 CAN 信号,与我的其他汽车相比,它们有点嘈杂,所以我下一步是更换 ECU 并查看是否可以修复它。我已经换掉了 TIPM(总集成电源模块),它作为 2 个 CAN 网络之间的路由器,到 OBD2 端口。显然不是这样。
如果 CAN Tx 或 RX 错误计数器达到 255,节点将关闭并被隔离