当前位置: 首页 > news >正文

3分钟带您快速了解HIL测试及其架构

什么是HIL测试

硬件在环(HIL)仿真是一种用于测试导航系统的技术,其中测试前并不知道车辆轨迹。在这种情况下,车辆轨迹被实时馈送到GNSS模拟器。HIL可用于复杂实时系统的开发和测试,如卫星控制系统、军事战术导弹、飞机飞行控制和汽车系统。

而HIL测试是通常是在现场测试之前以及在环模型(MIL)、软件在环(SIL)或处理器在环(PIL)之后的一步。HIL测试至关重要,它涉及在操作中使用的所有硬件和软件。在整个测试流程中:

  • MiL(Model-in-the-Loop)模型在环,是在PC上基于模型的测试,输出经过验证的控制算法模型,验证控制算法模型是否准确地实现了功能需求。

  • SiL(Software-in-the-Loop)软件在环,是将模型生成代码或者手工编写代码编译成PC程序,在PC上进行的测试,输出经过验证的嵌入式代码,在PC上验证代码实现的功能是否与模型一致。

  • PiL(Processor-in-the-Loop)处理器在环,是将代码编译成目标系统程序,然后在PC上虚拟目标硬件环境并进行测试,输出经过验证的目标程序,在目标处理器上验证代码实现的功能是否与模型一致。

HIL(Hardware-in-the-Loop)硬件在环仿真测试系统是采用实时处理器运行仿真模型来模拟受控对象(比如:汽车、航空飞机等设备)的运行状态,以此判断电控模块的性能。虽然这一系列的测试都有在环(in the loop)的意思,但却不是所有被测模块都带有闭环。比如接收到某信号要用于车辆的车灯控制,这种情况下就不需要闭环,但如果在自动驾驶HIL测试中,想使用GNSS模拟器测试汽车运行是否正常,就需要把自动驾驶仪的信息返回到GNSS模拟器中,再进行下一个轨迹的模拟。

在HIL测试中,一般根据它在环的深度分为几个层级:

  • ECU级:也可以称之为信号级,仅ECU软硬件采用实物,闭环回路的其他组成部分均采用虚拟仿真系统;

  • EPP级:也可以称之为驱动级,EPP是Electrical Power Package的缩写, ECU及执行组件采用实物,闭环回路的其他组成部分采用虚拟仿真系统;

  • System级:也可以称之为机械级,系统组件采用实物,闭环回路其他组成部分采用虚拟仿真系统。

总的来说,HIL测试系统主要由三个基本部分组成,分别是实时处理器、I/O接口和可视化的操作界面,其中实时处理器是整个HIL测试系统的核心部分。实时处理器运行场景,发送信号,被测电控模块收到后对受控对象做出相应的控制,以此判断电控模块的性能。通过I/O接口与被测的ECU连接,对被测系统进行全方面的、系统的测试。

HIL测试系统具有很多优势,如安全性较高。汽车HIL中,在实车测试之前,以HIL的形式先对控制器做一个全面的功能测试。因为该被控对象是虚拟的,所以HIL比实车测试更加安全高效,而且可以测试一些实车测试中不容易实现的极端情况。此外,HIL测试系统具有丰富的测试功能,以及可以实现测试平台的复用性等,极大的节省了时间和经济成本。

基本架构

在HIL测试中,GNSS接收器通常不作为独立设备进行测试,而是与其他仿真器、设备和传感器进行集成,根据HIL架构类比可得到测试系统基本架构。

GNSS模拟器的软件相当于操作界面,而由于虹科Safran GNSS模拟器特殊的软件定义架构,它不仅仅是用于提供测试命令、可视化的界面以及性能分析及报告整理等功能的操作界面,还是创建测试场景、信号模拟、生成IQ文件的驱动程序,为GNSS模拟器的硬件提供IQ数据。

GNSS模拟器的硬件部分,相当于HIL中的实时处理器,它接受IQ数据,仿真出模拟的GNSS信号。大多数能获取位置信息的设备都内置了GNSS接收模块,被测的ECU模块会像处理真实信号那样处理GNSS模拟器发送的信号,然后作用于仿真模型。

在定位和导航系统的验证中,有两种类型的 HIL 架构:开环HIL和闭环HIL。

  • 开环HIL架构:

GNSS模拟器模拟生成HIL中需要的信号并作用于接收机,同时接收机的信息也会以NMEA文件的形式回传到GNSS模拟器中,即可以得到接收的信号和模拟信号的偏差。在这种架构中,GNSS接收机(和一般传感器)的输出不用于控制车辆的轨迹,它是由用户强加的,不一定具有确定性。

  • 闭环HIL架构:

包括HIL模拟器、GNSS模拟器、GNSS接收机以及控制部分:

在这种架构中,GNSS接收机(以及一般的传感器)的输出用于导航算法,该算法更新控制车辆的执行器,执行器的输出发送车辆位置到GNSS模拟器,GNSS模拟器根据位置信息进行信号模拟并作用于GNSS接收机,形成闭环。但是要注意,在这种情况下,GNSS接收机计算的位置直接影响模拟轨迹,从而影响广播到GNSS接收器的RF信号。

测试方案

在闭环架构中,软件定义架构的GNSS模拟器提出了自动驾驶的HIL测试方案。自动驾驶中车辆的真实位置是随着场景的进展而确定并实时反馈给模拟器。

首先实时处理器部分和架构一样,GNSS模拟器和HIL模拟器都属于实时处理器部分,模拟器分别把模拟器信号发送给相应的传感器和接收机,经过处理计算后,再控制调节器。调节器的信息又反馈给模拟器进行计算模拟。GNSS模拟器支持通过位置、速度、加速度和方向命令集成6自由度轨迹的固定延迟流,来将实际GNSS射频信号集成到HIL系统中,车辆的方向及其变化以及卫星功率水平也可以通过实时命令进行控制。支持在任何地点使用,可以模拟所有星座、所有频率的所有可见卫星,具有1000Hz的迭代率和超高的动态,随时随地创建并更新场景。高级干扰和欺骗功能允许用户同时模拟多种威胁,自动确定每个信号之间的信号动态,节省时间成本,并能够使用Python、C#和C++的开源客户端库构建复杂、复杂和可重复的场景。

  • 在一个用户界面中实现所有功能

  • 通过直观的UI和自动化轻松配置

  • 支持所有主要的全球星座和频率

  • 多种API(Python、C#、C++、LabVIEW)

  • 高级信号定制和场景创建

  • 实时修改变量和参数

  • 无需额外硬件即可集成干扰

  • IQ文件生成和回放

目前,自动驾驶HIL测试中为了还原更加真实的场景,要求GNSS模拟器和其它传感模拟器发送到被测系统的信号同时到达,并且在其它模拟器分析计算好真实位置信息发送到GNSS模拟器后,需要能够及时的进行GNSS信号的模拟,更好的保证它的实时性。这两个要求让自动驾驶HIL测试面临着两个问题,那就是同步和时延的问题。

对于同步,需要考虑:

  • 如何处理HIL测试的同步化和时钟系统?

  • HIL模拟器和虹科Safran Skydel GNSS模拟器能否使用一个共同的时钟源?

对于时延:

  • 从HIL模拟器的输入(自动驾驶仪命令)和GNSS模拟器的输出(GNSS射频信号)如何使他们的延迟最小化,以保证模拟的实时性呢?

在下期文章中我们将继续讨论如何解决这两个问题。

相关文章:

3分钟带您快速了解HIL测试及其架构

什么是HIL测试硬件在环(HIL)仿真是一种用于测试导航系统的技术,其中测试前并不知道车辆轨迹。在这种情况下,车辆轨迹被实时馈送到GNSS模拟器。HIL可用于复杂实时系统的开发和测试,如卫星控制系统、军事战术导弹、飞机飞…...

华为认证含金量如何?

一本证书是否有用,还要看它是否被市场所认可。 我们说华为认证HCIP有用,很大一部分还取决于它极高的适用性和权威性。华为是国内最大的生产销售通信设备的民营通信科技公司。 自2013年起,国家对网络安全极度重视,相继把国外的网…...

刷题记录:牛客NC54586小翔和泰拉瑞亚

传送门:牛客 题目描述: 小翔爱玩泰拉瑞亚 。 一天,他碰到了一幅地图。这幅地图可以分为n列,第i列的高度为Hi,他认为这个地图不好看,决定对它进行改造。 小翔又学会了m个魔法,实施第i个魔法可以使地图的第Li列到第Ri列…...

面试个3年自动化测试,测试水平一言难尽。。。。

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。 一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。 看简历很多都是3年工作经验,但…...

C++面向对象(下)

文章目录前言1.再谈构造函数1.初始化列表2.explicit关键字2. static成员1.概念3.友元1.概念2.友元函数3.友元类4. 内部类5.匿名对象6.编译器优化7.总结前言 本文是主要是将之前关于C面向对象中的一些没有归纳到的零星知识点进行补充,同时对C中的面向对象简单收个尾…...

面试一位软件测试6年工作者:一年经验掰成六年来用....

在众多面试中,对于那个工作了6年的面试者,我印象很深刻,因为最开始拿到简历的时候,我一摸:"这简历,好厚啊!"再一看,工作6年。 于是我去找了我的领导,我说:“这人我应该没…...

Java8 新特性--Optional

Optional是什么 java.util.Optional Jdk8提供Optional&#xff0c;一个可以包含null值的容器对象&#xff0c;可以用来代替xx ! null的判断。 Optional常用方法 of public static <T> Optional<T> of(T value) {return new Optional<>(value); }为value…...

Pytorch GPU版本简明下载安装教程

1.根据自己的显卡型号下载显卡驱动并安装。这一步会更新你的显卡驱动&#xff0c;也可忽略第1步&#xff0c;如果第2步出现问题&#xff0c;返回执行第1步。 点击这里下载英伟达显卡驱动 2.安装完成后&#xff0c;wincmd打开命令行&#xff0c;输入nvidia-smi&#xff0c;查看…...

【C++】map和set的封装

文章目录一、前情回顾二、简化源码三、仿函数四、迭代器五、set的实现六、map的实现七、红黑树代码一、前情回顾 set 参数只有 key&#xff0c;但是map除了key还有value。我们还是需要KV模型的红黑树的&#xff1a; #pragma once #include <iostream> #include <ass…...

互融云金融控股集团管理平台系统搭建

金融控股公司是指对两个或两个以上不同类型金融机构拥有实质控制权&#xff0c;自身仅开展股权投资管理、不直接从事商业性经营活动的有限责任公司或者股份有限公司。 金融控股公司是金融业实现综合经营的一种组织形式&#xff0c;也是一种追求资本投资最优化、资本利润最大化…...

Git复习

1. 引言 现在要用到Git&#xff0c;复习一下关于Git的指令&#xff0c;知识摘自《Pro Git》 2. 起步 git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照&#xff0c;而不是逐渐地比较差异。 安装: sudo apt install git-all设置用户信息&#xff1a; git c…...

WebGPU学习(2)---使用VertexBuffer(顶点缓冲区)

在本文中&#xff0c;我们使用 VertexBuffer 绘制一个矩形。示例地址 1.准备顶点数据 首先&#xff0c;我们准备好顶点数据。定义顶点数据有多种方法&#xff0c;这次我们将在 TypeScript 代码中将其定义为 Float32Array 类型的数据。 const quadVertexSize 4 * 8; // 一个顶…...

【C++之容器篇】AVL树的底层原理和使用

目录前言一、AVL树二、AVL树的底层实现1. 结点类型的定义2. AVL树的定义3. 查找函数4. 插入函数(重难点)三、判断平衡树的方法前言 AVL树其实是在搜索树的基础上加上一些限制因素&#xff0c;从而使搜索树的结构保持相对平衡&#xff0c;通过前面我们对二叉搜索树的学习&#x…...

从交换机安全配置看常见局域网攻击

前言 构建零信任网络&#xff0c;自然离不开网络准入(NAC)&#xff0c;这就涉及到交换机的一些安全测试&#xff0c;于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击&#xff0c;那么下面提到的各种攻…...

工具篇3.5世界热力图

一、定义 世界热力图是一种地图形式&#xff0c;它使用颜色的变化来显示世界各个地区的某种指标&#xff08;如 GDP、人口、气候等&#xff09;的分布和密度。通常&#xff0c;世界热力图会使用不同的颜色来表示数据的变化&#xff0c;例如使用蓝色表示低值&#xff0c;红色表…...

2023-02-20 leetcode-insertionSortList

摘要: 记录leetcode-insertionSortList的反思 要求: https://leetcode.cn/problems/insertion-sort-list/ Given the head of a singly linked list, sort the list using insertion sort, and return the sorted lists head. The steps of the insertion sort algorithm: In…...

LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法

环形链表排列硬币合并两个有序数组&#xff08;没错&#xff0c;出现过一次的LeetCode合并数组又双叒叕出现了&#xff01;&#xff09;经典算法题java解法 目录1 环形链表题目描述解题思路与代码解法一&#xff1a;哈希表解法二&#xff1a;双指针2 排列硬币题目描述解题思路与…...

网络编程学习一

1、初识网络编程2、网络编程三要素3、三要素&#xff08;IP&#xff09;4、IPV4的一些小细节5、Inetaddress类的使用package com.leitao.demo.network;import java.net.InetAddress; import java.net.UnknownHostException;/*** Description: TODO* Author LeiTao* Date 2023/2…...

Javascript 立即执行函数

IIFE,一般称为立即执行函数。你可能会问我&#xff0c;*“嘿&#xff01;我知道正常的函数表达式是什么样子的&#xff0c;但是 IIFE 到底是什么&#xff1f;”。*好吧&#xff0c;这正是我今天要在本文中回答的问题。 函数表达式 在了解立即调用函数表达式之前&#xff0c;让…...

基于Django和vue的微博用户情感分析系统

完整代码&#xff1a;https://download.csdn.net/download/weixin_55771290/87471350概述这里简单说明一下项目下下来直接跑起的方法。前提先搞好python环境和vue环境,保证你有一个账户密码连上数据库mysql。1、pip install requirements.txt 安装python包2、修改mysql数据库的…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...