CAN bus是一个串行通讯系统,被用于很多车辆上连接各个系统和传感器,代替传统的多线线缆束。
CAN是Controller Area Network(控制器局域网络)的缩写。它在轿车和商用车上越来越普遍。它的优势包括:明显地减少重量、可靠、易于制造,并为车载诊断提供选项。它的劣势包括:增加了成本,且服务维修车辆时需要一些专业知识。
CAN 总线提供控制单元之间的串行通信。例如,动力系统 CAN 总线允许 ABS 控制单元同时向发动机控制模块 (ECM)、变速箱控制模块 (TCM)、仪表盘 (IC) 和辅助约束系统 (SRS) 传送含有车轮速度数据的消息。
在CAN总线上,利用CAN_H和CAN_L两根线上的电位差来表示CAN信号。CAN总线上的电位差分为显性电平和隐性电平。其中显性电平为逻辑0,隐性电平为逻辑1。
CAN总线的心脏是CAN控制器。它通过CAN-H和CAN-L线缆连接到CAN网络上的所有部件(节点)上。信号是差分的:每条CAN线参考另一条CAN线,而不是参考车辆接地。在电子噪音干扰环境中如车辆,CAN总线具有很好的噪音抑制。
CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。
CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。
CAN总线的报文帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔5种类型。
数据帧是使用最多的帧,它由7个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。其中根据仲裁段ID码长度的不同,分为标准帧和扩展帧。
每个网络节点具有唯一的标识符。因为总线上的ECU是并联的,所有节点一直看得到所有的数据。节点只有检测到它自己的标识符时才作出回应。例如,当ABS ECU发送指令来激活ABS单元,ABS单元相应地作出回应,但网络的其余部分忽视这个指令。每个节点都可以从网络上被断开,但不会影响其它的节点。
因为很多不同的汽车部件可能共享同样的总线硬件,将可用的CAN总线带宽优先分配给最安全关键的系统是很重要的。节点通常会被分配不同的优先级。例如,发动机控制、刹车和气囊在安全角度上来看是最重要的,用于激活这些系统的命令优先级被赋予最高(1),它们会在较为没那么关键的系统之前工作。音频和导航设备通常是中级(2)优先级,而简单的灯光激活被赋予最低优先级(3)。一个被称为仲裁的过程决定所有信息的优先级。实际上,对用户来讲,所有动作都是即刻的。
大多数汽车CAN网络的工作速度是250 kB/s 或 500 kB/s,尽管系统的工作速度可达 1 MHz。最新的汽车上使用多达3个独立的CAN网络,通常它们的速度都不一样,它们被网关连接在一起。例如,发动机管理功能可能用速度为500 kB/s的高速总线,底盘系统用速度为250 kB/s 的CAN总线。管家功能如灯光、ICE、卫星导航和镜子用单独的低速的、单线的LIN总线。三个网络中的任一个网络上的数据,其它两个网络通过网关都可以看到,例如:变速器可从发动机管理系统获得数据,反之亦然。
在同一条CAN线上,所有节点的通信速度(位速率)必须相同,如果两条不同通信速度总线上的节点想要实现信息交互,必须通过网关。例如:汽车上一般有两条CAN总线:500kbps的驱动系统CAN总线和125kbps的舒适系统CAN总线,如果驱动系统CAN总线上的发动机节点要把自己的转速信息发送给舒适系统CAN总线上的转速表节点,那么这两条总线必须通过网关相连。
CAN bus 在现代汽车上逐渐普遍,并会更加普遍,因为技术成熟和成本下降。
通过检测CAN信号的原因是:OBD指示哪里有一个CAN故障,或者怀疑一个CAN节点(ECU)有故障检测它的CAN连接。应该查阅汽车制造厂手册,获知精确的波形参数。
记住:网络上很多数据都是极其关乎安全的,所以不要使用刺针刺破CAN线缆的绝缘层!
关于CAN总线串行译码的其他内容:
观看CAN总线常见故障测试和串行译码视频
阅读CAN总线串行译码设置指引文章