百摩网
当前位置: 首页 生活百科

on-off定时器编程教程(节点BusOff恢复过程分析与测试)

时间:2023-08-10 作者: 小编 阅读量: 1 栏目名: 生活百科

图1节点状态转换图情形1以上三种错误状态表示发生故障的严重程度,总线关闭是节点最严重的错误状态。在通信过程中,错误主动和错误被动两种状态下节点的恢复过程一般不需要MCU进行额外的编程处理,直接使用CAN控制器固有功能即可。当节点进入总线关闭状态后,如果MCU仅是开启自动恢复功能,CAN控制器在检测到128次11个连续的隐性位后即可恢复通信,在实际的CAN通信总线中,这一条件是很容易达到的。

总线关闭(bus off)是CAN节点比较重要的错误处理机制。那么,在总线关闭状态下,CAN节点的恢复流程是怎样的?又该如何理解节点恢复流程的“快恢复”和“慢恢复”机制?本文将为大家详细分析总线关闭及恢复的机制和原理。

故障界定与总线关闭状态

为了避免某个设备因为自身原因(例如硬件损坏)导致无法正确收发报文而不断的破坏总线的数据帧,从而影响其它正常节点通信,CAN网络具有严格的错误诊断功能,CAN通用规范中规定每个CAN控制器中有一个发送错误计数器和一个接收错误计数器。根据计数值不同,节点会处于不同的错误状态,并根据计数值的变化进行状态转换,状态转换如下图所示。

图1节点状态转换图情形1

以上三种错误状态表示发生故障的严重程度,总线关闭是节点最严重的错误状态。并且,节点在不同的状态下具有不同的特性,在总线关闭状态下,节点不能发送报文或应答总线上的报文,也就意味着不能再对总线有任何影响。

状态跳转和错误计数的规则使得节点在发生通信故障时有了较好的自我错误处理和恢复机制,从一种较严重的错误状态跳转到另一种严重性相对较低的状态,本质上就是一种恢复过程。图1所呈现的转换过程是CAN通用规范所要求的,我们从设备供应商买回来的CAN控制器已经把这些功能固化在硅片之中。

在通信过程中,错误主动和错误被动两种状态下节点的恢复过程一般不需要MCU进行额外的编程处理,直接使用CAN控制器固有功能即可。但对于总线关闭状态,往往不直接使用CAN控制器固有的恢复过程,而是对其进行编程控制,以实现“快恢复”和“慢恢复”机制。

注:

由于篇幅有限,关于错误计数的详细规则以及各状态下节点的具体特性不在本文进行讨论,读者可以查阅CAN的相关协议规范。

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

为什么需要对总线关闭状态的节点实现“快恢复”和“慢恢复”策略?

当节点进入总线关闭状态后,如果MCU仅是开启自动恢复功能,CAN控制器在检测到128次11个连续的隐性位后即可恢复通信,在实际的CAN通信总线中,这一条件是很容易达到的。以125K的波特率为例,128*11*(1/125000)= 0.011264s。这意味着如果节点所在的CAN总线的帧间隔时间大于0.011264s,节点在总线空闲时间内便可轻易恢复通信。我们已经知道,当进入总线关闭状态时,节点已经发生了严重的错误,处于不可信状态,如果迅速恢复参与总线通信,具有较高的风险,因此,在实际的应用中,往往会通过MCU对CAN控制器总线关闭状态的恢复过程进行编程处理,以控制节点从总线关闭状态恢复到错误主动状态的等待时间,达到既提高灵活性又保证节点在功能上的快速响应性的目的。具体包括“快恢复”和“慢恢复”策略,两种策略一般同时应用。

通过以上的讨论,我们可以知道,节点进入总线关闭状态后,存在以下几种恢复情况:

MCU仅开启CAN控制器的自动恢复功能,节点只需检测到128次11个连续的隐性位便可以恢复通信,恢复过程如图1所示。

MCU没有开启CAN控制器的自动恢复功能,也不主动干预总线关闭错误,节点将一直无法“自动”恢复总线通信,只能通过重新上电的方式使节点恢复, 恢复过程如图2所示。

图2 节点状态转换图情形2

MCU对CAN控制器的恢复过程进行编程处理,这时,节点的恢复行为由具体的编程逻辑决定,各厂家普遍采用了先“快恢复”后“慢恢复”的恢复策略,恢复过程如图3所示。

图3 节点状态转换图情形3

MCU如何实现“快恢复”和“慢恢复”?

MCU编程实现总线关闭“快恢复”和“慢恢复”的一般过程可用以下流程图描述:

图4 MCU实现总线关闭恢复流程

节点以正常发送模式发送报文的过程中,如果出现了发送错误,发送错误计数会增加,只要发送错误计数没有超过255, CAN控制器便会自动重发报文,如果出现多次发送错误,使发送错误计数累加超过255,则节点跳转为总线关闭状态。MCU能够第一时间知道节点进入了总线关闭状态(例如在错误中断处理逻辑中查询状态寄存器的相应位),这时MCU控制CAN控制器进入“快恢复”过程,即控制CAN控制器停止报文收发,并进行等待,计时达到需要的时间T1(如100ms)后,MCU重新启动恢复CAN控制器参与总线通信,这样便完成了一次“快恢复”过程。

