Export Simulink Models to Functional Mock-up Units
Export Simulink® models to Functional Mock-up Unit (FMU) that supports Co-Simulation in FMI version 2.0. To check that the exported block is still a valid Simulink model, you can also direct the software to import the FMU back to a Simulink model as part of the export process.
A writable folder into which to place the exported FMU.
Exported models can have:
Input and output data types: double, int32, boolean, string
Tunable Parameter. Tunable parameter can be model arguments, base workspace, or data dictionary variables.
Unit and description.
Simulink models can be exported to Standalone Co-Simulation FMU in version 2.0. The generated FMU package contains following files:
You might experience an expected time delay in the exported FMU for Co-Simulation mode.
FMU modelDescription.xml file contains interfacing variables converted from Simulink model:
Variables with causality=’input’: converted from root Inport block
Variables with causality=’output’: converted from root Outport block
Variables with causality=’parameter’: converted from referenced Runtime Tunable Parameters
Independent variable ‘time’
To generate FMU input and output, define root Inport and Outport block in Simulink model. Name of the generated variable is converted from root Inport/Outport
block name, by removing special and blank characters and avoiding duplicates. If
input/output signal carries unit information, it is exported as
attribute of the FMU variable. If the input/output block has a non-empty description
information under Block Properties > General ,
it is exported as
Description attribute of the FMU variable.
The following input/output data types are supported:
double (Real in FMI)
int32 (Integer in FMI)
boolean (Boolean in FMI)
string (String in FMI)
If model root Inport or Outport block is a non-virtual bus, individual bus elements will be expanded to variables using structured naming convention (‘.’). If model root Inport or Outport block, individual scalar elements will be expanded to variables using array naming convention (‘’).
To export referenced variables as FMU parameter, you can
define a variable.
define a Simulink Parameter object.
Ensure that the variable and the parameter object is directly references by tunable parameters of Simulink blocks. In FMU Export dialog, expand Parameter Details... to configure each parameter. You can:
Unselect Exported option to hide a parameter
Modify Exported Name so the parameter is displayed with a different name on FMU interface. Do not use special characters and duplicate names.
Descriptionof FMU parameter variable by clicking on parameter name, and directly modifying the parameter object. You cannot configure FMU
Descriptionusing MATLAB Window.
The following parameter data types are supported:
double (Real in FMI)
int32 (Integer in FMI)
boolean or logical (Boolean in FMI)
If referenced parameter is a struct, individual struct members will be expanded to variables using structured naming convention (‘.’). If referenced parameter is array or matrix, individual scalar elements will be expanded to variables using array naming convention (‘’).
Fixed-step solvers are supported for standalone FMU export. It is recommended to set a fixed fundamental sample time (Solver > Solver details > Fixed-step size) before exporting the model. When simulating the Standalone FMU in other environment, communication step-size must be an integral multiple of the fundamental sample time.
FMU Dynamic Library
Generated FMU contains dynamic library build for the current platform. Default fmi2TypesPlatform value is used.
All required and optional fmi2 functions defined by FMI standard can be invoked. However, the following functions have no operation and return fmi2OK immediately:
Functions accessing or serializing FMUstate
Functions setting or getting input or output derivatives
Functions querying fmi2DoStep status, or cancelling fmi2DoStep
Function computing directional derivative of variables
Save Source Code with FMU Export
You can export a Simulink model to FMU along with C source code. You can check Save Source
Code in the Export Model to FMU Co-Simulation window or
use the command line API,
exportToFMU2CS('mdlName','SaveSourceCodeToFMU','on') to export the
model to FMU with C source code.
To export a Simulink model to FMU with C source code, install Simulink Coder™
If the Simulink model contains model references with custom datatypes or fixed-point
functions, exporting FMU with source code may error out due to duplicate header files in
_sharedutils folder. Follow instructions on Generate Shared Utility
Code to set Code Generation > Interface >
Shared Code Placement parameter to '
Location' and regenerate FMU.
You cannot generate FMU from Simulink model, due to these limitations:
Variable-step solvers are not supported
Non-zero simulation start time are not supported
Simulink model that references external resources (data files, mex or m files) are not supported
Export a Simulink Model
Use the Export Dialog Box
vdp example using Simulink toolstrip: Simulation > Save >
Export Model ToStandalone FMU
Open the model,
In Simulink editor, Simulink toolstrip: Simulation > Save > Standalone FMU.
In Simulink editor, select Save> Export Model to> FMU Co-Simulation.
In the export dialog box, specify the path to export the FMU.
By default, Simulink creates the FMU and a harness model with its dependencies stored in a
MATfile. It then packs them into archived project (
.mlproj). You can change the behavior by setting Contents option to Standalone FMU (.fmu0 only.
Use the Programmatic Interface
Export the vdp example to an FMU using the default
exportToFMU2CSfunction. This command creates the FMU file, modelName.fmu. By default, it also creates a Simulink model, modelName_fmu.slx, that contains an FMU Co-Simulation block with the original model. Create this model if you want to check the integrity of the exported FMU.
load_system('vdp') set_param('vdp', 'SolverType', 'Fixed-step') exportToFMU2CS('vdp')
Export the vdp example to an FMU using the exportToFMU2CS function, but do not create a Simulink model. This command creates the FMU file, modelName.fmu.
load_system('vdp') set_param('vdp', 'SolverType', 'Fixed-step') exportToFMU2CS('vdp','CreateModelAfterGeneratingFMU','off')
Export the vdp example to an FMU using the
exportToFMU2CSfunction. Create a model for the FMU and use an image of the original model as the block icon. This command creates the FMU file, modelName.fmu, and a Simulink model with an FMU Co-Simulation block whose block icon is the original model.