控制器局域网 —CAN

时间:2024-10-21
新悦网络

编辑:

CAN(控制器局域网)是一种串行通信协议,最初由博世公司(Bosch)在1980年代为汽车电子系统开发,用于连接汽车的各个微控制器和设备,提供可靠的、实时的数据交换。由于其高可靠性、抗干扰能力强和支持多节点通信的特点,CAN协议被广泛应用于汽车、工业自动化、医疗设备、航空航天等多个领域。

CAN建立在基于信息导向传输协定的广播机制上。其根据信息的内容,利用信息标志符(每个标志符在整个网络中独一无二)来定义内容和消息的优先顺序进行传递,而并非指派特定站点地址的方式。

因此,CAN拥有了良好的弹性调整能力,可以在现有网络中增加节点而不用在软、硬件上做出调整。除此之外,消息的传递不基于特殊种类的节点,增加了升级网络的便利性。

 

CAN协议的原理

CAN协议是一种基于总线拓扑的多主总线通信协议,允许多个设备(节点)通过共享的一条通信线路进行数据交换。其关键原理包括:

  1. 差分信号传输:CAN使用两条信号线(CAN_H和CAN_L)来传输差分信号。这种传输方式大大增强了抗干扰能力。

  2. 多主通信:CAN总线上所有节点可以主动发送数据,并且没有主从之分。多个节点可共享同一总线,但只有优先级最高的消息可以在总线忙时发送,避免冲突。

  3. 无冲突仲裁机制:CAN使用位级仲裁机制,即当多个节点同时发送数据时,优先级较高的节点(ID较低的消息)优先发送,而低优先级的节点会自动停止发送,等待下一次传输机会。这样避免了数据冲突。

  4. 错误检测与恢复:CAN协议内置多种错误检测机制,如位错误、帧错误、CRC校验等,确保数据传输的可靠性。当检测到错误时,节点可自动恢复并重发数据。

 

CAN协议的架构

CAN是一个用于连接电子控制单元(ECU)的多主机串行总线标准。电子控制单元有时也被称作节点。CAN网络上需要至少两个节点才可进行通信。节点的复杂程度可以只是简单的输入输出设备,也可以是包含有CAN交互器并搭载了软件的嵌入式组件。节点还可能是一个网关,允许普通计算机通过USB或以太网端口与CAN网络上的设备通信。

所有节点通过两根平行的总线连接在一起。两条电线组成一条双绞线,并且接有120Ω的特性阻抗。

ISO 11898-2,也称为高速度CAN。它在总线的两端均接有120Ω电阻。

 

 

 

高速CAN总线在传输显性(0)信号时,会将CAN_H端抬向5V高电平,将CAN_L拉向0V低电平。当传输隐性(1)信号时,并不会驱动CAN_H或者CAN_L端。 显性信号CAN_H和CAN_L两端差分标称电压为2V。 终端电阻在没有驱动时,将差分标称电压降回0V。显性信号(0)的共模电压需要在1.5V到3.5V之间。隐性信号(1)的共模电压需要在+/-12V。

 

 

 

ISO 11898-3,也被称作低速或者容错CAN。它使用线性主线,星形主线或者连接到一个线性主线上的多星结构主线著称。每个节点都有终端电阻作为全局终端电阻的一部分。全局终端电阻不应低于100 Ω。

 

 

 

低速/容错CAN信号在传输显性信号(0)时,驱动CANH端抬向5V,将CANL端降向0V。在传输隐性信号(1)时并不驱动CAN 总线的任何一端。在电源电压Vcc为5V时,显性信号差分电压需要大于2.3V,隐性信号的差分电压需要小于0.6V。CAN总线两端未被驱动时,终端电阻使CANL端回归到RTH电压(当电源电压Vcc为5V时,RTH电压至少为Vcc-0.3V=4.7V),同时使CANH端回归至RTL电压(RTL电压最大为0.3V)。两根线需要能够承受-27V至40V的电压而不被损坏。

 

 

 

在高速和低速CAN中,从隐性信号向显性信号过渡的速度更快,因为此时CAN线缆被主动积极地驱动。显性向隐性的过渡速度主要取决于CAN网络的长度和导线的电容。

