FMI在仿真软件SkyEye中的应用

1.仿真技术的困境

随着科技的发展,我国在安全攸关领域对于嵌入式软件的应用日益广泛,并且对于软硬件的性能及可靠性等方面要求变得更高。面对各种复杂的系统设计所提供的设计和分析手段也逐渐完善,其中仿真技术在近几年越来越受到重视,其在西方发达国家的多个工业领域中,都得到了广泛的应用。

仿真技术的成熟应用为复杂的系统设计提供了贯穿V流程的全生命周期的分析手段,它可以作为实物实验的有效补充手段,能够在仿真可信度较高的情况下有效降低实物实验的次数,大大节省成本并提高实验效率。但是仿真技术发展至今,在取得工程应用认可的同时,也出现了一些不足和亟待改善的地方,例如下图所示。

▲图1. 仿真工具碎片化

亟待解决的问题:

1)目前全国各单位部门都有自己的仿真工具,这些仿真工具可能是自己开发的可能是采购的,样式五花八门,协议各有不同,如果不是事先设计好,很难相互联合仿真,造成了工具碎片化的问题,这就很可能要投入很多的精力去解决这些模型的重用和维护等问题,引起严重的成本浪费。

2)在联合仿真的过程中,供应商也要解决代码的知识产权保护问题,如何让别人在不接触模型代码的情况下完成联合仿真也成为了亟待解决的问题。

2.什么是FMI

为解决上述问题,欧洲仿真届提出了FMI标准,FMI标准的全称是Functional Mock-up Interface,它是一个不依赖于工具的标准,其通过XML文件和已编译的C代码的组合来同时支持动态模型的模型交换(Model Exchange)联合仿真(Co-Simulation)

系统集成商和供应商都遵循FMI标准,供应商各自的仿真模型通过FMI标准生成FMU模型交给集成商,集成商可以使用FMU联合仿真软件快速构建系统模型,不用再提前开发定制接口。同时,FMI标准也提供了FMU模型导出加密的方法,供应商也不用担心产品泄密等安全问题。

▲图2.基于FMI标准的系统集成环境

FMI标准包含两种模型重用的方式:Model Exchange(模型交换)Co-Simulation(联合仿真)。模型交换不包含求解器,只包含输入/输出接口以及模型的相关信息。联合仿真则包含求解器,这是两者之间的主要区别。

▲图3.模型交换方式

其中联合仿真又包含三种模式,分别是代码导出方式工具耦合方式分布式方式

(1) 代码导出方式:

导出的FMU文件脱离原导出工具,使用时无需原导出工具的License限制,主控软件可以同时控制多个FMU模型求解。

▲图4.代码导出方式

(2) 工具耦合方式:

导出的FMU文件绑定原导出工具的License,FMU文件只作为联合仿真的接口封装和数据对接,模型的实际求解还在原导出工具中,中控软件与从属软件只负责各自的求解。

▲图5.工具耦合方式

(3) 分布式方式:

除包含工具耦合方式的所有特点外,还可以在多个平台进行联合仿真。

▲图6.分布式方式

3.FMI在SkyEye中的应用

迪捷软件的软件测试和仿真工具SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。

目前SkyEye采用分布式方式创建的FMU模型,将FMI封装的模型库通过网络的方式与远端的SkyEye进行通讯。SkyEye仿真嵌入式硬件环境运行嵌入式软件进行求解等操作。

创建FMU模型主要需要实现包含了描述模型接口信息和数据的XML文件、实现模型动态行为功能的C代码或二进制文件和其他用户希望包含在FMU中的文件和数据。

XML文件描述了FMU 模型的版本、ID、输入、输出等信息,需要实现如下图中节点信息。

▲图7.XML文件描述

C代码或二进制文件实现了模型的控制行为等接口,需要按照要求实现如下图中所有函数。

▲图8.FMI函数信息

在上述函数中实现了对SkyEye的操作如时间控制、值的获取、设置值、重启等操作。

4.总结

FMI为集成商和供应商提供了一套统一的接口标准,解决了工具碎片化导致的各种问题。迪捷软件的SkyEye对于FMI标准的支持也极大的方便了客户的集成仿真。SkyEye能根据实际的工程需求实现更多的应用场景,满足客户的更多集成需求。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql命令行cmd_CMD命令行操作MySQL

连接MySQL服务器:mysql -u用户名 -p密码mysql -u用户名 -pEnter Password:输入密码(无密码则直接回车)mysql -h主机名 -u用户名 -p密码 -D数据库名称退出:exit quit \q ctrlc显示帮助信息:\h取消本行命令:\c 取消当前…

c#ovalshape_【原创】C# 实现拖拉控件改变位置与大小(SamWang)(附源代码下载)

前言:很多时候我们需要在运行时,动态地改变控件的位置以及大小,以获得更好的布局。比如说实际项目中的可自定义的报表、可自定义的单据等诸如此类。它们有个特点就是允许客户或者二次开发人员设计它们需要的界面设置功能。本人以前也做过可自…

jmeter提取mysql数据_通过jmeter读取数据库数据,并取值作为请求的入参

为提升测试技能,督促自己学习。故写了这篇文章。测试小白一枚,最近感觉达到了自己认为的瓶颈期。总是有想法,想突破,但是无从入手。工具类用过fiddler、jmeter、charels、postman..大体接口测试工具,均多多少少使用过。…

如何快速上手mysql_mysql快速上手3

