综合技术
直播中

李萍

7年用户 1412经验值
私信 关注
[问答]

详解汽车CAN总线


作者:Xiaomin

概述


CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而广泛应用于工业自动化、船舶、医疗等其它领域。
相比于其它网络类型,如局域网(LAN, Local Area Network)、广域网(WAN, Wide Area Network)和个人网(PAN, Personal Area Network)等,CAN 更加适合应用于现场控制领域,因此得名。
CAN总线是一种多主控(Multi-Master)的总线系统,它不同于USB或以太网等传统总线系统是在总线控制器的协调下,实现A节点到B节点大量数据的传输,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此比较适合传输诸如控制、温度、转速等短消息。
CAN起初由BOSCH提出,后经ISO组织确认为国际标准,根据特性差异又分不同子标准。CAN国际标准只涉及到 OSI (开放式通信系统参考模型 )的物理层和数据链路层。上层协议是在CAN标准基础上定义的应用层,市场上有不同的应用层标准。



回帖(5)

王若峰

2019-7-26 11:29:24
发展历史




  • 1983年,BOSCH开始着手开发CAN总线;
  • 1986年,在SAE会议上,CAN总线正式发布;
  • 1987年,Intel和Philips推出第一款CAN控制器芯片;
  • 1991年,奔驰 500E 是世界上第一款基于CAN总线系统的量产车型;
  • 1991年,Bosch发布CAN 2.0标准,分 CAN 2.0A (11位标识符)和 CAN 2.0B (29位标识符);
  • 1993年,ISO发布CAN总线标准(ISO 11898),随后该标准主要有三部分:



    • ISO 11898-1:数据链路层协议
    • ISO 11898-2:高速CAN总线物理层协议
    • ISO 11898-3:低速CAN总线物理层协议


注意:ISO 11898-2和ISO 11898-3物理层协议不属于 BOSCH CAN 2.0标准。


  • 2012年,BOSCH发布 CAN FD 1.0 标准(CAN with Flexible Data-Rate),CAN FD定义了在仲裁后确使用不同的数据帧结构,从而达到最高 12Mbps 数据传输速率。CAN FD与CAN 2.0协议兼容,可以与传统的CAN 2.0设备共存于同样的网络

举报

周炳胤

2019-7-26 11:29:50
标准化


CAN标准分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。CAN底层标准主要是 ISO 11898 系列的国际标准,也就是说不同厂商在CAN总线的物理层和数据链路层定义基本相同;而上层标准,涉及到例如流控制、设备寻址和大数据块传输控制等,不同应用领域或制造商会有不同的做法,没有统一的国际标准。

底层标准
CAN底层标准涵盖OSI模型中的物理层和数据链路层,底层标准包括:


  • 1983年,BOSCH开始着手开发CAN总线;
  • 1986年,在SAE会议上,CAN总线正式发布;
  • 1987年,Intel和Philips推出第一款CAN控制器芯片;
  • 1991年,奔驰 500E 是世界上第一款基于CAN总线系统的量产车型;
  • 1991年,Bosch发布CAN 2.0标准,分 CAN 2.0A (11位标识符)和 CAN 2.0B (29位标识符);
  • 1993年,ISO发布CAN总线标准(ISO 11898),随后该标准主要有三部分:



    • ISO 11898-1:数据链路层协议
    • ISO 11898-2:高速CAN总线物理层协议
    • ISO 11898-3:低速CAN总线物理层协议


注意:ISO 11898-2和ISO 11898-3物理层协议不属于 BOSCH CAN 2.0标准。


  • 2012年,BOSCH发布 CAN FD 1.0 标准(CAN with Flexible Data-Rate),CAN FD定义了在仲裁后确使用不同的数据帧结构,从而达到最高 12Mbps 数据传输速率。CAN FD与CAN 2.0协议兼容,可以与传统的CAN 2.0设备共存于同样的网络


CAN总线底层标准与ISO/OSI模型的对应关系,如图1所示。对于媒体专用接口(Medium Dependent Interface, MDI),没有统一的国际标准。CiA DS-102 (CiA: CAN in Automation )仅定义使用专用连接器(DB9),并对PIN定义作出一定规范。


图1. CAN总线标准

