MBD中 MIL、SIL、PIL、HIL 的目的和实现方式

2024-02-16 01:30
文章标签 实现 方式 pil mil 目的 hil mbd sil

本文主要是介绍MBD中 MIL、SIL、PIL、HIL 的目的和实现方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MBD设计中需要多重验证,包括算法验证等等,以下是经常听到的一些测试(in the loop)

不是所有的in-the-loop都得做,但是建议不省略SIL环节


  1)MIL,模型在环测试,在Simulink环境里,除建立控制器模型之外,还需要建立被控对象模型,将控制器和被控对象连接起来并形成闭环,让控制器去控制被控对象。是否一定要做这个In-the-Loop 呢?或者说,是否一定要有被控对象模型呢?其实不一定,这取决于模型验证的可能方式。在不少应用里,控制器模型的输出是开关量,工程师可以很方便的通过设定输入并给出期望输出,这样的情况,被控对象是没必要的,比如,汽车电子里面的车身控制,控制一个灯的开或者关, 只需要知道输出是ON或者OFF即可,没必要去做一个灯泡的模型放到Simulink里。

 

2)SIL,软件在环测试,软件在环测试,应该说是从模型在环测试引申过来的,区别只是把控制器的模型换成了由控制器模型生成的C代码编译成的S-functionSIL的目的是为了验证生成的代码和模型在功能上是否一致,或者说验证生成的代码和模型在功能上是否等效。验证等效性,是否一定需要被控对象模型?

不必要,既然验证生成的代码和模型的一致性,那只需要给生成代码和用于代码生成的模型相同的输入,比较它们在相同的输入条件下,输出是否一致即可。


3)PIL,PIL 有两个目的,

一是为了等效性验证。

PILS需要Simulink模型和目标硬件协同工作。将生成的嵌入式C代码编译为目标文件下载到目标硬件,硬件与PC进行硬件通信方式连接,建立Simulink和硬件开发板上MCU之间的通信通路。Simulink信号源提供信号输入,经过串口传递给目标硬件,经过MCU计算之后通过串口传回Simulink模型,并与MIL模型的仿真结果进行比较,比较二者相同参数,同步计算的输出是否相同。

二是为了测量模型生成的代码在目标处理器上的运行时间。有关运行时间的测量,如果你选择的处理器足够强大,或者你非常把握目标代码的运行不会超限,那么PIL的意义就要打折扣了。


4)HIL测试的目的是为了验证控制器的,HIL过程中,会把被控对象的模型生成C代码并编译成可执行的文件放到工控机上运行,以便工控机替代真实的被控对象,然后把控制器和工控机连接起来,实现闭环控制,从控制器的角度上看,就相当于工作到实际控制系统之中。HIL 经常被用于以下几种情形:
a)被控对象非常昂贵,如果控制器不成熟会导致被控对象的损害;
b)被控对象失效会危及人身安全;
c)开发过程中,先开发出了控制器,而被控对象还没有开发出来。

HILS提供一个平台,能够将各种复杂的被控对象以数学的表示方法作为动态系统追加到测试环境中,,他能够很好的仿真被控对象,这些被仿真的被控对象通过传感器等设备作为接口,将控制系统MCU与被控对象的HIL平台连接起来,进行实时仿真。

这篇关于MBD中 MIL、SIL、PIL、HIL 的目的和实现方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713115

相关文章

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u