高速CAN通常被用于汽车和工业应用,在这些应用环境中,总线通常从一端横跨至另一端。容错CAN总线则经常被用在需要连接在一起的一组节点。

ISO规格只要求总线共模电压必须保持在最小和最大范围内,但不定义如何将总线电压保持在这个范围。

CAN总线必须使用终端电阻。终端电阻可以用来抑制信号反射,同时可以使总线电压回到隐性状态或者闲置状态。

高速CAN在总线两端使用120Ω电阻。低速CAN在每个节点均使用电阻。也有其他类型的终端,例如ISO 11783中定义了终端偏压电路。 

终端偏压电路使用由4条导线组成的线缆,除了CAN信号线以外还有电源线和地线。这在每段总线两端提供自动偏压和终端功能。ISO11783网络是专为热拔插总线段和电子控制单元设计的。

 

每个节点需要:

  • 中央处理器、微处理器或主处理器
    • 处理主机决定收到的信息的意思以及想要传输的信息。
    • 传感器、驱动器和控制设备可以与主处理器连接。
  • CAN控制器;通常是集成单片机的一部分
    • 接收:CAN控制器将从总线上接收的串位字节存储直到整个消息可用,之后主处理器可以获取这个消息(通常由于CAN控制器触发一个中断)。
    • 发送:主处理器发送传递信息到CAN控制器,之后当总线空闲时将串位信息传递至总线。
  • 收发器;由ISO11898-2/3介质访问单元(MAU)标准定义
    • 接收:把数据流从CAN总线层转换成CAN控制器可以使用的标准。 CAN控制器通常配有保护电路。
    • 传输:把来自CAN控制器的数据流转换至CAN总线层。

 

 

每个节点能够发送和接收信息,但不是同时进行的。 一个消息或帧主要包括标识符(ID),它表示信息的优先级,最多八个数据字节。CRC、ACK和其他帧部分也是消息的一部分。改进了的CAN FD将每个帧拓展至最多64字节。 消息采用不归零(NRZ)格式串联传送到主线并可被所有节点接收。

被CAN网络连接的设备通常是传感器,驱动器和其他控制设备。 这些设备通过一个中央处理器、一个CAN控制器,和一个CAN接收器连接至总线。

 

CAN协议由物理层和数据链路层组成,符合OSI模型的底层两层设计:

  1. 物理层:物理层定义了信号传输的电气特性和线路配置,规定了节点通过差分电压来传输数据的方式。典型的CAN总线由两条线组成:CAN_H和CAN_L,通过两者的电压差来判断是逻辑0(显性位)还是逻辑1(隐性位)。

  2. 数据链路层:包括数据帧格式、仲裁方法、错误处理等,确保不同节点之间的数据通信。CAN协议支持以下几种帧类型:

    • 数据帧:实际传输数据的帧。
    • 远程帧:用于请求发送特定ID的数据帧。
    • 错误帧:当检测到错误时发送的帧。
    • 过载帧:用于指示节点忙碌无法处理新的数据帧。

    每个数据帧主要包括标识符(决定优先级)、控制字段、数据字段(最大8字节)、CRC校验字段和确认字段。

 

CAN协议的应用

  1. 汽车电子:CAN协议是现代汽车中最常用的通信协议,用于连接发动机控制单元(ECU)、传感器、制动系统、安全气囊、车载娱乐系统等。它可以实现车辆内多个控制器之间的实时、高效数据传输。

  2. 工业自动化:在工业领域,CAN常用于传感器、执行器和控制系统的连接,例如机器人控制、工厂自动化设备等,能确保数据可靠传输和实时反馈。

  3. 医疗设备:CAN被应用于病床监控系统、手术设备、CT扫描仪等设备的内部通信,确保系统运行的安全性和可靠性。

  4. 矿业与重型机械:CAN广泛用于重型设备如矿用车辆和机械设备的控制与监测。其抗干扰能力使其适合在恶劣的工业环境下运行,能确保设备的安全操作。

  5. 航空与航天:CAN被用作飞机和卫星内各个模块的通信协议,帮助系统实现同步控制和实时数据交换。

 

最新内容

知识库