メインコンテンツ

Variant Control Mode in Variant Parameters

The components of a Simulink® model that contain variants are activated or deactivated based on the variant choice that you select.

Each variant choice in your model is associated with a variant control. Variant controls determine which variant choice is active. By changing the value of a variant control, you can switch the active variant choice. While each variant choice is associated with a variant control, only one variant control can evaluate to true. When a variant control evaluates to true, Simulink activates the variant choice that corresponds to that variant control. For a simple example, see Introduction to Variant Controls.

Structure of Variant Condition Expression in Variant Parameters

A variant condition expression consists of:

  • Variant control variables — Named variables defined in locations such as the base workspace, model workspace, or a data dictionary.

  • Operators — MATLAB® logical operators (&&, ||, ~) and relational operators (==, ~=) to combine or compare variant control variables and constants. The types of operators you can use depend on the ActivationTime parameter. For more information, see Types of Operators in Variant Parameters.

  • Comparison values — Values to compare against variant control variables. These can be any valid MATLAB data type, including logical, enumeration, or other appropriate types.

Switch Between Choices Using Condition Expressions in Variant Parameters

In expression mode, Simulink chooses the active variant based on the evaluation of the variant conditions. When a condition expression evaluates to true, the corresponding variant choice becomes active. When a condition expression evaluates to false, the corresponding variant choice becomes inactive.

Note

You can simulate and generate code from the model containing a variant parameter with Variant control mode set to expression mode. The generated code can contain active and inactive choices that are enclosed in preprocessor conditionals #if and #elif, or regular if conditions.

With expression type of variant control mode:

Use expression Type of Variant Controls in Variant Parameters

To specify the variant condition expressions in variant parameters, use the Simulink.VariantVariable object. Once you successfully create the Simulink.VariantVariable objects, you can modify them by using the methods described in Public Methods or from the VariantVariable dialog box. For more information, see Create a Simple Variant Parameter Model.

K1 = Simulink.VariantVariable('Choices', {'VSS_MODE == 1', 3.5, 'VSS_MODE == 2', 8.5})

Types of Variant Controls in expression Mode

In variant parameters, the expression type of variant controls can be:

Here, A and B are operands called as variant control variables. ==, ~=, and && are operators in the condition expression. The condition expression can contain one or more such variant control variables and operators. For information on supported types and storage location of variant control variables, see Types of Variant Control Variables (Operands) in Variant Parameters. For information on operators, see Types of Operators in Variant Parameters.

Types of Variant Control Variables (Operands) in Variant Parameters

The Value property of the variant control variable (Simulink.VariantControl), which determines the active value of a variant parameter, must be one of these types:

  • Integer

  • Boolean

  • Enumerated value

  • Simulink.Parameter object with value of type integer, Boolean, enumeration, or a mathematical expression specified using the slexpr function

  • User-defined type that inherits from Simulink.Parameter

You can define variant control variables in different storage locations based on your requirements. If you define a variable with the same name in the base workspace and the model workspace, Simulink evaluates the variable first in the model workspace, then in the base workspace. Simulink gives priority to the definition in the closest context, so the most relevant value is used to evaluate variant condition expressions. For details on the capabilities and advantages of each storage location, see Determine Where to Store Variables and Objects for Simulink Models.

Note

  • All variant control variables in a variant parameter must originate from the same workspace.

  • Use a Simulink.SimulationInput object to temporarily set values of variant control variables for each simulation run. The object is useful with startup variants in applications like testing, iterative simulation, and rapid prototyping, because you do not need to change workspace variables.

You can specify the value of the variant control variables as any of these types, from options to use while prototyping to options required for generating code from your model. For the examples on how to use different types of variant control variables in variant parameters, see Use Variant Control Variables in Variant Parameters

Type of variant control variableWorkspace supportedupdate diagramupdate diagram analyze all choicescode compilestartup

Simulink.VariantControl — Associate the variant control variable with the variant activation time to centralize and synchronize variant activation logic across variant blocks and parameters to prevent incorrect variant selections during frequent variant switching.

See Use Simulink.VariantControl Variables for Coherent Switching of Choices in Variant Blocks.

base workspace

data dictionary

model workspace

 

Simulink.Parameter — Set the Simulink.VariantControl object to an object of a user-defined data class derived from Simulink.Parameter. Data objects that you create from the user-defined class package can use the storage classes that the package defines.

See Use Custom Data Class Objects as Values of Simulink.VariantControl Objects.

base workspace

data dictionary

model workspace 

Simulink.Parameter — Set the Simulink.VariantControl object to a Simulink.Parameter object (or an object inheriting from it) with its value defined as a mathematical expression using the slexpr function. This approach allows you to specify the value as a relationship between known physical constants instead of using an arbitrary literal number. Additionally, it enables you to model algebraic dependencies between parameter data explicitly.

See Use Mathematical Expressions as Values of Simulink.VariantControl Objects and Simulink.VariantVariable Choices.

base workspace

data dictionary

model workspace

 

Simulink.Parameter — Control the scope, placement, accessibility, and visibility of the variable in the generated code by defining its storage class.

See Use Simulink.Parameter Variant Control Variables for Code Generation of Variant Parameters.

base workspace

data dictionary

model workspace 

Numeric values — Rapid prototyping and simulation for quick variant switching.

See Use Numeric Variant Control Values for Rapid Prototyping of Variant Parameters.

base workspace

data dictionary

model workspace

 

Tip

How to Choose the Value of Simulink.VariantControl in Variant Parameters

Use this flowchart to determine the appropriate data type for the value of the Simulink.VariantControl type of variant control variable in variant parameters.

Types of Operators in Variant Parameters

Variant condition expressions can contain MATLAB operators, provided the expression evaluates to a boolean value. In variant parameters, the operators that you can use to form a variant condition expression are:

  • Parentheses for grouping

  • Relational Operators and Logical Operators as listed in this table.

    This table lists the supported MATLAB operators and their equivalent in the generated code. In these examples, A and B are expressions that evaluate to an integer.

    Supported MATLAB ExpressionsEquivalent Expression in Generated C Code
    Relational

    A == B

    A == B

    A ~= B

    A != B
    Logical
    ~A!A, where A is not an integer
    A && BA && B
    A || BA || B

Evaluate Variant Condition Expressions at Different Variant Activation Times

In expression mode, you can specify if Simulink must evaluate condition expressions during model compile, simulation-loop, code compile, or model start up stage of simulation and code generation workflow using variant activation times. For information on stages of simulation and code generation, and supported variant activation times in expression mode, see Activate Variant During Different Stages of Simulation and Code Generation Workflow.

Variant Activation Times for Different Variant Control Modes in Variant Parameters

This table explains the variant activation time supported for different variant control modes in variant parameters. For information on variant activation times, see Activate Variant During Different Stages of Simulation and Code Generation Workflow.

Variant control modeVariant activation time
 update diagramupdate diagram analyze all choicescode compilestartupruntime
expressionnot supported
labelnot supportednot supported
sim codegen switchingnot supportednot supported

See Also

Topics