Variant Source

Route among multiple inputs using Variants

  • Library:
  • Simulink / Signal Routing

Description

The Variant Source block has one or more input ports and one output port. You can define Variant choices as blocks that are connected to the input port so that, at most, one choice is active.

Each input port is associated with a Variant control. The Variant control that evaluates to true, determines which input port is active.

When the Analyze all choices during update diagram and generate preprocessor conditionals option in the block dialog box is cleared, then during simulation Simulink® connects the active choice directly to the output port of the Variant Source block and ignores the inactive choices.

Ports

Input

expand all

Input port associated with the first Variant control. The Variant control that evaluates to true, determines which input port is active.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

Input port associated with the Nth Variant control. The Variant control that evaluates to true, determines which input port is active.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

Output

expand all

Output signal from the active Variant.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

Parameters

expand all

To choose the active Variant based on the evaluation of the Variant conditions, use the Expression mode else select Label mode. When you select the Variant control mode as Label, the Label mode active choice option is available. In Label mode, Variant control need not be created in the global workspace. You can select an active Variant choice from Label mode active choice options.

When you select Label option, the Variant badge indicates the change.

Note

When you promote Label mode active choice parameter to a mask, the Variant control mode is disabled.

  • If the block is in Expression mode while promoting Label mode active choice parameter to mask, you can change the Variant control mode to Label by changing the promoted Label mode active choice parameter from the Mask dialog box.

  • If the block is in Label mode while promoting Label mode active choice parameter to mask, you cannot change the Variant control mode to Expression mode.

For information about promoting parameters to mask, see Promote Parameter to Mask.

Number of the input port that is connected to one Variant choice upstream of the Variant Source block. This value is read-only.

Click to add a port or to delete an existing one.

Displays the Variant controls available in the global workspace. The Variant control can be a Boolean condition expression or a Simulink.Variant object representing a Boolean condition expression. If you want to generate code for your model, you must define the control variables as Simulink.Parameter objects.

To enter non-numeric Variant control values, use enumerated data. For information about using enumerated data, see Use Enumerated Data in Simulink Models

To edit a Variant name, double-click a Variant control expression cell and type in the Variant control expression. Click Apply after you edit a Variant control name. If you add or delete a Variant control without applying the changes, the previous edits on the Variant control name are lost.

The Variant control that evaluates to true determines which input port must be active.

Programmatic Use

Block Parameter: VariantControls
Type: cell array of character vectors
Value: Variant control that is associated with the Variant choice
Default: 'Variant'

Displays the Condition for the Variant controls that are Simulink.Variant objects. Create or change a Variant condition in the Simulink.Variant parameter dialog box or in the global workspace.

For more information, see Create Variant Controls Programmatically and Simulink.Variant.

When you select the Variant control mode as Label, the Label mode active choice option is available. You can select an active Variant choice from Label mode active choice options. You can also right-click the badge on the Variant Source block and select Label Mode Active Choice.

The Label mode active choice drop-down list displays all Variant controls that are currently defined in the global workspace or a data dictionary. Use valid MATLAB® identifiers to specify Variant controls. For more information, see Simulink.Variant.

Note

Label mode active choice option is not available in Expression mode.

Dependencies

To enable this parameter, select Label mode.

Programmatic Use

Block Parameter: LabelModeActivechoice
Type: character vector
Value: Specified by the Variant control expression.
Default: Choice_1

To simulate a model (containing a Variant block) without an active Variant choice, select the Allow zero active variant controls option. When this option is selected and there is no active Variant choice, Simulink disables all the blocks connected to the input and output stream of Variant Source block. The removed blocks are ignored from update diagram or simulation.

If you do not select this option, Simulink generates an error when there is no active Variant choice.

When you select this option, the Variant badge indicates the change.

Dependencies

Expression option from Variant control mode is selected.

Programmatic Use

Block Parameter: AllowZeroVariantControls
Type: character vector
Values: 'off' | 'on'
Default: 'off'

When you select this option, Simulink annotates each Variant control (condition expression) on the Variant Source block ports.

Programmatic Use

Block Parameter: ShowConditionOnBlock
Type: character vector
Value: 'off' | 'on'
Default: 'off'

When you select this option, Simulink analyzes all Variant choices during an update diagram or simulation. This analysis helps Simulink to maintain consistency of all Variant branches during simulation and code generation. Simulink routes the output of the active and inactive regions to an internal VariantMerge block.

When this option is selected, the preprocessor conditionals (#if) are generated in the code with ERT-based targets.

If this option is selected during code generation, the data type and the semantics at all input ports of the Variant Source block must be same to avoid failure.

When you select this option, the Variant badge indicates the change.

For more information, see Represent Variant Source and Sink Blocks in Generated Code (Embedded Coder)

Dependencies

  • Expression option from Variant control mode is selected.

  • The check box is available for generating ERT targets only.

Programmatic Use

Block Parameter: GeneratePreprocessorConditionals
Type: character vector
Value: 'off' | 'on'
Default: 'off'

Block Characteristics

Data Types

Boolean | bus | double | enumerated | fixed point | integer | single | string

Direct Feedthrough

no

Multidimensional Signals

no

Variable-Size Signals

no

Zero-Crossing Detection

no

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Fixed-Point Conversion
Design and simulate fixed-point systems using Fixed-Point Designer™.

Introduced in R2016a