CAN总线快速了解
这是目前工作中遇到的一些知识点搜集整理。
一、车载网络
随着汽车工业的飞速发展,在我们的驾驶场景中,越来越多原本需要手动操作的装备被电动化设备所取代。
比如,最开始只能传达车速和转速的机械仪表,变成可以传递各种信息的数字仪表屏幕;现代汽车驾舱中各种电子辅助和娱乐设备也在打打提高驾驶体验。
而在这背后,其实是一套庞大且复杂的网络系统,在接收与分析我们的操作指令。并通过电子信息传达指令到终端的车载电子设备,最终反馈到我们眼前的,就是各种自动化操作。这种网络系统,就被称作车载网络。
二、CAN 控制器局域网
CAN的全程叫Controller Area Network
,也就是控制器局域网。
说到局域网,首先想起的还是电脑局域网。电脑的局域网,就是几台电脑连在一起,即使不能真的上万维网,也可以形成一个局域性的封闭型网络,相互之间可以传递信息。
而在汽车中也有一个个小小的微型电脑,统称为电子控制器
,简称ECU,来操控我们能看到的所有电子设备,车灯、仪表等,或者驾驶辅助功能。
所以,车载电子系统就是一个连接所有ECU的车载局域网。车载网络连接着车内的所有ECU,负责彼此间的信息传递。比如传递表达车速的信号,就会被仪表以及一些安全驾驶相关的ECU所接收。
常见的车载网络分别有,LIN、CAN 、FlexRay、MOST、Ethernet五种,最为普遍的就是CAN。
三、CAN 总线网络
CAN网络由博世公司在1986年发布。1991年,奔驰S级W140成为首辆搭载CAN网络的车型。
那么CAN既然是网络,而网络通常有多种分别类型,比如:点对点网络、总线拓扑、环状、星状、网状拓扑、混合式拓扑等。
实际上,CAN是一种总线网络 。
1. 总线网络特征
总线网络特征,就是一个信号可以被所有连接在总线上的节点所接收。
所以,对于车载CAN网络来说:
- 所有连接在总线上的ECU可以接收任何一个ECU发来的信号。
- CAN总线不存在主从关系,也是就说所有的ECU都可以进行收发信息的工作。
2. 基于内容的总线网络
CAN网络又不同于以太网或者IP网络,其各个节点没有网络地址,不了解数据包是由哪个ECU发出来的,而是通过各个CAN封包中的CANID来识别内容。
根据OSI模型,CAN属于链路层协议,包含了运载控制信息的报头,以及运载具体数据的报文。
报头中,有标识消息内容的CANID,ECU可以通过CANID来判断消息的内容种类。比如,0x4E0 可以表达车速,0x100可以是刹车指令等等。
CANID 一般又被分为车辆控制和诊断信息2种。
通常,车辆控制的CANID分布在0x000~0x6FF
之间。而诊断信息分布在0x700~0x7FF
之间。
由于多条消息可能同时出现在总线上,CAN根据 ID 大小制定了优先级,ID越小,优先级越高
。从而保障了重要信息,如车辆控制信号的优先传输。
3. 高速CAN与低速CAN
在具体应用中的CAN网络,又可以分为传输速度可以达500kbps
的高速CAN
,以及125kbps
的低速容错型CAN
。
数据包以帧为单位Frame,一帧可以运载最大8字节的数据。因为基本都汽车电子系统的k控制信号其实数值范围并不大,所以8字节的数据包,对于基本的控制系统是完全足够的。
四、CAN的优点
基于多种特征,CAN确定了其在车载网络中的地位。
- 成本低、结构简单,稳定性更好。
- 其无地址分配以及总线网络的特性,使得CAN本身具有很好的可扩展性。
尤其是可扩展性,非常满足汽车维护以及制造生产线上的需求。
假如使用以太网的网络协议,每添加一个新的ECU都要对其进行地址分配,也要对路由表进行更新,需要厂商对相应的ECU进行软件设置和配置更新。
再者,每一代车型的生产线都是独特且要维持几年的运作,对车载网络进行更改,等于更改了电子电气架构,产线设备则需要调整,所以这两方便的成本都不是厂商希望承受的。
而CAN作为一个不基于地址且没有主从关系的总线网络,添加新的节点ECU,不需要进行任何的软件配置更新,而作为总线上的网络节点,只需要连接到总线上,不需要像其他点对点网络要连接网线到每个节点,大大减少了产线调整的程度。
五、CAN的缺陷
首先,其有限的传输速度以及运载数据量已经逐渐不适应今天智能化趋势下的部分功能。尽管理论上CAN支持1Mbps的通信速度,但实际应用上多为125到500kbps。车载以太网,正逐渐开始取代部分的CAN总线。
另外,其总线的特质,意味着任何一处损害都会造成网络瘫痪。而其实际应用上,也有远低于理论值得运载负荷和节点数量的限制,因此,绝大多数的厂商都开始对CAN网络进行分段划分。
还有最关键的一点,CAN网络出现的时候还没人关注汽车的网络安全。其总线特质使得黑客只要劫持任何一个ECU都可以入侵CAN总线并向其他ECU发送伪造信息。进而因为CAN的无地址特征,节点并不了解消息的放送源,即使黑客入侵了一个与车辆行驶毫无关系的娱乐系统,也可以伪造操控信息劫持车辆操控。
而CAN仅有的8字节数据运载量并不足以支撑任何成熟的消息验证码,以认证其CAN数据的完整性。
CANFD
2012年博世公司发布了CANFD
,其不仅大幅提升了通讯速度,也将数据量从8字节升级到了64字节。不仅解决了运载数据量本身的问题,也为添加验证数据有没有被篡改的消息验证码提供了足够的空间。
但是距离CANFD取代CAN,还有很长的路要走,甚至对一些数据量要求不高的低运算ECU
,厂商根本不愿意更换CANFD
。除了需求本身之外,对既有的网络架构甚至是单体ECU的更换,也是非常大的成本。
即使到了今天,智能汽车越来越多,连接到终端ECU的网络依然是以CAN为主。而 CANFD 则更多的以连接各 CAN 子网段间的桥梁而出现。