优化CAN总线负载率:汽车行业中的性能提升与应用案例分析

文摘   2024-12-30 07:05   上海  

在现代汽车电子系统中,CAN总线作为一种高效、可靠的通信协议,已经成为了车载网络的核心。随着汽车智能化、自动化水平的不断提升,车辆中的电子控制单元(ECU)数量急剧增加,导致CAN总线的负载率逐渐上升,进而影响到通信的实时性、稳定性与系统的整体性能。因此,合理控制CAN总线的负载率,确保系统高效运行,成为了汽车电子电气架构开发中的一个重要问题。

本文将从多个角度详细探讨CAN总线负载率的概念、影响因素、优化方法及测试策略,并通过实际案例分析,帮助读者全面理解如何在汽车行业中优化CAN总线负载率。

1. 什么是CAN总线负载率

1.1 负载率定义

CAN总线负载率指的是在一定时间内,CAN总线上实际传输的消息量占其最大传输能力的比例。通俗来说,它衡量了总线的使用程度。负载率过高会导致网络拥堵,导致数据传输延迟,甚至数据丢失,而负载率过低则可能导致带宽资源的浪费。

负载率的计算公式如下:

假设CAN总线的传输速率为500 kbps,如果每秒传输的数据量为250 kbps,那么负载率为50%。这里理解如何计算一帧CAN报文的负载率,以CAN标准数据帧为例:

source:https://support.vector.com/kb?id=kb_article_view&sysparm_article

上图的 CAN 帧大约包含125位。假设我们使用500 kbps比特率,则位时间 = 1 / 比特率 = 1 / (500 * 1000) s = 2 *10 -6s=2µs,这意味着1位将需要2µs在总线上传输。因此传输 1 帧的大约时间为 (2 µs/bit * 125 bit) = 250µs。

500 kbps速率下每100ms发送1条报文的总线,则在100ms内,总线将被占用250µs。因此,这条报文占用的总线负载率为:250µs / 100ms = (250 / (100*1000)) * 100% = 25000 / 100000% = 0.25%。

1.2 负载率的意义
在汽车电子系统中,负载率直接影响到CAN总线的通信效率,尤其是在需要高度实时性的应用场景下。例如,刹车系统、发动机控制和ADAS(高级驾驶辅助系统)等都依赖于CAN总线进行信息交换,任何延迟或丢包都可能对汽车的安全性能产生严重影响。因此,合理控制负载率,对于确保系统的稳定性和实时响应至关重要。

在汽车行业,多个OEM对于CAN负载率控制的推荐值都有较为严格的要求。虽然不同OEM可能会根据具体的应用场景和系统需求有所调整,但多数厂商的经验值和建议都围绕在60%-70%的负载率范围。比如:

  1. 博世(Bosch)发布的《CAN Specification》及其后续更新中,涉及了CAN总线的实时性和负载管理。博世提出实时性(如动力系统、底盘系统等安全系统)需要通过较低的负载率来保证数据的及时传输。为了优化负载率,博世建议采用优先级控制机制,确保安全关键系统的消息优先传输。在车载网络中,负载率应控制在60%-70%之间,以保障系统的响应性和稳定性,特别是在动力系统(如发动机控制系统)和底盘系统(如ESC、ABS等)的设计中。这些控制系统需要迅速响应和实时反馈,超高负载会导致延迟,从而影响系统性能。

  2. 恩智浦(NXP)指出传统的Classic CAN负载率应控制在60%-70%之间,以保证系统的实时性和可靠性,避免因总线过载导致的消息冲突和延迟。对于使用CAN FD的系统,恩智浦指出负载率可以适当提高,但仍建议保持在70%-80%之间。
  3. 德尔福(Delphi)在其车载通信系统设计的相关文档中,也讨论了CAN总线负载率的控制。在车辆的动力系统底盘系统中,负载率不能超过70%,特别是安全相关的控制系统(如ABS和ESC),更应确保负载率保持在较低水平,通常建议为60%-65%
  4. 奥迪(Audi)在其车载通信的研究中也提到涉及动力系统和底盘系统的CAN总线负载率应该控制在60%-70%之间

  5. CAN in Automation (CiA)在CiA 301和CiA 406等标准中,提出了CAN总线负载率的最佳实践,建议底盘控制系统和动力系统的CAN总线负载率应控制在60%-70%,此外CiA还建议使用多总线结构,即将不同类型的系统(如动力、底盘、信息娱乐等)分配到不同的CAN网络上,以降低每条总线的负载,确保实时性和可靠性。

source: https://blog.csdn.net/u010443710/article/details

