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

“数字孪生”:为什么要仿真嵌入式系统?

01.仿真是什么?

仿真的概念非常广泛,但归根结底都是使用可控的手段来模仿真实的情况,通常应用于现实世界中实施难度大甚至是无法实践的事物。

众所周知,嵌入式系统通常是形式多样的、面向特定应用的软硬件综合体,无论是软件还是硬件都必须被高效率地设计,量体裁衣、去除冗余,具备低功耗、小体积、高集成度等特点,且通常有着高实时性、高可靠性的要求。

在嵌入式系统复杂程度飙升的当下,仿真已成为研发嵌入式系统或解决嵌入式系统中所出现的问题的主流解决方案。具备以下条件的嵌入式系统格外适合应用仿真:

  • 硬件尚在开发中/开发速度慢,较为稀缺
  • 硬件制作成本较为高昂
  • 对安全性、可靠性要求非常高

在此情形下应用仿真,可以带来以下好处:

  • 提前进行软件开发、测试和调试
  • 测试与硬件相连的其他设备
  • 大幅节约成本
  • ……

举个简单的例子来理解仿真:

综上,仿真可被应用于嵌入式系统前期设计到后期生产、维护的全生命周期。对嵌入式系统进行仿真的过程是“数字孪生”中的重要一环。数字孪生是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成映射,从而反映相对应的实体装备的全生命周期过程[1]。数字孪生体是仿真应用新巅峰,在数字孪生体成熟度的每个阶段,仿真都扮演着不可或缺的角色。

02.仿真的优势

提高效率

嵌入式系统开发人员在进行开发时,如果没有实际设备支撑,就无法测试软件的正确性与合理性,而采用仿真工具便可调试算法的逻辑部分,更侧重于可能存在的物理限制或错误。独立于硬件的深度测试可大大提升嵌入式系统的开发效率并缩短开发周期。

控制测试环境

对嵌入式系统进行仿真可使测试环境高效可控。仿真环境可被随时重置并快速生成新的测试结果,无需等待冗长的硬件重置或调整,且全数字的仿真环境不会受到外界因素的影响,结果更为真实可靠。在上文彩色小球实验中,出现数据收集不足、连接中断、被输入无效数据时,便可应用仿真来解决问题。

提升调试能力

在嵌入式系统出现问题时,由于仿真不受外界物理因素的影响,因此可以更快速地确定问题来源是软件还是硬件。如果在使用嵌入式设备和模拟器进行测试时发生错误,则可能表明算法存在问题。如果错误仅在设备上进行测试时发生,则可能表示硬件存在问题。

下表为《航空机载软件全数字仿真测试系统的设计与实现》一文中,对于某音频设备软件动态测试数据对比情况。可以看到,在测试用例数量和发现的软件问题数量等同的情况下,全数字仿真测试的执行耗时和回归测试耗时相比于全物理测试环境均显著减少。该全数字仿真测试使用了天目全数字实时仿真软件SkyEye。

▲表1 某音频设备软件动态测试数据对比[2]

03.“数字孪生”——仿真工具选择

虽然仿真是开发嵌入式系统的绝佳工具,但如果仿真工具不精准,所做的任何测试都会适得其反,不但无法缩短开发周期,还有可能拖长原定计划。选择一个适合自己的仿真工具是应用仿真的前提。

SkyEye,中文全称天目全数字实时仿真软件,是仿真嵌入式目标系统的虚拟平台,能够完全仿真目标系统中的CPU(Central Processing Unit,中央处理器)、寄存器、内存、外设接口,如图所示:

▲SkyEye功能图

在SkyEye上运行嵌入式软件,可以获得在真实目标系统上进行运行的相同效果。SkyEye还支持多个功能,如支持检查点分析:通过插入检查点,能够保存软件运行状态,支持运行状态的回放分析,便于软件问题的定位;支持访问目标系统状态:测试人员很难对真实物理硬件的寄存器、状态寄存器进行跟踪和控制,但通过SkyEye进行仿真,目标系统的内部状态清晰可见,对排查问题十分有帮助。

案例分析:SkyEye in 数字孪生卫星

本案例展示了如何应用SkyEye搭建卫星数字样机。首先通过系统级的架构分析与子系统拆分,建立不同模块对应的仿真模型,由SkyEye对嵌入式处理器及外设进行仿真。随后通过仿真软总线将各类分布式模型联合起来,即可完成数字卫星的搭建。将在真实卫星中运行产生的孪生数据放在“数字卫星”中进行超实时仿真,并通过可视化应用服务表现出来,用户可根据仿真结果分析预测真实卫星的未来走向,进行下一步决策并优化物理实体。

[1]《关于数字孪生与仿真技术关系的几点思考》http://www.uml.org.cn/modeler/202105314.asp?artid=24022

[2]《航空机载软件全数字仿真测试系统的设计与实现》,刘超,卢希,冯飞,王月波

相关文章:

“数字孪生”:为什么要仿真嵌入式系统?

​01.仿真是什么? 仿真的概念非常广泛,但归根结底都是使用可控的手段来模仿真实的情况,通常应用于现实世界中实施难度大甚至是无法实践的事物。 众所周知,嵌入式系统通常是形式多样的、面向特定应用的软硬件综合体,无…...

Java基础知识总结(上)

Java基础知识总结 1. Java语言的特点 简单易学,相较于python等语言具有较好的严谨性以及报错机制; 面向对象(封装,继承,多态),Java中所有内容都是基于类进行扩展的,由类创建的实体…...

MySQL 2:MySQL约束

