FMI - Functional Mock-Up Interface

The Functional Mock-up Interface (FMI) is an open standard for the exchange and co-simulation of dynamic models between different software tools. It defines a common interface for models packaged as Functional Mock-up Units (FMUs) - self-contained zip files that include model equations, data, and binaries. FMI enables seamless model sharing, tool interoperability, and consistent simulation workflows across development environments.

🌐  FMI Standard: https://fmi-standard.org/

 

Find some general information about FMI in the below wiki page.

Develop your self-awareness by following 🎓 FMI Tutorials.

Discover the 🐍 FMPy python package to handle FMUs.

 

Applications

FMIs applications are many:

  • Exchange of physical models between engineering teams (can be black box, encrypted)
    • For system integration
    • For control law design
  • Hardware-In-the-Loop (HIL) testing: the FMU can be recompiled on a specific target platform (HIL platform, raspberry pi...)
    • Training simulator
    • Verification & Validation
    • Virtual Commissioning
    • ...
  • Communication bridge between software when doing co-simulation (the FMU can be acting purely as a communication box)
  • ...

 

FMI 3.0

Dymola implements several new features of FMI 3.0, improving the usage fo FMUs, such as:

  • Co-Simulation: introduces early return, event mode, intermediate update and variable step size communication
  • Array variables: better handling of array signals and variable-size parameter arrays
  • Input interpolation: smoothing of inputs (embedded in the FMU) allows the integrator to continue the simulation without any reset
  • Source code FMU import
  • Terminals and Icons: help the user to build consistent systems from FMUs and render the systems more intuitively with better representation of structured terminals (for instance busses and physical connectors) in a special XML file.

 

Model Exchange VS Co-Simulation

Model Exchange

Equations of the model are exchanged without the solver which can be used by other simulation tools.

When to consider Model Exchange?

  • No special solvers required
  • Online/ Offline Simulation
  • Embedded control systems on microprocessors

 

Co-Simulation

Equations of the model are exchanged with the solver. Data is exchanged and controlled by a master algorithm.

When to consider Co-Simulation?

  • Specific authoring tool solvers are required
  • Decoupling of models
  • Use of advanced master algorithms

 

Black-box FMU

When using "Only Black-Box" FMU option:

  • modelDescription.xml: variables are concealed with generic naming
  • unselect the option of internal result file generation, to prevent the real naming to be exposed in the created .mat
  • for readability of generated code, make sure SourceCodeGeneration option is disabled
  • for diagnostics in error messages, for example division by zero: will be ”concealed…” for encrypted libraries or set Advanced.Translation.RemoveDiagnosticMessages=true

 

FMI Coverage within Dassault Systemes

SolutionsFMU ExportFMU Import
Co-SimulationModel ExchangeCo-SimulationModel Exchange
Dymola Standard, Dymola Behavior ModelingOKOKOKOK
Systems Simulation Designer  OKOK
CATIA Magic  OKOK
Control BuildOKOKOKOK
StimulusOK OKOK
Autosar BuilderOKOK  
Process ComposerOK  OK
Results AnalyticsOKOK  
Abaqus, PowerFlow  OK 
SIMPACKOK OKOK