上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下:索引简介索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)…

mysql blob 好处_MySQL中的BLOB类型

一、概念:BLOB (binary large object)二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的…

mysql group by null_MySQL无GROUP BY直接HAVING返回空的问题分析

有一张表,id是主键,这样的写法可以返回一条记录:复制代码 代码如下:“SELECT * FROM t HAVING idMIN(id);”但是只是把MIN换成MAX,这样返回就是空了:复制代码 代码如下:“SELECT * FROM t HAVING idMAX(id);”这是为什…

c mysql 免安装版_MySQL5.6免安装版环境配置图文教程

MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行。但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。很多人下了zip格式的解压发现没有setup.exe,面对一堆文件一头雾水,不知如何安装。下面小编将介…

python士兵突击_想自学Python进入该行业成为一名自己一直以来就很羡慕和钦佩的程序员,过来人的你有什么想分享的吗?...

多说无益就是干,学习编程也这样。我们下面主要通过以下三个步骤给出建议:1.确定目标(成为一个能干活的Python需要掌握哪些技能)。我们可以通过市面上对于Python工程师对招聘要求,去分析,具体需要掌握哪些内容。这个详细内容可以在…

启动项 mysql命令大全_mysql常用命令

一、登录mysql数据库1、连接本地mysql数据库,默认端口为3306#mysql –u root –p 123456 //-u:指定用户 -p:指定与用户对应的密码2、通过IP和端口连接远程mysql服务器#mysql –u root –p 123456 –h 192.168.100.1 –P 3306二、数据库操作语句1、显示所…

MDL锁导致mysql夯住_MySQL MetaData Lock 案例分享

前言:今天开发童鞋遇到一个奇怪的问题,在测试环境里面执行drop database dbname发现一直夯住不动,等了很久也没有执行,于是问题就到我这里了一、什么是MetaData Lock?MetaData Lock即元数据锁,在数据库中元…

ubuntu16 黑主题_给Ubuntu 8.10安装超炫酷黑色新主题

Linux系统的Netbook定做了一套漂亮的界面,名称叫做 HP Mini 1000 Mi Edition。这套界面是基于 Ubuntu 8.04 Hardy Heron的,平常我们熟悉的Ubuntu程序等都可以在这里都使用.不过让 Mi Edition 脱颖而出的是这看起来根本不像是我们平时看过的Ubuntu界面, 看上去倒像媒体中心。这个…

docker 分布式管理群集_Coolpy7分布式物联网MQTT集群搭建

Coolpy7分布式技术,支持多个Coolpy7 Core提供跨数据中心(多活)模式组建群集,支持群集零手动维护(基于Gossip分布式协议作为群集节点状态维护)。Coolpy7从版本号V7.3.2.3开始支持本功能。请到Coolpy7之github项目release下载相关版本https://github.com/C…

vue 数值 拼接字符串_【Vue原理】Compile - 白话版

写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 【2.5.17】如果你觉得排版难看,请点击 下面链…

gpio驱动蜂鸣器出现破音_五款蜂鸣器驱动电路原理图

蜂鸣器驱动电路图一:典型的蜂鸣器驱动电路,蜂鸣器驱动电路一般包含:一个三极管、一个蜂鸣器、一个续流二极管、一个滤波电容。1、蜂鸣器:发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)就可以发声&am…

php和mysql的实践报告_PHP+MySQL项目开发与实践

前言部分基础篇任务一PHP基础知识简介1.1静态网页与动态网页的工作原理1.1.1静态网页与工作原理1.1.2动态网页与工作原理1.2初识PHP1.3习题任务二PHP程序的运行环境搭建2.1配置Apache服务器2.1.1安装Apache服务器2.1.2Apache服务器安装过程中的问题及解决方案2.1.3Apache主目录…

mediumint 在mysql 中是什么类型_mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围...

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint、int、mediumint、smallint 和 tinyint的语法介绍,如下:1、bigi…

mysql备份还原数据库操作系统_mysql 命令行备份还原数据库操作

一 备份操作1.备份全部数据库mysqldump -uroot -p --all databases > aa.sql2.备份某个数据库并压缩mysqldump -uroot -p databasename |gzip > aa.sql.gz3 .备份单个表mysqldump -uroot -p -table dbname tbname1 tbname2 >aa.sql4.同时备份多个数据库mysqldump -ur…

python表示当前对象_对象操作

[TOC]# 对象操作## help:返回对象的帮助信息~~~>>> help(str)Help on class str in module builtins:class str(object)| str(object) -> str| str(bytes_or_buffer[, encoding[, errors]]) -> str|| Create a new string object from the given object. If enc…

中国大学慕课python答案第七章_中国大学慕课mooc用Python玩转数据章节答案

嵌体来源A.嵌入牙冠内的修复体 B.没有覆盖前牙唇面或后牙颊面的部分冠修复体艺术不是象牙塔里的_____ ,所谓的“为艺术而艺术”,说到底不过是唯美主义_____的志向。自古以来,艺小轿车的速度比卡车的速度每小时快6千米,小轿车和卡车…

mysql 多项式_mysql主从复制原理及实现

一.主从复制原理利用MySQL提供的Replication,其实就是Slave从Master获取Binary log文件,然后再本地镜像的执行日志中记录的操作。由于主从复制的过程是异步的,因此Slave和Master之间的数据有可能存在延迟的现象,此时只能保证数据最…