仿真技术的困境
随着科技的发展,我国在安全攸关领域对于嵌入式软件的应用日益广泛,并且对于软硬件的性能及可靠性等方面要求变得更高。面对各种复杂的系统设计所提供的设计和分析手段也逐渐完善,其中仿真技术在近几年越来越受到重视,其在西方发达国家的多个工业领域中,都得到了广泛的应用。
仿真技术的成熟应用为复杂的系统设计提供了贯穿V流程的全生命周期的分析手段,它可以作为实物实验的有效补充手段,能够在仿真可信度较高的情况下有效降低实物实验的次数,大大节省成本并提高实验效率。但是仿真技术发展至今,在取得工程应用认可的同时,也出现了一些不足和亟待改善的地方,例如下图所示。
▲图1. 仿真工具碎片化
亟待解决的问题:
1)目前全国各单位部门都有自己的仿真工具,这些仿真工具可能是自己开发的可能是采购的,样式五花八门,协议各有不同,如果不是事先设计好,很难相互联合仿真,造成了工具碎片化的问题,这就很可能要投入很多的精力去解决这些模型的重用和维护等问题,引起严重的成本浪费。
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.分布式方式
FMI在SkyEye中的应用
迪捷软件的软件测试和仿真工具SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。
目前SkyEye采用分布式方式创建的FMU模型,将FMI封装的模型库通过网络的方式与远端的SkyEye进行通讯。SkyEye仿真嵌入式硬件环境运行嵌入式软件进行求解等操作。
创建FMU模型主要需要实现包含了描述模型接口信息和数据的XML文件、实现模型动态行为功能的C代码或二进制文件和其他用户希望包含在FMU中的文件和数据。
XML文件描述了FMU 模型的版本、ID、输入、输出等信息,需要实现如下图中节点信息。
▲图7.XML文件描述
C代码或二进制文件实现了模型的控制行为等接口,需要按照要求实现如下图中所有函数。
▲图8.FMI函数信息
在上述函数中实现了对SkyEye的操作如时间控制、值的获取、设置值、重启等操作。
总结
FMI为集成商和供应商提供了一套统一的接口标准,解决了工具碎片化导致的各种问题。迪捷软件的SkyEye对于FMI标准的支持也极大的方便了客户的集成仿真。SkyEye能根据实际的工程需求实现更多的应用场景,满足客户的更多集成需求。