但是当了解CAN总线负载率的实际控制话题后,负载率通常控制在50%以内,有较为完善的网络管理策略时,网段负载率也不超过70%。当然负载率是越低,越能保证实时性,但是负载率太低就无法传输足够的数据,因此也有一般的说法,即30%左右的负载率最好。

3. 负载率对系统性能的影响

3.1 延迟与实时性

高负载率会导致数据在总线上的竞争加剧,产生延迟。特别是在实时性要求较高的系统中,如发动机控制单元、刹车控制单元等,任何延迟都可能影响车辆的安全性能。

以发动机控制系统为例,发动机的运行参数(如转速、燃油喷射量、点火时机等)需要实时传输并调整。如果CAN总线的负载率过高,导致信息传递延迟,可能会造成发动机响应迟缓或不稳定。比如在某些老旧车型中,由于CAN总线负载过重,导致发动机控制系统的实时性受损,出现了发动机性能不稳定、油耗增高的现象。通过优化总线负载管理,使用更高带宽的CAN FD协议,延迟现象得到了有效缓解。

3.2 通信可靠性影响

CAN协议采用优先级机制来管理总线上的消息传输。如果总线负载接近最大值,一些较低优先级的消息可能无法传输,或者发生冲突,导致数据丢失。对于关键的控制系统,如ABS、ESC等,数据丢失可能会直接影响安全性。
以ABS系统为例,ABS通过监测轮速传感器的数据,判断是否发生轮胎锁死并控制刹车压力,以避免刹车失控。如果在高负载情况下,ABS数据包由于优先级低被丢弃,ABS系统就无法及时接收到轮速信息,从而无法快速判断是否存在锁死现象,导致刹车效果差,甚至发生事故。这时为解决这一问题,厂家将ABS系统的数据传输分配到专用的低负载CAN网络中,从而避免了数据冲突,提升了刹车系统的响应速度和稳定性。

3.3 带宽资源浪费与效率问题

当CAN总线负载率过低时,系统的带宽可能没有得到有效利用。对于不需要高实时性的应用,如车载信息娱乐系统,系统可能会传输大量无关数据,这不仅浪费了带宽,还可能使其他高优先级的控制系统无法得到足够的资源。

比如在车载信息娱乐系统(Infotainment system)中,如果使用CAN,但由于音视频流的高带宽需求,很容易使CAN总线负载接近饱和,出现响应迟缓。所以实际使用Ethernet。

3.4 影响多节点通信与系统扩展性

随着车辆中电子控制单元(ECU)的增多,CAN网络负载率的管理变得尤为重要。如果系统负载过高,新添加的ECU将无法有效利用现有的网络带宽,进而导致系统扩展困难,甚至可能出现数据丢失或传输失败。

在早期的自动驾驶原型车中,由于传感器数据频繁传输和CAN总线的负载限制,传输延迟和数据丢失导致自动驾驶系统的反应变慢,出现障碍物检测不及时、转向不精确等问题。后来,厂商通过引入CAN FD以及更多的通信协议(如Ethernet),提高了数据传输速率,避免了总线拥堵,从而提升了系统的实时响应能力和可靠性。

3.5 影响系统容错能力

当CAN总线负载率过高时,系统的容错能力会下降。例如,在高负载情况下,如果发生网络冲突或数据丢失,系统可能无法及时恢复通信状态。

对于一些要求高可靠性的系统,如动力电池管理系统(BMS),BMS需要实时监控电池的电压、电流、温度等参数,并通过CAN总线与车辆的其他控制单元共享这些信息。过高的CAN负载率可能导致BMS的电池状态数据传输延迟,从而无法及时采取充放电保护措施,甚至可能导致电池过热或过充。那么通过合理的负载管理和CAN网络优化,BMS的监控信号得以优先传输,确保电池的安全性。

4. 影响CAN总线负载率的因素

4.1 报文的周期与大小

传输的报文周期和报文大小是影响CAN总线负载率的两个重要因素。频繁的小数据包传输会增加总线的竞争,而大的数据包则会占用较长的传输时间,减少总线的可用带宽。
4.2 节点数量与通信方式
CAN总线上的节点数量和通信方式直接影响负载率。节点数越多,竞争总线的设备越多,负载率通常越高。此外,广播式通信(即所有节点都接收相同消息)也会增加负载。
4.3 传输速率与带宽选择
CAN总线的传输速率(如125kbps、500kbps和1Mbps等)决定了单位时间内能够传输的数据量。根据应用需求选择适当的速率有助于避免过高的负载率。

source: https://www.earth2.digital/blog/what-is-vehicle-can-bus-ecu-evoque-adam-ali.html

5. 如何优化CAN总线负载率

5.1 调整传输速率

