Create Variant Controls Using MATLAB Enumeration Class
Each variant choice in a Simulink® model is associated with a conditional expression called a variant control. The variant control which evaluates to true determines the active variant choice in the model. This example shows how to create variant controls in your model using a MATLAB® enumeration in the variant condition expressions. In code generation, enumerated types improve readability because condition values are represented as meaningful names instead of literal values.
Explore the Model
Open the model slexVariantSetupUsingIntEnums
. It contains two variant choices, Linear controller
and Nonlinear controller
. Variant Sink and Variant Source blocks are used to implement the variant regions.
Specify the Enumeration Class in a MATLAB® File
You can create an enumeration class by adding an enumeration block to a class definition and saving it in a MATLAB file. In this example, the enumeration ControllerChoice
(saved in ControllerChoice.m
) derives from the built-in numeric type int32
. It defines two enumeration members, Linear
and Nonlinear
.
classdef ControllerChoice < int32 enumeration Linear (0), Nonlinear (1), end %All the methods below can be optionally used to configure %the enumeration in the generated code methods (Static = true) %% Description of the enumeration function retVal = getDescription() retVal = 'Controller...'; end %% Default value of the enumeration function retVal = getDefaultValue() retVal = ControllerChoice.Linear; end %% Specify whether the generated code imports/exports the definition %% of the enum used in the variant control expression function retVal = getDataScope() retVal = 'Exported'; end %% Get the header file to import from/export to the definition of the %% enumeration in the generated code function retVal = getHeaderFile() retVal = 'Controller.h'; end end end
Create a Variant Control Variable
This example uses the MATLAB variable V
as the variant control variable to store the variant choice that is currently active.
In the MATLAB Command Window, type:
V = ControllerChoice.Linear;
Build the Variant Condition Expression
You can set the variant controls from the Variant Manager. To open the Variant Manager, right-click the variant badge on the Variant Sink or Variant Source block and select Open in Variant Manager .
You can see how the enumeration members and the control variable is used to create the condition expressions V == ControllerChoice.Linear
and V == ControllerChoice.Nonlinear
. All supported Simulink enumerations can be used to build the condition expression. For information on enumerations in Simulink, see Simulink Enumerations.