您的位置 首页 ADAS

节点BusOff康复进程剖析与测验

总线关闭(bus off)是CAN节点比较重要的错误处理机制。那么,在总线关闭状态下,CAN节点的恢

总线封闭(bus off)是CAN节点比较重要的过错处理机制。那么,在总线封闭状况下,CAN节点的康复流程是怎样的?又该怎么了解节点康复流程的“快康复”和“慢康复”机制?本文将为咱们具体剖析总线封闭及康复的机制和原理。

61591802491809300.png

图1节点状况转化图景象1

一、 毛病界定与总线封闭状况

为了防止某个设备因为本身原因(例如硬件损坏)导致无法正确收发报文而不断的损坏总线的数据帧,然后影响其它正常节点通讯,CAN网络具有严厉的过错诊断功用,CAN通用标准中规矩每个CAN操控器中有一个发送过错计数器和一个接纳过错计数器。依据计数值不同,节点会处于不同的过错状况,并依据计数值的改变进行状况转化,状况转化如下图所示。

以上三种过错状况表明产生毛病的严峻程度,总线封闭是节点最严峻的过错状况。而且,节点在不同的状况下具有不同的特性,在总线封闭状况下,节点不能发送报文或应对总线上的报文,也就意味着不能再对总线有任何影响。

状况跳转和过错计数的规矩使得节点在产生通讯毛病时有了较好的自我过错处理和康复机制,从一种较严峻的过错状况跳转到另一种严峻性相对较低的状况,本质上便是一种康复进程。图1所呈现的转化进程是CAN通用标准所要求的,咱们从设备供货商买回来的CAN操控器现已把这些功用固化在硅片之中。

在通讯进程中,过错自动和过错被迫两种状况下节点的康复进程一般不需求MCU进行额定的编程处理,直接运用CAN操控器固有功用即可。但关于总线封闭状况,往往不直接运用CAN操控器固有的康复进程,而是对其进行编程操控,以完成“快康复”和“慢康复”机制。

image.png

图2 节点状况转化图景象2

注:

1、因为篇幅有限,关于过错计数的具体规矩以及各状况下节点的具体特性不在本文进行评论,读者能够查阅CAN的相关协议标准。

2、本文的“CAN操控器”是指现已完成了CAN通用协议物理层和数据链路层所要求的功用和特性的器材,如SJA1000;而“节点”是指把CAN操控器与MCU、收发器等相关器材进行整合开发出来的具有必定功用的CAN节点。

image.png

图3 节点状况转化图景象3

二、 为什么需求对总线封闭状况的节点完成“快康复”和“慢康复”战略?

当节点进入总线封闭状况后,假如MCU仅是敞开自动康复功用,CAN操控器在检测到128次11个接连的隐性位后即可康复通讯,在实践的CAN通讯总线中,这一条件是很简单到达的。以125K的波特率为例,128*11*(1/125000)= 0.011264s。这意味着假如节点地点的CAN总线的帧间隔时刻大于0.011264s,节点在总线闲暇时刻内便可容易康复通讯。咱们现已知道,当进入总线封闭状况时,节点现已产生了严峻的过错,处于不可信状况,假如敏捷康复参加总线通讯,具有较高的危险,因而,在实践的运用中,往往会经过MCU对CAN操控器总线封闭状况的康复进程进行编程处理,以操控节点从总线封闭状况康复到过错自动状况的等候时刻,到达既进步灵敏性又保证节点在功用上的快速呼应性的意图。具体包括“快康复”和“慢康复”战略,两种战略一般一起运用。

经过以上的评论,咱们能够知道,节点进入总线封闭状况后,存在以下几种康复状况:

(1)MCU仅敞开CAN操控器的自动康复功用,节点只需检测到128次11个接连的隐性位便能够康复通讯,康复进程如图1所示。

(2)MCU没有敞开CAN操控器的自动康复功用,也不自动干涉总线封闭过错,节点将一向无法“自动”康复总线通讯,只能经过从头上电的方法使节点康复, 康复进程如图2所示。

(3)MCU对CAN操控器的康复进程进行编程处理,这时,节点的康复行为由具体的编程逻辑决议,各厂家遍及采用了先“快康复”后“慢康复”的康复战略,康复进程如图3所示。

1591802546770763.png

图4  MCU完成总线封闭康复流程

三、MCU怎么完成“快康复”和“慢康复”?

MCU编程完成总线封闭“快康复”和“慢康复”的一般进程可用以下流程图描绘:

