CAN总线的缺陷

CAN总线由博世公司于1987年开发,1993年成为标准,在近23年的时间里获得了巨大的成功,逐渐替代了其它相近的总线,2001年的节点采用量已超过1亿。但是,曾经力推CAN总线的厂商,如宝马、博世、飞利浦等,目前都开始支持新的总线。对于推动新总线研究的原因,X-By-Wire的发展是一方面,但从根本上讲,消费者的安全需求才是最重要的原因。根据新闻报道:在CAN的发源地德国,2005年汽车抛锚事故中有35%是电子装置引起的。因此,电子控制系统及其通信系统的可靠性是一个敏感的问题,即使没有采用X-By-Wire,仍然使用常规的液压气动机构,也需要一种更为可靠的新总线来代替CAN。
车内通信有两个最基本的要求:一是数据内容正确;二是通信及时,序列一致。对这两点,CAN总线中均有所设计,但仍存在着不一致性、不可预测性、信道出错堵塞等漏洞。
1)不一致性
CAN总线中有一个著名的Last-But-One-Bit错误。CAN总线2.0A在信息认证(Message Validation)中规定:发送器验错的范围可覆盖到帧结束,如果发现错误,以后就按优先权和状态的规定重发;接收器验错的范围覆盖到帧结束的前一位。因此,如果由于空间干扰、电源波动等原因,对于帧的倒数第二位,一部分节点A认为无错,一部分节点B认为有错,即出现了所谓的Byzantine错误。这时,根据EOF应该是7个隐性位,节点B认为这是一种形式错误,所以就会启动错误帧,通知发送器重发,同时丢弃收到的帧。而认为没错的节点A由于只查到倒数第二位,因此就会接收此帧。如果在发送器例行的下一次发送前B通知的重发成功,A就会收到重复帧;如果重发不成功,B就丢了一帧。在转向和制动系统中,4个轮子对命令的不同理解,可能造成性能的下降或其他更严重的后果。
2)不可预测性
CAN总线将节点状态分为Error Active、Error Passive和Bus Off三种,这三种状态在一定条件下可以互相转换。不同状态中节点的发送有不同的延迟。最高优先权的信息发送延迟有几种可能:当节点状态为Error Active时,若总线空闲,则立即发送;当节点状态为Error Active时,如果其它帧正在发送,则需等正在发送的报文结束后,再过3位后发送;当节点状态为Error Passive时,它有一个出错重发的要求,若没有其它帧要发送,等3位传送(Intermission)和8位挂起传送(Suspend Transmission)后重发;当节点状态为Error Passive时,若总线空闲,出错后等别的信息发送完后再发,等待时间与其它帧的长度有关;当节点状态为Bus Off时,需等状态恢复到Error Passive或Error Active再发。
当确认某节点的状态时,还有几个因素需要考虑:首先,节点由最高优先权的信息和其他信息共用,因此,其他信息在传送过程中出现的错误也会影响到节点状态;其次,进入Error Passive或 Bus Off状态的条件是发送错误计数器与/或接收错误计数器的值,由于CAN的原子广播特点,其它节点的发送错误或接收错误会开启一个错误帧,从而影响到该节点的接收错误计数器的值,进而影响节点状态。
对于优先权较低的信息来说,发送时间的离散程度更大。在反馈控制系统中,采样调节周期的大范围抖动相当于信号延迟后的变化,它有可能使系统性能下降或不稳定。在与安全相关的开环系统中,抖动可能造成动作顺序的混乱。
3)信道出错堵塞
节点有可能受干扰或其它原因暂时或永久失效,出错的主机会命令CAN收发器不断发送消息,即所谓的Babbling Idiot错误。由于该信息的格式等均合法,因此CAN没有相应的机制来处理这种情况。根据CAN的优先权机制,比它优先权低的信息就被暂时或永久堵塞。
由于CAN总线存在上述几种根本的缺陷,因此,在更为严格的控制系统中,它将会造成巨大的风险,无法满足安全、环保、节能的要求。
CAN的事件触发协议特点限制了ECU的应用、开发与生产,不仅用过的ECU难于重用,而且还不利于改善和开发新的ECU。
一个成功的CAN应用仅在一定的条件下是有效的,簇内所有信息的优先权配置、波特率、通信负荷(所有信息的出现频率和长度)都较为固定,任何一个参数的改变都会使通信的时域分布改变。因此,当需要改变车型时,如果添加了新的功能,或是修改了闭环控制方案,ECU的所有基本功能就必须重新验证,这使工作量大大增加,延迟了新车型的上市时间。同样,对于提供零部件的厂商,同一ECU在不同汽车厂商的汽车上应用时,可能不得不对某些参数进行修改,这需要进行重新的验证和认证,增加了管理的复杂性,也增加了成本。
在事件触发通信系统中,所有的应用都因优先权规则而深深地耦合在一起。这一特点使得由不同的工作组对个别应用同时进行设计、测试和认证的工作无法实现,这一点对期望成为质量与技术进步的汽车厂商来说是难以容忍的。
另外,对CAN的各种改进都难以实现向下的兼容性。自CAN总线问世以来,随着对CAN局限性的认识不断加深,业界提出了各种改进方案,这些方案采用标准的芯片,在底层协议上添加新的规定,使其具有分时通信的功能。如TTCAN、FTT_CAN ( Flexibly Time-Triggered CAN)、ServerCAN、TCAN (Timely CAN)、FlexCAN/SafeCAN 等。其中,TTCAN正在成为业界标准ISO11898-4。但是,这些改进都要对原有的CAN协议进行修改,例如出错时不立即重发,要将事件触发的应用程序改为时间触发的应用程序等。这些改动都是新协议必备而老协议不具备的,因此,原有的带CAN通信协议的ECU如果想要在新系统中应用,也就必须进行修改。
CAN总线的另一个局限因素是传送波特率,十多年前确定的1M波特率由于应用的飞速增加而变成瓶颈。从低速CAN总线、高速CAN总线,以致将来不得不配置第二条高速CAN总线,虽然这或许可以缓解速率问题,但从全局看,总线数量的增加使布线、网关、系统复杂性都随之增加。从技术角度上看,重新设计CAN收发器,提高传送波特率是有一定可能的;但从技术经济角度上看,无法与现有产品相兼容就使这种局部改进失去了意义

你可能感兴趣的:(职场,缺陷,休闲,CAN总线)