日期:2022-09-15浏览:1853次
上海嘉兴宁波苏州汽车CAN总线测试
一、概述
汽车电子设备的不断增多,对汽车上的线束分布以及信息共享与交流提出了更高的要求。传统的电气系统往往采用单一连接的方式通信,这必将带来线束的冗余以及维修的成本的提高。
汽车通信总线CAN总线介绍
传统的单一通信的对接方式,已经不能满足现代汽车电子发展的需求,采用更为先进的总线技术势在必行。总线技术可以实现信息的实时共享、解决了传统布线方式中线束多、布线难、成本高等问题,从而提高整车通信的质量与品质。
CAN 总线(Controller Area Network,控制器局域网络)由德国博世公司于上世纪 80 年代提出,近 20 年来,随着 CAN 总线在工业测控与汽车领域的普及,CAN 网络技术不断优化,取得了长足发展。如今 CAN 总线已经成为了汽车上*重要环节,ECU 内部的 CAN 总线开发也占到了 ECU 开发中的很大分量。在汽车中为了满足车载系统的不同要求,主要采用高速 CAN 和低速 CAN。这两者以不同的总线速率工作以获得最佳的性价比,在两条总线之间采用 CAN 网关进行连接。
高速 CAN(动力总线):高速 CAN 总线的传输速率范围在 125kbit/s – 1Mbit/s 之间,主要用于传动系数传输的实时性要求(如发动机控制、自动变速箱控制、行驶稳定系统、组合仪表等)。
低速 CAN(舒适总线):低速 CAN 总线的传输速率范围在 5kbit/s – 125kbit/s 之间。主要用于舒适系统和车身系统的数据传输的实时性要求(如空调控制、座椅调节、车窗升降等)。
二、CAN 总线特点
CAN 总线是一种串行数据通讯协议,其中包含了 CAN 协议的物理层以及数据链路层。可以完成对数据的位填充,数据块编码,循环冗余效验,帧优先级的判别等工作。其主要特点如下:
多主机方式工作,网络上任意一个节点(未脱离总线)均可以随时向总线网络上发布报文帧。
节点发送的报文帧可以分为不同的优先级,满足不同实时要求。
采用载波侦听多路访问/冲突检测(CSMA/CD)技术,当两个节点同时发布信息时,高优先级报文可不受影响地传输数据。
节点总数实际可达 110 个。
采用短帧结构,每一帧最多有 8 个有效字节。
当某个节点错误严重时,具有自动关闭功能,切断与总线的联系,致使总线上的其他操作不受影响。
三、CAN 总线物理层
3.1 总线结构
CAN 总线采用双线传输,两根导线分别作为 CANH、CANL,并在终端配备有 120Ω的电阻。收到总线信号时,CAN 收发器将信号电平转化为逻辑状态,即 CANH 与 CANL 电平相减后,得到一个插值电平。各种干扰(如点火系统)在两根导线上的作用相同,相减后得到的插值电平可以滤过这些干扰。
3.2 总线电平
CAN 总线有两种逻辑电平状态,即显性与隐性。显性电平代表“0”,隐性电平代表“1”。采用非归零码编码,即在两个相同电平之间并不强制插入一个零状态电平。高速 CAN 在传输隐性位时,CAN-H 与 CAN-L 上的电平位均为 2.5V;在传输显性位时分别为 3.5V 与 1.5V。低速 CAN 在传输隐性状态位时,CAN-H 上的电平为 0V,CAN-L 上的电平位 5V。在传输显性状态位时,CAN-H 上的电平位 3.6V,CAN_L 的位 1.4V。
为了确保通讯的正确性,总线信号必须在一定时间内出现在总线上,并且保证被正确采样。总线信号传输有一定的时间延迟,最大的可靠的总线波特率与总线长度有。
ISO11898 中对各种总线长度有着以下定义:
1Mbit/s 总线长度为 40m(规范)。
500kbit/s 总线长度最大值为 100m(建议值)。
250kbit/s 总线长度最大值为 250m。
125kbit/s 总线长度最大值为 500m。
40kbit/s 总线长度最大值为 1000m。
四、CAN 总线硬件设备
CAN 通信线缆,实现节点的互联,是传输数据的通道。主要有:普通双绞线,同轴电缆,光纤。
CAN 驱动/接收器,将信息封装为帧后发送,接收到的帧将其还原为信息、标定并报告节点状态。
CAN 控制器,专按协议要求设计制造,经简单总线连接即可实现 CAN 的全部功能。包括:TJA1042(NXP)、SJA1000(Philips)、82527(Intel)。
CAN 微控制器,嵌有部分或全部 CAN 控制模块及相关接口的通用型微控制器现如今很多芯片都配备 CAN 接口。
五、CAN 报文帧结构
在 CAN 总线上,报文是以“帧”来发送的,每一帧都包含以下几个部分:
1. 帧起始
在总线空闲时,总线为隐性状态。帧起始由单个显性位构成,标志着报文的开始,并在总线上起着同步作用。
2. 仲裁段
仲裁的主要是定义了报文的标识符,也俗称 ID。在 CAN2.0A 规范中,标识符为 11 位,而在 CAN2.0B 中变为了 29 位。这意味着在 2.0B 中可以存在更多不同类型的报文,但是也降低了总线的利用率。
3. 控制段
主要定义了数据域字节的长度。通过数据长度码,接收节点可以判断报文数据是否完整。
4. 数据域
包含有 0~8 个字节数据。
5. CRC 域
CRC 又称循环冗余码效验(Cyclical Redundancy Check),是数据通信中常见的查错方法。
6. ACK 域
用于接收节点的反馈应答。
7. 帧结束
由一串 7 个隐性位组成,表示报文帧的结束。
Ps:在 CAN 总线的开发中,核心的关注点就是CAN 报文 ID 以及其数据域。根据客户的要求,ECU 接收自己感兴趣的 ID 报文的同时,也向外发送别的 ECU 所需要的 ID 报文。一般不同整车厂在开发自己的 CAN 协议规范的同时,也会有自己的checksum 机制,不满足 checksum 的报文,数据将不会被 ECU 所接收。
六、仲裁机制
仲裁是总线应用中一个相当重要的概念,在 CAN 总线采用载波侦听多路访问/冲突检测(CSMA/CD)技术。如果总线空闲(隐性位),有报文准备发送,那么每一个节点都可以开始发送报文。报文以显性位(报文帧开始位)开始,接着是标识符。如果多个节点同时开始发送报文,那么使用“线与”仲裁机制(仲裁用逻辑“与”)来解决总线冲突,确定优先级*高的报文,而不需要损失时间或数据(非破坏性仲裁)。仲裁机制使用标识符为判断依据,不仅代表报文帧的内容,还代表报文帧发送的优先级。二进制数越小的标识符,优先级越高;反之亦然。
如上图,ECU 单元 1 和 ECU 单元 2 同时开始向总线发送数据,开始部分他们的数据格式是一样的,故无法区分优先级,直到 T 时刻,单元 1 输出隐性电平,而单元 2 输出显性电平,此时单元 1 仲裁失利,立刻转入接收状态工作,不再与单元 2 竞争,而单元 2 则顺利获得总线使用权,继续发送自己的数据。
七、CAN 报文帧种类
CAN 总线报文传输有以下 4 种不同的格式:
数据帧:由发送节点发出,包含 0 – 8 个数据字节。
远程帧:发送远程帧向网络节点请求发送某一标识符的数据帧。
错误帧:总线节点发现错误时,以错误帧的方式通知网络上的其他节点。
过载帧:发送过载帧,表示当前节点不能处理后续的报文(如帧延迟等)。 Ps:为了保持总线的利用率,在车载总线上数据帧的报文一般均为 8 字节。
八、CAN 总线错误
CAN 总线将错误分为临时性错误和长期性错误。前者主要由外部因素引起,如总线上驱动电压波形不规整、有尖峰或毛刺时,其数据传输性能会受到一定程度的短期干扰。长期性错误则主要由网络组建非正常状况引起,比如接触不良、线路故障、发送器或接收器失效等。CAN 中每个具有数据通信能力的网络单元内部都集成有一个发送错误计数器和接受错误计数器,当该单元在数据发送阶段出现一次错误时,其发送错误计数器自加 8;在数据接收阶段出现一次错误时,其接收错误计数器自加 1。在相应计数器内容非 0 的情况下,网络单元每成功发送一帧,发送错误计数器自减 1;每成功接收一帧,接收错误计数内容原本小于 127 时自减 1,大于 127 时被置为 119 – 127 之间任意值。这样,如果某个网络单元的错误计数在不断增长,就说明该单元的数据通信在频繁发生故障。当计数器内容超过一定阈值时,可以认为该故障是由长期性错误引起的。这种机制保证了当某一个节点出现故障的时候,不会造成总线长时间瘫痪。