需要简单实用的CAN总线介绍吗?

在本页面中,我们将为初学者解释控制器局域网(CAN 总线),包括消息解释、CAN 记录 – 以及 OBD2、J1939 和 CANopen 的联系。

虹科是一家在通讯领域,尤其是汽车电子和智能自动化领域拥有超过15年经验的高科技公司,在CAN总线技术领域已经有了超过10年的技术经验积累,并提供全面的软硬件解决方案,包括【CAN/CAN FD、LIN、车载以太网、TSN、IO-Link/IO-Link wireless、OPC UA、CANopen、PROFINET、EtherNet/IP、EtherCAT】等各类通讯协议的解决方案、测试方案、培训和开发服务等。

内容大纲

什么是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 FD的兴起

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

具体来说,CAN FD 具有三个优势(与传统 CAN 相比):

  • 它的数据速率高达8 Mbit/s(相对于 1 Mbit/s)
  • 它允许高达64 字节的数据有效负载(相对于 8 字节)
  • 它可以通过身份验证提高安全性

简而言之,CAN FD 提高了速度和效率,因此正在新型车辆中推广。这也将推动对物联网 CAN FD 数据记录仪的需求不断增长。

“第一批使用 CAN FD 的汽车将于 2019/2020 年出现,CAN FD 将逐步取代传统 CAN”

– CAN 自动化 (CiA),“CAN 2020:CAN 技术的未来”

什么是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:远程传输请求指示节点是否发送数据或向另一个节点请求专用数据
  • 控制:控制包含标识符扩展位 (IDE),它是 11 位的“显性 0”。它还包含 4 位数据长度代码 (DLC),指定要传输的数据字节的长度(0 到 8 个字节)
  • 数据:数据包含数据字节,也称为有效负载,其中包括可以提取和解码信息的 CAN 信号
  • CRC:循环冗余校验用于确保数据完整性
  • ACK: ACK槽指示节点是否已确认并正确接收数据
  • EOF: EOF标记CAN帧的结束

CAN 帧必须满足许多属性才能有效。如果传输了错误的 CAN 帧,CAN 节点将自动检测到并采取相应措施。这称为 CAN 总线错误处理,其中 CAN 节点跟踪自己的“CAN 错误计数器”并根据计数器更改状态(主动、被动、总线关闭)。有问题的 CAN 节点传输数据的能力因此被优雅地降低,以避免进一步的 CAN 错误和总线干扰。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CAN、J1939、OBD2、CANopen...之间有什么联系?

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

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

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

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

SAE J1939

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

SAE J1939

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

SAE J1939

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

CAN FD

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