CAN通信在整车应用中的概述及学习资料

CAN历史

博世最初在1985年开发了用于车载网络的控制器区域网络(CAN)。过去,汽车制造商使用点对点布线系统连接车辆中的电子设备。制造商开始在车辆中使用越来越多的电子设备,这导致了笨重而昂贵的线束。于是,他们用车内网络取代了专用布线,从而降低了布线成本、复杂性和重量。CAN,一种用于智能设备联网的高完整性串行总线系统,成为标准的车载网络。汽车行业很快采用了CAN,并在1993年成为国际标准,即ISO 11898。自1994年起,CAN上又有几个更高级别的协议被标准化,如CANopen和DeviceNet。其他市场也广泛采用了这些附加协议,这些协议现已成为工业通信的标准。本白皮书重点介绍作为车载网络的CAN。

CAN的好处

低成本、轻量级网络

CAN提供了一个廉价、耐用的网络,帮助多个CAN设备相互通信。这样做的一个好处是,电子控制单元(ECU)可以有一个单一的CAN接口,而不是向系统中的每个设备提供模拟和数字输入。这降低了汽车的整体成本和重量。

广播通信

网络上的每个设备都有一个CAN控制器芯片,因此是智能化的。网络上的所有设备都能看到所有传输的信息。每个设备都可以决定一个信息是否相关,或者是否应该过滤。这种结构允许以最小的影响对CAN网络进行修改。可以在不修改网络的情况下添加额外的非传输节点。

优先级

每个消息都有一个优先级,所以如果两个节点试图同时发送消息,优先级较高的那个节点会被传送,优先级较低的那个节点会被推迟。这种仲裁是非破坏性的,结果是最高优先级的消息不被中断传输。这也使得网络可以满足确定性的时序约束。

错误能力

CAN规范包括一个循环冗余码(CRC),对每个帧的内容进行错误检查。有错误的帧会被所有节点忽略,可以传输一个错误帧来向网络发出错误信号。全局错误和局部错误由控制器区分,如果检测到的错误太多,单个节点可以停止传输错误或将自身从网络中完全断开。

图1. CAN网络大大减少了布线

CAN应用

CAN最初是为汽车用途而创建的,所以它最常见的应用是车载电子网络。然而,在过去的20年里,随着其他行业意识到CAN的可靠性和优势,他们已经在各种应用中采用了这种总线。铁路应用如街车、电车、地下铁道、轻轨、长途列车等都采用了CAN。你可以在这些车辆内的多个网络的不同层面上找到CAN,例如,在连接车门单元或制动控制器、乘客计数单元等方面。CAN在飞机上也有应用,包括飞行状态传感器、导航系统和驾驶舱内的研究电脑。此外,你可以在许多航空航天应用中发现CAN总线,从飞行中的数据分析到飞机发动机控制系统,如燃料系统、泵和线性执行器。
医疗设备制造商在医疗设备中使用CAN作为嵌入式网络。事实上,一些医院使用CAN来管理整个手术室。医院用基于CAN的系统控制手术室的部件,如灯光、桌子、摄像机、X射线机和病床。电梯和自动扶梯使用嵌入式CAN网络,医院使用CANopen协议将电梯设备(如面板、控制器、门和光障)相互连接并控制它们。CANopen还用于非工业应用,如实验室设备、运动相机、望远镜、自动门,甚至咖啡机。

CAN物理层

CAN有几个不同的物理层可以使用。这些物理层对CAN网络的某些方面进行了分类,如电等级、信令方案、电缆阻抗、最大波特率等。最常见和广泛使用的物理层描述如下。

高速/FD CAN

高速CAN是目前最常见的物理层。高速CAN网络用两根线实现,允许以高达1 Mbit/s的传输速率进行通信。高速CAN的其他名称包括CAN C和ISO 11898-2。典型的高速CAN设备包括防抱死制动系统、发动机控制模块和排放系统。具有灵活数据速率的CAN(CAN FD)是下一代高速CAN通信,其标准正在不断发展,以实现更高的数据速率。NI已经通过NI-XNET驱动程序,使用TJA1041和TJA1043收发器实现了高达8 Mbit/s的速度。随着收发器供应商完成对CAN FD速度的认证,NI将根据需要更新我们的文档。

低速/容错CAN硬件

