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

在本页面中,我们将介绍CAN FD(CAN灵活数据速率),包括CAN FD帧、开销、效率、示例应用程序和日志记录用例。

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

内容大纲

为什么选择CAN FD

CAN 协议自 1986 年以来一直存在,并且很受欢迎:今天几乎所有移动的机器都使用 CAN,无论是汽车、卡车、船只、飞机还是机器人。

但随着现代技术的兴起,“经典”CAN 协议(ISO 11898-1:2015 中使用的官方术语)受到压力:

  • 车辆功能的增强正在推动数据爆炸
  • 网络越来越受到 1 Mbit/s 带宽的限制
  • 为了应对这种情况,原始设备制造商创建了复杂且成本高昂的解决方法

具体来说,传统 CAN 面临着巨大的开销 (>50%),因为每个 CAN 数据帧只能包含 8 个数据字节。此外,网络速度仅限于 1 Mbit/s,限制了数据生成功能的实现。

CAN FD 解决了这些问题– 使其面向未来。

什么是CAN FD?

CAN FD协议由博世(与行业专家)预先开发并于2012年发布。它通过标准化得到改进,现已纳入ISO 11898-1:2015。原博世 CAN FD 版本(非 ISO CAN FD)与 ISO CAN FD 不兼容。

CAN FD具有以下四大优势:

#1 长度增加

CAN FD 支持每个数据帧最多64 个数据字节,而传统 CAN 仅支持 8 个数据字节。这减少了协议开销并提高了协议效率

#2 速度提高

CAN FD 支持双比特率:与传统 CAN 一样,标称(仲裁)比特率限制为 1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达 5 Mbit/s 的数据比特率

#3 更好的可靠性

CAN FD 使用改进的循环冗余校验 (CRC) 和“受保护的填充位计数器”,从而降低未检测到错误的风险。这对于车辆和工业自动化等安全关键型应用至关重要

#4 平滑过渡

CAN FD 和经典 CAN only ECU在某些条件下可以混合使用。这样可以逐步引入 CAN FD 节点,从而大大降低 OEM 的成本和复杂性

实际上,与传统 CAN 相比,CAN FD 可以将网络带宽提高3-8 倍,从而为数据增长提供简单的解决方案。

CAN FD如何工作?

所以 CAN FD 看起来很简单:加快数据传输速度并将更多数据打包到每个消息中,对吗?

然而,在实践中,事情并不是那么简单。下面我们概述了 CAN FD 解决方案必须解决的主要挑战。

两个关键挑战

在查看 CAN FD 数据帧之前,了解我们想要维护的经典 CAN 的两个核心部分至关重要:

#1 避免严重的消息延迟

为什么不简单地用 64 字节数据打包经典 CAN 帧呢?

这样做可以减少开销并简化消息解释。然而,如果比特率不变,这也会使 CAN 总线阻塞更长时间,从而可能延迟关键任务的高优先级数据帧。

#2 保持实用的 CAN 线长度

因此,需要更高的速度来发送每条消息更多的数据。

但为什么不加速整个 CAN 消息(而不仅仅是数据阶段)呢?

这是由于“仲裁”:如果2个以上节点同时传输数据,则仲裁决定哪个节点优先。 “获胜者”继续发送(没有延迟),而其他节点在数据传输过程中“后退”。

在仲裁期间,“位时间”在每个位之间提供足够的延迟,以允许网络上的每个节点做出反应。为了确保在位时间内到达每个节点,以 1 Mbit/s 运行的 CAN 网络的最大长度需要为 40 米(实际上为 25 米)。加快仲裁过程会将最大长度减少到不合适的水平。

另一方面,仲裁之后有一条“空高速公路”——在数据传输期间实现高速(当只有一个节点驱动总线时)。在 ACK 时隙之前 – 当多个节点确认数据帧的正确接收时 – 速度需要降低到标称比特率。

总之,需要找到一种只在数据传输过程中提高速度的方法。

CAN FD帧

CAN FD 协议引入了调整后的 CAN 数据帧,以实现额外的数据字节和灵活的比特率。

