📜  CAN(控制器局域网)协议

📅  最后修改于: 2020-11-10 06:06:56             🧑  作者: Mango

CAN(控制器局域网)协议

CAN代表控制器局域网协议。它是罗伯特·博世(Robert Bosch)在1986年左右开发的协议。CAN协议是一种标准设计,允许微控制器和其他设备在没有任何主机的情况下彼此通信。使CAN协议在其他通信协议中独树一帜的功能是总线的广播类型。在此,广播意味着将信息发送到所有节点。该节点可以是允许计算机通过USB电缆或以太网端口通过网络进行通信的传感器,微控制器或网关。 CAN是基于消息的协议,这意味着消息带有消息标识符,并根据标识符确定优先级。 CAN网络中不需要节点识别,因此从网络中插入或删除节点变得非常容易。它是串行半双工和异步类型的通信协议。由于CAN网络通过两线总线连接,因此CAN是两线通信协议。导线为双绞线,两端均具有120Ω特性阻抗。最初,它主要用于车辆内部的通信,但现在已用于许多其他环境。像UDS和KWP 2000一样,CAN也可以用于车载诊断。

为什么可以?

由于电子设备的数量增加,因此需要集中式标准通信协议。例如,现代汽车中用于各种子系统(例如仪表板,变速箱控制,发动机控制单元)的TCU可能超过7个。如果所有节点都是一对一连接,则通信速度将非常高,但是电线的复杂性和成本将非常高。在上面的示例中,单个仪表板需要8个连接器,因此为了解决此问题,CAN作为一种集中式解决方案被引入,它需要两条线,即CAN high和CAN low。使用CAN协议的解决方案由于具有消息优先级,因此非常有效,并且灵活地插入或删除节点而不会影响网络。

CAN协议的应用

最初,CAN协议旨在解决车辆内部发生的通信问题。但是后来,由于其提供的功能,它被用于其他各个领域。以下是CAN协议的应用:

  • 汽车(客运车辆,卡车,公共汽车)
  • 航空和导航电子设备
  • 工业自动化和机械控制
  • 电梯和自动扶梯
  • 楼宇自动化
  • 医疗仪器设备
  • 海洋,医疗,工业,医疗

CAN分层架构

众所周知,OSI模型将通信系统划分为7个不同的层。但是CAN分层体系结构由两层组成,即数据链路层和物理层。

让我们了解这两层。

  • 数据链路层:该层负责节点到节点的数据传输。它允许您建立和终止连接。它还负责检测和纠正可能在物理层发生的错误。数据链路层可分为两个子层:
    1. MAC: MAC代表媒体访问控制。它定义了网络中的设备如何访问介质。它提供数据的封装和解封装,错误检测和信令。
    2. LLC: LLC代表逻辑链接控制。它负责帧接受过滤,过载通知和恢复管理。
  • 物理层:物理层负责原始数据的传输。它定义了参数的规格,例如电压电平,时序,数据速率和连接器。

CAN规范定义了在CAN标准ISO 11898中定义的CAN协议和CAN物理层。ISO11898具有三个部分:

  • ISO 11898-1:此部分包含数据链路层和物理信号链路的规范。
  • ISO 11898-2:此部分属于高速CAN的CAN物理层。高速CAN允许动力总成和车辆充电区域使用的数据速率高达1 Mbps。
  • ISO 11898-3:该部分还属于低速CAN的CAN物理层。它允许高达125 kbps的数据速率,并且在通信速度不是关键因素的情况下使用低速CAN。

CiA DS-102:CiA的完整形式是“自动化中的CAN”,它定义了CAN连接器的规范。

就实现而言,在软件,应用程序,操作系统和网络管理功能的帮助下实现了CAN控制器和CAN收发器。

CAN成帧

让我们了解一下CAN帧的结构。

  • SOF: SOF代表帧的开始,它表示新帧已输入到网络中。它是1位。
  • 标识符: CAN 2.0 A规范中定义的标准数据格式使用11位消息标识符进行仲裁。基本上,此消息标识符设置数据帧的优先级。
  • RTR: RTR代表远程传输请求,它定义帧类型,无论是数据帧还是远程帧。它是1位的。
  • 控制字段:具有用户定义的功能。
    1. IDE:控制字段中的IDE位代表标识符扩展。显性IDE位定义11位标准标识符,而隐性IDE位定义29位扩展标识符。
    2. DLC: DLC代表数据长度代码,它定义数据字段中的数据长度。它是4位。
    3. 数据字段:数据字段最多可包含8个字节。
  • CRC字段:数据帧还包含一个15位的循环冗余校验字段,用于检测损坏(如果在传输时间内发生)。发送方将在发送数据帧之前计算CRC,接收方也将计算CRC,然后将计算出的CRC与从发送方接收到的CRC进行比较。如果CRC不匹配,则接收器将生成错误。
  • ACK字段:这是接收方的确认。在其他协议中,在收到所有数据包后会发送一个单独的确认数据包,但是在CAN协议的情况下,不会发送任何单独的数据包进行确认。
  • EOF: EOF代表帧结束。它包含7个连续的隐性位,称为帧结束。

