CNA BUSOFF 理解
BUS OFF 总线掉线,这不是说总线不能用了,而是当前该节点脱离了总线,不参与通信,换句话说,当前的节点的Controller关闭,节点无法在此期间收/发报文。
注意:
此期间ECU依法在正常运行,所有的任务依然被OS调度。
如果节点一直收不到网络管理报文,网络切换到Bus Sleep Mode, 则ECU会进入下电流程。
Bus Off 如何出现?
当节点的发送错误计数器(Transmit Error Counter - TEC)数值 > 255, 该节点就会进入BUS OFF 状态。 一旦数值爆表,CAN协议为了保全大局,会强制把这个“问题节点”踢出,防止它持续捣乱。
TEC “积分”是怎么计算的?
简单来说, 1)TEC增加,当节点在发送报文时遇到错误,TEC会一次孟增加8分,2)TEC减少,每当节点成功发送完一帧正常的报文,TEC会减去1分,最低减到0.
换句话说,如果一个节点处于不稳定的状态,它的ETC数值会迅速飙升,很快就会触碰到255这条红线。
为什么设置为255,而不是其他值?
设定255这个阈值,是由底层的硬件数据结构和容错逻辑共同决定的。如果阈值设的太低,那么一次突发的强电磁干扰就可能导致ETC迅速增加并出发BUS OFF,导致节点频繁掉线,系统变得不稳定。
节点的三种“健康状态”
- 节点状态 TEC数值范围 节点表现
- 主动错误(Error Active) 0~127 健康状态
- 被动错误(Error Passive) 128~255 亚健康/警告状态。
- 总线关闭(Bus Off) >255 隔离状态
