Functional Mock-up Interface
The Functional Mock-up Interface defines a standardized interface to be used in computer simulations to develop complex cyber-physical systems.
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 laws, 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 systems 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. 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 .
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,
- FMI for PLM.
The FMI approach
The typical FMI approach is described in the following stages:- a modelling environment describes a product sub-system by differential, algebraic and discrete equations with time, state and step-events. These models can be large for usage in off-line or on-line simulation or can be used in embedded control systems;
- as an alternative, an engineering tool defines the controller code for controlling a vehicle system;
- such tools generate and export the component in an FMU ;
- an FMU can then be imported in another environment to be executed;
- several FMUs can – by this way – cooperate at runtime through a co-simulation environment, thanks to the FMI definitions of their interfaces.
License
- the specifications are licensed under CC-BY-SA CC_BY_SA 3.0
- the C-header and XML-schema files that accompany this document are available under the license with the extension that modifications must also be provided under the BSD license.
Architecture
- an XML file containing among other things the definition of the variables used by the FMU;
- all the equations used by the model ;
- optional other data, such as parameter tables, user interface, documentation which may be needed by the model.
Example
modelName="ModelicaExample"
modelIdentifier="ModelicaExample_Friction"
...
valueReference="16777217"
description="Moment of inertia"
variability="parameter">
...
Comparison to Simulink S-Functions
FMI is often compared to Simulink S-Functions since both technologies can be used to integrate third-party tools together. S-Functions are used to specify a computer language description of a dynamic system. They are compiled as MEX-files that are dynamically linked into MATLAB when needed. S-Functions use a calling syntax that interacts with Simulink’s equation solvers. This interaction is similar to the interaction that takes place between built-in Simulink blocks and the solvers.FMI proponents explain that FMI models have several advantages over Simulink S-Functions:
- S-Functions format is proprietary, whereas the FMI schema is licensed under a 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.
- Furthermore, the S-Functions format is specific to Simulink.
- S-Functions are not suited for embedded systems, due to the memory overhead of S-Functions.
- 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.
- Event handling - Events could increase the runtime for real-time systems in an unpredictable manner.
- 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.
- 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.
Accompanying standards and recommendations
Tools support
As of November 2011, FMI is supported on the following simulation frameworks:See full, up-to-date list and details in .
- 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
- - Embedded software design for Human Machine Interface
- - Model-based embedded software development for critical systems
- - Physical modeling & simulation for electrified systems
- ASIM – AUTOSAR Builder from Dassault Systèmes
- - 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
- : Turns a FMU into a full featured HLA federate and/or DIS simulation
- – Co-simulation Environment from ChiasTek
- Cybernetica CENIT - Industrial product for nonlinear Model Predictive Control from Cybernetica
- Cybernetica ModelFit - Software for model verification, state and parameter estimation, using logged process data. By Cybernetica
- - 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
- – Open source environment for IEC 61499 control applications
- from , Electromechanical Power System Real-Time Simulation - Modeling supporting OpenModelica
- - Simulation software for modeling thermo-fluid systems
- – Batch simulation of FMUs in Microsoft Excel
- – C library for importing FMUs in custom applications
- – Software for verifying FMI standard compliance of FMUs
- – FMU Software Development Kit from QTronic
- - cryptographic protection and signature of models including their safe PLM storage; secure authentication and authorization for protected simulation
- - Multi-Physics Simulation Platform for Powertrain and Vehicle Systems
- Hopsan - Distributed system simulation tool using the TLM method
- – independent co-simulation environment from
- – simulation software for virtual test driving
- – Software tool from ETAS for creation and test of virtual ECUs
- JModelica.org – Open source Modelica environment from Modelon
- MapleSim - via the from Maplesoft
- MATLAB – there is native support as of R2018b through the Projects functionality. Other third party tools support this workflow for older releases.
- 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
- - neutral model integration and co-simulation platform from AVL
- OpenModelica – Open source Modelica environment from OSMC for transient stability simulations of power systems
- – Modelica environment from Modelon
- PragmaDev Studio – Modeling and testing tools for communicating systems
- - Multidisciplinary Aircraft Simulation Tool.
- from the Ptolemy Project.
- Python – via from Modelon, also available as part of JModelica.org
- – Real-Time Simulation Software from , via from Modelon
- Scilab - Open Source Matlab alternative via
- – 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 importing FMUs to Simulink as of R2017b and for exporting as of R2018b. Other third party tools support this workflow for older releases.
- TISC – Co-simulation environment from TLK-Thermo
- - Communication layer tool to flexibly plug together models for performing a co-simulation; front-end for set-up, monitoring and post-processing included
- - FMI-compatible plug-and-play interface to Matlab/Simulink, available as an integrated block
- – Simulation and integration platform for Software in the Loop systems from dSPACE
- - Virtual.Lab Motion is a high end multi body software from Siemens PLM Software
- Wolfram SystemModeler - Modelica environment from Wolfram Research
- - Heterogeneous model integration environment & virtual instrumentation and experimentation laboratory from IFPEN distributed by D2T.