本文主要介绍控制器局域网(CAN总线)主要内容如下:

  1. 什么是CAN总线
  2. CAN总线的优势
  3. CAN报文
  4. 为什么要记录CAN报文
  5. 如何解析CAN报文
  6. CAN和J1939,CANopen,OBD2之间的关系
 

什么是CAN总线?

您的汽车就像人体一样:

控制器区域网络(CAN总线)是神经系统,用于通信。

“节点”或“电子控制单元”(ECU)就像车身的一部分,通过CAN总线互连。一个部分感知到的信息可以与另一部分共享。

那么什么是ECU?

在汽车CAN总线系统中,ECU可以是例如引擎控制单元,安全气囊,音频系统等。现代汽车可能具有多达70个ECU—每个ECU可能都需要与网络的其他部分共享的信息。 

CAN总线派上用场的地方:

CAN总线系统使每个ECU都能与所有其他ECU通信-无需复杂的专用接线。

具体地说,ECU可以通过CAN总线(由两条线组成,CAN低和CAN高)准备和广播信息(例如传感器数据)。广播的数据被CAN网络上的所有ECU接收——然后每个ECU可以检查数据并决定是接收还是忽略它。

 

CAN总线的优势?

由于具有如下优势,所以CAN总线广泛应用于汽车,自动化,机械,轨道交通等各个方面。

简单且低成本

ECU通过单个CAN系统进行通信,而不是直接的复杂模拟信号线通信,这样减少了错误,重量,接线和成本

完全集中

CAN总线提供了“一个进入点”,可以与所有网络ECU进行通信——支持集中诊断,数据记录和配置

极其坚固

CAN总线具有强大的抗电干扰和抗电磁干扰能力,非常适合对安全要求严格的应用(例如车辆)

非常高效

通过ID对CAN帧进行优先级排序,以便优先级最高的数据可以立即访问总线,而不会引起其他帧的中断

 

CAN总线的历史

  • CAN之前的版本:汽车ECU是复杂的点对点布线
  • 1986年:博世开发了CAN协议作为解决方案
  • 1991年:博世发布了CAN 2.0(CAN 2.0A:11位,2.0B:29位)
  • 1993年: CAN被采用为国际标准(ISO 11898)
  • 2003年: ISO 11898成为标准系列
  • 2012年:博世发布了CAN FD 1.0
  • 2015年: CAN FD协议标准化(ISO 11898-1)
  • 2016年:CAN物理层,数据速率高达5 Mbit / s,已通过ISO 11898-2标准化

如今,CAN已成为汽车(汽车,卡车,公共汽车,拖拉机,…),轮船,飞机,电动汽车电池,机械等的标准配置。

CAN总线的未来

展望未来,CAN总线协议将保持相关性 —尽管它将受到主要趋势的影响:

  •   对日益先进的车辆功能的需求
  •   云计算的兴起
  •   物联网(IoT)和联网车辆的增长
  •   自动驾驶汽车的影响

特别是,联网汽车和云计算的增长将导致车载远程信息处理和物联网CAN记录器的快速增长。

反过来,使CAN总线“联机”也会使车辆面临安全风险 -并可能需要转向新的CAN协议。

随着车辆功能的扩展,CAN总线上的负载也随之增加。为此,CAN FD(灵活数据速率)已被设计为“下一代” CAN总线。

具体而言,CAN FD具有三个优点(相对于经典CAN):

  • 它支持高达12 Mbit / s的数据速率(vs 1 Mbit / s)
  • 它允许高达64字节的数据有效载荷(与8字节相比)
  • 它能够改善安全通过认证

简而言之,CAN FD可以提高速度和效率,因此,它正在新车型中应用。这也将推动对IoT CAN FD数据记录仪的需求增加。

 

什么是CAN报文?

CAN总线的通信是通过CAN报文完成的。

下图是带有11位标识符(CAN ID)的标准帧(CAN 2.0A),这是大多数汽车中使用的类型。