一、定义 约束(constraint),即表中数据的限制条件。在表设计中加入约束的目的是保证表中记录的完整性和有效性。 比如user表,有些列(手机号)的值不能为空,有些列(身份证号&#xff…...

C4--Vivado添加列表中不存在的FLash器件2023-02-10

以华邦SPI FLASH W25Q128JVEIQ为例进行说明。(其他Flash添加步骤一致) 1.本地vivado安装目录D:\Softwares\xlinx_tools\Vivado\2020.2\data\xicom下,找到xicom_cfgmem_part_table.csv文件,这个表与vivado hardware manager中的器…...

php代码审计

准备工作 了解CMS的基本信息 该CMS使用的是什么设计模式?该CMS每个目录大概负责的功能(视图、缓存、控制器等)。该CMS处理请求的基本流程是如何走的?以及在系统中使用的全局过滤函数是如何对数据进行处理的? 代码审计方法 敏感函数回溯 …...

接口测试入门,如何划分接口文档

1.首先最主要的就是要分析接口测试文档,每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定,里面缺少的内容自己需要与开发进行确认。 我认为一针对于测试而言的主要的接口测试文档应该包含的内容分为以下几个方面。 a.具体的一个业…...

数据库学习第二天

第7章 系统预定义函数 函数:代表一个独立的可复用的功能。 和Java中的方法有所不同,不同点在于:MySQL中的函数必须有返回值,参数可以有可以没有。 MySQL中函数分为: (1)系统预定义函数&…...

NODE => CORS跨域资源共享学习

1.CORS跨域资源共享 cors是Express的一个第三方中间件。通过安装和配置cors中间件,可以很方便地解决跨域问题 运行npm install cors 安装中间件使用const cors require(‘cors’) 导入中间件在路由之前调用 app.use(cors()&#…...

golang rabbitMQ 生产者复用channel以及生产者组分发策略

引用的是rabbitMQ官方示例的库:github.com/rabbitmq/amqp091-go在网络编程中我们知道tcp连接的创建、交互、销毁等相关操作的"代价"都是很高的,所以就要去实现如何复用这些连接,并要做到高效并可靠。预期效果:项目初始化…...

掌握了这项技能的性能测试师,90%都升职加薪了

初入职场的新人该怎么做才能让自己快速成长?在公司一直做着手工测试,如何才能提升自己,避免陷入“只涨年龄不涨经验”的尴尬?做为一名软件测试工程师,我们不得不去面对这些问题,有的人找到了答案&#xff0…...

linux中crontab定时任务导致磁盘满和云监控未报警的的坑

一个后台开发者,兼职运维工作中,配置linux中crontab定时任务,导致磁盘满和云监控未报警的问题的坑。 1.磁盘满 使用命令 df -h2.问题排查 2.1排查日志 命令 cat /var/log/messages日志文件的默认路径是:/var/log 下面是几个…...

vscode中安装python运行调试环境

在运行代码之前,需要到微软商店下载安装python环境,35m,都是自动的。 1、安装python 的extensions插件。 ctrlshiftx 输入 python 后点击 install 按钮。 2、新建文件夹spider文件夹。 3、在新建文件夹spider下新建文件spider.py源代码。…...

【微服务】微服务架构超强讲解,通俗易懂

微服务架构目录一、微服务架构介绍二、出现和发展三、传统开发模式和微服务的区别四、微服务的具体特征五、面向服务的架构SOA(service oriented architecture)和微服务的区别1、SOA喜欢重用,微服务喜欢重写2、SOA喜欢水平服务,微…...

内核中的竞态产生的原因和解决方法

产生原因: 由于多进程对临界资源的抢占 根本原因: 1、对于单核处理器而言,内核支持抢占就会出现竞态 2、对于多核处理器而言,是核与核的竞态 3、进程与中断间存在竞态 4、arm开发板不会出现中断与中断间的竞态(目前&am…...

【微服务】Elasticsearch文档索引库操作(二)

🚗Es学习第二站~ 🚩Es学习起始站:【微服务】Elasticsearch概述&环境搭建(一) 🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 一.索引库操作 索引库就类似数据库表,mapping映射就类…...

【论文速递】NAACL2022-DEGREE: 一种基于生成的数据高效事件抽取模型

【论文速递】NAACL2022-DEGREE: 一种基于生成的数据高效事件抽取模型 【论文原文】:DEGREE A Data-Efficient Generation-Based Event Extraction Mode 【作者信息】:I-Hung Hsu , Kuan-Hao Huang, Elizabeth Boschee &#xff…...

C++类和对象(下)

✨个人主页: Yohifo 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 I do not believe in taking the right decision. I take a decision and make it right. 我不相信什么正确的决定。我都是先做决定,然后把…...

Java常见的六种线程池、线程池-四种拒绝策略总结

点个关注,必回关 一、线程池的四种拒绝策略: CallerRunsPolicy - 当触发拒绝策略,只要线程池没有关闭的话,则使用调用线程直接运行任务。 一般并发比较小,性能要求不高,不允许失败。 但是,由于…...

Node=>Express中间件分类 学习4

1.中间件分类 应用级别的中间件路由级别的中间件错误级别的中间件Express 内置的中间件第三方的中间件 通过app.use()或app.get()或app.post()绑定到app实力上的中间件,叫做应用级别的中间件 …...

在阿里当外包,是一种什么工作体验?

上周和在阿里做外包的朋友一起吃饭,朋友吃着吃着,就开启了吐槽模式。 他一边喝酒一边说,自己现在做着这份工作,实在看不到前途。 看他状态不佳,问了才知道,是手上的项目太磨人。 他们现在做的项目&#…...

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

OpenLayers 分屏对比(地图联动)

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

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

uniapp 字符包含的相关方法

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

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本: 2.2.4.0 内核版本: 5.15.153.1-2 WSLg 版本: 1.0.61 MSRDC 版本: 1.2.5326 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.2609…...