The Functional Mock-up Interface (or FMI) defines a standardized interface to be used in computer simulations. This interface is implemented by simulation models or software libraries called FMU (Functional Mock-up Unit). FMI development was initiated by Daimler AG and is developed by the MODELISAR consortium.[1]
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 |
FMI has two objectives[2]:
- A modeling environment can export a model composed of C (programming language) code packaged with an XML definition documenting the model. This XML definition is for a model is called FMU (Functional Mock-up Unit)
- Several models can communicate at runtime in a co-simulation environment by using the 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 datas, such as tables 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[3]:
- 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
Support
As of January 2011, FMI is supported on the following simulation frameworks[1]:
- AMESim (import and export)
- Dymola (import and export)
- SimulationX (import and export)
- SIMPACK (import only)
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) - ^ "FMI". modelisar.org. Retrieved 2011-01-22.
- ^ 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=