上层标准
虽然底层标准相同,不同应用领域和组织会制定不同的上层标准。有的厂商开发并推广其应用层标准,在某些领域得以广泛应用。对于汽车行业来说,几乎每家厂商都有自己的CAN上层标准。比较流行的有工业自动化领域 CiACANopenRockwellDeviceNet;嵌入式控制领域 KvaserCAN Kingdom;智能设备控制 HoneywellSDS;汽车诊断 ISO 14229 定义的 UDS,和中重型汽车CAN总线标准 SAE J1939 。如表1示。


表1. CAN上层标准举例

总线特点




  • 符合OSI开放式通信系统参考模型;
  • 两线式总线结构,电气信号为差分式;
  • 多主控制。在总线空闲时,所有的单元都可开始发送消息,最先访问总线的单元可获得发送权;多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权;
  • 消息报文不包含源地址或者目标地址,仅通过标识符表明消息功能和优先级;
  • 基于固定消息格式的广播式总线系统,短帧结构;
  • 事件触发型。只有当有消息要发送时,节点才向总线上广播消息;
  • 可以通过发送远程帧请求其它节点发送数据;
  • 消息数据长度 0~8 Byte;
  • 错误检测功能。所有节点均可检测错误,检测处错误的单元会立即通知其它所有单元;
  • 发送消息出错后,节点会自动重发;
  • 故障限制。节点控制器可以判断错误是暂时的数据错误还是持续性错误,当总线上发生持续数据错误时,控制器可将节点从总线上隔离;
  • 通信介质可采用双绞线、同轴电缆和光导纤维,一般使用最便宜的双绞线;
  • 理论上,CAN总线用单根信号线就可以通信,但还是配备了第二根导线,第二根导线与第一根导线信号为差分关系,可以有效抑制电磁干扰;
  • 在40米线缆条件下,最高数据传输速率 1Mbps;
  • 总线上可同时连接多个节点,可连接节点总数理论上是没有限制的,但实际可连接节点数受总线上时间延迟及电气负载的限制;
  • 未定义标准连接器,但经常用9脚 DSUB

举报

杨海清

2019-7-26 11:30:08
应用


在当今汽车应用领域,车内电控单元(Electrical Control Unit, ECU)可能多达 70 个,除了引擎控制单元(Engine Control Unit, ECU )外,还存在传动控制、安全气囊、ABS、巡航控制、EPS、音响系统、门窗控制和电池管理等模块,虽然某些模块是单一的子系统,但是模块之间的互连依然非常重要。例如,有的子系统需要控制执行器和接收传感器反馈,CAN总线可以满足这些子系统数据传输的需求。汽车内子模块的总线互连架构使得软件可以更轻易地实现安全、经济和便利等新特性,相比传统汽车网络架构中模块单元直接连接更加经济。 CAN总线实现汽车内互连系统由传统的点对点互连向总线式系统的进化,大大降低汽车内电子系统布线的复杂度,如图2所示。
背景:随着电气化和智能化,汽车上的电子单元越来越多,电控单元组网需求也日渐迫切!
福特Fusion汽车 @2013
-70个ECU单元
-75个传感器
-150个激励器
自动驾驶汽车 @2030  -Prediction
-120个ECU单元
-100个传感器
-200个激励器


图2. 传统网络结构 VS 总线式结构

VW 的定义(SSP 269)中,根据应用范围将车内CAN总线分为三类:


  • Convenience CAN /舒适CAN网络,主要控制车门窗、空调等设备,最高传输速度100 kbps
  • Powertrain CAN /动力CAN网络,主要控制动力相关设备,如发动机、制动、ABS等,最高传输速度500 kbps
  • Infotainment CAN /信息娱乐CAN网络,主要控制收音机、电话和导航等设备,最高传输速度100 kbps


根据数据传输速度不同CAN总线分两类:高速CAN(ISO 11898-2)和低速CAN(ISO 11898-3)。
高速CAN(按BOSCH说法,也叫CAN-C),数据速率在 125kbps ~ 1Mbps,应用在实时性要求高的节点,如引擎管理单元、电子传动控制、ESP和仪表盘等;低速CAN(CAN-B),数据速率在 5kbps ~ 125kbps,应用在实时性要求低的节点,主要在舒适和娱乐领域,如空调控制、座椅调节、灯光、视镜调整等,这些节点对实时性要求不高,而且分布较为分散,线缆较易收到损坏,低速CAN的传输速度即可满足要求,而且单根线缆也可以工作,很好地适应了以上需求。不同速度类型的CAN总线设备不能直接连在同一路总线上,它们之间需要通过网关隔离。
CAN总线在汽车诊断领域的应用也非常广泛,ECU直接挂载在总线上,可以很快地获取诊断所需的信息。传统的汽车诊断接口(如KWP2000)应用逐渐减少。
举报