在某些应用中,选择合适的传输速率能够有效避免负载过高带来的问题。
假设汽车的CAN总线运行在500 kbps的速率下,如果系统内的数据交换量增大,可能会导致通信延迟,特别是在高速驾驶或极端天气下的安全系统中,这时选择将关键安全系统(如ABS和ESC)的通信速率提升至1 Mbps,而不太关键的系统(如座椅加热、娱乐系统)则维持在500 kbps。通过这种传输速率差异化的设计,可以在确保安全系统实时性需求的同时,优化总线的负载率。

5.2 降低报文周期

减少不必要的数据传输频率是减轻CAN总线负载的一种有效手段,尤其是在传输大量实时数据的系统中。
比如在一个控制系统中,多个传感器和控制单元通过CAN总线进行数据交换。该系统负责监控多个温度传感器,温度变化超过某个阈值时才会发送数据到中央控制器。在初始设计中,传感器每秒发送一次数据,即使温度变化不大,数据仍然每秒钟都发送一次。这种设计导致CAN总线的负载率较高,尤其在传感器数量较多时,系统的响应时间受到影响,导致数据更新不及时。解决方案是调整每个传感器的报告频率,或者在温度变化幅度较小的情况下,避免过于频繁的数据发送。改为基于事件驱动的触发机制,当温度变化超过设定阈值时才发送数据,从而降低CAN总线的负载,提高实时响应能力。

5.3 分布式网络设计

分布式网络设计将系统划分为多个子网,从而避免单一总线上的拥堵和过载问题。
比如在一些高端机器人系统中,多个独立的控制单元需要进行通信。机器人中有多个伺服电机、传感器和运动控制单元,每个组件通过一个独立的CAN网络与主控制器进行通信。然而,在某些情况下由于控制单元数量增加,单一CAN总线的负载率过高,影响了实时性和控制精度。这时系统设计人员采用了分布式CAN网络架构。每个电机控制单元、传感器模块和运动控制模块通过各自的CAN总线与主控制器通信。主控制器负责协调各个子网络的操作,避免了单个总线的过载。这样既能效降低了负载率,还能提高系统的可扩展性和容错能力。

5.4 优先级控制与报文调度

在CAN协议中,高优先级的报文可以抢占低优先级的报文,因此合理分配报文优先级可以避免高优先级报文的延迟,提高系统整体的响应效率。
比如在电力调度系统中,CAN总线负责数据传输的多个部分,如电力调度、传感器监控以及紧急报警系统。监控设备定期向中央控制站发送电力消耗数据,而紧急报警系统则需要实时传输可能的故障信息。在初始设计中,所有报文都以相同的优先级进行传输,这在网络负载较高时导致紧急报警信息无法及时到达控制站,影响系统的响应时间。为了解决这个问题,系统设计人员通过优先级调度机制,将报警信息的优先级设置为最高,确保在发生紧急情况时,系统能够优先处理这些关键报文,避免高负载时的报文息丢失。

5.5 使用CAN FD协议

CAN FD协议允许每个数据帧支持更多的数据量,并且可以提高传输速率,从而解决传统CAN协议的带宽限制问题。
比如CAN FD应用自动驾驶汽车中的传感器数据量庞大,包括激光雷达、摄像头、超声波传感器等。为了满足对高带宽的需求,传统的CAN协议已经难以提供足够的带宽。因此采用CAN FD协议,每个数据帧的最大数据长度从8字节扩展到64字节,同时支持更高的数据传输速率。通过这种方式,车辆的多个传感器可以更高效地传输数据,大大降低了CAN总线的负载率,提高了系统的实时性和数据传输能力。

6. 如何测试CAN总线负载率

6.1 使用CAN分析仪

CAN分析仪是测试和监控CAN总线负载率的常用工具。通过分析仪可以实时监控总线的利用情况,查看每秒传输的数据量、消息冲突次数等信息,从而评估负载率。

source: CAN总线分析仪

6.2 软件模拟工具

一些专业的CAN软件工具提供仿真与负载测试功能,比如CANoe和PEAK System等。通过这些工具,开发者可以模拟不同负载情况下的CAN总线行为,优化系统设计。


source: https://www.all-electronics.de/elektronik-entwicklung

7. 总结

CAN总线负载率对汽车电子系统的性能、实时性和稳定性至关重要。合理控制负载率,优化数据传输频率、报文优先级、以及采用更高效的协议(如CAN FD),能够有效提升系统的响应速度和数据传输能力。通过分析不同应用中的实际案例,本文提供了针对负载率优化的实用方案,为汽车行业中的CAN总线设计与优化提供了指导。


创作不易,欢迎点赞再看收藏关注后,私信可获取书籍:《车载网络及信息技术》


汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。



谦益行
分享汽车研发日常,助力你我共同成长。
 最新文章