目录
1. 什么是CAN BUS OFF
CAN BUS OFF 表示总线的关闭,此时ECU从总线脱离,既不能接收总线的报文,也不能向总线发送报文。
CAN BUS OFF 是 CAN 总线通信中的一种严重错误状态,表示某个节点因检测到不可恢复的错误而主动退出总线通信。
CAN BUS OFF 是 CAN 协议中的安全机制,用于隔离故障节点以保障总线稳定。
2. CAN BUS OFF的原因
物理层故障:CAN_H/CAN_L 开路、短路(如对电源或地短路)、终端电阻缺失。
信号干扰:强电磁干扰导致报文错误。
节点故障:控制器或收发器硬件损坏,或软件逻辑错误导致持续发送错误帧
3. CAN BUS OFF 测试的必要性
协议合规性 --> 确保节点符合 ISO 11898 等标准,避免兼容性问题;
系统鲁棒性 --> 验证节点在复杂环境下的抗干扰能力,防止单点故障引发全局瘫痪;
故障恢复策略 --> 优化快恢复与慢恢复参数,平衡通信连续性与总线稳定性;
行业认证 --> 满足 ISO 26262、SAE J1939 等标准,通过功能安全认证;
缺陷定位 --> 暴露硬件设计、软件逻辑及时序配置问题,降低售后故障率;
场景覆盖 --> 模拟多节点协同、极端环境等实际工况,提升系统的环境适应性
4. CAN BUS OFF状态及切换
错误主动(Error Active):节点的正常工作状态。在该状态下,节点可以正常地发送和接收 CAN 消息,并且能够主动发出错误帧来通知其他节点出现了错误。节点有两个错误计数器:发送错误计数器(TEC)和接收错误计数器(REC),初始值通常都为 0。
错误被动(Error Passive):当节点的 TEC 或者 REC 超过 127 时,节点进入错误被动状态。在这个状态下,节点虽然仍能继续发送和接收消息,但如果检测到错误,只能发出被动错误帧。被动错误帧对总线的干扰较小,因为它不会像主动错误帧那样强制总线进入错误处理流程。
总线关闭(Bus Off):当 TEC 超过 255 时,节点进入总线关闭状态。此时,节点停止在总线上发送任何消息,也不再接收消息,相当于从总线上断开连接,目的是防止故障节点持续干扰总线通信。

5.实例演练
5.1 示例技术文档:
当“发送错误计数器”累计超过255 时,节点进入Bus-Off 状态;
当收到128 个连续11 个隐性位,节点由Bus-Off 状态变为“错误主动状态,“发送错误寄存器”和“接收错误寄存器”清零;
当总线进入Bus-Off 后,不允许CAN 控制器自动复位;
在Bus-Off 时间后50ms 时刻,ECU 尝试开始发送报文,如果发送成功并且50ms 内不再进入Bus-Off,则节点完成Bus-Off复位的确认,节点恢复正常通讯。
Bus-Off 复位及确认流程:

备注:
1. 当“发送错误计数器”累计超过255 时,节点进入Bus-Off 状态。
2. 节点不允许CAN 控制器自动复位,要求节点进入Bus-Off 后,每隔50ms 尝试复位
一次,每复位一次复位计数器(Reset Counter)加1,复位计数器的初始值为0。
3. 如果复位计数器等于10,则节点每1s 尝试复位一次。如果节点成功发送常规报文,
则Bus-Off 复位成功,节点即可正常通讯,如果常规报文尝试发送失败,则节点
继续每1s 尝试一次Bus-Off 复位。
4. Busoff Counter 和Reset Counter 是在Busoff 后立即同时加1,但相应的CAN
ControlerReset 发生在Busoff 的50ms 后。(前10 次)
5.2 技术文档测试点梳理:

5.3 测试环境搭建步骤
使用 CANoe 软件及 VH6501硬件搭建完成测试环境搭建
1) Open demo configuration "CANDisturbance.cfg"

2) Configure Network Hardware

3) Open "ConfigurationPannel"

4) Configure "Trigger Configuration"

5) Configure the disturbance sequence

6) Activate the trigger by clicking “Enable On device”
5.4 测试结果分析:

测试点2验证:在32帧错误帧后,错误帧间隔时间约为50ms,此处为快恢复时长;
测试点3验证:若干扰循环>10,即可查看慢恢复时长 1s;
测试点1验证: 32帧错误帧可换算出 TEC计数器,DUT每发送错误一次TEC计数器 +8,即出现一次错误帧,32*8 =256 > 255;
测试点4验证:干扰循环执行完成后,DUT通信正常恢复即pass

2443