吴纯英

2019-7-26 11:30:18
局限性




  • 由于CAN总线仲裁的特点,即使往总线上周期性发送消息,也不能保证节点可以确定(周期) 地收到消息,CAN不适合对时间特别敏感的应用;
  • 最高传输速率只有 1Mbps ,对于汽车自动驾驶应用的数据传输,或者视频音频传输带宽不足。为解决这方面的需求,CAN FD 速度有所上升,另外还有 MOSTLVDS以太网等;
  • 对于简单的应用,高成本的CAN总线虽然可靠性很高,但有点浪费。LIN 总线相比CAN具有成本优势,更适合应用于车窗座椅空调等设备


威廉希尔官方网站 基础


硬件拓扑
连接在CAN总线上的设备叫做节点设备(CAN Node),CAN网络的拓扑一般为线型。线束最常用为非屏蔽双绞线(UTP),线上传输为对称的电平信号(差分)。图3示为CAN总线网络示意图,节点主要包括Host、控制器收发器三部分。Host常集成有CAN控制器,CAN控制器负责处理协议相关功能,以减轻Host的负担。CAN收发器将控制器连接到传输媒介。通常控制器和总线收发器通过光耦或磁耦隔离,这样即使总线上过压,损坏收发器,控制器和Host设备也可以得到保护。


图3. CAN总线节点示意图

高速CAN总线最高信号传输速率为1Mbps,支持最长距离 40mISO 11898-2 规定要求在高速CAN总线的两端安装端接电阻(RL)以消除反射,而低速CAN最高速度只有 125Kbps,因此 ISO 11898-3 没有要求端接。ISO 11898 规定的CAN总线上最多 32 个节点。实际应用中要考虑到CAN总线收发器的性能,以及工作的CAN网络是高速CAN还是低速CAN。在传输距离方面,由于距离越大,信号时延也越大,为确保消息的正确采样,总线上的信号速率相应也得下降,表2列出推荐的信号速率与距离的关系。


表2. CAN总线长度与信号速率关系(推荐)

收发器
CAN收发器包括 CANHCANL 两根信号,CANH和CANL信号采用差分电平,这样可以取得更好的电磁兼容效果。CAN总线物理传输媒介只需要两根线。
前面的标准部分有介绍,CAN总线分高速CAN和低速CAN,收发器因之也分为高速CAN收发器(1Mbps)和低速CAN收发器(125Kbps)。低速CAN也叫 Fault Tolerant CAN ,指的是即使总线上一根线失效,总线依然可以通信。图4示例高速CAN收发器的基本威廉希尔官方网站 结构。当两个晶体管都关断时,CANH和CANL上电压相同,且都为 0.5*VCC ;而当两个晶体管都打开时,CANH 和 CANL 上即存在一定的压差,且压差与负载电阻值相关。ISO 11898-2 要求此时 CANH 和 CANL 压差在 2V 左右。
CAN收发器的特性包括非常低的电磁辐射和很强的抗击共模噪声的能力。另外,CAN收发器可以提供高达 8KV 的ESD保护,在威廉希尔官方网站 设计中可以在收发器附近增加共模电感以进一步降低电磁辐射(图5)。


图4. CAN总线收发器(MCP2551)


图5. 共模电感降低辐射

信号电平
高速CAN和低速CAN总线在物理层信号电平上定义有所不同。图6和图7表示高速和低速CAN总线上信号电平与总线逻辑的对应关系。
高速CAN,定义 CANH 和 CANL 电压相同(CANH = CANL = 2.5V)时为逻辑“1”,CANH和CANL 电压相差 2V(CANH = 3.5V, CANL = 1.5V)时为逻辑“0”。高速CAN收发器在共模电压范围内(-12V ~ 12V),将CANH和CANL电压相差大于 0.9V 解释为显性状态(Dominant),而将CANH和CANL电压相差小于 0.5V 解释为为隐性状态(Recessive)。收发器内部有迟滞威廉希尔官方网站 可以降低干扰。
低速CAN,定义CANH和CANL电压相差 5V (CANH = 0V, CANL = 5V)时为逻辑“1”,相差 2.2V (CANH = 3.6V, CANL = 1.4V)时为逻辑“0”。

