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 Parameters. Parameter must refer to a global workspace variable.
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.
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. Use the variable in a Simulink block with tunable parameter, and make sure Code
Generation > Optimization >
Default parameter behavior is set to
‘Tunable’ (or model parameter
‘InlineParams’ is set to
define a Simulink Parameter object. Use the object in a Simulink block with tunable
parameter, and make sure the Storage Class of the object is
Name of the generated variable is converted from parameter name, by removing special characters and avoiding duplicates.
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
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.
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
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.
Simulink creates the FMU file,
modelName.fmu and optionally
the Simulink model,
Export the vdp example to an FMU using the default
exportToFMU2CS function. 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
function. 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.