The functional mock-up interface (or FMI) defines a standardized interface to be used in computer simulations to develop complex cyberphysical systems.
Abbreviation | FMI |
---|---|
Status | Published |
Year started | 2010 |
Latest version | 1.0 |
Organization | MODELISAR |
Domain | Computer simulation |
License | CC_BY_SA 3.0 |
Website | FMI website |
The vision of FMI is to support this approach: if the real products is to be assembled from a wide range of parts interacting together in complex ways that each is 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, interacting using each a model of the physical laws as well as a model of the control systems (using electronics, hydraulics, digital software, ..) assembled digitally. FMI thus provide the means for model based development of systems, and is used for example for designing functions that are driven by electronic devices inside vehicles (eg. ESP controller, active safety systems, combustion controller). Activities from systems modeling, simulation, validation and test can be covered with the FMI based approach.
To create FMI, a large number of software companies and research centers have worked in a cooperation project established through a European consortium that is conducted by Dassault Systèmes under the name of MODELISAR. The MODELISAR project has been initialized in 2008 to define the FMI specifications, deliver technology studies, and prove the FMI concepts through Use Cases elaborated by the consortium partners.
The development of the FMI specifications was coordinated by Daimler AG.
The FMI specifications are distributed under open source licence:
- the specifications are licensed under CC-BY-SA (Creative Commons Attribution-Sharealike 3.0 Unported) CC_BY_SA 3.0
- the C-header and XML-schema files that accompany this document are available under the BSD license with the extension that modifications must be also provided under the BSD license.
The four required FMI aspects of creating models capable of being assembled have been covered in in Modelisar project:
- FMI for model exchange,
- FMI for co simulation,
- FMI for applications,
- FMI for PLM (integration of models and related data in product life-cycle management).
In practice the FMI implementation by a software modeling 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).
The FMI approach
The FMI typical approach is described in the following stages:
- a modeling 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 offline or online 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 a FMU (Functional Mock-up Unit);
- 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.
Architecture
Each FMU (functional mock-up unit) model is distributed in zip files with the extension ".fmu" which contains[1]:
- an XML file containing among other things the definition of the variables used by the FMU;
- all the equations used by the model (defined as a set of C functions);
- optional other data, such as parameter tables, user interface, documentation which may be needed by the model.
Example
below is an example of an FMI model description issued from Modelica.
<?xml version="1.0" encoding="UTF8"?>
<fmiModelDescription
fmiVersion="1.0"
modelName="ModelicaExample"
modelIdentifier="ModelicaExample_Friction"
...
<UnitDefinitions>
<BaseUnit unit="rad">
<DisplayUnitDefinition displayUnit="deg" gain="23.26"/>
</BaseUnit>
</UnitDefinitions>
<TypeDefinitions>
<Type name="Modelica.SIunits.AngularVelocity">
<RealType quantity="AngularVelocity" unit="rad/s"/>
</Type>
</TypeDefinitions>
<ModelVariables>
<ScalarVariable
name="inertia1.J"
valueReference="16777217"
description="Moment of inertia"
variability="parameter">
<Real declaredType="Modelica.SIunits.Torque" start="1"/>
</ScalarVariable>
...
</ModelVariables>
</fmiModelDescription>
Comparison to Simulink
FMI proponents explain that FMI models have several advantages over Simulink S-Functions[2]:
- 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 other simulators 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
Tools support
As of July 2011, FMI is supported on the following simulation frameworks[1]: See full list and details in FMI web pages.
- AMESim – Modelica environment from LMS-Imagine
- ASIM – AUTOSAR Builder from Dassault Systèmes
- Atego Ace – Co-simulation environment with AUTOSAR and HIL support
- CATIA V6R2012 – Environment for Product Design and Innovation, including systems engineering tools based on Modelica, by Dassault Systèmes
- Control Build – Environment for IEC 61131-3 control applications from Dassault Systèmes
- CosiMate – Co-simulation Environment from ChiasTek
- DSHplus – Fluid power simulation software from FLUIDON
- Dymola 7.4 – Modelica environment from Dassault Systèmes
- FMU SDK – FMU Software Development Kit from QTronic
- IPG CarMaker – via Modeling and Co-Simulation environment by Modelon
- JModelica.org – Open source Modelica environment from Modelon
- MATLAB – via FMI Toolbox from Modelon
- Modelica Workshop (name change pending) – Modelica environment from Modelon
- MWorks 2.5 – Modelica environment from Suzhou Tongyuan
- NI VeriStand – Real-Time Testing and Simulation Software from National Instruments
- NI LabVIEW – Graphical programming environment for measurement, test, and control systems from National Instruments
- OpenModelica – Open source Modelica environment from OSMC
- Python – via JModelica.org from Modelon
- Silver 2.0 – 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 – via Dymola 7.4 using Real-Time Workshop
- Simulink – via @Source
- Simulink – via FMI Toolbox from Modelon
- TISC – Co-simulation environment from TLK-Thermo
- Vertex – Modelica environment from deltatheta
Application scenarios
To be completed
See also
References
- ^ a b c "Functional Mockup Interface (FMI)". modelica.org. January 2010. Retrieved 2011-012-22.
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.
{{cite web}}
: Check date values in:|accessdate=
(help) - ^ Martin Otter, Hilding Elmqvist, Torsten Blochwitz, Jakob Mauss, Andreas Junghanns, Hans Olsson. "Functional Mockup Interface – Overview" (PDF). http://synchronics.inria.fr (INRIA). Retrieved 2011-01-23.
{{cite web}}
: External link in
(help)CS1 maint: multiple names: authors list (link)|publisher=