节点以正常发送形式发送报文的进程中,假如呈现了发送过错,发送过错计数会添加,只需发送过错计数没有超越255, CAN操控器便会自动重发报文,假如呈现屡次发送过错,使发送过错计数累加超越255,则节点跳转为总线封闭状况。MCU能够第一时刻知道节点进入了总线封闭状况(例如在过错中止处理逻辑中查询状况寄存器的相应位),这时MCU操控CAN操控器进入“快康复”进程,即操控CAN操控器中止报文收发,并进行等候,计时到达需求的时刻T1(如100ms)后,MCU从头发动康复CAN操控器参加总线通讯,这样便完成了一次“快康复”进程。

节点每进入一次“快康复”进程时,MCU会对此进行计数,当节点“快康复”计数到达设定的值N(如5次),则后续再次进入总线封闭状况时MCU把康复总线通讯的等候时刻T2进行延伸(如1000ms),这样便完成了“慢康复”进程。“快康复”和“慢康复”进程的首要差异就在于康复节点参加总线通讯的等候时刻的不同。

 经过MCU关于总线封闭后的康复行为进行编程操控,实践上是对CAN操控器的过错办理和康复机制进行了弥补,使得总线封闭状况后的康复进程愈加灵敏,更能习惯实践运用的需求。关于 “快康复”和“慢康复”的等候时刻,以及“快康复”计数多少次后进入“慢康复”进程,不同厂家可依据具体的需求进行编程完成。

1591802565291085.png

图5 功用设置

四、 实测总线封闭康复进程

经过广州致远电子有限公司的CAN总线剖析仪的流量剖析功用,能够很便利剖析总线封闭后节点的康复进程及测验“快康复”和“慢康复”的康复时刻。

第一步,衔接DUT但先不要上电。按以下装备,使能接纳搅扰功用,并敞开报文读取功用。

第二步,给DUT上电,并收集一段时刻报文,中止收集后运用流量剖析功用进行剖析。

第三步,鼠标放置于波形“团”(本文把包括多帧密布帧的波形称为波形“团”)之间读取康复时刻。

1591802582680772.png

图6 收集报文并进行流量剖析

至此,咱们便能够得出结论:该DUT对总线封闭的康复进程进行了编程操控,采用了先“快康复”后“慢康复”的康复机制,节点进入总线封闭状况后,进行一次“快康复”进程,后续进行“慢康复”进程,两个康复进程的康复时刻分别为27.5ms和209.5ms。

那么,咱们该怎么依据所得波形了解该DUT进入总线封闭状况及康复通讯的整个进程呢?

把第一个波形“团”扩大得到下图:(图8)

能够明晰的看到,波形“团”中包括共32帧CAN报文。把其他各波形“团”扩大后也都是包括32帧,这儿不再把具体的图片贴出来。

DUT上电后,初始发送和接纳过错计数都为0。因为在测验时装备了接纳搅扰功用,当DUT开端发送报文后,每一帧报文都受到CAN总线剖析仪的搅扰而呈现发送过错,第一次发送时发送过错计数加8,并自动重发,第2次发送时过错计数再加8,直到发送了32次后,发送过错计数大于255,依据图3的过错状况的转化规矩,这时DUT跳转为总线封闭状况,MCU操控进入“快康复”进程一起对“快康复”次数进行计数,并等候约27ms后,MCU操控DUT从总线封闭状况康复为过错自动状况,由MCU继续发动发送,因为依然受CAN总线剖析仪的继续搅扰,发送32帧后再次进入总线封闭状况,再次履行“快康复”或“慢康复”进程,以此类推。

依据流量剖析的成果可知,该DUT进入“快康复”的计数到达1次后便履行“慢康复”进程,“慢康复”等候时刻约为209ms。

1591802598759619.png

图7 读取康复时刻

注:

1、搅扰的设置能够依据需求设置其他的参数,只需保证能对DUT发送的帧进行搅扰使其呈现发送过错即可。

2、为了剖析完好的总线封闭康复进程,主张DUT和CAN总线剖析仪衔接好后,先敞开“报文读取”和“接纳搅扰”功用后再上电DUT。因为这样能保证DUT的接纳过错计数和发送过错计数的初始计数都为0。

3、需求对DUT进行接连的搅扰,不然DUT康复后成功发送了报文,“快康复”次数的计数会递减,这不利于剖析DUT总线封闭后的整个康复行为。 

4、总线封闭后节点的“康复”是指康复参加总线的通讯,但并不意味着康复后必定能成功发送或接纳报文。如上述事例,DUT康复通讯后因为依然受CAN总线剖析仪的搅扰,导致报文发送再次失利。

1591802611850454.png

图8 扩大波形“团”调查

总结:

在总线封闭状况下,“快康复”和“慢康复”不是CAN操控器固有的功用,而是经过MCU的编程逻辑完成的康复机制,是总线封闭状况下康复进程的弥补,使康复进程更具有灵敏性。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/91827.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部