关注菲益科公众号—>对话窗口发送 “CANoe ”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。
上世纪八十年代以来,汽车ECU越来越多,如ABS,电控门窗,电子燃油喷射装置。如果仍然采用常规的点对点布线方式,即电线一段与开关相接,另一端与用电设备相通,将会导致车上电线数目的急剧增加,从而带来线束的冗余及维修成本的提高。这就对汽车的线束分布及信息通讯提出了更高的要求。总线技术可以实现信息的实时共享,解决了传统布线方式中线束多,布线难,成本高等问题,CAN(Controller Area Network)总线技术应运而生。
点对点通信
总线通信
CAN总线是由德国研发和生产汽车电子产品著称的BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。CAN总线是一种多主控(Multi-Master)的总线系统。传统总线系统如USB或以太网等是在总线控制器的协调下,实现从A节点到B节点大量数据的传输。CAN网络的消息是广播式的,即在同一时刻网络上所有节点侦测的数据是一致的,它是一种基于消息广播模式的串行通信总线。
CAN总线的很多优点,使得它得到了广泛的应用,如传输速度最高到1Mbps, 通信距离最远到10km,无损位仲裁机制,多主结构。
发展历史
- 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主要由两个协议定义:ISO11898和ISO11519-2,具体区别、对比如下图:
CAN主要由两个协议定义:ISO11898和ISO11519-2,具体区别对比
CAN总线标准
CAN总线标准之规定了物理层和数据链路层,至于应用层需要用户自定义。不同的CAN标准仅物理层不同。物理层和数据链路层:ISO11898;应用层:不同的应用领域使用不同的应用层标准。
物理层、数据链路层和应用层
物理层、数据链路层和应用层
标准化
CAN标准分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。CAN底层标准主要是 ISO 11898系列的国际标准,也就是说不同厂商在CAN总线的物理层和数据链路层定义基本相同;而上层标准,涉及到例如流控制、设备寻址和大数据块传输控制等,不同应用领域或制造商会有不同的做法,没有统一的国际标准。
底层标准
CAN底层标准涵盖OSI模型中的物理层和数据链路层,底层标准包括:
- ISO 11898-1: 2015 定义CAN总线的数据链路层(DLL)和电气信号标准,描述CAN总线的基本架构,定义不同CAN总线设备在数据链路层通信方式,详细说明逻辑链接控制(LLC)和介质访问控制(MAC)子层部分;
- ISO 11898-2: 2003 定义高速CAN总线(HS-CAN)物理层标准,最高数据传输速率 1Mbps ,应用为两线平衡式信号(CAN_H, CAN_L),HS CAN是汽车动力和工业控制网络中应用最为广泛的物理层协议;
- ISO 11898-3: 2006 定义低速CAN总线(LS-CAN, Fault-Tolerant CAN)物理层标准,数据传输速率在 40Kbps ~ 125Kbps 。Fault-Tolerant是指总线上一根传输信号失效时,依靠另外的单根信号也可以通信,LS CAN主要应用于汽车车身电控单元之间通信;
- ISO 11898-4: 2004 定义CAN总线中的时间触发机制(Time-Triggered CAN, TTCAN),定义与ISO 11898-1 配合的帧同步实体,实现汽车ECU之间基于时间触发的通信方式。注意,ISO 11898-1 是基于事件驱动(Event-Driven)的通信,它对于高负荷总线上,尤其是低优先级的消息会造成较大的延迟,而基于时间触发的ISO 11898-4 标准的初衷也正是为解决该问题,确保CAN总线上可靠的消息传输;
- ISO 11898-5: 2007 对ISO 11898-2高速CAN总线的补充,并参照ISO 8802-2,定义在总线闲置时的节电特性;
- ISO 11898-6: 2013 对ISO 11898-2 和 ISO 11898-5 的补充,并参照ISO 8802-2,定义使用可配置的帧实现选择性唤醒总线的机制;
- ISO 16845-1: 2004 定义测试符合ISO 11898-1标准CAN应用的方法和条件;
- ISO 16845-2: 2014 定义包括特定功能下可以选择性唤醒总线的CAN收发器的测试实例和测试要求,也称为CAN总线的一致性测试
CAN总线底层标准与ISO/OSI模型的对应关系,如图1所示。对于媒体专用接口(Medium Dependent Interface, MDI),没有统一的国际标准。CiA DS-102(CiA: CAN in Automation )仅定义使用专用连接器(DB9),并对PIN定义作出一定规范。
上层标准
虽然底层标准相同,不同应用领域和组织会制定不同的上层标准。有的厂商开发并推广其应用层标准,在某些领域得以广泛应用。对于汽车行业来说,几乎每家厂商都有自己的CAN上层标准。比较流行的有工业自动化领域 CiA的 CANopen,Rockwell的 DeviceNet;嵌入式控制领域 Kvaser的 CAN Kingdom;智能设备控制 Honeywell的 SDS;汽车诊断 ISO 14229定义的 UDS,和中重型汽车CAN总线标准 SAE J1939。如表1示。
表1. CAN上层标准规格
同时,面向汽车的通信协议以通信速度为准进行了分类:
OSI基本参照模型
OSI参考模型为7层,物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而CAN通信底层仅使用了物理层和数据链路层
CAN通信底层仅使用了物理层和数据链路层
CAN物理层
网络拓扑
连接在CAN总线上的设备叫做节点设备(CAN Node),CAN网络的拓扑一般为线型。线束最常用的是双绞线,线上传输为对称的差分电平信号。下图为CAN总线网络示意图,节点主要包括Host、控制器和收发器。Host常集成有CAN控制器,CAN控制器负责处理协议相关功能,以减轻Host的负担。CAN收发器将控制器连接到传输媒介。通常控制器和总线收发器通过光耦或磁耦隔离,这样即使总线上过压损坏收发器,控制器和Host设备也可以得到保护。
在发送数据时,CAN控制器把要发送的二进制编码通过CAN_Tx线发送到CAN收发器,然后由收发器把这个普通的逻辑电平信号转化成差分信号,通过差分线CAN_High和CAN_Low输出到CAN总线网络。接收数据过程,相反。采用差分信号,可以取得更好的电磁兼容效果。因此,CAN总线物理传输媒介只需要两根线。
高速CAN总线最高信号传输速率为1Mbps,支持最长距离40m。ISO11898-2要求在高速CAN总线两段安装端接电阻RL(端接电阻一般为120Ω,因为电缆的特性阻抗为120 Ω,为了模拟无限远的传输线。)以消除反射。低速CAN最高速度只有125Kbps,所以ISO11898-3没有端接要求。
端接电阻接法
因为传输距离越大,信号时延也越大,为了保证消息的正确采样,总线上的信号速率相应也要下降。下图是推荐的信号速率与距离的关系。
Bus Length(m) | Signaling Rate(Mbps) |
---|---|
40 | 1 |
100 | 0.5 |
200 | 0.25 |
500 | 0.1 |
1000 | 0.05 |
收发器
CAN收发器包括 CANH 和 CANL 两根信号,CANH和CANL信号采用差分电平,这样可以取得更好的电磁兼容效果。CAN总线物理传输媒介只需要两根线。
前面的标准部分有介绍,CAN总线分高速CAN和低速CAN,收发器因之也分为高速CAN收发器(1Mbps)和低速CAN收发器(125Kbps)。低速CAN也叫 Fault Tolerant CAN ,指的是即使总线上一根线失效,总线依然可以通信。图4示例高速CAN收发器的基本电路结构。当两个晶体管都关断时,CANH和CANL上电压相同,且都为 0.5VCC ;而当两个晶体管都打开时,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的信号抗干扰能力相对较弱,在设计中需要提高信号幅度以增加信噪比,如