CAN总线BusOff&Busfailure的原理以及测试策略详解 | 您所在的位置:网站首页 › 区间测速机制 › CAN总线BusOff&Busfailure的原理以及测试策略详解 |
1.BusOff
1.1 作用
主要是为避免CAN总线上某个设备因为自身原因(例如硬件故障)导致无法正确收发报文而不断的破坏总线的数据帧,从而影响其他正常节点的通信。CAN总线具有严格的错误诊断功能,CAN总线通用规范中规定每个CAN控制器中有一个发送错误计数器和一个接收错误计数器。节点会计数值不同,判断进入不同的错误状态,并根据计数值的变化进行状态转换。如节点转换图1: 当总线进入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 快/慢恢复的流程图
测试策略: 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的需求定义是存在差异的,以此为例)。 通过组合以上的线束可得如下表: 测试策略: step1 设置前置测试环境 step2 使用CANOE控制继电器模拟以上任一故障,持续一段时间t1(t1远大于T)后 step3 开始录制总线报文,录制时间t2稍大于T step4 恢复继电器干扰 step5 通过检查录制报文的内容检查是否恢复正常通信 结语 在调试busoff的测试脚本时,出现过2个类型的问题:①录制的报文的Δt为负值,通过查看Trace,发现问题出在VH6501干扰存在一定延时,导致在未干扰前就开始了录制,导致时间是负值;②录制的报文为空,通过查看Trace,问题出在录制的时间太短。以上两个问题,通过使用错误帧应小于第一次接收的正常报文的时间比较,解决问题①,增加录制报文的时间解决问题②。 以上是本次分享CAN总线BusOff&Busfailure的原理以及测试策略详解的全部内容,欢迎留言交流~ |
CopyRight 2018-2019 实验室设备网 版权所有 |