CAN总线BusOff&Busfailure的原理以及测试策略详解 您所在的位置:网站首页 区间测速机制 CAN总线BusOff&Busfailure的原理以及测试策略详解

CAN总线BusOff&Busfailure的原理以及测试策略详解

2024-07-08 06:13| 来源: 网络整理| 查看: 265

1.BusOff 1.1 作用

主要是为避免CAN总线上某个设备因为自身原因(例如硬件故障)导致无法正确收发报文而不断的破坏总线的数据帧,从而影响其他正常节点的通信。CAN总线具有严格的错误诊断功能,CAN总线通用规范中规定每个CAN控制器中有一个发送错误计数器和一个接收错误计数器。节点会计数值不同,判断进入不同的错误状态,并根据计数值的变化进行状态转换。如节点转换图1: 节点转换图1 以上的三种错误状态,总线关闭也就是Busoff是最严重的错误状态。并且节点在不同的状态下具有不同的特性,在总线关闭的状态下,节点不能发送报文或应答总线上的报文,也就意味这不能在对总线有任何影响。

1.2 快/慢恢复策略的意义

当总线进入busoff的状态后,如果仅仅是ECU开启自动恢复功能,CAN控制器在检测到128次11个连续的隐性位后即可恢复通信,在实际的CAN通信总线中,这个条件很容易就可以达到,例如125k的波特率,128次11个连续的隐性位等价于12811=1408,t = 1408(1/125000)=0.011264s。这样的话如果节点所在的CAN总线的帧间隔大于0.011264s,节点完全可以在总线空闲时间内恢复通信。但是这里需要注意,当总线进入到busoff时,节点处于最严重的错误状态,被视为不可信状态,如果迅速恢复通信,具有较高的风险。所以在实际应用中,通过对CAN控制器总线关闭状态的恢复过程进行编程处理,控制节点从busoff状态恢复到错误主动状态的等待时间,提高了灵活性的同时又可以保证节点在功能上的快速响应,具体分为快恢复和慢恢复两种策略,两种策略一般同时应用

1.3 快/慢恢复的流程图

快/慢恢复流程图 节点以正常发送模式发送报文的过程中,如果出现了发送错误,发送错误计数器(TransmitErrorCounter)增加,发送1帧错误帧TEC计+8,发送正常则-1,TEC≤255时,CAN控制器会自动重发报文,如果TEC>255,节点会跳转到busoff状态。MCU能够第一时间知道节点进入了总线关闭状态(例如在错误中断处理逻辑中查询状态寄存器的相应位),此时MCU控制CAN控制器进入快恢复过程,控制CAN控制器停止收发报文,并进行等待,计时达到需要的时间T1(如50ms)后,MCU重新启动恢复CAN控制器参与总线通信,这样便完成了一次快恢复过程。 节点每进入一次快恢复的过程,MCU都会对此进行计数,计数达到了设定的n次(如5次),则在后续再次进入busoff状态时MCU把恢复时间延长至T2(如200ms),这样便完成了一次慢恢复过程。 快恢复和慢恢复过程的主要区别是在于恢复节点参与总线通信的等待时间的不同。

1.4 BusOff常见的测试点 ①测试TEC≤255时,节点不进入busoff状态,TEC>255时,节点进入busoff状态

测试策略: step1 设置前置测试环境 step2 开始录制总线上的错误帧 step3 使用VH6501对总线连续干扰31帧(TEC = 831=248255) step8 开始录制总线上的正常报文 step9 比较step4中录制的第一帧报文与最后以帧错误帧的Δt是否等于快恢复的T1 以上过程需注意录制正常报文的时间必须远大于快恢复T1或慢恢复T2,保证在录制的报文中一定可以录制到快恢复或慢恢复后,ECU发送的第一正正常通信的报文

②测试当快恢复计数器countern,例如m=8)时,记录busoff 故障信息

测试策略: 持续干扰8*32帧错误帧,使用0x19服务读取DTC,判段是否为busoff DTC

④测试连续干扰x次,等待恢复至buson后,再干扰1次时,应执行快恢复

测试策略: 持续干扰x次,等待T之后,再干扰1次,判断Δt 是否为快恢复T1

⑤测试连续干扰x次,等待1101后,再干扰1次时,应执行快恢复

测试策略: 持续干扰x次,等待1101之后,再干扰1次,判断Δt 是否为快恢复T1 注:根据不同公司不同产品的需求差异,在以上的场景再进行扩展和延申,前4个场景为最基本的场景,第5个场景是基于经验设计的。

2.BusFailure 2.1 原理

ECU一般有CAN_High、CAN_Low、电源正极和电源负极,当其中CAN_H和CAN_Low短路会对总线产生影响,例如进入busoff状态,但在线束故障恢复后,ECU应可以在规定的时间T内自动恢复通信(不同公司不同产品对busfailure的需求定义是存在差异的,以此为例)。 通过组合以上的线束可得如下表: BusFailure故障类型

2.2 测试策略

测试策略: step1 设置前置测试环境 step2 使用CANOE控制继电器模拟以上任一故障,持续一段时间t1(t1远大于T)后 step3 开始录制总线报文,录制时间t2稍大于T step4 恢复继电器干扰 step5 通过检查录制报文的内容检查是否恢复正常通信

结语 在调试busoff的测试脚本时,出现过2个类型的问题:①录制的报文的Δt为负值,通过查看Trace,发现问题出在VH6501干扰存在一定延时,导致在未干扰前就开始了录制,导致时间是负值;②录制的报文为空,通过查看Trace,问题出在录制的时间太短。以上两个问题,通过使用错误帧应小于第一次接收的正常报文的时间比较,解决问题①,增加录制报文的时间解决问题②。 以上是本次分享CAN总线BusOff&Busfailure的原理以及测试策略详解的全部内容,欢迎留言交流~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有