【车载开发系列】车载总线的Busoff功能需求
【车载开发系列】车载总线的Busoff功能需求
- 【车载开发系列】车载总线的Busoff功能需求
-
- [一. 什么是Busoff](#一. 什么是Busoff)
- [二. Busoff机制需求](#二. Busoff机制需求)
- [三. Busoff监控开启/关闭条件](#三. Busoff监控开启/关闭条件)
- [四. 记录故障码条件](#四. 记录故障码条件)
- [五. 消除故障码条件](#五. 消除故障码条件)
- [六. 快恢复模式](#六. 快恢复模式)
- [七. 慢恢复模式](#七. 慢恢复模式)
- [八. 故障后的超时监测](#八. 故障后的超时监测)
一. 什么是Busoff
BusOff就是总线掉线的意思。当前节点Can线发生短路(物理短接)或发向总线的报文被干扰出错(NO ACK错误也会导致TEC++),这个时候当前节点需要向总线发送错误帧,发送错误计数器(TEC)开始计数(发一帧错误帧TEC+8,成功发送一帧正常帧TEC - 1),当TEC > 255,当前节点进入就进入了BusOff状态,此时节点将不再接收/发送报文。
根据错误计数器值,节点可以分为主动错误状态,被动错误状态以及Busoff发生状态三种。

上面这个就是ECU节点错误的状态图,其中TEC(发送错误计数器)/REC(接收错误计数器) 都是硬件计数器的意思,这些硬件的计数器都是由硬件寄存器来实现的。
二. Busoff机制需求
Bus Off为ECU总线通讯关闭,ECU进入Bus Off故障后报文发送被禁止。通过访问CAN控制器状态识别Bus Off错误,当ECU检测到Bus Off错误后,需进行Bus Off恢复计时,并且CAN控制器要立即执行初始化。
ECU首次进入BusOff需执行快恢复,五次连续的快恢复(连续的快恢复是指两次快恢复之间该ECU未发送任何正常报文)之后再次进入Bus Off故障需执行慢恢复。

三. Busoff监控开启/关闭条件
ECU Bus Off错误监控开启条件一般情况下与网络相关诊断开启条件一致,也就是ECU在唤醒状态下,供电电压范围在网络相关诊断开启电压范围(9-16V)之内,TDiagStart以及TReStart发生超时的时候,Busoff将会被触发。
如果ECU没有唤醒(通讯关闭,报文停止发送),或者供电电压范围在网络相关诊断开启电压范围(9-16V)之外,或者TDiagstart没有超时,那么即便Busoff故障,故障码也不会发生。
四. 记录故障码条件
当ECU进入Busoff之后快恢复要被执行,如果ECU经历三次连续快恢复之后仍然不能恢复,ECU需在第四次进入BUSOFF故障时,记录BUSOFF的故障码(在这里目前常规情况下第八次记录Busoff、故障的比较居多)

ECU处于Busoff故障时网络管理状态必须不能被影响。
五. 消除故障码条件
在快慢恢复计时器满后,ECU尝试在总线发送报文,当成功发送一帧及以上正常报文,表示ECU从Busoff状态恢复。
ECU成功从Busoff状态恢复,且持续100ms内没有再次进入Busoff状态的情况下,ECU需要清除Busoff故障码的当前故障,保持历史故障。
快恢复和慢恢复过程是强制的,所有周期型混合型的报文要在ECU离开Busoff之后尽可能快的发送出来。

根据主机厂的不同,Busoff故障码清除条件也不同。
| 时间 | 计时开始条件 | 标准值 |
|---|---|---|
| 快恢复计时器T_BusoffQuick | ECU发送错误计时器达到了255,进入故障时开始计时 | 100ms±10ms |
| 慢恢复计时器T_BusoffSlow | ECU发送错误计时器达到了255,进入故障时开始计时 | 1000ms±50ms |
六. 快恢复模式
进入Busoff之后ECU需要立刻重新初始化CAN控制器,同时开启T_busoffQuick计时器,关闭ACK应答机制(快恢复期间不发送报文)。连续5次快恢复之后进入慢恢复状态。
在ECU初始化CAN控制器完成之后,检测到累计128次11个连续隐性位后控制器可以打开ACK应答机制。
七. 慢恢复模式
进入Busoff之后ECU需要重新初始化CAN控制器,同时开启T_busoffSlow计时器,关闭ACK应答机制。
在ECU初始化CAN控制器完成之后,检测到累计128次11个连续隐性位后控制器可以打开ACK应答机制。
八. 故障后的超时监测
Busoff故障发生之后,ECU内部计数器(NBusOffCount)加1,当计数器累加到NBusOffCount的时候,就记录Busoff的故障码。
当ECU进入Bus Off模式后,ECU应只存储Bus Off故障码,不存储超时故障码。
| 参数 | 最小值 | 标称值 | 最大值 |
|---|---|---|---|
| NBusOffCount | - | 8次 | - |
☆当NBusOffCount等于8时,即执行5次快恢复,2次慢恢复后仍然没有恢复通信,在进入第三次慢恢复之前记录Bus Off故障
☆NBusOffCount 清零策略:节点连续5s 未发生Bus Off,计数器清零