分享

【精华】也说CAN总线

 guitarhua 2019-04-28
CAN(Controllor Area Networks,控制器局域网络)只是一个模型或是一个框架,真正应用的主要是CAN-Open和DeviceNet两种总线传输协议,前者主要由Bosch主导形成,后者是美国AB-Rockwell开发的。CAN总线是最早的现场总线,用于自动控制系统的数据传输。CAN总线的方案也是现场总线中结构最简单、成本最低的一种,也是由于这个的原因,在CAN总线发展的初期,应用的最为广泛,远远领先于其他标准的现场总线。



那时我所在的公司就有CAN总线产品,同时支持CAN-Open和DeviceNet。在一次展会上,一个老外对这类产品比较感兴趣,与他聊了聊,得知他是AB的,就对CAN总线称赞一番,也对AB称赞了几句,那家伙很高兴。自家的东西被人夸赞,喜不胜收,也是人之常情。



AB的协议是DeviceNet,更多的应用在工业设备之间的通信;CAN-Open主要应用于汽车内各个电子设备的连接。几年前有个留美的同学回国聚会,谈到她在做软件开发,问是那个软件公司,得知是在福特,我就问了一下是不是做CAN,果然。



后来,更多的现场总线标准被提出,CAN总线的弊端暴露出来,网络容量小,传输距离近(也可以传远,但其他优势受到影响),信道容量小,系统互联不甚方便等。因此,CAN总线的使用日趋减少。更重要的是各个自动化行业的巨头,出于商业方面的考虑,更愿意采用自己的专有技术,比如欧洲巨头西门子主推ProfiBus,北美的厂商主推FF Bus(现场总线基金会标准),在我国市场上,由于没有自己的标准,成了万国博览会,几十种标准的产品都有,但西门子产品市场占有率较高,所以ProfiBus应用较多。



由于几大巨头的夹击,CAN 总线江河日下,应用越来越少,现在基本收缩到两个主要的行业:汽车和电力,另外在一些军工、石油和传感器等方面还有一些小规模的应用。



CAN总线主要的物理传输介质是铜缆双绞线(STP或UTP,较少使用光纤),造价低,系统简单,近距离传输速率高,实时性好,多主传输,区分优先级,技术难度低。平心而论,CAN总线应用在汽车上面是很合适的。



在CAN总线的诸多优点中,低成本、实时性好的优点,对于汽车控制比较为重要。



低成本无需多说,就说说实时性。



所谓总线,可以比喻成双向只有一条车道的公路。总线的特性,就是同一时刻,所有连接在网络上的设备中,只能有一个设备能够使用网络传输数据,其余的设备都只能接收和等待,否则无法通信。所以总线协议都需要对于总线竞争给出仲裁方法,就像是交通规则。



仲裁方案最有意思的是以太网(Ethernet),也就是我们所说的局域网(LAN,其实EtherNet只是局域网的一种,不知道有没有人知道令牌环?),也是应用的最为广泛的网络协议。这个协议比较复杂,最早是为无线通信开发的,按照ISO的模型,完整的协议要有七层,但实际的应用,合并的合并简配的简配,一般用到4-5层。它的仲裁机制叫做CSMA/CD协议(载波侦听多路访问/冲突检测协议),大概的意思是说每个网络设备在发数据之前,先收一下,看看有没有人在发数据,有的话就等待一下,否则就开始发数据;在发数据的同时,自己也接收数据,如果两者相同,就认为发送成功,天下太平;反之,就是别人也在发数据,撞车了。这时大家都要立即停止发送,以免肇事,然后等待一小会儿,再重发,如果再碰撞,就再等,直到检测不到到碰撞。由于每个设备的等待时间不一致,再次碰撞的机会较少,所以网络在不太繁忙的时候,秩序很好,因为大家都是谦谦君子,文明司机。



