微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > CAN消极报错发送节点变为离线状态的故障

CAN消极报错发送节点变为离线状态的故障

时间:02-20 来源:互联网 点击:
3 为什么需要消极报错状态

理论上,解决这一故障有三种可能的方案:第一种方案是,将消极报错帧分界符长度按一定的规则改变,使处于消极报错状态的节点发现一个错后总能与其他节点帧启停保持同步。在本文讨论的处于消极报错状态的发送节点变为离线状态的例子中,仅仅改变判断发送节点/接收节点的规则也是不够的,因为它仅能把可能的真正离线变为等同离线。所以随情况改变,消极报错帧分界符长度仍然是需要的。这一方案对应用的改动最小,仅CAN通信控制器芯片要修改。第二种方案是采用某种形式的CAN时间触发CAN协议,预留出一些总线空闲时间,使处于消极报错状态的节点发现一个本地错后仍能与其他节点帧启停同步;但是迄今为止讨论的 CAN时间触发协议都缺少足够的纠错能力,它们都禁止CAN的出错自动重发机制,在出错后会导致数据的丢失。第三种可能的解决方案是,放弃消极报错状态,没了消极报错状态就没了消极报错帧,就不会有不同步的情况出现,也就不会有离线和等同离线的情况出现。

消极报错状态使通信控制器在正常工作与停工之间有一个中间状态,在此种状态下,它仍可发送和接收。唯一的差别是它的报错能力被限制到很小:只有发送节点在 ACK以前的本地错会被其他节点知道。在其他情况下,消极报错帧不会影响其他节点的收发,不管这种错是本地错还是全局错。这样,如果这个处于消极报错状态的节点不正常,那么它对系统性能下降的影响就很小;如果它工作正常,则系统的性能没有损失。

对汽车类的应用来说,环境很恶劣,出错是不可避免的,然而在现场进行排障或修理是有难度或不可能的(例如上天或人海的应用)。在那里,能“跛”着回家是最好的策略。这种策略不仅适用于机械部分,也适用于工作失常的电子通信系统。消极报错状态符合这种策略。当车子在这种“跛”着回家方式下工作时,某些暂时性的故障有可能消失。例如,环境温度、电磁场、振动都可能因工况的不同或路段的不同而改变。随着通信恢复正常,节点的状态也可由消极报错状态回到主动报错状态。如果节点只有主动报错和离线二种状态,那么离线时节点就要不断测试通信是否恢复,或者等一段时间测试一下。显然,这些方法效率要低,不像消极报错状态时仍能提供服务,意味着提供服务的时间的减少。延长处于主动报错状态的时间,而去掉消极报错状态,会使有本地故障的节点对系统的干扰时间也延长。因此废弃消极报错状态不是一个好的选择。从Bosch CAN2.0规范里也可以体会到这一点:它规定一个处于消极报错状态的节点一定不得发主动报错标志。消极报错状态的想法也为FlexRay所采用,在它的协议运行控制部分规定有三种状态,分别是POC:NormalActive、POC:Normeal Passive和POC:Halt。

4 小结

上述分析表明:处于消极报错状态的CAN发送节点在某些条件下会因一次误判而进入离线状态。其离线的时间一般比处于消极报错状态的接收节点因一次误判而进入的等同离线状态要长。为了避免这种类型的失效,最好的解决方案是采用可变长消极报错帧分界符,使消极报错状态的节点总能与系统内的其他节点保持帧启停的同步。在同步的情况下,假设现有CAN调度分析的理论没有大的缺失,例如没有此类故障,没有引起超载帧的条件,可以提供较为可信的结果。

参考文献

   1. 杨福宇 CAN 总线系统中的一种安全隐患 [期刊论文] -单片机与嵌入式系统应用2009(1)
   2. Robert Bosch GmbH CAN Specification Version 2.0 1991
   3. ISO/TC 22/SC3.International standard:ISO 11898-1 "Road Vehicles-Controller Area Network (CAN)-Part1ata link layer and physical signalling" 2003
   4. ISO/TC 22/SC3.International standard:ISO 16845 "Road Vehicles-Controller Area Network (CAN)-Conformance test plan" 2004

作者:重庆工业自动化仪表研究所 杨福字 来源:单片机与嵌入式系统应用

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top