在汽车行业迈向软件定义汽车(SDV)的进程中,传统的硬件在环(HIL)测试方案在面对新的技术架构和需求时逐渐显露出局限性。一方面,现代汽车的电子电气架构日益复杂,高性能计算(HPC)和区域架构等新技术的引入,使得测试范围大幅扩展,不仅涉及硬件层面,还包括软件和系统集成等多个维度。另一方面,产品生命周期的变化以及开发速度与质量的双重要求,促使测试流程需要更加高效和灵活。
我们会推出一系列的文章来介绍最新的面向SDV的XIL测试开发方法和实践,包括以下内容:虚拟ECU的生成和使用,云端的CI/CT以及HIL/SIL并行测试等,本期内容主要聚焦于SIL解决方案,深入探讨了解决方案的具体内容,同时介绍了基于Vector的SIL仿真生态及应用案例。
2.解决方案介绍
SIL仿真可以在算法开发的初期阶段进行功能验证,可以支持自动化测试、加速仿真。通过结合Vector软件工具,实现一个完整的SIL测试解决方案,其中包含的软件及其功能介绍如下图 1所示。
图 1 SIL仿真组织结构图
1)CANoe Binding
作为联合仿真测试关键的中间件,可将 CANoe 连接到任何测试工具、模拟器、仿真器、虚拟 ECU 或软件。
2)vVIRTUALtarget
用于生成虚拟ECU(vECU)的工具,方便基于AUTOSAR的软件在SIL环境下测试。
3)CANoe/CANoe4SW
用于仿真中的实验管理、变量监控和测试执行。
4)vTESTstudio
编写自动化测试脚本,用于SIL的自动化测试。
5)DYNA4
提供仿真过程中所需的车辆动力学模型。
6)VTD
提供仿真过程中的场景模型,包括行人/动物、交通模型、虚拟世界、天气/光线、传感器仿真等。
首先重点介绍解决方案中的两个软件组件/机制(详细的开发应用方法见后续系列文章)。
2.1 联合仿真测试中间件Binding机制
CANoe软件提供多种多样的Binding机制,方便在分布式系统开发测试中正确配置各组件并保证它们之间的数据交换,下面主要介绍在分布式仿真测试中常用的几种Binding方式及成功案例。在CANoe的vCDL文件中设置不同的Binding类型,可以将不同的通信主题通过如SIL Kit、DDS、ADAS等的绑定,从而保证仿真系统在不同的仿真节点之间高效地交换数据。
2.1.1 SIL Kit Binding
SIL Kit Binding作为SIL仿真中非常重要的机制,目前已在很多仿真测试软件中得到支持,SIL Kit可用于将不同的仿真参与组件联合起来组成完整的系统,具体模型文件可参考链接:https://github.com/vectorgrp/sil-kit。如图 2所示,可运行于Linux、QNX、Windows(WSL)、Android系统,也可运行于容器和虚拟机中。支持程序接口C/C++和Python进行分布式或者云端仿真测试,具体功能如下:
不同抽象层次的通信
1)应用程序级数据的发布/订阅
2)远程过程调用 (RPC)
3)虚拟 CAN、LIN 和以太网
虚拟时间和系统控制
1)同步每个SIL Kit应用程序单独步长的虚拟时间
2)协调SIL Kit应用程序的初始化、启动、停止和关闭
健康监控和日志记录
1)用于错误处理和调试系统状态
2)看门狗机制确保应用程序的活跃性
3)SIL Kit 应用程序之间的连接监控
4)分布式系统日志记录
图 2 SIL Kit网络架构图
2.1.2 DDS Binding
通过DDS 绑定,可以和不同的DDS协议栈通信,例如RTI Connext 、Cyclone DDS等,在CANoe中已通过该方式实现DYNA4与ROS2接口,可以传输车辆状态信息、控制信号、传感器数据、摄像头image数据、点云数据等,实现自动驾驶算法测试,如图 3所示。
图 3 DYNA4与ROS集成
2.1.3 ADAS Binding
基于ASAM OSI3标准,通过ADAS接口绑定将DYNA4仿真场景中的环境感知信息输出给CANoe,并通过CANoe的DO(分布式对象)传输给控制算法,如图 4所示。
图 4 基于ADAS绑定的测试流程
2.1.4 Distributed Debugging Binding
SIL中可以通过在Visual Studio Code IDE中安装远程调试插件vs-vector-debug,同时绑定Distributed Debugging主题实现与CANoe的联调,进行实时的程序调试、监控内部变量和数据交互,提高开发和测试效率,如图 5所示。
图 5 VS Code与CANoe联合调试
2.1.5 Mapping Binding
SDV影响产品生命周期各阶段,尤其在开发、销售及维护时需进行受控更新,引发大规模DevOps循环。这导致嵌套式开发、集成与测试流程,多团队并行作业,组件与子系统的测试与开发变得复杂。为配合并行开发节奏,传统“先SIL后HIL”的测试顺序已经难以满足快速迭代需求,因此更高效的测试方式对在短时间内交付高质量产品至关重要。
在这种背景下,提出一种HIL 和 SIL 并行的解决方案,不仅能够整合虚拟和实际测试环境的优势,在不同的开发阶段发挥关键作用,还能增强测试的全面性和准确性。通过建立统一的通信概念,将逻辑通信与网络协议解耦,实现在通信层面一致的方式定义和操作,使得两者能够更好地协同工作。通过分离测试逻辑和数据,定义抽象变量并利用 “绑定” 映射到“通信通道”,实现在 SIL 和 HIL 测试设置之间的灵活切换和重用,如图 6所示。这种方式允许在不同测试环境下(SIL 和 HIL),只需简单切换 “绑定SilKit”或者“绑定Mapping”,就可以重用测试配置和案例,从而支持 SIL 和 HIL 并行测试,提高了测试效率和资源利用率。
图 6 SIL和HIL切换
2.2 vECU开发软件vVIRTUALtarget
面对SDV的快速发展,软件在环(SIL)在ECU软件的验证和测试中发挥着举足轻重的作用。通过虚拟化技术,例如基于 SystemC 和 QEMU 的虚拟 SOC,可以减少对于硬件的依赖,从物理实验台向基于云的虚拟工程迁移,实现云端大规模协作测试。根据使用情况,虚拟ECU有着不同的利用率级别,vVIRTUALtarget可以提供L1-L3的虚拟实现,如图 7所示。
- 0级vECU(控制器模型):最简单的vECU 类型,由控制器模型或由其生成的 C 代码组成,主要用于测试控制算法本身。
- 1级vECU(应用级):包含特定于虚拟ECU的应用软件代码,无需使用总线或网络。
- 2级vECU(模拟的BSW):在1级的基础上提供模拟底层软件(BSW)功能,可以在信号级别以及总线或网络级别进行通信。
- 3级vECU(生产级BSW):不仅包括应用软件,还包括用于测试目的的底层软件(BSW),能够评估真正ECU的硬件独立软件,并作为测试BSW的手段之一。
- 4级vECU(目标二进制文件):集成真实ECU编译的二进制文件(.bin/.elf等)。最接近实际硬件系统的表示形式,4级vECU可以用于评估潜在的故障问题(如故障注入),可用于功能安全测试。
图 7 vECU开发阶段图
通过vVIRTUALtarget生成虚拟ECU(vECU)后,需要一个仿真环境来执行和测试这些虚拟模型。这种仿真环境不仅支持基本的仿真功能,还应该提供全面的调试运行和虚拟标定的功能,vVIRTUALtarget提供以下三种集成方式,如图 8所示:
图 8 vVIRTUALtarget集成方式
1.直接集成在CANoe中运行
1)所有vECU同时启停。
2)vECU时间和CANoe仿真时间同步。
2.在用户自定义环境中运行
1)vECU提供基于C语言的openSUT API(如图 9所示)供用户集成到自己的环境中。
2)执行控制、总线级帧输入输出(I/O)以及通用数据输入输出(I/O)。
图 9 openSUT API
3.独立运行
1)vECU在自动编译过程中,除了会生成.dll或.so文件以及.vmodule文件之外,还会额外生成一个独立的SutRunner.exe进程
2)可以和SIL Kit进行I/O通信和时间同步。
3)可以与CANoe和其他SIL Kit参与者进行联合仿真。
图 10 编译后的vECU
3.仿真模型集成方案
3.1 FMU模型集成
1)FMU模型可以通过SIL Kit集成到CANoe中的联合仿真中,具体集成方法可参考如下链接:https://github.com/vectorgrp/sil-kit-fmu-importer。
2)也可以通过共享内存的方式集成到CANoe中,如图 11所示,特别是对于ASAM OSI3的传感器接口数据。
图 11 共享内存方式集成到CANoe
3.2 DYNA4集成
通过安装MATLAB Integration Package插件生成vmodule格式的模型文件和系统变量System variables,同时在CANoe的vCDL文件的应用程序模型中导入这个vmodel文件,即可实现DYNA4与CANoe的集成,该方法同样适用于所有基于Simulink的算法模型,如图 12所示。
图 12 DYNA4模型和CANoe Communication Setup界面
3.3 VTD集成
1)通过SIL Kit集成
通过编写C++程序将RDB信息转化为Publish发布信息到SIL Kit总线上,然后在CANoe端激活SIL Kit绑定功能,并在vCDL文件中添加基于SIL Kit Binding的交互信息的数据结构并与Pub的对象数据结构一致,便可在CANoe中接收到VTD的RDB信息,并在Trace中显示,如图13所示。
图 13 CANoe 与VTD联合仿真
2)通过VTD OSI3 FMU插件
VTD提供将RDB转化为OSI3标准输出的插件,通过ADAS Binding功能可以将VTD传感器输出数据发送到CANoe的Trace窗口中,如图 14所示。
图 14 OSI3插件方式集成到CANoe
4 总结
软件定义汽车的浪潮促使汽车开发发生重大变革,软件比重剧增,开发方式从传统 V 型流程向敏捷的 DevOps 流程转变。SIL测试使开发者能够更快速地迭代软件,提前发现软件中的问题,从而降低项目延期和失败的风险,有效缩短开发周期。基于虚拟ECU或者虚拟SoC的SIL 测试能够实现高覆盖率,可模拟各种极端及异常情况,突破了物理环境对测试的限制。同时,借助云计算和自动化工具,SIL 测试得以融入持续集成 / 持续交付(CI/CD)流程,进一步提升了效率并减少了人为错误。基于以上优势,SIL 测试方案已经成为应对汽车行业挑战的重要技术手段。