现在,我们将了解如何通过CAN网络传输数据。

一个CAN网络由多个CAN节点组成。在上述情况下,我们考虑了三个CAN节点,并将它们分别命名为节点A,节点B和节点C。CAN节点由以下三个元素组成:

  • 主机主机是运行某些应用程序以执行特定工作的微控制器或微处理器。主机决定接收到的消息的含义以及接下来应发送的消息。
  • CAN控制器CAN控制器处理CAN协议描述的通信功能。它还触发CAN消息的发送或接收。
  • CAN收发器CAN收发器负责在CAN总线上发送或接收数据。它将数据信号转换为CAN控制器可以理解的,从CAN总线收集的数据流。

在上图中,非屏蔽双绞线电缆用于发送或接收数据。也称为CAN总线,CAN总线由两条线组成,即CAN低线和CAN高线,它们分别也称为CANH和CANL。由于施加到这些线路的差分电压而发生传输。由于环境原因,CAN使用双绞线电缆和差分电压。例如,在汽车,电动机,点火系统和许多其他设备中,由于噪声会导致数据丢失和数据损坏。两条线的扭曲也减小了磁场。总线两端的电阻为120Ω。

CAN特性

借助差分电压,我们将确定如何通过CAN总线传输0和1。上图是显示CAN低和CAN高电压电平的电压图。在CAN术语中,逻辑1被认为是隐性的,而逻辑0被认为是隐性的。当CAN高线和CAN低线施加2.5伏特时,实际的差分电压将为零伏特。 CAN收发器将CAN总线上的零伏作为隐性或逻辑1读取。CAN总线上的零伏是总线的理想状态。当CAN高线被拉高至3.5伏而CAN低线被拉低至1.5伏时,总线的实际差分电压将为2伏。 CAN收发器将其视为显性位或逻辑0。如果总线状态达到显性或逻辑0,那么任何其他节点都将无法变为隐性状态。

从CAN特性中学到的要点

  • 逻辑1为隐性状态。要在CAN总线上发送1,则应在2.5V上同时施加CAN高电平和CAN低电平。
  • 逻辑0为显性状态。要在CAN总线上发送0,应在3.5V时施加CAN高电平,在1.5V时施加CAN低电平。
  • 总线的理想状态是隐性的。
  • 如果该节点达到显性状态,则任何其他节点都无法将其移回隐性状态。

CAN总线逻辑


从上面的场景中,我们知道主导状态覆盖了隐性状态。当节点同时发送显性位和隐性位时,总线将保持显性。隐性级别仅在所有节点都发送隐性位时发生。这种逻辑被称为“与”逻辑,并且在物理上被实现为集电极开路。

CAN通讯原理

众所周知,消息是根据仲裁字段中设置的优先级发送的。对于标准帧,消息标识符为11位,而对于扩展帧,消息标识符为29位。它允许系统设计者在设计本身上设计消息标识符。消息标识符越小,消息优先级越高。

让我们通过流程图了解仲裁的工作方式。

发送者要发送消息并等待CAN总线空闲。如果CAN总线空闲,则发送方发送SOF或用于总线访问的显性位。然后,它以最高有效位发送消息标识符位。如果节点在传输隐性位的同时检测到总线上的显性位,则意味着该节点丢失了仲裁并停止传输其他位。一旦总线空闲,发送者将等待并重新发送消息。

CAN仲裁示例

如果考虑三个节点,即节点1,节点2和节点3,则这些节点的消息标识符分别为0x7F3、0x6B3和0x6D9。

上图显示了具有最高有效位的所有三个节点的传输。

第11位:由于节点的所有三个位都是隐性的,因此总线位也将保持隐性。

第十位:所有节点都将第十位设为隐性,因此总线也将保持隐性。

第9位:节点1具有隐性位,而其他节点具有显性位,因此总线也将保持显性。在这种情况下,节点1失去了仲裁,因此它停止发送位。

第8位:节点2和节点3都在发送隐性位,因此总线状态将保持隐性。

第7位:节点2发送显性位,而节点3发送隐性位,因此总线状态将保持显性。在这种情况下,节点3失去了仲裁,因此它停止发送消息,而节点2赢得了仲裁,这意味着它将继续保持总线直到收到消息为止。