下面我们比较 11 位经典 CAN 帧与 11 位 CAN FD 帧(也支持 29 位):

下面我们逐步分析一下差异:

RTR 与 RRS:传统 CAN 中使用远程传输请求 (RTR) 来识别数据帧和相应的远程帧。在 CAN FD 中,根本不支持远程帧 – 远程请求替换 (RRS) 始终占主导地位 (0)。

r0 与 FDF:在经典 CAN 中,r0 是保留且占主导地位的 (0)。在CAN FD中,它被命名为FDF和隐性(1)。

在r0/FDF位之后,CAN FD协议添加了“3个新位”。请注意,不支持 CAN FD 的节点会在 FDF 位后生成错误帧。

res:这个新的保留位与 r0 起着相同的作用 – 即它将来可能被设置为隐性(1)以表示新协议。

BRS:比特率开关(BRS) 可以占主导地位(0),这意味着CAN FD 数据帧以仲裁速率(即最大1 Mbit/s)发送。将其设置为隐性 (1) 意味着数据帧的剩余部分以更高的比特率(高达5 Mbit/s)发送。

ESI:错误状态指示符(ESI) 位默认为显性位(0),即“错误活动”。如果发送器变为“错误被动”,它将呈隐性 (1),表明其处于错误被动模式。

数据长度 DLC CAN 总线 灵活的数据速率

DLC:与经典 CAN 一样,CAN FD DLC 为 4 位,表示帧中的数据字节数。上表显示了两种协议如何一致地使用最多 8 个数据字节的 DLC。为了维持 4 位 DLC,CAN FD 使用 9 到 15 之间的其余 7 个值来表示使用的数据字节数(12、16、20、24、32、48、64)。

CAN FD 帧 SBC CRC ACK 尾部数据

SBC:填充位计数(SBC)位于 CRC 之前,由 3 个格雷编码位和一个奇偶校验位组成。下面的固定填充位可以被视为第二奇偶校验位。添加SBC是为了提高通信可靠性。

CRC:循环冗余校验 (CRC) 在经典 CAN 中为 15 位,而在 CAN FD 中为 17 位(最多 16 个数据字节)或 21 位(针对 20-64 个数据字节)。在经典CAN中,CRC中可以有0到3个填充位,而在CAN FD中总是有4个固定填充位以提高通信可靠性。

ACK: CAN FD 数据帧的数据阶段(也称为有效负载)在 ACK 位处停止,这也标志着潜在增加的比特率的结束。

CAN FD与CAN的开销和数据效率

显然,与传统 CAN 相比,CAN FD 的附加功能增加了许多额外的位 – 这如何能减少开销?

答案是不会 – 请参阅以下 3 个数据字节的经典 CAN 与 CAN FD 的可视化结果。事实上,直到跨越8个数据字节时,CAN FD的效率才超过经典CAN。然而,通过转向 64 个数据字节,效率可以从 ~50% 提高到 ~90%(更多信息见下文)。

极品速度:开启比特率切换

如前所述,以常规速度发送 64 个数据字节会阻塞 CAN 总线,从而降低实时性能。

为了解决这个问题,可以启用比特率切换,以允许以高于仲裁速率的速率发送有效负载(例如,5 Mbit/s 与 1 Mbit/s)。上面我们直观地展示了 3 个数据字节和 64 个数据字节场景的效果。

请注意,较高的速度适用于以 BRS 位开始并以 CRC 定界符结束的数据帧部分。

此外,当今大多数车辆使用 0.25-0.5 Mbit/s,这意味着使用 5 Mbit/s CAN FD 将使有效负载传输速度提高 10 倍。

如前所述,经典 CAN 和 CAN FD 节点在某些条件下可以混合使用。这允许逐步迁移到 CAN FD,而不必一次性切换每个 ECU。

存在两种情况:

100% CAN FD 系统:这里,CAN FD 控制器可以自由混合经典 CAN 和 CAN FD 数据帧。