扩展的29位标识符(CAN ID)报文(CAN 2.0B)除了更长的ID外,其它部分都是相同的。它主要在重型车辆的J1939协议中使用。

注意,CAN ID和CAN Data在记录CAN总线数据时,它们非常重要,我们记录的主要就是这两部分。

  • SOF: “帧开始”是一个“显性0”,用于告知其他节点CAN节点打算进行通话
  • ID: ID是帧标识符—值越小优先级越高
  • RTR:远程传输请求指示一个节点是发送数据还是从另一个节点请求专用数据
  • Control:包含标识符扩展位(IDE),它是11位的“显性0”。它还包含4位数据长度代码(DLC),用于指定要传输的数据字节的长度(0至8字节)
  • Data:数据包含数据字节(也称为有效载荷),其中包括可以提取和解码以获取信息的CAN信号
  • CRC:循环冗余校验用于确保数据完整性
  • ACK: ACK指示节点是否已正确确认和接收数据
  • EOF: EOF标记CAN帧的结束
 

如何解析CAN报文为具体的物理量?

如果查看上面的原始CAN总线数据,可能会注意到:

原始的CAN总线数据不可读。

要对其进行解释,需要将CAN报文解析为具体的工程值,也就是物理值(km / h,degC等)。

下面我们逐步展示了它是如何工作的:

总线上的每个CAN帧在CAN数据字节内都包含许多CAN信号(参数)。例如,具有特定CAN ID的CAN帧可以承载2个CAN信号的数据。CAN总线消息帧故障位起始长度

要提取CAN信号的物理值,需要以下信息:

  • 位开始:信号从哪位开始
  • 位长:信号长度(以位为单位)
  • 偏移:偏移信号值的值
  • 比例:将信号值乘以的值

要提取CAN信号,需“去除”相关的位,取十进制值并执行线性缩放:

物理值=偏移量+比例*原始值十进制

如何找到所需的CAN解析信息?

这些“转换规则”通常是专有的,不容易获得,一般车厂都会有DBC数据库文件,再结合相关软件就可以解析,比如PCAN-Explorer6

但是,在某些情况下,存在标准化的解码数据库,例如OBD2或J1939数据。

在某些情况下,转换规则在制造商之间是标准的-例如,在重型J1939协议中

这意味着您几乎可以在任何重型车辆上使用J1939参数转换规则来转换大部分数据。为了使其实用,您需要一种用于存储转换规则的格式。在此,CAN数据库(DBC)格式是行业标准-并受大多数CAN总线软件(包括)的支持。

我们还提供了低成本的J1939 DBC文件,您可以将其以数字下载的形式购买。这样,您就可以从原始的J1939数据快速转换为人类可读的格式。

CAN和J1939,CANopen,OBD2之间的关系

控制器区域网络提供了通信的基础-但仅此而已。

例如,CAN标准未指定如何处理大于8个字节的消息——或如何解码原始数据。

因此,存在一组标准化协议以进一步指定给定网络的CAN节点之间如何通信数据。

一些最常见的标准包括SAE J1939,OBD2和CANopen。此外,这些高层协议将越来越多地基于CAN的“下一代” CAN FD(例如CANopen FD和J1939-17 / 22)。

SAE J1939

J1939是重型车辆(例如卡车和公共汽车)的所用的标准。J1939参数(例如RPM,速度等)由SPN标识,该参数编号分组在由PG编号(PGN)标识的参数组中。

OBD2

车载诊断(OBD,ISO 15765)是一种自诊断系统,可以报告汽车问题。OBD2指定诊断故障代码(DTC)和实时数据(例如速度,RPM),可以通过OBD2记录仪进行记录。

CANopen

CANopen广泛用于嵌入式控制应用中,例如工业自动化。它基于CAN,这意味着CAN总线数据记录仪也能够记录CANopen数据。这是机器诊断或优化生产的关键。

CAN FD

CAN FD可以认为是CAN的升级版,支持最大64个字节的数据,数据域通信速率最高可以达到12Mbit/s,具体取决于CAN收发器。这样可实现数据密集型应用,例如EV。