节点每进入一次“快恢复”过程时,MCU会对此进行计数,当节点“快恢复”计数达到设定的值N(如5次),则后续再次进入总线关闭状态时MCU把恢复总线通信的等待时间T2进行延长(如1000ms),这样便实现了“慢恢复”过程。“快恢复”和“慢恢复”过程的主要区别就在于恢复节点参与总线通信的等待时间的不同。

通过MCU对于总线关闭后的恢复行为进行编程控制,实际上是对CAN控制器的错误管理和恢复机制进行了补充,使得总线关闭状态后的恢复过程更加灵活,更能适应实际应用的需要。对于 “快恢复”和“慢恢复”的等待时间,以及“快恢复”计数多少次后进入“慢恢复”过程,不同厂家可根据具体的需求进行编程实现。

实测总线关闭恢复过程

通过广州致远电子有限公司的CAN总线分析仪的流量分析功能,可以很方便分析总线关闭后节点的恢复过程及测试“快恢复”和“慢恢复”的恢复时间。

第一步,连接DUT但先不要上电。按以下配置,使能接收干扰功能,并开启报文读取功能。

图5 功能设置

第二步,给DUT上电,并采集一段时间报文,停止采集后使用流量分析功能进行分析。

图6 采集报文并进行流量分析

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

图7 读取恢复时间

至此,我们便可以得出结论:该DUT对总线关闭的恢复过程进行了编程控制,采用了先“快恢复”后“慢恢复”的恢复机制,节点进入总线关闭状态后,进行一次“快恢复”过程,后续进行“慢恢复”过程,两个恢复过程的恢复时间分别为27.5ms和209.5ms。

那么,我们该如何根据所得波形理解该DUT进入总线关闭状态及恢复通信的整个过程呢?

把第一个波形“团”放大得到下图:

图8 放大波形“团”观察

可以清晰的看到,波形“团”中包含共32帧CAN报文。把其余各波形“团”放大后也都是包含32帧,这里不再把详细的图片贴出来。

DUT上电后,初始发送和接收错误计数都为0。由于在测试时配置了接收干扰功能,当DUT开始发送报文后,每一帧报文都受到CAN总线分析仪的干扰而出现发送错误,第一次发送时发送错误计数加8,并自动重发,第二次发送时错误计数再加8,直到发送了32次后,发送错误计数大于255,根据图3的错误状态的转换规则,这时DUT跳转为总线关闭状态,MCU控制进入“快恢复”过程同时对“快恢复”次数进行计数,并等待约27ms后,MCU控制DUT从总线关闭状态恢复为错误主动状态,由MCU继续启动发送,由于仍然受CAN总线分析仪的持续干扰,发送32帧后再次进入总线关闭状态,再次执行“快恢复”或“慢恢复”过程,以此类推。

根据流量分析的结果可知,该DUT进入“快恢复”的计数达到1次后便执行“慢恢复”过程,“慢恢复”等待时间约为209ms。

注:

干扰的设置可以根据需要设置其他的参数,只要保证能对DUT发送的帧进行干扰使其出现发送错误即可。

为了分析完整的总线关闭恢复过程,建议DUT和CAN总线分析仪连接好后,先开启“报文读取”和“接收干扰”功能后再上电DUT。因为这样能确保DUT的接收错误计数和发送错误计数的初始计数都为0。

需要对DUT进行连续的干扰,否则DUT恢复后成功发送了报文,“快恢复”次数的计数会递减,这不利于分析DUT总线关闭后的整个恢复行为。

总线关闭后节点的“恢复”是指恢复参与总线的通信,但并不意味着恢复后一定能成功发送或接收报文。如上述案例,DUT恢复通信后由于仍然受CAN总线分析仪的干扰,导致报文发送再次失败。

总结:

