面向SDV的在环测试深度解析——概述篇

  • 1.引言

在汽车行业迈向软件定义汽车(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  SILHIL切换

​​​​​​​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 测试方案已经成为应对汽车行业挑战的重要技术手段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2025年智慧城市解决方案下载:AI-超脑中台,体系架构整体设计

2025年,随着人工智能、物联网、大数据等新兴技术的深度融合,智慧城市解决方案正迈向更高层次的智能化和协同化阶段。其中,AI-超脑中台作为核心架构的一部分,为城市智能化运行提供了强大支撑。 智慧城市最新解决方案,标…

LINUX常用命令学习

查看系统版本 使用hostnamectl命令检查。hostnamectl显示了CentOS的版本以及操作系统的相关信息,非常方便 设置linux机器别名称 hostnamectl set-hostname 机器别名 --static 华为云 centos 命令:lsb_release -a linux:cat /proc/version 查看进程路…

RK3588 Linux平台部署DeepSeek模型教程

更多内容可以加入Linux系统知识库套餐(教程+视频+答疑) 文章目录 一、下载rknn-llm 和 deepseek模型二、RKLLM-Toolkit 安装2.1 安装 miniforge3 工具2.2 下载 miniforge3 安装包2.3 安装 miniforge3 三、创建 RKLLM-Toolkit Cond…

Azure从0到1

我能用Azure做什么? Azure提供100多种服务,能够从在虚拟机上运行现有应用程序到探索新的软件范式,如智能机器人和混合现实。许多团队开始通过将现有应用程序移动到在Azure中运行的虚拟机(VM)来探索云。将现有应用程序迁移到虚拟机是一个良好的开端,但云不仅仅是运行虚拟…

智慧城市V4系统小程序源码独立版全插件全开源

智慧城市V4系统小程序源码:多城市代理同城信息服务的全域解决方案 在数字化浪潮的推动下,智慧城市已成为全球发展的核心战略。作为这一领域的革新者,智慧城市V4系统小程序源码凭借其多城市代理同城信息服务能力与多商家营销功能,…

JAVA-Lambda表达式(高质量)

要了解Lambda表达式,首先需要了解什么是函数式接口,函数式接口定义:一个接口有且只有一个抽象方法 。 一、函数式接口 1.FunctionalInterger 注意: 1. 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口 2. 如果我们…

机器视觉--Halcon变量的创建与赋值

一、引言 在机器视觉领域,Halcon 作为一款强大且功能丰富的软件库,为开发者提供了广泛的工具和算子来处理各种复杂的视觉任务。而变量作为程序中存储和操作数据的基本单元,在 Halcon 编程中起着至关重要的作用。正确地创建和赋值变量是编写高…

优选驾考小程序

第2章 系统分析 2.1系统使用相关技术分析 2.1.1Java语言介绍 Java语言是一种分布式的简单的 开发语言,有很好的特征,在安全方面、性能方面等。非常适合在Internet环境中使用,也是目前企业级运用中最常用的一个编程语言,具有很大…

ubuntu 22.04 安装vsftpd服务

先决条件,确保你已经配置好了存储库。 安装vsftpd 为了方便实验,我已经切换到了root用户。 rootlocal:~# apt-get install vsftpd修改配置 配置文件在 /etc/vsftpd.conf rootlocal:~# grep -vE ^#|^$ /etc/vsftpd.conf listenNO listen_ipv6YES anonymou…

Uniapp 获取定位详解:从申请Key到实现定位功能

文章目录 前言一、申请定位所需的 Key1.1 注册高德开发者账号1.2 创建应用1.3 添加 Key 二、在 Uniapp 中配置定位功能2.1 引入高德地图 SDK2.2 获取定位权限 三、实现定位功能3.1 使用 uni.getLocation 获取位置3.2 处理定位失败的情况3.3 持续定位3.4 停止持续定位 四、总结 …

MATLAB电机四阶轨迹规划考虑jerk、Djerk

1、内容简介 略 126-可以交流、咨询、答疑 2、内容说明 略 在电机控制中,轨迹规划是一个重要的环节,它决定了电机如何从一个状态平滑地过渡到另一个状态。四阶轨迹规划考虑了位置、速度、加速度和加加速度(jerk),有…

输电杆塔沉降智能监测系统:如何用数据守护电网安全

产品别称:输电线路杆塔沉降在线监测装置、输电线路北斗杆塔沉降在线监测装置、杆塔地基沉降监测设备、输电杆塔沉降智能监测系统 产品型号:TLKS-PMG-BDS 一、产品概述: 在电力传输系统中,输电线路杆塔的稳定性和安全性至关重要。…

Windows搭建SVN本地服务器 + TortoiseSVN客户端

目录 一、SVN服务器搭建 二、TortoiseSVN客户端 一、SVN服务器搭建 注意:例如你已经安装Subversion,要将它卸载,因为VisualSVN会包含Subversion,确保不会发生冲突,可在Windows程序搜索Subversion 卸载它。 Apache…

harmonyOS的文件的增、删、读、写相关操作(fs/content)

注意: 操作harmonyOS的文件只能对app沙箱内的文件进行操作 牵扯到两个支持点: fs和content这两个API; 具体的操作方法看下图: 创建文件 //js 引入 import fs from "ohos.files.fs" import featureAbility from "ohos.ability.featureAbility"; // 上下…

人才画像如何助力企业 “看准人”、“看透人”

在当今竞争激烈的商业世界中,企业对于人才的需求愈发迫切。然而,如何在众多求职者中 “看准人”、“看透人”,挑选出真正适合企业的人才,却成为了许多企业面临的难题。而人才画像的出现,为企业提供了一把有力的武器。 …

LC-搜索二维矩阵II、相交链表、反转链表、回文链表、环形链表、环形链表ll

搜索二维矩阵II 方法:从右上角开始搜索 我们可以从矩阵的右上角开始进行搜索。如果当前元素 matrix[i][j] 等于 target,我们直接返回 true。如果 matrix[i][j] 大于 target,说明 target 只能出现在左边的列,所以我们将列指针向左…

Win11配置wsl、ubuntu、docker

系统要求 安装WSL。 开通虚拟化: 准备工作 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-versi…

达梦tpcc压测

造数 在这个日志输出中,主要执行了一系列数据库操作,涵盖了数据库信息检查、表的创建与数据加载、索引的添加、数据验证等步骤。具体分析如下: 数据库信息检查: 查询了数据库的版本、实例名称、日志文件大小、字符集等信息。 删…

MySQL技术公开课:Mysql-Server-8.4.4 Innodb 集群搭建与维护

MySQL技术公开课 - Mysql-Server-8.4.4 Innodb 集群搭建与维护 讲课内容: 1、Innodb集群框架介绍 2、Innodb集群部署(mysql-Server、mysql-shell、mysql-router安装配置) 3、Innodb集群维护(主备切换、启动与关闭、故障排除) Mysql-server商业版目前最新的是8.…

TCP/IP参考模型和网络协议

由于国防部担心他们一些重要的主机、路由器和互联网关可能会突然崩溃,所以网络必须实现的另一目标是网络不受子网硬件损失的影响,已经建立的会话不会被取消,而且整个体系结构必须相当灵活。 TCP/IP是一组用于实现网络互连的通信协议。Interne…