现今汽车普及的网络技术主要有CAN、FlexRay、LIN、MOST和LVDS等,最为典型的是CAN总线技术。以上通信协议主要是由汽车行业联盟组织发起后推广的,承载着深厚的汽车工业色彩,车载网络技术对比见表2.1。
表2.1 车载网络技术对比
1)控制器域网(Controller Area Network,CAN)是使用最为广泛的汽车通信技术,可用于各类控制指令、交互数据的传输,传输带宽可达1Mbit/s。
2)LIN是一种低成本汽车通用串行总线,最大传输速度约20kbit/s,适用于对网络的带宽、性能或容错功能没有过高要求的应用,如车门、车窗和后视镜的控制等。
3)FlexRay技术带宽可达20Mbit/s,可支持多种拓扑形式,但成本相对较高,主要运用在中高端车线控系统,如线控转向、线控换档和制动器控制等。
4)MOST总线主要运用场景是多媒体流数据传输,以MOST150为例,其最大传输带宽可达150Mbit/s,但因为供应链体系相对单一,开发成本高,主要应用于中高端车载影音系统。
5)LVDS一种基于电气数字信号的通信技术,对线束要求较高,通常采用铜缆或双绞线作为高速数据的传输介质,主要用于数字视频传输,如全景系统屏幕和摄像头间的图像数据传输。
CAN总线是国际标准化的串行通信协议,是由博世公司开发的汽车专用总线标准技术,其相关技术最早被应用于武器电子设备系统的通信功能,主要负责传递车上控制数据。它定义了开放系统互连(OSI)网络模型的第1层和第2层功能,多个ECU可以通过由两根数据线组成的CAN总线进行数据信息交换,对插接器没有定义,可以借用ECU插接器的针脚,消息封装在最大数据字段大小为64位的帧中,传输速率最高可达1Mbit/s,长度可达40m,且节约线束成本,目前在车载网络中应用最为广泛。
CAN总线作为传统车载网络通信技术,有强功能性,可以满足大部分车内模块通信需求,在绝大多数汽车中仍旧是主流车载通信方式。由于其节点自动关闭功能以及优先级报文接发机制,CAN总线的特点总结如下:
1)传输介质为双绞线,传输速率可变,最高为1Mbit/s(40m),传输速率随距离增加而下降,受驱动能力限制,挂在总线上的节点数最多110个。
2)采用点对点、一点对多点及全局广播几种方式发送接收数据。
3)可实现全分布式多机系统,且无主、从机之分,每个节点均可主动发送报文,用此特点可方便地构成多机备份系统。
4)采用CSMA/CR非破坏性总线优先级仲裁技术,当两个报文同时向网络上发送信息时,优先级低的报文主动停止发送数据,而优先级高的报文可不受影响地继续发送信息。按报文类型分成不同的优先级,可以满足不同的实时要求。
5)支持4类报文帧:数据帧、远程帧、出错帧和超载帧。采用短帧结构,每帧有效字节数为8个。这样传输时间短,受干扰的概率低,且具有较好的检错效果。
6)采用循环冗余校验(Cyclic Redundancy Check,CRC)及其他检错措施,保证了极低的信息出错率。
7)节点具有自动关闭功能,当节点错误严重的情况下,则自动切断与总线的联系,这样可不影响总线正常工作。
有一些基于CAN总线的协议,都是在CAN的基础上进行发展的,包括TTCAN、CANopen、J1939等协议,它们有着不同的特性与应用场合。尽管CAN总线已经有30年的历史,但它仍广泛应用,并处于不断改进之中。
从2000年开始,一个由数家公司组成的ISO任务组定义了一种时间触发CAN报文传输的协议,即“时间触发通信的CAN(TTCAN)”,并已制定为ISO 11898-4。TTCAN是在高速CAN基础上发展起来的。它不仅兼容事件触发方式,还规定了一套时间触发消息机制,提高了CAN在车用环境下的实时通信性能。TTCAN不仅可实现闭环控制下支持报文的时间触发传输,而且可以实现基于CAN的X-by-Wire应用,因为CAN协议并未改变,所以在同一个物理层上既可以实现传输时间触发的报文,也可以实现传输事件触发的报文。
CANopen是一种架构在CAN上的高层通信协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线,其实现了OSI模型中的网络层及其以上各层的协议。CANopen标准包括寻址方案、数个小的通信子协议及由设备子协议所定义的应用层,CANopen支持网络管理、设备监控及节点间的通信,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言,数据链路层及物理层会用CAN协议来实现,但也可以用其他的通信协定(如EtherCAT)来实现CANopen的设备子协议。
SAE J1939也基于CAN总线的协议,可达到250kbit/s的通信速率,它描述了重型车辆现场总线的一种网络应用,包括CAN网络物理层定义、数据链路层定义、应用层定义、网络层定义、故障诊断和网络管理。在SAE J1939协议中,不仅指定了传输类型、报文结构及其分段、流量检查等,而且对报文内容也做了详细的定义。目前,J1939是在商用车辆、舰船、轨道机车、农业机械和大型发动机中应用最广泛的应用层协议。
面向媒体的系统传输(Media-Oriented System Transport,MOST)是一种用于多媒体数据传输的网络系统。车载多媒体影音娱乐系统工作时,为保证音质清晰、画面流畅,需要传输的数据量很大,对数据传输速率要求也很高。例如,仅仅是带有立体声的数字式电视系统,就需要约6Mbit/s的传输速率,而CAN总线的最高数据传输速率为1Mbit/s),不能满足这一要求。因此,需要用MOST总线传输视频和音频信号,CAN总线传输控制信号。
本地互联网(Local Interconnect Network,LIN)的定位是车身用的低速低成本总线,LIN总线所控制的控制单元一般都分布在距离较近的空间内(如车顶、仪表台、车门等处)。为了降低成本,LIN总线借用单片机系统传统的串口,其协议也以软件形式体现。为了避免复杂的仲裁协议,LIN采用主从方式,即总线的控制权归主控单元。只有当LIN主控制单元发送出带有相应识别码的信息标题后,从控单元对应的数据才会传输至LIN总线上。
由于CAN总线的传输速率有限,且基于CSMA/CR的竞争方式导致了信道利用率不高、传输确定性不强等问题,难以满足如X-by-Wire等应用场景对高带宽、强实时性通信的需求,FlexRay曾被认为将是CAN总线的替代标准。FlexRay的目标是应用于需要高通信带宽和决定性容错数据传输能力底盘控制、车身控制和动力总成控制等场合。
FlexRay使用一对屏蔽或不屏蔽的双绞线,每个通道有两根导线,采用不归零法(NonReturn to Zero,NRZ)进行编码,FLexRay可以使用双通道通信,第二个通道既可以发送与第一个通道相同的信息,以冗余来换取安全性,也可以发送与第一个通道不同的信息,来提高传输速率。在两个信道上的数据速率最大可达到10Mbit/s,总数据速率可达到20Mbit/s。FlexRay的拓扑是多样的,有总线线型、星形和混合型三大类,再结合单通道和双通道的使用,FlexRay的两个通道可相互独立实现,所以两个通道可采用不同的拓扑结构。
FlexRay用的是时分多址(Time Division Multiple Access,TDMA)和柔性时分多址(Flexible Time Division Multiple Access,FTDMA)两种方法。FlexRay将一个通信周期分为静态部分、动态部分、网络空闲时间。
1)静态部分使用TDMA方法,每个节点会均匀分配时间片,每个节点只有在属于自己的时间片里面才能发送消息,即使某个节点当前无消息可发,该时间片依然会保留(也就造成了一定的总线资源浪费)静态部分用于发送需要经常性发送的重要性高的数据。
2)在动态部分使用FTDMA方法,会轮流问询每个节点有没有消息要发,有就发,没有就跳过。动态部分用于发送使用频率不确定、相对不重要的数据。
FlexRay可以有效管理多重安全和舒适功能,适用于各类线控操作(X-by-Wire),可以在单信道高速动力传动、辅助驾驶和提高舒适性的汽车电子系统中应用。虽然FlexRay的功能很强大,但是复杂程度高、开放性不足、成本高制约了其发展。2006年,FlexRay首次应用于量产车,作为数据主干网用在BMW X5的主动悬架系统中,但2008年遇上席卷全球的金融危机,FlexRay协会在2009年年底解散,等到全球金融危机过去,以美国博通公司主推的车载以太网技术已经悄然崛起,业界已经把注意力转至车载以太网的研发和应用。至此,FlexRay陷入进退两难的尴尬境地。
FlexRay的分层结构如图2.4所示。
图2.4 FlexRay的分层结构
1.修订CAN总线的动因
自CAN总线被发明并在汽车中广泛应用的几十年中,车辆中电控系统的结构和数量都发生了深刻的变化。从结构来看,分布式控制系统确立,从数量来看,ECU的数量从几个增加到几十甚至上百个,CAN上传输的信号从数百个增加到数千个甚至上万个。数据流量的增加导致CAN总线上的总线负载越来越高,除了带宽需求不断增长之外,对确定性系统行为的需求不断增加,这推动了新总线系统的开发。因此,出于信息娱乐目的的MOST总线的带宽高达150Mbit/s;面向确定性通信的FlexRay总线提供10Mbit/s的带宽,适用于线控及自动驾驶辅助;而LIN被引入作为“传感器-执行器-区域”任务的低成本解决方案。这些新的定制总线系统覆盖了特定市场,尽管如此,CAN仍然是车辆中的主要总线系统。
CAN在报文传输的特定阶段,多个网络节点可能同时处于访问总线状态,在仲裁阶段的传输开始时可能就是这种情况,并且在消息末尾的确认字段中也是如此,这意味着一个位的传输时间不得短于其电平从总线一端的节点传播到另一端的节点并再次传播回来的时间。例如在长度为40m的CAN总线上,最大传输速率约为1 Mbit/s,以满足所需的一位传输时间,这一基础的物理限制,也成了CAN总线带宽限制的根本原因。
但是,仔细考察CAN总线协议,在CAN报文帧仲裁段和帧结束的应答段之间的部分,只允许一个发送节点访问总线,因此,在帧的这一部分中,对位时间的最小持续时间没有限制。据此,博世的工程师们提出了一个在两种不同的传输速率之间切换的设计理念,即在CAN帧开头的仲裁段和帧结尾处的应答段采用慢速传输,在其中间采用快速传输。
2.CAN FD发展简介
传统CAN总线最高只支持1Mbit/s的位速率和8个字节的单帧最高数据长度,这种技术约束限制了CAN总线的应用场景。为了与其他类型协议进行竞争,博世公司作为CAN总线的发明者,也在寻找一种具有更高带宽的新总线系统来替代CAN总线,以填补CAN与其他协议总线之间的带宽缺口。博世公司通过两种途径对CAN总线进行了改进:支持大于1Mbit/s的位速率和支持大于8个字节的数据净载荷。这个新协议名为“支持可变数据速率的CAN总线”(CAN with Flexible Data-Rate,CAN FD)。
CAN FD协议的设计目标是在增加CAN网络带宽的同时尽可能保留现有的软件和硬件,尤其是物理层,因此,需要改变的只是在CAN控制器中加入FD特性。当然,CAN FD协议控制器也能参与标准的CAN通信,因此CAN FD节点可以逐渐加入标准的CAN系统中,最终实现从CAN总线系统往CAN FD总线系统的过渡。
2011年,博世公司公开了白皮书(1.1版)。2012年,博世公司提出了CAN FD技术作为现有CAN网络中增加数据传输量的解决方案;同年,在第13届ICC大会上正式发布CAN FD,并正式向国际标准委员会提出国际标准授权申请(CAN FD)。2014年,第一款嵌入了非国际标准CAN FD模块的微控制器发布;同年,CAN FD改进了CRC部分。2015年,CAN FD被纳入国际标准ISO 11898-1,随后CiA601和CiA602(CAN in Automation,CiA)系列也相继发布,并提交给SAE作为J1939的底层协议。CiA601系列指南和建议填补了CAN FD的ISO标准与系统设计之间的空白,CiA602系列是CAN FD面向重型车辆的应用层协议。
3.CAN FD的通信机理
CAN FD继承了CAN总线的主要特性,支持CAN FD协议的节点能够完全兼容传统CAN协议,也就是说,CAN FD节点既可以收发CAN FD报文,也可以收发传统CAN报文。但是,只支持传统CAN协议的节点不能兼容CAN FD协议,也就是说,传统CAN节点只能收发传统CAN报文,不能收发CAN FD报文。在ISO七层模型中,CAN FD总线和CAN总线一样,拥有其中的物理层、数据链路层和应用层三层。
在物理层上,CAN FD总线的物理层协议与CAN2.0中的物理层协议完全相同。物理层处理比特位并且定义了信号如何发送,如何处理比特定时、比特位的译码和同步的类型。也就是说,在CAN FD总线协议中,物理层的驱动器和接收器的特性没有定义,这是为了能根据具体应用场景优化传送介质的总线信号。当然,在一个网络中,物理层对于所有节点来说必须一样,但在不同网络中物理层仍有自由选择的空间。
CAN FD总线协议的数据链路层分为逻辑链路控制(LLC)和介质访问控制(MAC)两个子层。逻辑链路控制子层对应于节点的主机控制器接口并且与信息过滤、过载通知、恢复管理有关,包括是否接收通过MAC子层接收到的信息、为数据传送和远程数据请求服务、为MAC子层提供传输的信息和提供恢复管理与过载通知的方法等功能。介质访问控制子层负责的是信息框架、仲裁、确认、错误检测和错误信号。它由一个被称为故障限制的管理实体监控,故障限制是一种用于区分短期干扰和永久故障的自我检查机制。介质访问控制子层是CAN FD协议的核心,其性质不是可自由修改的。依据ISO/OSI参考模式,CAN FD的分层结构如图2.5所示。
图2.5 CAN FD的分层结构
如图2.6所示,就像传统的CAN一样,CAN FD也有两种类型的数据帧格式:具有11位标识符的标准帧和具有29位标识符的扩展帧。这保证了CAN的附加协议(如CANopen和SAE J1939)也可以作为CAN FD的附加组件与一些适应性一起使用。
图2.6 CAN与CAN FD帧格式的对比
从图2.6可见,CAN和CAN FD的帧格式不同。帧开始(SOF)、标识符和标识符扩展位(IDE)保持不变。在CAN FD帧的末尾,确认位(ACK)、相应的分隔符(DEL)、帧结束(EOF)以及帧间休息场(ITM)与传统CAN帧一样。CAN FD没有为远程帧定义单独的格式,因此,CAN FD协议允许经典CAN远程帧请求CAN FD帧。由于CAN FD没有远程帧,因此RTR位不是必需的,取而代之的是RRS。
与传统CAN相比,CAN FD的修改发生在IDE位和确认位之间,CAN FD新增了FDF、BRS、ESI位。
1)FDF:表示是CAN报文还是CAN-FD报文。传统CAN帧的保留位r现在成为CAN FD格式的开关,如果是显性的0,则表示经典的CAN帧;如果是隐性值1,则表示CAN FD帧。
2)BRS(Bit Rate Switch):表示位速率转换。该位为显性0时,以正常的CAN FD总线速率传输(恒定速率),即波特率2等于波特率1,不会发生加速传输。该位为隐性1时,速率可变,则CAN FD帧的BRS至DEL部分将以较高的波特率2传输。对于一条总线上的所有CAN FD控制器,必须统一配置两种传输速率。从波特率1到波特率2的转换发生在BRS的采样点,从波特率2到波特率1的转换发生在确认位之前的CRC定界符采样点。为了使接收方在高传输速率的情况下与发送方完全同步,在其之前直接执行第二次硬同步。
3)ESI(Error State Indictor):表示发送节点错误状态,显性为错误激活状态,设置该位的目的是实现更透明的错误跟踪方式以及更简单的网络管理。
CAN FD控制器可以发送和接收传统的CAN帧和CAN FD帧,但传统CAN控制器在接收CAN FD帧时总是会对误差帧做出反应,这是因为在传统的CAN中,处于r位定义为显性0,该位置的隐性位被视为不符合协议的规则,传统CAN中将用错误帧进行回答,也就是说,传统CAN控制器既不能理解也不能容忍CAN FD帧。为了解决传统CAN和CAN FD的兼容性问题,芯片厂提出了一种解决方案,在传统CAN节点上采用CAN FD Shield模式的收发器,当收到CAN FD报文时,收发器会将其过滤掉,防止传统CAN节点发出错误帧,从而实现网络的兼容。
传统CAN总线中数据长度码(DLC)由4位组成,可以描述数据字段的9种可能的规定长度,即0~8字节。DLC的其余7个值(9~15)将用于CAN FD。但当DLC>8时,DLC与字节数之间的线性相关性被放弃。DLC数值与CAN和CAN FD数据字段长度之间的对应关系见表2.2。
表2.2 DLC数值与CAN和CAN FD数据字段长度之间的对应关系
与传统CAN相比,CAN FD帧中的误码概率增加,一方面是因为随着速率提高,波特率2的每比特时间较短,另一方面是因为数据字段中的比特数要多得多。为了不降低错误检出率,需要增加CAN FD帧中的冗余的字段来应对。因此,CAN FD增加了CRC的宽度。CRC宽度有两种:当传输数据为16字节或更少时,CRC为17位;当传输数据超过16个字节时,CRC为21位。而且CAN FD的CRC计算不仅要包括数据段的位,还包括来自SOF的Stuff Count和填充位,通过比较CRC的计算结果,可以判断接收节点是否能够正常接收。
在传统的CAN帧中,位填充从帧起始(SOF)到校验和(CRC)的结束添加,在每五个相同的位之后插入一个补码,这些填充位不计算到CRC校验中。使用CAN FD时,SOF之后也会按照传统CAN帧添加填充位,但该规则现在以数据字段结束,CAN FD的CRC字段本身也被位填充,且规则不同。
CAN FD在CRC场中增加了填充位计数器,记录填充位的个数并用格雷码表示,还增加了奇偶校验位,CRC字段总是以一个填充位(FSB)开始,在后面的每四位之后,无论它们是否相同,都会插入一个填充位,FSB固定为前一位的补码。
4.CAN FD的应用
自2012年博世公司在第13届ICC大会上发布、2015年提交国际标准化ISO 11898系列之后,CAN FD(CAN with Flexible Datarate)步入快速发展时期。
如图2.7所示,CAN FD的应用提高了数据传输速率,增加了总线传输信息的可靠性,弥补了CAN总线带宽和数据场长度的制约,因此在电动汽车和无人驾驶汽车等需要大量实时数据传输的场景中得到广泛应用。高级驾驶辅助系统和人机交互技术,复杂的系统与大量通信信息的存在使得汽车中的CAN节点向CAN FD升级。在应用过程中,由于CAN FD可以并且大多与标准CAN混用,原车的CAN节点逐渐升级为CAN FD节点,并且通过CAN shield技术,可避免标准CAN节点将FD报文识别为错误帧的情况。
在车载应用领域,已经有多家设备、工具厂商支持CAN FD总线协议。国外厂商以Vector为代表,它的工具体系完整地支持CAN FD的开发、测试、网络分析等全部功能,另外,其GL系列总线记录仪也已支持CAN FD协议。国内厂商如广州致远电子公司2009年加入CIA协会,其自主研发的ZDS2024Plus示波器是一款标配CAN FD协议解码的示波器。
图2.7 CAN FD的应用
从中长期来看,由于FlexRay和MOST的应用领域被以太网完全覆盖,因此FlexRay和MOST很可能被替换掉,只保留CAN和以太网。其中以太网工作在100M~1000Mbit/s之间,用于娱乐、ADAS、车联网等系统中;CAN/CAN FD工作在0.5M~5Mbit/s之间;而第三代CAN总线CAN XL将“连接”这两种本质不同的总线系统,并在协同通信方面起到决定性作用。而且CAN XL的传输速率可达10Mbit/s,填补了CAN FD和百兆车载以太网(100BASE-T1)之间的“鸿沟”。2020年的第17届国际CAN大会(iCC)上,CiA又推出了第三代CAN通信技术CAN XL。
考虑到车载网络系统中大约90%控制器节点的通信速率在10Mbit/s以下,因此10Mbit/s的通信速率可覆盖广泛的应用领域,从音频到雷达和超声波传感器,再到底盘控制均可采用,CAN XL和以太网10BASE-T1S在该领域存在竞争。
CAN XL是一种高度可扩展的通信技术,涉及比特率和数据字段的长度,物理层仍在开发中,目标是实现高达10Mbit/s以上的比特率。CAN XL针对面向区域的异构网络体系结构进行了优化,该方法以最优的长度满足未来车载网络的要求。CAN XL的几个核心期望特性如下:
1)有效负载长度:与以太网帧长度一样。
2)可靠性:等于或者优于CAN、CAN FD和10Mbit/s以太网的稳定性。
3)鲁棒性:与CAN FD一样好,甚至要优于10Mbit/s以太网。
4)波特率:在数据段的传输速率最大可达10Mbit/s。
5)兼容性:向后兼容CAN FD。
CAN XL是对CAN和CAN FD的进一步扩展,并且在很大程度上遵循相同的运行原理。CAN报文分为仲裁场和数据场,尽管CAN XL在仲裁场使用500kbit/s~1Mbit/s的低速率,但数据场的传输速率却可提升至2M~10Mbit/s,相对于CAN FD的可选速率切换功能,CAN XL强制执行速率切换,CAN XL的数据场支持1~2048B的可变长度。
此外,CAN XL总线访问仍旧采用CSMA/CD(载波侦听多路访问/冲突解决方案),通过位仲裁解决总线访问权限问题。CAN XL遵循严格的优先级概念,允许更重要的消息无延迟地传输。CAN XL仅支持11位标识符ID,不再使用29位标识符ID。
面向服务的通信通常以Ethernet和IP技术承载,应用程序基于数据和服务来实现,并不关心服务由谁提供,因此需要动态建立服务提供者(Provider)和服务消费者(Consumer)之间的连接。与此同时,能够实现变长数据结构序列化传输是面向服务通信的另一大优势。例如,用于感知融合计算的传感器数据是系统在运行时才产生的大量数据,这些数据无法静态映射满足应用需求,因此通信系统必须支持数据动态序列化。CAN XL的主要功能之一是数据场支持1~2048B的可变长度,在必要时,可将以太网帧打包为CAN XL消息,直接或间接通过CAN XL使用IP通信技术。