全网唯一UAVCAN中文教程(18)从can 2.0升级到canfd的变化

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网唯一UAVCAN中文教程(18)从can 2.0升级到canfd的变化相关的知识,希望对你有一定的参考价值。

文章目录

1、什么是CAN FD?

CAN FD协议由Bosch(与行业专家)预先开发,并于2012年发布。

在标准化过程中已得到显着改进,如今已在ISO 11898-1:2015中进行了改进。原始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD不兼容。

CAN FD具有四个主要优点:

1 增加数据长度

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

2 速度提升

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

3 改进的可靠性

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

4 平滑过渡

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

实际上,与经典CAN 相比,CAN FD可以将网络带宽提高3到8 ,从而为数据增长提供了一种简单的解决方案。

2、CAN FD如何工作?

因此,CAN FD看起来非常简单:

加快数据传输速度,并将更多数据打包到每个消息中,对吗?

但是实际上,这不是那么简单。

下面我们概述了CAN FD解决方案必须解决的主要挑战。

两个关键挑战

在查看CAN FD数据帧之前,了解我们要维护的Classic 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:**远程传输请求(RTR)在经典CAN中用于标识数据帧和相应的远程帧。在CAN FD中,根本不支持远程帧-远程请求替换(RRS)始终占主导地位(0)。

**r0 vs. 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一样,CAN FD DLC为4位,表示帧中数据字节的数量。上表显示了两种协议如何一致地使用多达8个数据字节的DLC。为了维持4位DLC,CAN FD使用9到15之间的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。

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

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

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

NEED FOR SPEED:开启比特率切换

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

为了解决这个问题,可以启用**比特率切换,**以允许以比仲裁率更高的速率(例如5 Mbit / s与1 Mbit / s)发送有效负载。上面我们以图解方式可视化了3个数据字节和64个数据字节方案的效果。

注意,较高的速度适用于从BRS位开始到CRC分隔符结束的数据帧部分。

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

令人印象深刻,对不对?

3、混合经典CAN和CAN FD节点

如前所述,经典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与CAN的开销和数据效率

显而易见,与经典CAN相比,CAN FD的新增功能增加了很多额外的位-如何减少开销?

答案是事实并非如此-请参见下面的经典CAN与CAN FD可视化图,了解3个数据字节。实际上,直到跨越8个数据字节,CAN FD的效率才不会超过经典CAN。但是,通过移向64个数据字节,效率可以从约50%增至约90%(下文有更多介绍)。

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网络设计建议中提供了适当的经验法则。这包括在数据阶段设置采样点的建议。

4、CAN FD应用

简而言之,CAN FD允许系统以更快的速度处理更多数据。

这对于许多越来越相关的用例至关重要:

电动汽车

电动汽车和混合动力汽车采用了新的动力总成概念,要求更高的比特率。复杂性的增加来自与DC / DC逆变器,电池,充电器,增程器等相关的新控制单元。到2025年,预计所需的比特率将超过CAN- 随着电动汽车爆炸性增长,这可能是该技术的先驱CAN FD推出。

ECU flash

车载软件变得越来越复杂。因此,今天通过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协议有望实现商用车功能的重大改进,包括。例如ADAS。

安全CAN总线

最近的CAN黑客攻击所示,经典CAN容易受到攻击。如果黑客能够访问CAN总线(例如,无线),则可能会关闭关键功能。带宽更高时,CAN FD可以通过安全车载通信(SecOC)模块进行身份验证-这可能成为CAN FD的核心理由。

以上是关于全网唯一UAVCAN中文教程(18)从can 2.0升级到canfd的变化的主要内容,如果未能解决你的问题,请参考以下文章

全网唯一UAVCAN中文教程(17)canfd协议详解

全网唯一UAVCAN中文教程(20)can iso标准文档

全网唯一UAVCAN中文教程(18)dsdl文件的编译

全网唯一OpenCyphal/UAVCAN教程libcanard介绍

全网唯一OpenCyphal/UAVCAN教程libcanard介绍

全网唯一OpenCyphal/UAVCAN教程(11)用candump和gawk工具写一个Cyphal协议解析小工具