低速/容错CAN网络也是用两根线来实现的,可以以高达125kbit/s的速率与设备通信,并提供具有容错能力的收发器。低速/容错CAN的其他名称包括CAN B和ISO 11898-3。汽车中典型的低速/容错设备包括舒适设备。鉴于开关车门时固有的应力,必须通过车门的电线是低速/容错的。此外,在需要更高的安全性的情况下,如刹车灯,低速/容错CAN提供了一个解决方案。

单线CAN硬件

单线CAN接口与设备的通信速率可达33.3kbit/s(高速模式下为88.3kbit/s)。单线CAN的其他名称包括SAE-J2411、CAN A和GMLAN。汽车内典型的单线设备对性能要求不高。常见的应用包括舒适性设备,如座椅和后视镜调节器。

CAN术语

CAN设备在CAN网络中发送数据的数据包称为帧。一个CAN帧由以下几个部分组成。
CAN帧--整个CAN传输:仲裁ID、数据字节、确认位等。帧也被称为报文。

图2.标准的CAN帧格式

SOF(frame start-of-frame)位--表示消息的开始,有一个主导位(逻辑0)。

仲裁ID--标识消息,并表示消息的优先级。帧有两种格式--标准的,使用11位仲裁ID,扩展的,使用29位仲裁ID。

IDE(标识符扩展)位--允许区分标准帧和扩展帧。

RTR(远程传输请求)位--用于区分远程帧和数据帧。显性(逻辑0)RTR位表示数据帧。隐性(逻辑1)RTR位表示远程帧。

DLC(数据长度代码)--表示数据字段包含的字节数。

数据字段--包含0~8个字节的数据。

CRC(循环冗余检查)--包含15位循环冗余检查码和隐性定界位。CRC字段用于错误检测。

ACK(ACKnowledgement)槽--任何正确接收报文的CAN控制器都会在报文结束时发送一个ACK位。发送节点检查总线上是否存在ACK位,如果没有检测到确认,则重新尝试传输。

CAN信号 - 包含在CAN帧数据域中的单个数据。您也可以将CAN信号称为通道。因为数据字段最多可以包含8个字节的数据,所以一个CAN帧可以包含0到64个单独的信号(对于64个通道,它们都是二进制的)。

在下图中,一个CAN帧的数据域中包含6个通道。每个信号包含8位数据。

图3.信号的定义  信号可以定义为CAN帧内一定数量的比特

CAN数据库文件

CAN数据库文件是包含CAN帧和信号定义的缩放信息的文本文件。
对于每个信号,CAN数据库定义了转换为工程单位的规则。以下数据存储在数据库中。
  • 通道名称

  • 在一个给定的信息中,通道的位置(起始位)和大小(位数)。

  • 字节顺序(Intel/Motorola)

  • 数据类型(有符号、无符号和IEEE浮点数)

  • 缩放和单位字符串

  • 范围

  • 默认值

  • 评论

可以使用这些信息轻松地将 "原始 "帧信息(通常是字节)转换为 "真实世界 "的值。下图说明了这种转换的一个例子。

图4.  所有必要的缩放数据都包含在数据库中,用于将帧转换为信号。

CAN数据库文件可能包含整车的帧和信号定义。每个网络都有自己独特的数据库文件。此外,这些数据库文件是特定于厂商的,通常是保密的。
通过对CAN网络上的许多帧使用数据库文件,许多CAN API(如NI-XNET)可以自动将帧信息直接转换为现实世界的值。这简化了应用开发,因为永远不需要担心原始帧值。

CAN通信如何工作

如前所述,CAN是一个点对点的网络。这意味着没有一个主站来控制各个节点何时可以在CAN总线上读写数据。当一个CAN节点准备传输数据时,它检查总线是否繁忙,然后简单地在网络上写一个CAN帧。传输的CAN帧不包含发送节点或任何接收节点的地址。取而代之的是一个在整个网络中独一无二的仲裁ID来标记该帧。CAN网络上的所有节点都会收到CAN帧,根据该传输帧的仲裁ID,网络上的每个CAN节点都会决定是否接受该帧。
如果多个节点试图同时将一个消息传输到CAN总线上,优先级最高(仲裁ID最低)的节点自动获得总线访问权。优先级较低的节点必须等到总线变得可用后才能再次尝试传输。通过这种方式,可以实现CAN网络以确保CAN节点之间的确定性通信。

图5.  CAN包含内置的报文优先级以避免冲突

(0)

相关推荐