在总线关闭状态下,“快恢复”和“慢恢复”不是CAN控制器固有的功能,而是通过MCU的编程逻辑实现的恢复机制,是总线关闭状态下恢复过程的补充,使恢复过程更具有灵活性。

    推荐阅读
  • 王阳明关于象棋的诗(王阳明关于象棋的诗简述)

    王阳明关于象棋的诗明代哲学家、教育家王阳明,自幼才思敏捷,经常逢事作诗,一一首《哭象棋诗》就是他即景而作的。有一次,因他贪下象棋,忘了回家吃饭,母亲一气,夺了他的象棋,扔到河里。兵卒堕河皆不救,将军溺水一齐休。炮响一声天地震,象若心头为人揪。中间两句写各种兵种被流水卷走,似有千军万马之状。末一句忽然奇军突起,却是雄浑悲壮的余声。整首诗构思巧妙,纵横得体。

  • 2023春节过年株洲展览有哪些?(株洲灯展2021)

    2023春节株洲展览有哪些?彩瓷迎春——醴陵艺术瓷精品展暨中国陶瓷谷陶瓷联展时间:2023年1月12日地点:醴陵市中国陶瓷谷1915街区内容:广泛征集、集中展示醴陵釉下五彩艺术陶瓷精品充分利用各自展厅,同步开辟迎春主题陶瓷产品展示。另设立日用瓷专区,发放宣传画册,加线上直播、短视频打卡宣传,呈现醴陵千年产业的底蕴和魅力,打响2023年醴陵陶瓷品牌文化宣传第一波,实现天涯共“瓷”时,共赏醴陵瓷的新春氛围。

  • 年近耄耋是什么意思(年近耄耋是啥意思)

    以下内容希望对你有帮助!耄耋是用来称八九十岁的老人,既能表示老人的年龄状态,又不乏对老人的尊重。通常是说耄耋之年,这是一个汉语成语,出自曹操《对酒歌》:人耄耋皆得以寿终。恩泽广及草木昆虫。整个的意思为期望父亲身体健康,永享高龄(寿),活到八九十岁。

  • 梦见走错路是什么意思(为什么梦见走错路)

    下面内容希望能帮助到你,我们来一起看看吧!梦见走错路是什么意思待业者梦见走错路主财运:虽有困难,改变方针,便转为有利了。梦见走错路意味着,模仿力强的这两天,很适合经由与他人的接触而提昇自己的能力。像是语文学习上就有著不同以往的领悟力。梦见走错路了意味着,人际关系较为复杂的气息,对别人必需要更用心、小心翼翼相处。

  • 如何讲英语绘本才能吸引小朋友(怎么给孩子讲英语绘本)

    用中文还是英语这可能是大家纠结的第一个点,读英语绘本要不要全英语?中文的作用是引起兴趣,解释,描述图片,串流程。讲封面咱们讲封面的时候,可以先用中文引起兴趣,说:宝贝你看,这两个小孩儿在干啥呀?有的妈妈可能会说,我知道了用中文引起兴趣,但是我还是没有思路,不知道具体该说什么。到了后期我们就可以甩掉中文这个拐杖,全用英语来引导了。我们用中文说,哇,草坪背后是什么呀?

  • 立体几何公理及应用(思想在立体几何中的应用)

    利用“补形”思想这一桥梁,可以使数学的思维方法更活跃、更简捷,启发学生的直觉思维,培养思维的灵活性、独创性。利用“补形”思想可以把不规则形体补成规则形体;不熟悉形体补成熟悉形体;残缺形体补成完整形体.使思维更灵活、知识结构更完整、更充实、方法更加完美。下面谈谈“补形”思想在解题中的具体应用。

  • 台风过境上海航班何时恢复正常(注意受台风梅花)

    受今年第12号强台风“梅花”影响,东航、南航、吉祥航空、春秋航空等已取消部分航班。东航决策取消13日-15日虹桥、浦东、宁波、杭州、无锡、常州等机场进出港482个航段。截止目前具体取消情况如图。春秋航空因台风“梅花”原因,春秋航空部分进出港航班临时取消。

  • 初级会计考试准考证怎么查询(初级会计准考证查询入口官网是什么)

    2020年部分地区的初级会计准考证打印时间如下图:打印流程:第一步、登录网站初级会计考试准考证打印入口开通后,考生需登录“全国会计资格评价网”。

  • 照烧鸡腿最好吃(做照烧鸡腿再也不要买照烧酱汁了)

    做照烧鸡腿再也不要买照烧酱汁了,自己配的照烧酱汁味道也很赞。吉野家的照烧鸡腿饭是小朋友最爱吃的,每次都吃得小肚子圆鼓鼓的。每一位妈妈对于孩子喜欢的都比较在意,为了照顾他的胃口,我折腾出了家常版的“照烧鸡腿”,而且是不要买照烧酱汁的,就要最平常的调味料做出。今天就给小家伙整一盘照烧鸡腿,在家吃就不给装成盖浇饭的样子了,我只管准备好饭菜,大家想怎么吃都可以。

  • 秃黄油用公蟹还是母蟹(秃黄油用什么蟹好)

    秃黄油用公蟹还是母蟹做秃黄油的话用什么螃蟹都是可以的,最好是公蟹和母蟹一起做,蟹膏蟹黄最佳比例在6:4。这样做出来的秃黄油才会干香不腻,味道鲜美,成品也是绵密松软。秃黄油,是苏州的方言,秃是“只有”或“独有”的意思。黄油,即高纯度的,不允许有一丝蟹肉存在里面,因而不同于夹杂了蟹肉的蟹黄。成品芬芳馥郁,美艳不可方物,可谓中华美食最高境界。秃黄油本来是一种存蟹的方法,在没有冰箱的时代,能时时刻刻吃到蟹肉。