ECU通讯:CAN总线仿真测试
01.ECU
在软件定义汽车的大背景下,几乎每一个汽车功能都需要依靠ECU(Electronic Control Unit,电子控制单元)来实现:有些功能靠ECU独立实现,有些功能则需要多个ECU联合实现。总体来说,ECU绝大多数情况下都需要与其他ECU进行信息交互,比如充电功能就需要车载充电机OBC(On-Board Charger)联合电池管理系统BMS(Battery Management System)、整车控制器VCU(Vehicle Control Unit)等联合才能实现。
常见的ECU通讯方式有CAN(Controller Area Network),LIN(Local Interconnect Network)和FlexRay,随着汽车电子电器架构朝着中央集成控制方向发展,以太网的应用也越来越广泛。
来源:the software Car: Building ICT Architectures for Future Electric Vehicles
02.CAN总线
当前最为常见的ECU通讯方式为CAN总线,即控制器局域网总线。CAN是博世于上世纪八十年代为车载网络所开发的。在此之前,汽车制造商一直使用点对点布线系统来提供车载电子设备之间的连接。然而,随着车辆中使用的电子元件数量的增加,笨重且昂贵的线束占据了过多的空间。据统计,中型轿车需要的线束插头为300个以上,插针总数在1800-2200个,线束总长超过2千米,装配极为复杂,故障率也极高。
为降低布线成本,CAN总线应运而生。CAN是一种用于联网智能设备的高度一致的串行总线系统,自1993年起就作为汽车联网国际标准被广泛引入汽车行业。只需要两条线(CAN High和CAN Low),每个ECU便可以与其他ECU进行通信。下图为一种典型的CAN总线通信方式:
各个ECU通过CAN收发器连接到CAN总线上,同时将数据广播出去,处于CAN总线上的每个ECU都可以接收到该广播信息。如果该信息为收方ECU所需信息就会被接收,反之则会被忽略。
CAN可工作于多种方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN 协议废除了地址编码,而是对通信数据进行编码,使不同的节点能够同时接收到相同的数据。这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,有助于提高系统的可靠性和系统的灵活性。
世界上几乎所有的汽车厂商都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。CAN总线的应用优势如下:
1.提供了轻量级、低成本的网络
作为总线网络,每个ECU仅需要一个CAN接口就可以与处于网络上的其他ECU进行通信。
2.广播式通信
每条消息都可以被各个ECU的CAN收发器接收,并由各ECU自行决定是否忽略该条消息。
3.优先级机制
CAN总线是点对点网络,无主从设备之分。数据发送前会先检查总线是否繁忙。传输的CAN帧不包含地址编码,而是在整个网络中唯一的仲裁ID,也是各ECU判断是否接受该数据的依据。如果多个节点同时尝试向CAN总线发送消息,则将依据CAN帧优先级(帧ID)被授予访问总线的权限,总线繁忙时,优先级低的CAN帧必须等待总线可用才能再次尝试传输。优先级机制保证了CAN节点之间的确定性通信。
4.错误检测
CAN使用了循环冗余码(CRC,Cyclic Redundancy Check)进行校验,用于确保数据完整性,可以对每个帧进行错误检查,错误帧将被所有结点忽略。
03.软件与仿真测试
在过去的普遍认知中,软件貌似与汽车行业关系甚小,甚至许多车主也倾向于认为汽车软件只存在于汽车的信息娱乐系统中。实际上,一辆汽车所包含的软件远比想象中多得多,上百个ECU中的每一个都需要运行软件。可以说,如今汽车上的每一个功能几乎都有软件参与控制。汽车软件的增加也意味着问题产生的几率上升。事实上,主机厂因软件缺陷而召回的车辆的情况不在少数:
-
2016年,由于软件缺陷而召回的车辆占总召回车辆的46%。
-
2021年,美国梅赛德斯奔驰公司召回了41838辆SUV车型,原因为软件故障导致的前轮扭力施加问题。
-
2024年3月,现代起亚因集成充电控制模块(ICCU,Integrated Charging Control Unit)软件问题召回14.7万辆汽车。
多ECU联合实现的汽车功能则更易受到影响。为了尽可能地避免软件故障问题带来的损失,应使用仿真平台搭建虚拟总线来进行ECU软件中总线功能的测试,还可应用仿真平台所提供的总线监视功能来监控软件运行过程中的总线通信数据,方便开发人员进行故障排查。
天目全数字实时仿真软件SkyEye,是一款国产自主可控的基于可视化建模的硬件行为级仿真平台,能够用于汽车虚拟CAN总线的搭建。建立下图所示的CAN总线应用场景:
该场景需要仿真4个SVCU计算节点,以2个VCU计算节点为例,通过SkyEye搭建的目标系统拓扑结构如下图所示: