CAN总线详解
CAN总线
CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。
在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”,“通过多个 LAN,进行大量数据的高速通信”的需要。
CAN 最初出现在80年代末的汽车工业中,由德国 Bosch 公司最先提出。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出 CAN 总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。1993年,CAN 已成为国际标准 ISO11898(高速应用)和 ISO11519(低速应用)。
CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km 时,CAN 仍可提供高达50Kbit/s 的数据传输速率。由于 CAN 总线具有很高的实时性能,现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。
1.CAN总线结构
CAN总线网络的结构有闭环和开环两种形式。如下图所示,是闭环结构的CAN总线网络,总线两端各连接一个120欧的电阻,两根信号线形成回路。这种CAN总线网络由ISO 11898标准定义,是高速、短距离的CAN网络,通信速率为125kbit/s到1Mbit/s。在1Mbit/s通讯速率时,总线长度最长达40m。
CAN总线的两根信号线通常采用的是双绞线,传输的是差分信号,通过两根信号线的电压差CANH-CANL来表示总线电平。以差分信号传输信息具有抗干扰能力强,能有效抑制外部电磁干扰等优点,这也是CAN总线在工业上应用广泛的一个原因。使用差分信号表示总线电平的还有RS485网络,也是一种常用的工业现场总线。

如下图所示的CAN总线网络中,CAN总线上的一个终端设备称为一个节点(Node),在CAN网络中,没有主设备和从设备的区别。一个CAN节点的硬件部分一般由CAN控制器和CAN收发器两个部分组成。CAN控制器负责CAN总线的逻辑控制,实现CAN传输协议;CAN收发器主要负责MCU逻辑电平与CAN总线电平之间的转换。
2.CAN总线特点
实时性
CAN总线具有优越的实时性能,适用于需要及时传输数据的应用,如汽车控制系统、工业自动化等。仲裁机制和帧优先级的设计保证了低延迟和可预测性。
多主机系统
CAN支持多主机系统,多个节点可以同时发送和接收数据。这种分布式控制结构使得系统更加灵活,适用于复杂的嵌入式网络。CAN总线上的节点既可以发送数据又可以接收数据,没有主从之分。但是在同一个时刻,只能由一个节点发送数据,其他节点只能接收数据。
差分信号传输
CAN使用差分信号传输,通过两个线路(CAN_H和CAN_L)之间的电压差来传递信息。这种差分传输方式提供了良好的抗干扰性能,使得CAN总线适用于工业环境等有电磁干扰的场合。
仲裁机制
CAN总线采用非破坏性仲裁机制,通过比较消息标识符的优先级来决定哪个节点有权继续发送数据。这种机制确保了总线上数据传输的有序性,避免了冲突。
广播通信
CAN总线采用广播通信方式,即发送的数据帧可以被总线上的所有节点接收。这种特性有助于信息的共享和同步,同时减少了系统的复杂性。
低成本
CAN总线的硬件成本相对较低,适用于大规模的系统集成。由于CAN控制器在硬件上实现了仲裁机制,无需额外的主机处理器,减小了成本和复杂性。
灵活性
CAN协议灵活适应不同的应用场景,支持不同的波特率和通信速率。这使得CAN总线可以被广泛用于各种嵌入式系统,从低速的传感器网络到高速的汽车控制系统。
错误检测和处理
CAN总线具有强大的错误检测和处理机制。通过CRC检查和其他错误检测手段,CAN能够识别和处理传输过程中可能发生的错误,提高了通信的可靠性。
多种帧类型
CAN总线上的节点没有地址的概念。CAN总线上的数据是以帧为单位传输的,帧又分为数据帧、遥控帧等多种帧类型,帧包含需要传输的数据或控制信息。
线与逻辑
CAN总线具有“线与”的特性,也就是当由两个节点同时向总线发送信号时,一个是发送显性电平(逻辑0),另一个发送隐性电平(逻辑1),则总线呈现为显性电平。这个特性被用于总线总裁,也就是哪个节点优先占用总线进行发送操作。
特定标识符
每一个帧有一个标识符(Identifier,一下简称ID)。ID不是地址,它表示传输数据的类型,也可以用于总线仲裁时确定优先级。例如,在汽车的CAN总线上,假设用于碰撞检测的节点输出数据帧ID为01,车内温度检测节点发送数据帧的ID为05等。
滤波特性
每个CAN节点都接收数据,但是可以对接收的帧根据ID进行过滤。只有节点需要的数据才会被接收并进一步处理,不需要的数据会被自动舍弃。例如,假设安全气囊控制器只接受碰撞检测节点发出的ID为01的帧,这种ID的过滤时有硬件完成的,以便安全气囊控制器在发送碰撞时能及时响应。
半双工
CAN总线通信时半双工的,即总线不能同时发送和接收。在多个节点竞争总线进行发送时,通过ID的优先级进行仲裁,竞争胜出的节点继续发送,竞争失败的节点立刻转入接收状态。
无时钟信号
CAN总线没有用于同步的时钟信号,所以需要规定CAN总线通信的波特率,所以节点都是用同样的波特率进行通信。
3.CAN总线协议
(1) OSI模型
CAN 协议涵盖了 ISO 规定的 OSI 基本参照模型中的传输层、数据链路层及物理层。
(2) 数据链路层
如上图所示,数据链路层分为 MAC 子层和 LLC 子层,MAC 子层是 CAN 协议的核心部分。数据链路层的功能是将物理层收到的信号组织成有意义的消息,并提供传送错误控制等传输控制的流程。具体地说,就是消息的帧化、仲裁、应答、错误的检测或报告。数据链路层的功能通常在 CAN 控制器的硬件中执行。
在物理层定义了信号实际的发送方式、位时序、位的编码方式及同步的步骤。但具体地说,信号电平、通信速度、采样点、驱动器和总线的电气特性、连接器的形态等均未定义。这些必须由用户根据系统需求自行确定。
4.ISO 标准化的 CAN 协议
CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 和 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同。
(1) 关于 ISO11898
- ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准。
- 目前,ISO11898 追加新规约后,成为 ISO11898-1 新标准。
(2) 关于 ISO11519
- ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准。
- ISO11519-2 是 ISO11519-1 追加新规约后的版本。
下图表示 CAN 协议和 ISO11898 及 ISO11519-2 标准的范围。
(3) CAN 和标准规格
如下图所示,面向汽车的通信协议以通信速度为准进行了分类。
5.CAN各类型帧详解
CAN网络通信是通过5种类型的帧(Frame)进行的:
- 数据帧(Data frame)
- 遥控帧(Remote frame)
- 错误帧(Error frame)
- 过载帧(Overload frame)
- 帧间空间(Inter-frame space)
另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下称 ID),扩展格式有 29 个位的 ID。
每种帧的用途和结构如下表、图所示:
帧类型 | 帧用途 |
---|---|
数据帧 | 节点发送的包含ID和数据的帧,用于发送单元向接收单元传送数据的帧。 |
遥控帧 | 节点向网络上的其他节点发出的某个ID的数据请求。 |
错误帧 | 节点检测出错误时,向其他节点发送的通知错误的帧。 |
过载帧 | 接收单元未做好接收数据的准备时发送的帧。 |
帧间空间 | 用于将数据帧、遥控帧与前后的帧分隔开的帧。 |
数据帧(Data frame):用于发送单元向接收单元传送数据的帧。
6.应用场景
CAN(Controller Area Network)总线是一种多主控的串行通信总线协议,最初由德国博世公司在20世纪80年代中期研发,主要用于汽车内部电子控制单元(ECU)之间的通信。随着时间的发展,CAN总线因其高性能、可靠性和灵活性而逐渐被广泛应用于多个领域。
汽车领域
在汽车领域,CAN总线被广泛应用于连接汽车的各个控制单元,如发动机控制单元(ECU)、刹车系统、仪表盘等。CAN总线提供了高速、实时的数据传输,使得这些控制单元能够相互通信和协调工作,实现车辆的高效控制和监测。例如,CAN总线可以实现发动机、变速箱、ABS、车身、仪表及其他控制器的通讯,做到全车信息及时共享。
工业自动化
在工业控制系统中,CAN总线被用于连接各种设备和传感器,例如机器人、PLC(可编程逻辑控制器)、传感器网络等。通过CAN总线,这些设备可以实现实时数据交换和远程控制,从而提高生产效率和系统的可靠性。CAN总线的高可靠性和抗干扰能力使其成为处理实时数据和多节点通信的理想选择。
航空航天和医疗设备
CAN总线在航空航天和医疗设备领域也有广泛应用。在航空航天领域,CAN总线用于连接飞机的各个控制系统和传感器,实现飞行数据的实时传输和监控。在医疗设备中,CAN总线用于连接各种医疗仪器和传感器,确保数据的准确传输和设备的可靠运行。
智能家居和能源管理
在智能家居和能源管理领域,CAN总线用于连接各种智能设备和传感器,实现家庭自动化和能源管理。例如,通过CAN总线,智能家居系统可以实现灯光控制、温度调节、安全监控等功能。
其他应用
除了上述领域,CAN总线还应用于船舶、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床等。CAN总线的高可靠性、实时性和灵活性使其在这些领域中得到了广泛的应用和认可。
总结
总之,CAN总线因其优越的性能和广泛的适用性,已经成为多个领域中不可或缺的通信技术。
7. CAN总线承载的业务
(1)汽车控制系统
业务类型:发动机控制、刹车系统、车速监控
功能描述:
CAN 总线被广泛应用于汽车中的各类控制系统,例如发动机管理、刹车系统、车速传感器、变速器控制系统等。不同系统通过 CAN 总线交换工作状态和控制信息,以提高车辆性能和安全性。
(2)车载信息娱乐系统(IVI)
业务类型:媒体播放控制、导航信息
功能描述:
CAN 总线承载车载信息娱乐系统的数据,传输车载音响、视频播放、导航数据等信息。例如,车载显示器可以通过 CAN 总线接收来自导航单元的数据并进行显示。
(3)高级驾驶辅助系统(ADAS)
业务类型:碰撞预警、自动驾驶、车道保持
功能描述:
ADAS 系统依赖 CAN 总线来传输来自各种传感器的数据,如雷达、摄像头、激光雷达等,用于实时监控环境、检测障碍物、控制自动驾驶或辅助驾驶功能。
(4)车身控制系统
业务类型:门窗控制、座椅调节、车窗升降
功能描述:
车身控制系统(Body Control Module, BCM)通过 CAN 总线控制车内各种功能,如电动窗户、座椅调整、车门锁控制等,允许通过一个统一的控制系统来管理车内设备。
(5)电池管理系统(BMS)
业务类型:电池充电、状态监控、温度控制
功能描述:
在电动汽车(EV)或混合动力汽车(HEV)中,电池管理系统(BMS)通过 CAN 总线来传输电池的状态数据(如电池电压、电流、温度等),并实时调整电池的充放电状态,确保电池的安全使用和长寿命。
(6)动力总成系统
业务类型:发动机与传动系统控制
功能描述:
CAN 总线在动力总成中用于连接发动机控制单元(ECU)、变速器控制单元(TCU)等设备,传递发动机、变速器的工作状态、扭矩、转速等数据,优化动力传输效率和驾驶体验。
(7)自动化设备
业务类型:工业设备控制、传感器数据采集
功能描述:
在工业自动化领域,CAN 总线用于控制机器人的运动、传感器数据采集、温度控制等设备的控制,常见于生产线、智能制造等领域。
(8)机器人控制
业务类型:运动控制、传感器数据处理
功能描述:
在工业机器人中,CAN 总线用于各控制模块间的数据交换,例如传感器模块、执行模块和中央控制单元之间的数据传输,以保证机器人的实时动作协调与精确控制。
(9)飞行控制与航电系统
业务类型:航电设备控制、飞行数据监控
功能描述:
在航天航空领域,CAN 总线用于连接飞行控制系统、航电设备、传感器与仪表,传输飞行数据、环境信息、动力系统数据等,确保飞机各个子系统的协同工作。
(10)智能建筑系统
业务类型:楼宇自动化控制、照明、温控
功能描述:
在楼宇自动化系统中,CAN 总线可用于控制照明、空调、门禁系统等设施。通过 CAN 总线,不同设备之间能够进行高效的数据交互,实现智能控制和自动化管理。
8. CAN总线承载的方式
(1)多主多从通信架构
CAN 总线采用 多主机 和 多从机 的通信方式,任何一个设备都可以发送消息,只要总线上没有其他设备同时发送。虽然 CAN 总线本身不直接支持点对点通信,但它通过广播方式进行数据传输,每个节点都可以接收总线上所有设备发送的数据。
设备间的数据交换基于消息优先级,优先级高的消息会先被传输,低优先级的消息在总线上等待。
(2)消息优先级与仲裁机制
CAN 总线使用 优先级 和 仲裁机制 来处理多个设备同时发送数据的冲突。当多个设备尝试同时发送消息时,CAN 总线会根据消息的标识符(ID)来决定哪个设备优先发送,优先级高的消息会被传输,低优先级的消息则等待,直到总线空闲。
仲裁机制是非破坏性的,即低优先级消息不会被删除,而是等待重发。
(3)差分信号传输
CAN 总线使用 差分信号 进行数据传输,确保信号在长距离和电磁干扰较大的环境下依然能够保持高信号质量。差分信号具有良好的抗干扰能力,非常适合在噪声较大的环境中使用。
CAN 总线支持高达 1 Mbps 的传输速度,适用于实时性要求较高的系统。
(4)数据帧与消息格式
CAN 总线采用 数据帧 进行数据交换,每个数据帧包含了多个部分,包括:
- 标识符(ID):用来表示消息的优先级。
- 数据字段:包含传输的实际数据。
- CRC 校验:确保数据的完整性。
- 应答字段:接收设备确认接收到数据。
每个数据帧最多可以携带 8 字节 的数据,可以满足大多数实时数据传输需求。
(5)实时性与可靠性
CAN 总线是一种 实时性 较强的通信协议,适用于需要即时响应的应用。通过基于优先级的仲裁和差分信号传输,CAN 总线能够有效地确保消息的快速传递和系统的稳定性,避免了数据丢失和冲突。
(6)总线与节点管理
在一个 CAN 总线网络中,多个设备通过一根两线电缆连接,这些设备被称为 节点。每个节点都可以向总线发送或接收数据。总线的管理和节点的配置通常由中央控制器或主设备进行,确保数据流向的正确性和设备间的协调。
(7)低延迟和高带宽
CAN 总线具有 低延迟 和 高带宽,能够确保大量数据的快速传输。数据传输速率根据应用场景可以选择 20 Kbps 至 1 Mbps,适合需要较高实时性的控制系统和监测系统。
9. CAN总线设备列表
设备类型 | 设备名称 | 应用场景 | 功能说明 |
---|---|---|---|
汽车控制系统设备 | 发动机控制单元(ECU) | 汽车发动机控制、燃油喷射、排放控制等 | 控制发动机的工作状态、油门、燃油喷射、排放监控等 |
变速器控制单元(TCU) | 汽车变速器控制 | 控制变速器的换挡、扭矩输出等 | |
电池管理系统(BMS) | 电动汽车、混合动力车电池管理 | 监控电池的电压、电流、温度等,确保电池安全与效率 | |
驻车辅助控制单元(PAC) | 自动泊车、停车辅助系统 | 实现自动泊车、停车监控等功能 | |
刹车控制系统(ABS / ESC) | 汽车刹车系统、车身稳定控制 | 控制刹车、车身稳定、滑移控制等,确保行驶安全 | |
高级驾驶辅助系统(ADAS) | 雷达传感器 | 碰撞预警、自动驾驶、车道保持 | 提供前方障碍物的距离与速度信息,辅助自动驾驶与碰撞避免 |
激光雷达(LiDAR) | 自动驾驶、物体检测 | 通过激光扫描获取周围环境的精确三维数据 | |
摄像头(前视、后视、侧视) | 自动驾驶、车道保持、停车辅助、环境感知 | 提供实时视频流用于驾驶辅助系统,如车道检测与自动停车 | |
超声波传感器(Ultrasonic Sensor) | 自动泊车、碰撞预警、障碍物检测 | 用于检测近距离障碍物,支持停车、低速行驶中的物体识别 | |
车载信息娱乐系统(IVI) | 中控屏控制单元 | 媒体播放、导航系统、车载多媒体 | 控制车载娱乐与导航功能,提供音视频播放、导航显示等 |
音响系统(音频处理单元) | 媒体播放控制、音响管理 | 控制音响系统、音量调节、音频源选择等 | |
车身控制系统设备 | 电动窗户控制单元(DTCM) | 控制车窗升降 | 控制车窗的开闭,电动座椅调节 |
座椅调节控制单元 | 座椅位置、电动座椅加热与通风控制 | 控制座椅的前后、倾斜调节,调节座椅加热、通风功能 | |
门锁控制单元 | 车门锁定与解锁控制 | 控制车门的开关与安全锁定 | |
动力总成系统设备 | 发动机传感器(如氧传感器、温度传感器) | 发动机性能监测 | 提供发动机工作状态、燃烧效率、排放数据等 |
燃油喷射控制单元(FI ECU) | 发动机燃油喷射控制 | 控制发动机的燃油喷射量、喷射时机等 | |
安全与监控设备 | 气囊控制单元 | 安全气囊监控与触发 | 在发生碰撞时触发安全气囊,提供保护 |
车载视频监控系统 | 驾驶员监控、环境监控 | 通过摄像头监控车内环境与驾驶员状态 | |
工业自动化设备 | 机器人控制系统 | 机器人控制、自动化生产线 | 用于机器人各个控制模块间的数据传输,协调机器人的运动与任务 |
传感器模块 | 数据采集、传感器管理 | 通过传感器收集温度、湿度、压力、流量等物理参数 | |
伺服电机控制器 | 伺服电机驱动与控制 | 用于精密运动控制,驱动伺服电机实现高精度的运动任务 | |
航天航空设备 | 飞行控制计算机(FCC) | 飞行器控制、航电系统监控 | 控制飞行器的姿态、航向、速度等 |
飞行数据记录器(FDR) | 飞行数据存储、事故分析 | 记录飞行过程中的各种关键数据,确保飞行器的安全 | |
机器人控制设备 | 机器人运动控制单元 | 机器人运动控制、路径规划 | 控制机器人各关节的运动,协调其行为以完成指定任务 |
传感器模块 | 传感器数据采集与处理 | 采集机器人周围环境信息,如距离、温度、压力等 | |
其他嵌入式设备 | 自动售货机 | 销售商品、支付、库存管理 | 用于控制商品库存、支付交易和商品发放等功能 |
家电设备(如空调、电冰箱) | 温度控制、湿度控制、设备状态监控 | 控制家电设备的工作状态,例如温度调节、开关控制等 |