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,一个可以包含null值的容器对象,可以用来代替xx ! null的判断。 Optional常用方法 of public static <T> Optional<T> of(T value) {return new Optional<>(value); }为value…...

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

【C++】map和set的封装
文章目录一、前情回顾二、简化源码三、仿函数四、迭代器五、set的实现六、map的实现七、红黑树代码一、前情回顾 set 参数只有 key,但是map除了key还有value。我们还是需要KV模型的红黑树的: #pragma once #include <iostream> #include <ass…...
互融云金融控股集团管理平台系统搭建
金融控股公司是指对两个或两个以上不同类型金融机构拥有实质控制权,自身仅开展股权投资管理、不直接从事商业性经营活动的有限责任公司或者股份有限公司。 金融控股公司是金融业实现综合经营的一种组织形式,也是一种追求资本投资最优化、资本利润最大化…...

Git复习
1. 引言 现在要用到Git,复习一下关于Git的指令,知识摘自《Pro Git》 2. 起步 git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照,而不是逐渐地比较差异。 安装: sudo apt install git-all设置用户信息: git c…...
WebGPU学习(2)---使用VertexBuffer(顶点缓冲区)
在本文中,我们使用 VertexBuffer 绘制一个矩形。示例地址 1.准备顶点数据 首先,我们准备好顶点数据。定义顶点数据有多种方法,这次我们将在 TypeScript 代码中将其定义为 Float32Array 类型的数据。 const quadVertexSize 4 * 8; // 一个顶…...
【C++之容器篇】AVL树的底层原理和使用
目录前言一、AVL树二、AVL树的底层实现1. 结点类型的定义2. AVL树的定义3. 查找函数4. 插入函数(重难点)三、判断平衡树的方法前言 AVL树其实是在搜索树的基础上加上一些限制因素,从而使搜索树的结构保持相对平衡,通过前面我们对二叉搜索树的学习&#x…...

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

工具篇3.5世界热力图
一、定义 世界热力图是一种地图形式,它使用颜色的变化来显示世界各个地区的某种指标(如 GDP、人口、气候等)的分布和密度。通常,世界热力图会使用不同的颜色来表示数据的变化,例如使用蓝色表示低值,红色表…...
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解法
环形链表排列硬币合并两个有序数组(没错,出现过一次的LeetCode合并数组又双叒叕出现了!)经典算法题java解法 目录1 环形链表题目描述解题思路与代码解法一:哈希表解法二:双指针2 排列硬币题目描述解题思路与…...

网络编程学习一
1、初识网络编程2、网络编程三要素3、三要素(IP)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,一般称为立即执行函数。你可能会问我,*“嘿!我知道正常的函数表达式是什么样子的,但是 IIFE 到底是什么?”。*好吧,这正是我今天要在本文中回答的问题。 函数表达式 在了解立即调用函数表达式之前,让…...

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

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...

Axure零基础跟我学:展开与收回
亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

【Vue】scoped+组件通信+props校验
【scoped作用及原理】 【作用】 默认写在组件中style的样式会全局生效, 因此很容易造成多个组件之间的样式冲突问题 故而可以给组件加上scoped 属性, 令样式只作用于当前组件的标签 作用:防止不同vue组件样式污染 【原理】 给组件加上scoped 属性后…...
TMC2226超静音步进电机驱动控制模块
目前已经使用TMC2226量产超过20K,发现在静音方面做的还是很不错。 一、TMC2226管脚定义说明 二、原理图及下载地址 一、TMC2226管脚定义说明 引脚编号类型功能OB11电机线圈 B 输出 1BRB2线圈 B 的检测电阻连接端。将检测电阻靠近该引脚连接到地。使用内部检测电阻时,将此引…...