【车载开发系列】BUS OFF全面概念
一. 什么是“Bus Off”?
Bus Off就是总线关闭,总线为什么会出现Bus Off?其实这和CAN总线的错误处理机制有关。
ECU在向CAN总线发送消息时,出现发送失败。此时,ECU每发送失败一次,发送错误计数器就会累加,如果发送错误计数器的值累计达到最大阈值时,ECU会进入Bus Off模式。
Busoff的出现主要是为避免CAN总线上某个设备因为自身原因(例如硬件故障)导致无法正确收发报文而不断的破坏总线的数据帧,从而影响其他正常节点的通信。
二. 总线如何产生“Bus Off”
在实际的开发测试中,制造Bus Off的情况通常会采用以下几种方法:
(1)CAN_H对CAN_L短路、CAN_H对GND短路、CAN_L对GND短路等;
(2)采用VH6501来干扰报文,造成Bus Off。
三. 总线三种错误机制
CAN总线共有三种错误机制,这三种错误之间可以通过一定的条件互相转化,总结下来就是下面这幅图。
四. BusOff的恢复机制
当总线出现Bus Off后,会有一些恢复措施,最常用的就是快恢复和慢恢复的方法;所谓快恢复,就是产生Bus Off后,ECU尝试恢复发送报文,此时的发送周期通常为50ms左右,一般快恢复5次,如果发送成功,则Bus Off解除,否则进入慢恢复机制,通常慢恢复的时间为200ms。
五. Busoff的测试手法
对于Bus Off快慢恢复时间的测试,根据其Bus Off产生的方法,分为两种:
(1)将CAN_H和CAN_L短路,此时出现Bus Off;然后采用示波器进行Bus Off的快慢恢复时间测试
(2)采用VH6501干扰仪对发送报文的某些位进行干扰,然后在进行快慢恢复时间的测试,此方法在CANoe有专门的的测试例程,只需按照范例的操作进行测试即可,较为容易。
六. 快恢复与慢恢复区别
1.“快恢复”和“慢恢复”过程的主要区别就在于恢复节点参与总线通信的等待时间的不同。
2.如果总线上只有一个节点,该节点发送的报文没有其他节点应答,此时节点的TEC只会增加到128,不会产生busoff。
3.在快/慢恢复时间内应暂停发送报文,可以接收报文。
4.Busoff DTC(诊断故障码)的快慢恢复时间是指节点从 Busoff 状态恢复到正常工作状态所经历的不同时间阶段。
快慢恢复时间的设置是为了让节点在面对不同程度的总线故障时,能够采取合适的恢复策略。快恢复时间有助于节点在总线短暂故障后迅速恢复通信,减少对系统运行的影响;而慢恢复时间则给节点足够的时间来处理较为严重的故障,避免在总线尚未稳定时频繁尝试恢复,导致系统不稳定。
1)快恢复时间
当节点进入 Busoff 状态后,在快恢复阶段,节点会尝试快速检测总线状态。一般来说,快恢复时间相对较短,通常在几百毫秒到几秒之间。
在某些汽车电子系统中,快恢复时间可能设定为50-500毫秒左右。在这段时间内,节点会按照特定的频率和方式去监听总线,试图尽快判断总线是否已经恢复正常,以便能够快速重新加入总线通信。
2)慢恢复时间
如果在快恢复时间内节点未能成功恢复到正常工作状态,就会进入慢恢复阶段。慢恢复时间相对较长,可能从200ms到10s不等。在一些工业控制领域的 CAN 总线应用中,慢恢复时间可能设定为 10 秒甚至更长。
节点会以较低的频率继续监测总线状态,同时可能会进行一些内部的重置或调整操作,以确保自身处于稳定状态,等待总线恢复正常后再重新参与通信。