在CAN总线上,逻辑“0”和“1”之间显著的电压差是总线可靠通信的保证。参照上面的描述,CAN总线上两种电平状态分别为:


  • 显性(Dominant ): 0
  • 隐性(Recessive ): 1


CAN总线的信号电平具有线与特性,即显性电平(0)总是会掩盖隐性电平(1)。如果不同节点同时发送显性和隐性电平,总线上表现出显性电平(0),只有在总线上所有节点发送的都是隐性电平(1)时,总线才表现为隐性。线与特性是CAN总线仲裁的威廉希尔官方网站 基础。详细仲裁过程见下文“仲裁机制”部分。


图6. 高速CAN信号电平( ISO 11898-2)


图7. 低速CAN信号电平( ISO 11898-3)

连接器
在前文有提到,业界只规定了9 Pin D-Sub 类型的CAN总线连接器,其信号定义如图8所示。


图8. CAN 9 Pin D-Sub引脚定义

三种CAN标准物理层比较
除了上文介绍的高速CAN和低速CAN外,还有标准定义另外一种CAN物理层结构,即 Single Wire CAN。单线CAN可以减少一根传输线,但是要求节点间有良好的共地特性(相当于第二根信号线)。单线CAN的信号抗干扰能力相对较弱,在设计中需要提高信号幅度以增加信噪比,如此又会让它自身的辐射能力增加,因此必须降低其信号传输速率以达到电磁兼容的要求。综上,单线CAN仅适合应用在低速的车身电子单元、舒适及娱乐控制领域。低速CAN总线由于信号速度不高,在一根信号线失灵的情况下,仍可工作于单线模式。
三种CAN总线物理层的对比如表3列出。总线连接拓扑图如图9,对于端接,高速CAN端接是在总线两端,而低速CAN和单线CAN的端接都是在各节点位置。


表3. 三种CAN物理层标准比较



图9. 三种CAN总线物理层的比较

通信原理


Multi-Master
安全敏感的应用,比如汽车动力,对通信系统的可靠性要求很高。将总线工作正常与否归结到单一节点是极其危险的,比较合理的方案是对总线接入的去中心化,亦即每个节点都有接入总线的能力。这也是CAN总线采用多主控(Multi-Master)线性拓扑结构的原因。在CAN总线上,每个节点都有往总线上发送消息的能力,而且消息的发送不必遵从任何预先设定的时序,通信是事件驱动的。只有当有新的信息传递时,CAN总线才处于忙的状态,这使得节点接入总线速度非常快。CAN总线理论最高数据传输速率为1Mbps,对于异步事件反应迅速,基本上对于毫秒级的实时应用没有任何问题。

寻址机制
不同于其它类型的总线,CAN总线不设定节点的地址,而是通过消息的标识符(Identifier)来区别消息。CAN总线消息是广播式的,也就是说在同一时刻所有节点都检测到同样的电平信号。接受节点通过识别消息中的标识符,与该节点预设的过滤规则对比,如果满足规则就接收这条消息,发送应答,否则就忽略这条消息,关于这部分介绍见下文“条件接收”部分。这种机制虽然会增加消息帧的复杂度(增加标识符),但是节点在此情况下可以无须了解其它节点的状况,而相互间独立工作,在总线上增加节点时仅须关注消息类型,而非系统上其它节点的状况。这种以消息标识符寻址的方式,让在总线上增加节点变得更加灵活。

CSMA/CD+AMP
CAN总线通信原理可简单描述为多路载波侦听+基于消息优先级的冲突检测和仲裁机制(CSMA/CD+AMP),CSMA(Carrier Sense Multiple Access )指的所有节点必须都等到总线处于空闲状态时才能往总线上发送消息;CD+AMP(Collision Detection + Arbitration on Message Priority)指的是如果多个节点往总线上发送消息时,具备最高优先级(标识符最小)的消息获得总线占有权。

帧分类


