Considerations and Limitations for startup
Variant Activation
Time
Combining startup
and code compile
Variant Activation Times in Variant Conditions
Simulink® does not support combining variant conditions with
startup
and code compile
variant
activation times in a model.
Case 1: Variant Source Block with startup
Activation Time Connected to a Variant Source Block with
code compile
Activation Time
Consider a model with two Variant Source blocks,
VS_CC
and VS_ST
, with the
Variant activation time parameter set to code
compile
and startup
, respectively.
During model compilation, the VS_ST
block propagates the
variant condition, B==2
to the VS_CC
block. So, the propagated variant condition on the VS_CC
block is (A == 1 && B == 2) || (A == 2 && B ==
2)
, which combines conditions with startup
and
code compile
activation times. This combination results
in a compilation error.
Case 2: Variant Source Block with startup
Activation Time Connected to a Variant Subsystem Block with
code compile
Activation Time
In this model, a Variant Source block with the
Variant activation time parameter set to
startup
is connected to a Variant
Subsystem block with the Variant activation
time parameter set to code compile
. The
Propagate conditions outside of variant subsystem and
the Allow zero active variant controls parameters on the
Variant Subsystem block are set to on
.
These settings result in propagation of conditions that combines
startup
and code compile
activation
times and produces a compilation error.
Note
This constraint is applicable to any Simulink block that supports variant condition propagation. For
example, you cannot combine startup
variant conditions
with Simulink Function blocks or Initialize,
Reset, and Terminate blocks that have the
Generate preprocessor conditionals parameter set to
on
. This parameter works similarly to the
code compile
variant activation time. For information
on condition propagation with different blocks, see Condition Propagation Scenarios.
The compilation error for this scenario normally indicates the block that
caused the error. If the error message does not indicate the block, then the
variant condition that combined startup
and code
compile
activation times could have propagated to a hidden
block that Simulink inserted for internal use. Such blocks are not visible in the
model.
Exception Scenarios That Support Combining Variant Conditions with startup
and code compile
Variant
Activation Times
These modeling scenarios support combining variant conditions with
startup
and code compile
activation times:
Simulink Function blocks that inherit variant conditions from Function Caller blocks in a model. The variant condition assigned to the Simulink Function block is a logical OR of the variant conditions propagated to the Function Caller blocks. In such cases, the Function Caller blocks can have
startup
andcode compile
activation times.Data Store Memory blocks in a model. These blocks receive a logical OR of the variant conditions propagated to the corresponding Data Store Read and Data Store Write blocks in the model. The reader and writer blocks in such models can have
startup
andcode compile
activation times.
In this model, the Variant control parameter on the
function-call port block in the Simulink Function block is set to
(inherit)
. The Function Caller blocks,
Function Caller A
and Function Caller
B
, receive variant conditions with code compile
and startup
activation times from the connected
Variant Source blocks. The Simulink Function
block inherits a combination of these variant conditions. This case does not
result in a compilation error.
Use of Variant Control Variables with startup
Variant Activation Time in Another Variant Block
You cannot use a variant control variable used in a block with
startup
activation time in another variant block with a
different activation time.
Consider a model with two variant blocks, VSrc
and
VSink
, with the Variant activation time
parameter set to startup
and update diagram
,
respectively. Both the blocks use the same variant control variable,
A
. This results in a compile-time error.