WOLFRAM SYSTEMMODELER TUTORIAL

Functional Mock-up Interface (FMI)

Introduction | Class Browser | Class Window | Graphical Views | Modelica Text View | Component Browser | Variable Views | Reliability View | Messages View | Kernel Command View | Documentation Center | Functional Mock-up Interface | Keyboard Shortcuts | Kernel Commands

The Functional Mock-up Interface (FMI) standard is an open and tool-independent standard for exchange of models between tools. FMI defines a C interface that is implemented by an executable called a Functional Mock-up Unit (FMU). A simulation environment, such as SystemModeler, can use the FMI to create an instance of the FMU and simulate it together with other FMUs or models native to the simulation environment.

The development of FMI was driven by an aspiration to create a standard in which a modeling environment could generate C code of a system model, which could then be utilized by other modeling and simulation environments, thereby making it easier to collaborate in modeling projects where different tools and workflows are used.

SystemModeler currently supports FMI 1.0 and 2.0 for Model Exchange.

For a more detailed description of the FMU export and import workflow in SystemModeler, see the chapter on FMU Export and Import. The properties of the imported model are covered in Using an Imported FMU.

The Functional Mock-up Unit

An FMU, or a Functional Mock-up Unit, is the executable that implements the interface. During FMU export an FMU archive is generated from a systems model, while during FMU import a systems model is generated from an FMU archive.

An FMU contains the following:

  • A model description XML file: The model description file contains information about the model, for example variable definitionstype, unit, description, etc.and other more general model information, such as model name, generation tool, and FMI version.
  • Model equations: A model can be described using ordinary differential equations, algebraic relations, and discrete equationsincluding time, state, and step events. These equations can in turn be represented by a small set of C functions. The C code is then distributed in the FMU in source and/or binary form, and one FMU can contain binaries for more than one platform and/or platform version.
  • Optional resource files: There are other optional files that might be included in the FMU, such as documentation files (HTML), model icon (bitmap file), maps and tables, and other libraries or DLLs that are used in the model.

Model Exchange and Co-Simulation

The FMI standards currently specify two types of protocols: FMI for Model Exchange (import and export), and FMI for Co-Simulation (master and slave). The main difference between these two protocols is that in Model Exchange the FMU is simulated using the importing tool's solver, while in Co-Simulation the FMU is shipped with its own solver.

FMI for Model Exchange allows FMUs to be used in offline or online simulation, where several FMUs can be connected together, or in embedded control systems on microprocessors. In both Model Exchange and Co-Simulation the FMUs can potentially be very large, containing tens of thousands of variables.

For more general information about FMUs and the FMI standard, see www.fmi-standard.org.

Introduction | Class Browser | Class Window | Graphical Views | Modelica Text View | Component Browser | Variable Views | Reliability View | Messages View | Kernel Command View | Documentation Center | Functional Mock-up Interface | Keyboard Shortcuts | Kernel Commands