一些节点是传统的经典 CAN:在这里,CAN FD 控制器可以切换到经典 CAN 通信,以避免来自经典 CAN 节点的错误帧反应。此外,例如在 ECU 刷新期间,经典 CAN 节点可能会关闭以允许暂时切换到 CAN FD 通信。

CAN FD 的一个令人困惑的方面是有效负载阶段的最大比特率 – 因为不同的文章提到了不同的级别。

有人指出,实际应用最高可达 8 Mbit/s,理论上可达 15 Mbit/s。其他人则表示高达12 Mbit/s。此外,戴姆勒表示,超过 5 Mbit/s 是值得怀疑的– 一方面是因为对此没有标准,另一方面是因为低成本汽车以太网 (10 BASE-T1) 预计将限制对更高速度 CAN FD 的需求。

那么什么是正确的呢?

这取决于。查看 ISO 11898-2(收发器芯片标准),它指定了两个对称参数集。建议使用具有改进的对称参数的收发器,通常宣传为 5 Mbit/s 收发器。可实现的数据相位比特率取决于许多因素。最重要的因素之一是所需的温度范围。 ECU的刷新不需要低温的支持。这意味着 ECU 刷新的速度可以达到 12 Mbit/s。另一个重要的比特率限制是由所选拓扑引起的。与具有长短截线甚至星形的混合拓扑相比,具有非常短短截线的总线拓扑可显着提高比特率。大多数多点总线网络在 -40 ℃ 至 +125 ℃ 的温度范围内仅限于 2 Mbit/s。 CiA 在 CiA 601-3 网络设计建议中提供了适当的经验法则。这包括在数据阶段设置采样点的建议。

CAN FD的应用

由于CAN FD允许系统以更快的速度处理更多的数据,这对于以下应用至关重要:

电动车

电动汽车和混合动力汽车使用新的动力系统概念,需要更高的比特率。与 DC/DC 逆变器、电池、充电器、增程器等相关的新控制单元增加了复杂性。预计到 2025 年,所需的比特率将超过 CAN - 随着电动汽车的爆炸性增长,这可能是CAN FD 推出的重要因素

ECU闪烁

车辆软件变得越来越复杂。因此,今天通过 OBD2 端口执行 ECU 更新可能需要几个小时。借助 CAN FD,此类过程的速度可以提高 4 倍以上。该用例一直是汽车 OEM 厂商对 CAN FD 需求背后的原始驱动因素之一

机器人技术

一些应用程序依赖于时间同步行为 - 例如具有多个轴的机器人手臂。此类设备通常使用CANopen,并要求每个控制器同步发送多个 CAN 帧 (PDO)(不会因较高优先级帧而中断)。通过转向 CAN FD,可以在单帧中发送数据以提高效率

ADAS 与安全驾驶

高级驾驶辅助系统 (ADAS) 越来越多地被引入乘用车和商用车中。这给传统 CAN 的总线负载带来了压力,但 ADAS 是提高安全性的关键。在这里,CAN FD 将成为在不久的将来增强安全驾驶的关键

卡车和公共汽车

卡车和公共汽车使用长 CAN 总线(10-20 米)。因此,它们依赖于较慢的比特率(根据J1939-14为 250 kbit/s 或 500 kbit/s )。在这里,即将推出的 J1939 FD 协议预计将显着改进商用车功能,包括。例如高级驾驶辅助系统

安全 CAN 总线

正如最近的 CAN 黑客攻击所示,传统 CAN 很容易受到攻击。如果黑客获得对 CAN 总线的访问权限(例如通过无线方式),他们就可以关闭关键功能。通过安全板载通信 (SecOC) 模块进行的 CAN FD 身份验证可能是关键的推出驱动因素

CAN FD展望

CAN FD 预计将在未来几年取代传统 CAN:
CAN FD与其他协议

当然,没有带宽和有效负载要求的传统应用程序仍将使用经典 CAN。此外,CAN 社区已经在开发下一代 CAN 数据链路层,支持高达 2048 字节的有效负载。这种方法可以被视为 10 Mbit/s 以太网的替代方案。因此,CAN FD 在未来将扮演什么角色仍有待确定 – 但它肯定会不断上升。