Functional Mock-up Interface: Difference between revisions

Content deleted Content added
No edit summary
 
(45 intermediate revisions by 24 users not shown)
Line 1:
{{Short description|Computer simulation interface}}
{{Infobox standardref
| title = Functional Mock-up Interface
| status = Published
| year_started = 2010
| version = 23.0.2<ref>{{cite web
| url=https://fmi-standard.org/docs/3.0.2/
| versionDate = July 2014
| title=FMI Specification 3.0
| organization = [https://www.fmi-standard.org/development MAP FMI]
| publisher=github.com/modelica
| base_standards =
| date=2024-11-27
| related_standards = [[Co-simulation]]
| accessdate=2024-12-25}}</ref>
| abbreviation = FMI
| version_date = {{Start date and age|2024|11|27}}
| ___domain = [[Computer simulation]]
| organization = [https://modelica.org/association/ Modelica Association Project (MAP)]
| license = [[Creative Commons licenses|CC_BY_SA 3.0]]
| base_standards =
| website = [http://functional-mockup-interface.org/ FMI website]
| related_standards = [[Co-simulation]]
| abbreviation = FMI
| ___domain = [[Computer simulation]]
| license = [[Creative Commons licenses|CC BY-SA-4.0]]
| website = [https://fmi-standard.org/ FMI website]
}}
 
The '''Functional Mock-up Interface''' (or '''FMI''') defines a standardized [[Interface (computing)|interface]] to be used in [[computer simulation]]s to develop complex [[cyber-physical system]]s.
 
The vision of '''FMI''' is to support this approach: if the real product is to be assembled from a wide range of parts interacting in complex ways, each controlled by a complex set of [[physical law]]s, then it should be possible to create a '''virtual product''' that can be assembled from a set of models that each represent a combination of parts, each a model of the physical laws as well as a model of the [[control system]]s (using [[electronics]], [[hydraulics]], and digital [[software]],) assembled digitally. The FMI standard thus provides the means for model based development of systems and is used for example for designing functions that are driven by electronic devices inside vehicles (e.g. ESP controllers, active safety systems, combustion controllers). assembledActivities digitallyfrom systems modelling, simulation, validation and test can be covered with the FMI based approach.
The FMI standard thus provides the means for '''model based development of systems''' and is used for example for designing functions that are driven by electronic devices inside vehicles (e.g. ESP controllers, active safety systems, combustion controllers).
Activities from systems modelling, simulation, validation and test can be covered with the FMI based approach.
To create the FMI standard, a large number of software companies and research centers have worked in a cooperation project established through a European consortium that has been conducted by [[Dassault Systèmes]] under the name of '''[[MODELISAR''']]. The MODELISAR project started in 2008 to define the FMI specifications, deliver technology studies, prove the FMI concepts through use cases elaborated by the consortium partners and enable tool vendors to build advanced prototypes or in some cases even products. The development of the FMI specifications was coordinated by [[Daimler AG]]. After the end of the MODELISAR project in 2011, FMI is managed and developed as a [https://modelica.org/association/ Modelica Association Project (MAP)].
The [[MODELISAR]] project started in 2008 to define the FMI specifications, deliver technology studies, prove the FMI concepts through Use Cases elaborated by the consortium partners and enable tool vendors to build advanced prototypes or in some cases even products.
 
The FMI Standard provides three interface types for different aspects of models:
The development of the FMI specifications was coordinated by [[Daimler AG]].
 
After the end of the [[MODELISAR]] project in 2011, FMI is managed and developed as a [https://www.modelica.org/projects Modelica Association Project (MAP)].
 
The four required FMI aspects of creating models capable of being assembled have been covered in Modelisar project:
* FMI for model exchange,
* FMI for [[co-simulation]],
* FMI for applications,scheduled execution (since FMI 3.0)
* FMI for [[Product life cycle management (marketing)|PLM]] (integration of models and related data in product life-cycle management).
 
In practice, the FMI implementation by a software modelling tool enables the creation of a simulation model that can be interconnected or the creation of a software library called '''FMU (Functional Mock-up Unit)'''.
 
In practice, the FMI implementation by a software modelling tool enables the creation of a simulation model that can be interconnected or the creation of a software library called FMU (Functional Mock-up Unit).<ref name="modelica_Jan10">{{cite web| url=https://www.modelica.org/publications/newsletters/2010-1/index_html#item8| title=Functional Mockup Interface (FMI)| publisher=modelica.org| date=January 2010| quote=''On Jan. 26, version 1.0 of the open Functional Mockup Interface was released (FMI for model exchange 1.0). This interface was developed in the ITEA2 MODELISAR project to support the model exchange between modelling and simulation tools. The Modelisar project is coordinated by Dassault Systèmes. The FMI development has been organized by Daimler.''| accessdate=2011-12-22}}</ref>
<ref name="modelica_Jan10">{{cite web
| url=https://www.modelica.org/publications/newsletters/2010-1/index_html#item8
| title=Functional Mockup Interface (FMI)
| publisher=modelica.org
| date=January 2010
| quote=''On Jan. 26, version 1.0 of the open Functional Mockup Interface was released (FMI for model exchange 1.0). This interface was developed in the ITEA2 MODELISAR project to support the model exchange between modelling and simulation tools. The Modelisar project is coordinated by Dassault Systèmes. The FMI development has been organized by Daimler.''
| accessdate=2011-12-22}}</ref>
 
== The FMI approach ==
Line 52 ⟶ 42:
 
==License==
The [https://www.fmi-standard.org/downloads '''FMI specifications'''] are distributed under open source licenses:
* the specifications are licensed under CC- BY-SA (Creative Commons Attribution-Sharealike 34.0 Unported) [[Creative Commons licenses|CC_BY_SACC BY-SA 34.0]]
* the C-header and XML-schema files that accompany this document are available under the [http://www.opensource.org/licenses/bsd-license.html BSD] license with the extension that modifications must also be provided under the BSD license.
 
Line 64 ⟶ 54:
==Example==
Below is an example of an FMI model description issued from [[Modelica]].
<sourcesyntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF8"?>
<fmiModelDescription
fmiVersion="1.0"
modelName="ModelicaExample"
modelIdentifier="ModelicaExample_Friction">
...
<UnitDefinitions>
Line 92 ⟶ 82:
</ModelVariables>
</fmiModelDescription>
</syntaxhighlight>
</source>
 
==Comparison to Simulink S-Functions==
Line 101 ⟶ 91:
| accessdate=2015-08-05}}</ref>
 
FMI proponents explain that FMI models have several advantages over Simulink S-Functions:<ref>{{cite web|url=http://synchronics.inria.fr/lib/exe/fetch.php/modelica-fmi-elmqvist.pdf |title=Functional Mockup Interface – Overview |author1=Martin Otter |author2=Hilding Elmqvist |author3=Torsten Blochwitz |author4=Jakob Mauss |author5=Andreas Junghanns |author6=Hans Olsson |work=synchronics.inria.fr |publisher=[[National Institute for Research in Computer Science and Control|INRIA]] |accessdate=2011-01-23 |deadurlurl-status=yesdead |archiveurl=https://web.archive.org/web/20110720233637/http://synchronics.inria.fr/lib/exe/fetch.php/modelica-fmi-elmqvist.pdf |archivedate=July 20, 2011 }}</ref>
* S-Functions format is proprietary, whereas the FMI schema is licensed under a [[BSD licenses|BSD license]].
* The building blocks of S-Functions are much more complex than FMI, making it very difficult to integrate in simulators other than Simulink itself.
Line 107 ⟶ 97:
* S-Functions are not suited for [[embedded system]]s, due to the memory overhead of S-Functions.
 
{{Infobox standardref
There are also several limitations cited when using FMI/FMU:<ref>{{cite web
| title = System Structure and Parameterization
| url=http://www.ep.liu.se/ecp/118/004/ecp1511843.pdf
| status = Published
| title=FMI for physical models on automotive embedded targets
| version = 2.0<ref>{{cite web
|author1=Christian Bertsch |author2=Jonathan Neudorfer |author3=Elmar Ahle |author4=Siva Sankar Arumugham |author5=Karthikeyan Ramachandran |author6=Andreas Thuy | publisher=Proceedings of the 11th International Modelica Conference)
| url=https://ssp-standard.org/docs/2.0/
| accessdate=2015-09-21}}</ref>
| title=SSP Specification 2.0
* Memory - Parameters, states, inputs, and outputs are not exposed directly to the outside, which is in contrast to how ECU software is normally organized with respect to memory to allow transparency, simplicity, and efficiency.
| date=2024-12-20}}</ref>
* Event handling - Events could increase the runtime for real-time systems in an unpredictable manner.
| organization = [https://modelica.org/association/ Modelica Association Project (MAP)]
* Potentially dangerous features can be included on ECU - Some features that make sense for offline simulations should not be present on the ECU. Examples of features that are either supported or not explicitly forbidden in the FMI include logging and I/O operations such as print().
| base_standards =
* Data type support - More supported data types are necessary for optimized code. For example, there is not a way to distinguish between a uint8 and uint32 variable.
| related_standards = [[Co-simulation]]
| abbreviation = SSP
| ___domain = [[Computer simulation]]
| license = [[Creative Commons licenses|CC BY-SA-4.0]]
| website = [http://ssp-standard.org/ SSP website]
}}
 
== System Structure and Parameterization (SSP) ==
 
[[System Structure and Parameterization]] ('''SSP''')<ref name="ssp-standard">{{cite web
| title = SSP Standard Webpage
| publisher = Modelica Association Project SSP
| date = 2023
| url = https://ssp-standard.org/
|access-date=2023-05-11
}}</ref> is a companion standard to FMI that defines a standardized, open file format to describe complex, hierarchical (technical) systems, that can be simulated. An SSP file contains definitions for system
architecture, the interfaces of the system elements, and their connections and parameterization.
The aim of SSP is to simplify the exchange and integration of system elements that are used in the
distributed development of a system to be simulated using a wide variety of tools.
<ref name="Hallqvist2021">{{cite web
| title = Engineering Domain Interoperability Using the System Structureand Parameterization (SSP) Standard
| publisher = Proc. 14th Modelica Conference
| date = 2021
| url = https://ecp.ep.liu.se/index.php/modelica/article/view/180/140
| doi = 10.3384/ecp2118137
| last1 = Hällqvist
| first1 = Robert
| last2 = Munjulury
| first2 = Raghu Chaitanya
| last3 = Braun
| first3 = Robert
| last4 = Eek
| first4 = Magnus
| last5 = Krus
| first5 = Petter }}</ref>
 
SSP is being developed as a project of the Modelica Association and is based
on the FMI specification. FMI enables the exchange of individual simulation
components, while SSP enables the exchange of complete simulation systems, their variants and
parameterization. The simulation components of a simulation system described in SSP can also be
independent of FMI and map to other implementations.
 
SSP is extensible to support specific requirements or ___domain-specific extensions: e.g. OSI, documentation of requirements, traceability or process steps, etc. SSP is open with regard to the component formats. Although it was based on FMI, it can also be used with components specifications of any other format.
==Tools support==
As of November 2011, FMI is supported on the following simulation frameworks:<ref name="modelica_Jan10"/>
See full, up-to-date list and details in [https://www.fmi-standard.org/tools FMI web pages].
* [https://www.20sim.com/ 20-sim] – Modeling and simulation software for complex multi-___domain dynamic systems and development of control systems.
* [[AMESim]] – Simulation software for the modeling and analysis of multi-___domain mechatronics systems from [[Siemens PLM Software]]
* [http://www.esterel-technologies.com/products/scade-display/ ANSYS SCADE Display] - Embedded software design for Human Machine Interface
* [http://www.esterel-technologies.com/products/scade-suite/ ANSYS SCADE Suite] - Model-based embedded software development for critical systems
* [http://www.ansys.com/products/systems/ansys-simplorer ANSYS Simplorer] - Physical modeling & simulation for electrified systems
* ASIM – [[AUTOSAR]] Builder from [[Dassault Systèmes]]
* [http://www.mscsoftware.com/product/adams Adams] - High end multibody dynamics simulation software from MSC Software
* Atego Ace – Co-simulation environment with [[AUTOSAR]] and HIL support
* CANoe - Comprehensive software tool for development, test and analysis of entire ECU networks and individual ECUs
* [[CATIA]] V6R2012 – Environment for Product Design and Innovation, including systems engineering tools based on Modelica, by Dassault Systèmes
* [[ControlBuild]] – Environment for [[IEC 61131-3]] control applications from Dassault Systèmes
* [https://www.ds.tools/products/hla-and-dis-for-fmi/ coreDS™ for FMI]: Turns a FMU (Functional Mock-up Unit) into a full featured HLA federate and/or DIS simulation
* [http://www.cosimate.com CosiMate]– Co-simulation Environment from ChiasTek
* [[Cybernetica (Norwegian company)]] CENIT - Industrial product for nonlinear Model Predictive Control (NMPC) from Cybernetica
* Cybernetica ModelFit - Software for model verification, state and parameter estimation, using logged process data. By Cybernetica
* [http://www.EcosimPro.com/ EcosimPro] - Continuous and Discrete Modelling and Simulation Software
* DSHplus – Fluid power simulation software from FLUIDON
* [[Dymola]] – Modeling and simulation environment supporting Modelica and FMI from Dassault Systèmes
* [http://www.fordiac.org Eclipse 4diac] – Open source environment for [[IEC 61499]] control applications
* [https://www.opal-rt.com/systems-ephasorsim/ ePHASORSIM] from [https://www.opal-rt.com/ OPAL-RT Technologies Inc.], Electromechanical Power System Real-Time Simulation - Modeling supporting OpenModelica
* [http://www.mentor.com/products/mechanical/flowmaster/ Flowmaster] - Simulation software for modeling thermo-fluid systems
* [http://www.modelon.com/products/fmi-add-in-for-excel/ FMI Add-In for Excel] – Batch simulation of FMUs in Microsoft Excel
* [http://www.fmi-library.org FMI Library] – C library for importing FMUs in custom applications
* [http://www.fmi-standard.org/downloads FMU compliance checker] – Software for verifying FMI standard compliance of FMUs
* [https://github.com/mtiller/fmusdk FMU SDK] – FMU Software Development Kit from QTronic
* [http://www.twt-gmbh.de/fmtc FMU Trust Centre] - cryptographic protection and signature of models including their safe PLM storage; secure authentication and authorization for protected (co-)simulation
* [https://www.gtisoft.com GT-SUITE] - Multi-Physics Simulation Platform for Powertrain and Vehicle Systems
* [[Hopsan]] - Distributed system simulation tool using the [[Bi-directional delay line|TLM]] method
* [http://www.v2c2.at/icos/ ICOS Independent Co-Simulation] – independent co-simulation environment from [http://www.v2c2.at/ Virtual Vehicle Research Center]
* [https://ipg-automotive.com/langswitch/1/ IPG Automotive CarMaker] – simulation software for virtual test driving
* [http://www.etas.com/isolareve ISOLAR-EVE] – Software tool from [[ETAS]] for creation and test of virtual ECUs
* [[JModelica.org]] – Open source Modelica environment from Modelon
* [[MapleSim]] - via the [http://www.maplesoft.com/products/toolboxes/fmi/ MapleSim Connector for FMI] from Maplesoft
* [[MATLAB]] – via [http://www.modelon.com/products/fmi-toolbox-for-matlab/ FMI Toolbox] from Modelon or via the FMU Export from Simulink from [[Dassault Systèmes]]
* MWorks 2.5 – Modelica environment from Suzhou Tongyuan
* NI [[LabVIEW]] – Graphical programming environment for measurement, test, and control systems from National Instruments
* NI VeriStand – Real-Time Testing and Simulation Software from National Instruments
* [https://www.avl.com/iodp Model.CONNECT] - neutral model integration and co-simulation platform from [[AVL (engineering company)|AVL]]
* OpenModelica – Open source Modelica environment from OSMC [https://www.openmodelica.org/ OpenModelica] for transient stability simulations of power systems
* [http://www.modelon.com/products/optimica-studio-for-physical-modeling/ OPTIMICA Studio] – Modelica environment from Modelon
* [[PragmaDev Studio]] – Modeling and testing tools for communicating systems
* [http://www.proosis.com/ PROOSIS] - Multidisciplinary Aircraft Simulation Tool.
* [https://ptolemy.berkeley.edu/ptolemyII/ Ptolemy II] from the [[Ptolemy Project]].
* [[Python (programming language)|Python]] – via [https://pypi.python.org/pypi/PyFMI/ PyFMI] from Modelon, also available as part of [[JModelica.org]]
* [https://www.opal-rt.com/software-rt-lab/ RT-LAB] – Real-Time Simulation Software from [https://www.opal-rt.com/ OPAL-RT Technologies Inc.], via [http://www.modelon.com/products/modelon-deployment-suite/fmi-toolbox-for-matlabsimulink FMI Toolbox] from Modelon
* [https://www.qtronic.de/de/silver.html/ Silver 3.5] – Virtual integration platform for Software in the Loop from QTronic
* [[SIMPACK]] 9 – High end multi-body simulation software from SIMPACK AG
* [[SimulationX]] 3.4 – Modelica environment from ITI
* [[Simulink]] – there is native support for <i>importing</i> FMUs to Simulink as of R2017b (see [https://uk.mathworks.com/help/simulink/ug/work-with-fmi-in-simulink.html/ Import FMU]). For <i>exporting</i> FMUs, the options include: Dymola 7.4 using Real-Time Workshop; @Source; and [http://www.modelon.com/products/modelon-deployment-suite/fmi-toolbox-for-matlabsimulink/ FMI Toolbox] from Modelon.
* TISC – Co-simulation environment from TLK-Thermo
* [http://www.twt-gmbh.de/co-sim-framework TWT Co-Simulation Framework] - Communication layer tool to flexibly plug together models for performing a co-simulation; front-end for set-up, monitoring and post-processing included
* [http://www.twt-gmbh.de/fmi-matlab TWT Matlab/Simulink FMU Interface] - FMI-compatible plug-and-play interface to Matlab/Simulink, available as an integrated block
* [https://www.dspace.com/en/pub/home/products/sw/simulation_software/veos.cfm VEOS] – Simulation and integration platform for Software in the Loop systems from dSPACE
* [https://www.plm.automation.siemens.com/nl_nl/products/lms/virtual-lab/motion/ Virtual.Lab Motion] - Virtual.Lab Motion is a high end multi body software from [[Siemens PLM Software]]
* [[Wolfram SystemModeler]] - Modelica environment from [[Wolfram Research]]
* [http://www.xmodsoftware.com/ xMOD] - Heterogeneous model integration environment & virtual instrumentation and experimentation laboratory from IFPEN distributed by D2T.
 
== Accompanying standards and recommendations ==
Line 181 ⟶ 154:
 
==See also==
* [[20-sim]]
* [[Modelica]]
* [[Simulink]]
Line 189 ⟶ 163:
==External links==
* [http://functional-mockup-interface.org/ FMI main site]
* [http://ssp-standard.org/ SSP main site]
* [https://web.archive.org/web/20110720233637/http://synchronics.inria.fr/lib/exe/fetch.php/modelica-fmi-elmqvist.pdf FMI overview]
* [http://www.qtronic.de/en/fmusdk.html A free software development kit for FMU]
 
[[Category:Simulation software]]
{{DEFAULTSORT:Functional Mock-Up Interface}}
[[Category:Scientific modeling]]
[[Category:Simulation software| ]]