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能根据实际的工程需求实现更多的应用场景,满足客户的更多集成需求。

FMI在仿真软件SkyEye中的应用相关推荐

  1. 中国自主可控的全数字实时仿真软件SkyEye支持龙芯CPU指令级仿真

    传统的系统开发过程,都是由工程师根据项目需求书来编写代码完成系统的开发,但随着功能的完善和版本迭代,系统中庞大的代码量很难确保正确无误,给后期测试和仿真带来了很大的压力和成本,在航空航天.卫星系统.核 ...

  2. 自主可控的全数字实时仿真软件SkyEye支持PowerPC指令级仿真

    随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通.航空航天.核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题.最近比较火热的基于 ...

  3. 国产自主可控的嵌入式仿真软件SkyEye和同步数据流语言高阶运算消去的可信翻译

    同步数据流语言高阶运算消去的可信翻译 同步数据流语言(例如Lustre,Signal等)广泛应用于工业界的核心安全级控制系统,如航空.核电等高安全等级的关键领域,与语言相关的软件的安全性也越来越受到人 ...

  4. 全数字实时仿真软件SkyEye与可信编译器L2C的核心翻译步骤的设计与实现

    有关翻译正确性验证的重点疑难问题及其设计实现方案 在L2C可信编译器的设计与实现中, 对于实线所对应的翻译过程 (CompCert编译器除外) 均借助于Coq证明了正确性 (语义保持性), 然后得出L ...

  5. 支持多达70余种嵌入式核心的嵌入式仿真软件SkyEye

    SkyEye 介绍 SkyEye,中文全称天目全数字实时仿真软件,应用软件仿真技术,逼真地模拟出被测软件的物理环境.用图形化方式构建虚拟目标系统,有效降低了硬件工程师和软件工程师之间的沟通成本,软件工 ...

  6. PowerPC处理器数字仿真测试软件工具——天目全数字实时仿真软件SkyEye

    1. 什么是软件仿真 在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上.在ARM的开发过程中,一种最简单和原始的开发流程是:编写程序,然后烧写到芯片上验证功能,这种方法对于简单的小系统是可 ...

  7. 随想录(skyeye中的soc仿真)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 想学好soc,再怎么看芯片手册和linux kernel都不为过.但是要学习好kernel,那再 ...

  8. C语言函数在硬件中的执行原理

    目录 01.什么是函数? 02.函数和硬件的联系 03.调用时的堆栈信息 04.使用SkyEye全数字仿真进一步了解底层函数执行的原理 01.什么是函数? 众所周知,C语言的应用程序总是以「main」 ...

  9. 计算机仿真模拟软件心得,【仿真软件在计算机组装课中的应用】 计算机组装总结及心得...

    摘 要:<计算机组装与维护>是中职计算机专业的必修课程,但现在这门课的教学硬件与现实严重脱轨,而利用仿真软件则可以很好地解决这一问题.本文对仿真软件在中职计算机组装课中的具体应用方法进行了 ...

最新文章

  1. 为什么创业者专注做一个产品最好?
  2. java 的 AccessController.doPrivileged使用
  3. mysql+地图网格数据下载_echarts 中国各省市 echarts地图数据,含世界地图
  4. 树和二叉树【数据结构】
  5. 自定义GridView 介绍
  6. oracle的基本命令,Oracle基本命令
  7. (秒杀项目) 4.4 用户下单与秒杀
  8. Java实现简单工厂模式
  9. 解决IDEA中leetcode插件出现中文乱码问题
  10. 前端面试官经验总结 | 前端面试小技巧
  11. python基金筛选_【量化投资工具】抓取沪深股市所有指数关联的公募基金列表(含ETF、增强、分级等)...
  12. QQ、微博、陌陌:社交难逃社交命
  13. RDL和RDLC性能比较
  14. 如何选购笔记本电脑?
  15. checkv的基本使用
  16. Nessus 扫描web服务
  17. mysql的sql查询IN里面有重复的值,怎么不去重查询,这是一条思路
  18. 用.NET做DDNS动态域名解析和SSL证书申请
  19. 0ctf2018_heapstorm2_reproduce
  20. 业精于勤,荒于嬉;行成于思,毁于随。─韩愈 给我的启示

热门文章

  1. vue-cli3+与vue-cli2的区别和vue-cli 修改配置
  2. linux 裸设备使用,linux裸设备使用
  3. hashMap 底层原理+LinkedHashMap 底层原理+常见面试题
  4. vue错误:vue.esm.js?efeb:628 [Vue warn]: Error in render: “TypeError: Cannot read property ‘matched‘ of
  5. php 微信转账,php实现微信公众号企业转账功能
  6. python实训目的意义_Python实训第二天--基础知识2
  7. potplayer 多个进程_进程组、会话、控制终端概念,如何创建守护进程?
  8. 语言inc c,汇编语言练习
  9. 嵌入式linux组件,嵌入式Linux系统的几大组件!
  10. linux指令能回滚么,如何在Ubuntu上撤消或回滚“ apt-get upgrade”命令?