JasonWang's Blog

汽车网络演化-从CAN到以太网

字数统计: 3.6k阅读时长: 13 min
2020/11/06

汽车电子的发展伴随着技术迭代而不断进化,汽车网络总线从最开的CAN,CAN-FD,到后来的Flexray, MOST再到LIN,到Ethernet,在市场需求与技术发展双重合力之下,经过了不断的发展积累,到如今已经有进40年的历史。近几年,随着各大汽车公司,尤其是新能源汽车公司如特斯拉/蔚来/小鹏等在自动驾驶领域的大力投入,汽车网络开始向高带宽/低延时的以太网方向发展。在这篇文章我们就来对比看看各种汽车网络总线的工作原理以及使用场景。

CAN(Controller Area Network)

CAN最初是由博世(Bosch)于1985年开发出来的车内总线。在这之前,汽车厂商需要通过一条条线将各种汽车控制器连接起来,形成一个个点对点的连接网络。这也导致了增加了汽车本身的重量,增加了系统的复杂度与成本。

CAN作为一个串行总线,具有低成本,轻量化的优势,最高支持1Mb/s的速率,因此迅速被各大厂商采用,并于1993年被定为ISO国际化标准(ISO 11898).

下图是CAN报文的结构:

CAN frame format

  • SOF(Start of Frame): 帧开始标记位,一般为0
  • Arbitration ID: 11位的仲裁优先级,用于标识消息以及消息的优先级
  • IDE(Identifier Extension): 占1位,表示允许标准帧与扩展帧的差别
  • RTP(Remote Transmission Request): 1bit, 区分一个数据帧与远端帧(remote frame), 0表示数据帧,1表示远端帧
  • DLC(Data length code): 表示数据的长度
  • Data Field: 包含0~8字节的数据
  • CRC(Cyclic Redundancy Check):循环冗余检测码,用于检查数据错误
  • ACK: 接收端在收到数据后,发送一个ACK帧,发送端收到后确认发送成功,否则就要重发数据
  • EOF(End of Frame): 结束位

CAN是一个点对点的网络,对于CAN总线的访问没有一个仲裁节点用于控制各个节点的数据发送/接收。 所有节点在发送数据之前都要检查当前总线上是否有数据传输,如果多个节点尝试同时发送数据,拥有最高优先级的节点(仲裁ID值低)自动获取到总线的访问权限,而低优先级的节点则需要等到高优先级的节点发送完数据后再传输。由上述CAN报文的结构可以看到,CAN消息中并没有包含节点的地址,每个节点发送的消息都会广播到其他所有节点,接收端需要通过仲裁ID来判断是否接收某个数据报文。

由于每个CAN报文实际只有一个字节(8bit)的数据,因此传输速率实际受到了限制。为了应对日益出现的高速数据传输需求,比如诊断数据等,博世(Bosch)基于CAN扩展出了一个新的总线CAN-FD(Flexible Data-rate)协议, 于2012年发布并成为了国际标准(ISO 11898-1)。 CAN-FD将消息的长度扩展到最大支持64bit数据,从而提高了数据传输的速率。有关更多关于CAN-FD的信息可以参考:

FlexRay

FlexRay设计之初的目的在于提供更快,更可靠,更低延迟的ECU数据传输方法。随着汽车电子工业的发展,在2000年,宝马(BMW), 戴姆勒(Daimler)以及博世(Bosch)等厂商组成了FlexRay委员会,为了解决现有CAN总线上的一些缺陷创造一个新的总线协议,这就是FlexRay.:

  • 为了确保多个节点之间实现安全,实时实时的通讯,FlexRay中的每个节点都个共享相同的时间基准
  • FlexRay基于时间触发的消息机制,确保了安全相关的消息传输具有更低的时延
  • FlexRay通过双通道物理结构提供了更高的可靠性
  • FlexRay每个通道的最大理论速率能达到10Mb/s,是CAN总线的10倍

FlexRay支持多种网络拓扑结构(星形/树状/多种拓扑混合),网络中的每个节点不能同时发送消息,因此需要通过冲突避免(collision avoidance)的方法来避免传输冲突;与CAN通过优先级来仲裁传输的方法不同,FlexRay使用了TDMA(Time Division Multiple Access)的方法来控制各个节点传输数据的顺序,每个节点都遵照事先设定的时序来使用总线。

Flexray frame format

FlexRay的消息帧结构主要分为三部分:一个是帧头,一个是数据部分,最后一个是校验值。

  • 帧头的状态字(Status Bits): 占5位,每一位分别对应
    • 第一位保留用于后续使用
    • Payload Preamble Indicator(数据前导码标识): 区分static segment/dynamic segment
    • Null Frame Indicator: 表示消息未包含数据,数据位为空
    • Sync Frame Indicator: 时间同步帧标识
    • Startup Frame Indicator: 网络启动帧标识,只有被配置为启动(startup)的节点才能发送该消息
  • Frame ID: 帧ID,表示消息所在的时间槽(slot ID), 与消息中的Cycle一起作为消息的唯一识别码,类似于CAN消息中的冲裁ID
  • Length: 数据长度
  • Header CRC: 帧循环冗余校验值
  • Cycle: 帧传输的周期(占用的时间)
  • Payload: 消息体
  • CRC: 消息体对应的校验码

更多关于FlexRay的资料可以参考:

MOST

MOST(Media Oriented Serial Transport), 直译过来就是基于媒体的串行传输总线,从字面意思可以看到,MOST就是为了解决汽车上日益增加的诸如音频/视频等数据传输需求设计的。在上世纪90年代,高端车型逐渐出现了诸如导航,音频,显示等复杂的媒体功能,为了应对这种日益增长娱乐系统需求,Harman (哈曼), BMW, Daimler, and Oasis Silicon Systems (即现在的Microchip Technology)组成了一个专门的合作团队,开发下一代汽车总线。目前MOST已广泛被BMW,Daimler,Volkswagen(大众),Volvo等欧洲豪华品牌采用,日美等汽车厂商则采用了基于UTP(Unshielded Twisted Pair)的MOST总线(MOST50).

想比较CAN与FlexRay等汽车总线,MOST具有如下特点:

  • 内置专门的通道用于音频/视频数据传输,更适合影音娱乐应用
  • 最高可达150Mb/s传输速率,远高于CAN/LIN/FlexRay
  • MOST150支持MEP(Ethernet Packet Channel)用于IP数据的传输
  • 支持光纤传输,可以消除电磁干扰(EMC, Electromagnetic Compatiblitity) ,并天然具备电气隔离能力

MOST一般采用环形拓扑网络结构, 有一个主节点(timing master)用于控制所有同步通讯(synchronous communication), 同步帧(synchronous frame)会周期性(频率为48kHz)的从主控节点发送到网络中的各个节点,其他从节点在收到属于同步帧后主动把数据放到该同步帧的后面,继续发送到下一个节点。

对MOST协议来说,每个数据帧都划分为不同的通道(Channels), 每个通道都严格按照时间顺序均匀的传输数据,比如在同步帧中就包含了相同大小的音频数据,这样接收端拿到数据后就可以重新合成一个实时的音频流。下图是MOST150总线的一个数据帧的结构:

MOST150 frame format

  • CC(Control Channel): 控制通道用于协调网络的数据传输以及交换各个节点的状态信息
  • SYN/ISOC CH: 同步数据通道,该通道会动态的划分为其他通道以便于同时传输音频/视频/立体声等数据
  • ASYNC: 异步通道用于传输,用于传输事件通知/数据报文,新的协议已经被MEP通道取代
  • MEP(MOST Ethernet Packets): 在MOST150协议中使用,专门用于传输IP数据包,数据长度类似于以太网数据帧

更多关于MOST总线相关的信息可以参考官网文档: https://www.mostcooperation.com/technology/most-network/

LIN

在1990年代,BMW,Volvo,Audio等一众厂商发现,虽然CAN极大的改善了整车的布线复杂度与成本,但是在某些场景下还是过度的使用了,比如控制车窗/座椅,并不需要1Mb/s这样的速率以及专门的控制器,因此需要一个适合于低速/低成本场景下的布线方法。这就是LIN(Local Interconnect Network)的由来:

  • LIN采用Master/Slave的网络结构,一个Master节点最多可以控制15个(包括自身则是16个)Slave节点
  • 使用单一连接线,提供最高20kb/s的传输速率
  • 无需专门的控制器(MicroControllers), 实现更为简单

LIN网络数据的传输都是有Master节点来控制,主节点内置了一个调度表,用于控制何时传输哪个ID的消息。消息头在主节点产生后,对应ID的从节点收到该消息头就把数据放到消息的对应位置,然后接收节点通过检查消息帧的ID值来选择发送还是接收数据。下图是LIN消息帧的构成,主要包括消息头与响应:

LIN frame format

  • Break: 帧的开始位,至少为11个连续0,最新的标准使用13个连续位0
  • SYNC: 为固定值0x55, 交替的0/1信号用于从节点与主节点传输同步
  • ID: 包含6为ID和2位奇偶校验位,每个节点都通过该值来确定是发送数据还是接收数据
  • Payload: 8字节数据
  • CS(Checksum): 数据校验值

有关LIN的更多信息可以参考:

Ethernet

相比较于上述几种汽车网络总线,Ethernet(以太网)可谓后起之秀。实际上,早在1970年代,以太网就随着互联网的诞生一起出现了,其被广泛用于各种终端设备的网络互联,40多年的经验表明以太网具备了很高的可靠性。但为何,持到最近这几年才真正应用到汽车电子领域,并成为一个有望全面取代CAN/LIN/MOST这些总线的绝杀器了? 主要还是前期以太网在汽车上使用还有几个技术难题没有得到解决,比如电磁干扰,布线成本。2011年博通(Broadcom)公布了一项针对汽车以太网的解决方案BroadR-Reach,汽车以太网(Automative Ethernet)随之遍地开花。目前,NXP,Broadcast,Marvell等汽车电子厂商都有AE相关的产品。

与CAN,MOST等总线相比,AE主要有几大特性:

  • 多家厂商支持,产品类别更为丰富,技术体系更为开放完善
  • 广泛应用于局域网,基于TCP/IP协议,能够传输各种音视频数据,是作为汽车中枢网络的节点连接的理想选择
  • 基于UTP双绞线,布线成本低以太网双绞线;基于差分信号,可以较少外界电磁干扰(Electromagnetic interference, EMI)

经典以太网都是通过共享介质的方式进行互联,因此需要使用诸如CSMA/CD(Carrier Sense Muliptile Access with Collission Detection)的冲突监测技术来避免传输出错,而汽车以太网则通过点对点的连接实现了全双工通讯(full-duplex),即数据可以同时接收/发送,传输速率可到100Mb/s,下图是一个网络连接拓扑图:

AE network topology

通过网关,节点之间都是点对点连接,从Port1发送的数据只会发送给Port2,同样从Port0发送的数据不会发送给Port3,因此实现了全双工的通讯。最后来看一看以太网的帧结构:

Ethernet Frame format

  • Preamble: 前导码,交替1/0信号,用于同步传输与发送
  • SOF(Start Of Frame Delimiter): 用于标识帧的开始,分开前导码与帧数据
  • 目标/源地址: SOF之后分别是6个字节的目标MAC/源MAC地址
  • 802.3Q(VLAN/Priority): VLAN标签,在汽车以太网中用于AVB(Audio/Video Bridge)时用于标识包的优先级
  • TYPE: 以太网协议类型,参考EthernetType
  • Data: 数据,最长可以到1500字节(有网络的MTU设置有关)
  • FCS(Frame Checksum Sequence): 32位的CRC码

目前车载以太网多用于仪表显示/自动驾驶等需要高速数据传输的场景。

总结

车载以太网的出现到目前已经超过十年时间,如今已经成为了汽车电子电器架构中不可缺少的一部分。随着智能座舱与域控制器的方案逐渐落地,汽车电气总线从最初的CANCAN-FD,再到MOST,到Ethernet,到未来很可能由Ethernet完成大统一的局面,而传统的CAN/LIN等总线可能只是用于网络末端的信号传输。最后,我们来对比下各个总线的优缺点:

名称 优点 缺点
CAN-FD 向下兼容CAN网络,成本低,较高的传输速率,最高可到10Mbps 速率有限,带宽为所有传输业务共享
LIN 布线成本低,网络结构简单 速率低,无法在高速业务场景下使用
MOST 传输速率搞,最高可到150Mbps 线束成本高,环状网络结构,共享式链路,无法兼容外部设备
FlexRay 实时性高,较高的容错性,速率可到10Mbps 带宽有限,扩展性差
Ethernet 速率高,最高可到1Gbps,开放协议,较好的生态与可扩展性 需要修改物理层以适应车辆环境

参考资料

原文作者:Jason Wang

更新日期:2023-08-30, 10:49:42

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG
  1. 1. CAN(Controller Area Network)
  2. 2. FlexRay
  3. 3. MOST
  4. 4. LIN
  5. 5. Ethernet
  6. 6. 总结
  7. 7. 参考资料