这个协议的问题是,一旦有一个设备出了故障,不停地发数据,或者乱发数据,比如出现了一个或若干个虎女,或者来了军警特宪的王牌车,网络就瘫痪了;或者网络很拥挤的时候,大家都检测到碰撞,你让我我让你,结果出现了大家都走不了的情况;更严重的是,如果有一个非常紧急的数据需要发出去(比如来了一辆救护车),也没有办法让它优先,保证不了通信的实时性。



这个东西如果用在汽车上,问题就严重了。而汽车控制对于实时性的要求,是显而易见的。做个比喻吧,加速度传感器测得加速度值,传递给气囊控制器(可能还有ESP控制器,安全带等),气囊控制器根据此数值,决定是不是该弹出。这个信号的传输速度,自然是越快越好。如果这个信号在一个实时性很不好的系统中悠哉游哉地漫步,一直都在做文明司机,等信号送到,黄瓜菜都凉了。



而CAN的总线仲裁机制,是采用了对各个设备进行优先级区分的办法实现的。每个设备的优先级不一样,优先级高的,可以抢先发送。而这个优先级,就是该设备的网络地址。比如加速度传感器优先级最高,可以获得最好的响应速度,保证了实时性,确保安全;而诸如水箱温度优先级就让它低一些,不就是在仪表盘上显示个数据么,温度优势缓变信号,晚几秒钟没有问题,有几个驾驶员每秒钟都看温度?



CAN总线可以用布置成多主结构和点对点(peer to peer)同级通信的办法,提高总线利用效率。比如在汽车中水箱温度升高,按照一般的方法,控制器查询温度传感器的温度,温度传感器将温度值传递给控制器,控制器再依次开动冷却风扇,增加冷却水循环速度,更新仪表盘数据,再启动声音提醒等,这是一个典型的主从结构网络的工作过程。这个过程中,数据(包括控制信号)被传输了多次,不仅耽搁了时间,也占用了宝贵的信道资源,效率低下。而采用多主传输,温度传感器可以主动将数据传递给所有需要温度值的设备,各个设备依照该温度值自行采取相应的动作,大大的提高了总线效率。



从控制系统的角度来讲,CAN总线只是一种普通的串行总线技术,技术含量并不高。而且相对于所谓的K线而言,减少了大量的线束及附件,简化了系统,降低了故障率,同时也节省了大量的布线空间,使得设计、制造、维护的难度大大减小。所以采用CAN总线系统,并不会增加多少成本,如果处理的好,还能够降低成本。



汽车内部的CAN总线,应该是使用双绞线,不大可能采用光纤。从成本考虑,光纤本身并不比铜缆贵,甚至比铜缆便宜,但光纤的接口器件很贵,连接起来也比较麻烦,综合起来看,采用光纤的方案,成本要高很多。当然光纤的优点也是非常明显的,就是信道容量大,传输速率高,距离远。



虽然光纤有抗电磁干扰强的优点,但它的另外一个缺点更致命----就是一旦断裂,修复困难。现在只能用熔接的方法修复,费时费力,还需要专用的熔接器;而使用铜缆的双绞线的连接,要容易得多,包好绝缘,就能使用,在应急的时候,甚至可以徒手操作。两者相比,优劣自现。



有人说,铜缆的绝缘在高温的情况下,容易老化,碎裂,从而引发故障。这的确是个弱点,但光纤也好不到哪儿去。光纤(尤其是多模光纤,汽车上不大可能使用单模光纤)也是一种塑料,也是怕高温的。同时,光纤的机械性能很差,必须包裹厚厚的护套。铠装的光纤只能提高机械强度,对于高温,也无能为力。况且,使用铜缆即使在绝缘老化的情况下,只要不短路,还能凑合用,而光纤在高温下特性会劣化,更经不起折腾。



CAN总线应用在汽车上,也并非完美无缺。CAN总线终归是一种总线技术,总线所连接的所有设备,其数据通信完全依赖于这条线路,一旦总线故障,所受的影响,比之每个设备都用单独的连线连接,要严重得多,可以说是一损俱损。而汽车的安全性,在所有的指标中,是最为敏感、最为重要的。这大概也就是CAN总线在汽车上的应用,没有一哄而起,而是逐步推进的主要原因吧。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多