This example shows how to simulate and generate code for an export function model.
Open the model
slexVariantExportedFcn.slx. The model contains a Variant Source block with the condition
V == 1, where
V is a
Simulink.Parameter object which is defined in the
PostLoadFcn in File > Model Properties > Callbacks.
The condition on the function call-signal specifies the condition for SubA. This condition is propagated to the blocks connected to the input ports of SubA and to the blocks connected to the output ports of SubA.
Variant activation time to
update diagram. Before you simulate the model, in the base workspace set the value of
V to 1.
V.Value = 1;
The SubA will be inactive because
V == 1. You will notice that Out1 is also inactive. However in In2 remains active because SubB is active and In2 is also connected to SubB. If you disconnect the line between In2 and SubB, then In2 will be inactive.
Generate code with the
Variant activation time set to
View the code generation report. The report includes links to model files such as
slexVariantExportedFcn.c and associated utility and header files.
The figure contains a portion of the generated code,
slexVariantExportedFcn.c. You will notice that
In1 is guarded, internally and externally, by the preprocessor conditionals(
In3 is void because it does not receive any condition.
When you change the
Variant activation time from
code compile to
startup, you must change the storage class specification of
V.CoderInfo.StorageClass = 'ExportedGlobal'; rtwbuild('slexVariantExportedFcn')
View the code generation report. The figure contains a portion of the generated code,
slexVariantExportedFcn.c. You will notice that the generated code contains the regular