目录
一、什么是CAN Busoff和快慢恢复的介绍
二、利用VH6501 CAN Disturbance Interface触发经典CAN2.0帧 Busoff
三、利用VH6501 CAN Disturbance Interface触发CANFD帧 Busoff
四、结尾
CANFD/经典CAN2.0/CANXL相关知识点链接:
《CANFD/经典CAN/CANXL》专栏https://blog.csdn.net/qfmzhu/category_9753585.html
在《ISO 11898-Part 1-Data link layer and physical signalling-2015.12.15》中有对CAN Busoff进行描述,如下图:
“如果节点的传输错误计数器(TEC:transmit error counter)大于255(8位发送错误计数器时的进位条件),那么管理者应请求物理层将节点设置为Busoff状态。
处于Busoff状态的节点对总线没有影响。 它不应发送任何帧,也不应确认数据帧或远程帧。这样的节点是否接受来自总线的数据帧取决于实现。
在重新启动请求后,处于Busoff状态的节点应集成到CAN通信中(请参见10.9.4),并且在监视总线上128个空闲情况的发生后,其错误计数器都将置为零,变为错误节点(请参见图28)。”
通俗地说:
ECU一直在往CAN总线上发送CAN报文,但不知道什么原因一直发送不出去,如果这个发送错误计数累计到255( ECU发送失败:发送错误计数 + 8, ECU发送成功:发送错误计数 - 1),ECU进入Busoff模式。ECU在Busoff期间不妨碍总线上的其它节点。
一些主机厂对其系统供应商的设备提出了相应的Busoff后恢复时间需求。例如:当ECU 进入Busoff 模式后,首先,ECU 执行快恢复模式,连续n次(TBD值,不同厂商次数要求不一样)快速恢复后,ECU 进入慢恢复模式。
注:所谓的快慢恢复,即进入CAN BUSOFF状态后,ECU重新初始化CAN模块,并等待t(tBusOffQuick 或 tBusOffSlow)后,重新使能总线报文的发送。如果报文发送成功,则CAN BUSOFF恢复成功。
当ECU进入Busoff状态后,因为接收不到其它ECU(相关ECU:至少从该节点接收一条报文)的报文,会产生超时错误,故此时应只存储bus-off故障,不应存储其他ECU的报文超时故障。在ECU从Busoff状态恢复后,立即重新启动报文超时监测功能。
BusOff所需的测试环境:
本次VH6501 CAN Disturbance Interface(CAN干扰仪)的操作手册以CANoe 11.0.55 SP2中的Demo为例,进行的busoff测试,具体操作步骤如下:
步骤一:打开“Disturbance(CAN)”的DEMO,如下图所示:
步骤二:通道配置。VH6501需要与真实ECU连接,并且ECU所在CAN网络中需要有终端电阻:
步骤三:确认连接的通道信息,然后点击Start开始运行,此时trace窗口是正确的报文。
步骤四:通过Panel打开MainConfigPanel面板。
步骤五:点击MainConfigPanel面板中的Trigger Configuration打开对应如下的配置面板TriggerConfigurationPanel,选择触发位置AckSlot,并且针对特定帧(以Trace中的CAN ID:0x305为例)触发Busoff。
修改前:
修改后:
CurrentTriggerField填AckSlot;TriggerOffset填0;IDBase填CAN2.0标准帧ID的11位二进制(如果不满11个二进制数,高位补0,凑齐11个二进制数,例如这里的0x305,其二进制等于01100000101)。
步骤六:点击MainConfigPanel面板中的Sequence Configuration打开对应如下的配置面板SequencePanel,配置显性/隐性干扰。
修改前:
修改后:
在面板SequencePanel中,Segment value选择Dominant,勾选Arbitration Bit Timing Information,单击Add Segment。
步骤七:回到MainConfigPanel面板,CANoe软件运行时,配置面板中干扰的次数和循环次数。
修改前:
修改后:
如果进行多次Bus off测试,Cycles填写多个cycle,Repetiions中填写干扰次数为固定的32次(干扰一次,也就是干扰一个cycle,ECU的TEC累加8,在连续32次干扰之后,TEC的值为256,ECU便会进入bus off。)
注意:
Repetiions一般默认设置为32;
Cycles表示Busoff的次数,对应Autosar的CANSM模块中的CanSMBorCounterL1ToL2,根据实际的项目需求选定,Cycles中设定的值小于CanSMBorCounterL1ToL2,触发对应节点的通信快恢复;而Cycles中设定的值大于等于CanSMBorCounterL1ToL2,触发对应节点的通信慢恢复。在CANSM模块中也定义了快恢复时间CanSMBorTimeL1 和慢恢复时间CanSMBorTimeL2时间参数,这三个参数根据实际的项目需求选定。
步骤八:点击面板中的Enable On Device,启动Busoff测试。
如果ECU设置的快慢恢复比较长,CAN干扰仪干扰后,在Trace窗口中,你会看到对应的Busoff ECU所有发送的报文变灰色,说明停止了发送报文。
第二章节中,提到通过干扰经典CAN2.0标准帧报文的Ack Slot位来实现Bus off测试。
而在CAN FD中,如果干扰Ack Slot位,干扰的结果是两个连续的显性位,但在CAN FD中,两个显性位会被认为是有效的Ack,这就导致上述方法干扰不到Ack Slot位。
在这种情况下,建议干扰Ack delimiter位。CurrentTriggerField填Ack delimiter,TriggerOffset填0。如下图是干扰一个CANFD标准帧ID:0x305,其它部分的设置与第二章节相同。
获取更多“汽车电子资讯”和“工具链使用”,
请关注“汽车电子助手”(CSDN和微信公众号同名),做您的好助手。