CAN总线定义四种帧类型,分别为数据帧、远程帧、错误帧过载帧。数据帧就是总线上传输用户数据的帧,其最高有效载荷是 8 Byte,除了有效载荷外,数据帧还包括必要的帧头帧位部分以执行CAN标准通信,比如消息标识符(Identifier)、数据长度代码、校验信息等。远程帧是用来向总线上其它节点请求数据的帧,它的帧结构与数据帧相似,只不过没有有效载荷部分;错误帧是表示通信出错的帧。数据帧和远程帧有标准格式和扩展格式两种格式。标准格式有 11 位的标识符 , 扩展格式有 29 位标识符。

各种帧的用途分别为:


  • 数据帧:用于发送单元向接收单元传送数据的帧;
  • 远程帧:用于接收单元向具有相同标识符的发送单元请求数据的帧;
  • 错误帧:用于当检测出错误时向其它单元通知错误的帧;
  • 过载帧:用于接收单元通知其尚未做好接收准备的帧


数据帧
数据帧的帧结构如图10所示,图中示例标准数据帧(Standard)和扩展数据帧(Extended)两种格式。各字段定义及长度分别为:


  • SOF:表示数据帧开始;(1 bit)
  • Identifier:标准格式11 bit,扩展格式29 bit包括Base Identifier(11 bit)和Extended Identifier(18 bit),该区段标识数据帧的优先级,数值越小,优先级越高;
  • RTR:远程传输请求位,0时表示为数据帧,1表示为远程帧,也就是说RTR=1时,消息帧的Data Field为空;(1 bit)
  • IDE: 标识符扩展位,0时表示为标准格式,1表示为扩展格式;(1 bit)
  • DLC:数据长度代码,0~8表示数据长度为0~8 Byte;(4 bit)
  • Data Field:数据域;(0~8 Byte)
  • CRC Sequence:校验域,校验算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1;(15 bit)
  • DEL:校验域和应答域的隐性界定符;(1 bit)
  • ACK:应答,确认数据是否正常接收,所谓正常接收是指不含填充错误、格式错误、 CRC 错误。发送节点将此位为1,接收节点正常接收数据后将此位置为0;(1 bit)
  • SRR:替代远程请求位,在扩展格式中占位用,必须为1;(1 bit)
  • EOF:连续7个隐性位(1)表示帧结束;(7 bit)




  • ITM:帧间空间,Intermission (ITM),又称Interframe Space (IFS),连续3个隐性位,但它不属于数据帧。帧间空间是用于将数据帧和远程帧与前面的帧分离开来的帧。数据帧和远程帧可通过插入帧间空间将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间空间。



图10. CAN标准格式和扩展格式的数据帧/远程帧格式

远程帧
一般地,数据是由发送单元主动向总线上发送的,但也存在接收单元主动向发送单元请求数据的情况。远程帧的作用就在于此,它是接收单元向发送单元请求发送数据的帧。远程帧与数据帧的帧结构类似,如上图X所示。远程帧与数据帧的帧结构区别有两点:


  • 数据帧的 RTR 值为“0”,远程帧的 RTR 值为“1
  • 远程帧没有数据块


远程帧的 DLC 块表示请求发送单元发送的数据长度(Byte)。当总线上具有相同标识符的数据帧和远程帧同时发送时,由于数据帧的 RTR 位是显性的,数据帧将在仲裁中赢得总线控制权。

错误帧
用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。错误帧的帧结构如图11示。



  • 错误标志:6-12 个显性/隐性重叠位


    • 主动错误标志(6个显性位): 处于主动错误状态的单元检测出错误时输出的错误标志
    • 被动错误标志(6个隐性位): 处于被动错误状态的单元检测出错误时输出的错误标志


  • 错误界定符:8 个隐性位



图11. 错误帧的帧结构

过载帧
过载帧是用于接收单元通知发送单元它尚未完成接收准备的帧。在两种情况下,节点会发送过载帧:


  • 接收单元条件的制约,要求发送节点延缓下一个数据帧或远程帧的传输;
  • 帧间空间(Intermission)的 3 bit 内检测到显性位


每个节点最多连续发送两条过载帧。过载帧由过载标志和过载界定符(8 个隐性位)构成。数据帧的帧结构如图12所示。


图12. 过载帧的帧结构
举报

更多回帖

发帖
×
20
完善资料,
赚取积分