FMI Version 2.0
FMI for Model Exchange and Co-Simulation
This is the second version of the Functional Mockup Interface standard (FMI). It is a major enhancement compared to FMI 1.0, where the FMI 1.0 Model Exchange and Co-Simulation standards have been merged, and many improvements have been incorporated, often due to practical experience when using the FMI 1.0 standards. New features include: Parameters can be changed during simulation, the complete FMU state can be saved, restored and serialized, directional derivatives with respect to states and inputs can be computed, the structure of the partial derivatives with respect to states and inputs can be given (to support large systems), algebraic loops over FMUs are now supported in all modes (initialization, event, continuous-time) for Model Exchange, allowing for example improved initialization.
FMI Version 1.0
FMI for Model Exchange
The intention is that a modelling environment can generate C-Code of a dynamic system model that can be utilized by other modelling and simulation environments. Models are described by differential, algebraic and discrete equations with time-, state- and step-events. The models to be treated by this interface can be large for usage in offline or online simulation or can be used in embedded control systems on micro-processors. It is possible to utilize several instances of a model and to connect models hierarchically together. A model is independent of the target simulator because it does not use a simulator specific header file as in other approaches. A model is distributed in one zip-file called FMU (Functional Mock-up Unit).
FMI for Co-Simulation
The intention is to provide an interface standard for coupling two or more simulation tools in a co-simulation environment. The data exchange between subsystems is restricted to discrete communication points. In the time between two communication points, the subsystems are solved independently from each other by their individual solver. Master algorithms control the data exchange between subsystems and the synchronization of all slave simulation solvers (slaves). All information about the slaves, which is relevant for the communication in the co-simulation environment is provided in a slave specific XML-file. In particular, this includes a set of capability flags to characterize the ability of the slave to support advanced master algorithms, e.g. the usage of variable communication step sizes, higher order signal extrapolation, or others.
Official FMI logos
The FMI logo and usage terms and conditions are available on modelica/MA-Logo.
The FMI Cross-Check repository contains a large number of test FMUs provided by different vendors to test and improve the interoperability of FMU importing and exporting tools.GitHub project
Example test cases for multiple connected FMI 2.0 Model Exchange FMUs are available on the FMIModelicaTest repository.
Free tools for checking FMUs
A command line tool by the Modelica Association to compare time series from CSV files using an adjustable tolerance and generate HTML reports.Download GitHub project
A Python library by Dassault Systèmes to validate and simulate FMUs that has a graphical user interface, compiles C code FMUs and generates CMake projects for debugging.Installation GitHub project
FMU Compliance Checker
A command line tool based on the FMI Library developed by Modelon AB to validate and execute FMUs.Download GitHub project
Free libraries for FMU import and export
A C library by QTronic to demonstrate basic import and export of FMUs. It contains various discrete and continuous models, a CMake configuration for compiling and zipping these models, an XML parser for parsing the model description of an FMU and a simple simulation program that runs a given FMU and outputs the result as CSV file.Download GitHub project
A C library by Modelon to import FMUs into applications. It provides a C API to unzip FMUs, load the shared libraries (DLLs) contained in FMUs and parse the model description XML files.Download