一、CAN总线基本概念
定义:CAN 是 Controller Area Network 的缩写(以下称为 CAN),中文意思是控制器局域网络,是 ISO 国际标准化的串行通信协议。CAN 是国际上应用最广泛的现场总线之一,在欧洲已是汽车网络的标准协议。
CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
CAN 通信只具有两根信号线,分别是 CAN_H 和 CAN_L,CAN 控制器根据这两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
CAN 已通过 ISO11898 及 ISO11519 进行了标准化,这两种标准在物理层的主要不同点如图1所示:
图1 ISO 11898及ISO 11519主要不同点对比
起源于发展:CAN 最初出现在 80 年代末的汽车工业中,由德国 Bosch 公司最先提出。当时,提出 CAN 总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线, 所有的外围器件可以被接在该总线上。CAN 最终成为国际标准 ( ISO11898(高速应用)和 ISO11519(低速应用)),是国际上应用最广泛的现场总线之一。
二、CAN总线物理层
与 I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。CAN连接示意图如图2所示:
图2 CAN连接示意图
CAN总线网络的结构有闭环和开环两种形式。
1. 闭环结构的CAN总线网络,总线两端各连接一个120欧的电阻,两根信号线形成回路。这种CAN总线网络由ISO 11898标准定义,是高速、短距离的CAN网络,通信速率为125kbit/s到1Mbit/s。在1Mbit/s通讯速率时,总线长度最长达40m。
图3 闭环总线网络
2. 开环结构的CAN总线网络,两根信号线独立,各自串联一个2.2k欧的电阻。这种CAN总线网络由ISO11519-2标准定义,是低速、远距离的CAN网络,通信速率最高125kbit/s。在40kbit/s速率时,总线最长距离可达1000m。
图4 开环总线网络
三、CAN总线工作原理
1. 总线信号:CAN总线为两线差分信号,用隐性代表逻辑1,显性代表逻辑0。如图5所示:
图5 CAN信号定义
CAN 总线采用差分信号传输,通过 CAN_H 和 CAN_L 两条信号线进行数据传输。当 CAN_H 的电压比 CAN_L 高 2V 左右时表示显性,逻辑0;压差为0V,表示隐性,逻辑1,其中0和1就是计算机用到的数字信号。这种差分传输方式如同给信号穿上了一层 “抗干扰盔甲”,能有效抑制共模干扰,增强信号的抗干扰能力,提高数据传输的准确性和稳定性。
2. 数据结构:CAN通信的数据结构主要包括数据帧、远程帧、错误帧、过载帧和帧间隔,其中数据帧是核心结构,包含标准帧和扩展帧两种格式。
2.1 标准帧与扩展帧
标准帧:标识符长度为11位,适用于基础通信场景。
扩展帧:标识符长度为29位,支持更复杂的设备寻址需求。
图6 数据帧结构
3. 数据帧结构:
帧起始(SOF):1位显性位,标志帧开始。
仲裁段:包含消息标识符(标准帧11位,扩展帧29位)和远程传输请求位(RTR),用于优先级仲裁。
控制段:定义数据长度码(DLC,4位),指示后续数据字节数(0-8字节)。
数据段:0-8字节的有效数据,按字节传输。
CRC段:循环冗余校验码,用于数据完整性验证。
ACK段:包含应答位(ACK)和应答界定符(ACK DEL),接收节点确认帧接收。
7. 帧结束(EOF):7位显性位,标志帧结束。
4. CAN通讯方式及数据传输
在CAN网络中,各个节点(也就是ECU)通过共享总线进行通信,每个节点都可以充当主节点或从节点。主节点负责控制总线上的通信活动,而从节点则被动地接收和发送数据,这种通信方式是基于主从式的分布式控制系统架构。
CAN通讯的数据传输采用的是一种非冲突的优先级方式,意味着优先级高的消息会先发送,每个CAN帧由一个标识符和数据域组成,标识符用于指示消息的优先级和发送者的身份,数据域则用于携带实际的数据信息。
CAN通讯的工作过程可以分为消息发送和消息接收两个阶段。在消息发送阶段,主节点首先确定要发送的消息的标识符和数据域,并将其封装成CAN帧。然后,主节点将CAN帧发送到总线上,并等待从节点的确认。在消息接收阶段,从节点监听总线上的消息,并根据消息的标识符和数据域判断是否接收该消息。如果接收,则从节点发送确认消息给主节点。
总的来说,CAN通讯的工作原理就是通过共享总线,采用优先级方式进行数据传输,同时利用各种技术和机制保证数据传输的可靠性和完整性。
四、CAN总线特点
CAN总线是一种广泛应用于汽车、工业控制等领域的串行通信协议,具有以下显著特点:
1.多主控制与广播通信
CAN总线支持多主节点架构,网络中的任意节点均可主动向其他节点发送信息,无需中央主控节点。数据以广播形式传输,所有节点都能接收同一消息,可根据报文标识符(ID)判断是否处理该数据,实现灵活的信息共享。
2.非破坏性仲裁机制
当多个节点同时发送数据时,通过报文ID的逐位仲裁确定优先级。优先级高的节点继续传输,低的节点自动停止,避免总线冲突,确保高实时性。
3.高可靠性与容错能力
· 每帧数据包含CRC校验、位填充等多重检错机制,保障数据完整性。
· 节点在检测到严重错误时可自动关闭总线连接,避免影响其他节点,确保系统稳定运行。
4.抗干扰能力强
采用差分信号传输,两根信号线(CAN_H和CAN_L)通过电压差表示数据,有效抑制共模干扰,适用于电磁环境复杂的工业和汽车场景。
5.灵活的通信速率与距离
通信速率最高可达1Mbps(短距离),也可在低速模式下实现长距离传输(如10kbps时可达10km),适应不同应用场景需求。
6.短帧结构与实时性
每帧有效数据字节最多8个,传输时间短,受干扰概率低,重传时间也短,能满足实时控制要求。
7.无需地址编码
报文通过标识符(ID)区分功能和优先级,而非节点地址,简化了网络配置,便于扩展和维护。
五、CAN总线应用
CAN总线主要应用于汽车电子、工业自动化及航天领域,具有高可靠性、实时性和抗干扰能力。
汽车电子
- 用于车载ECU(电子控制单元)间通信,如发动机管理、变速箱控制、仪表系统等,替代传统线束,降低布线复杂度 。
- 支持多主机模式,实现ABS、ESP等安全系统的快速响应 。
工业自动化
- 连接分布式I/O模块、传感器和执行器,适用于生产线监控、电机驱动协同控制等场景 。
- 支持CANopen等应用层协议,扩展性强 。
其他领域
- 航天、医疗设备等对数据可靠性要求高的场景 。
企业公众号