Create a Simple Variant Parameter Model
This example shows you how to create variant parameters and use them in Simulink® blocks to vary the block parameter values based on variant conditions.
Variant parameters give you a way to represent block parameters that can have multiple choice values. For example, you may implement a system where the functional behavior remains the same but some parameter values can change depending on certain conditions. You can use variant parameters to switch among different block parameter values for simulation, code generation, or testing workflows. For more information, see Use Variant Parameters to Reuse Block Parameters with Different Values.
How to Use Variant Parameters in a Model
You create a variant parameter as a Simulink.VariantVariable
object. This object defines the set of possible values for the parameter and a variant condition expression associated with each value. You must create a variant control variable as a Simulink.VariantControl
object and use this variable to specify the variant condition for each value of a variant parameter.
You can create variant parameters and Simulink.VariantControl
objects in the base workspace or in a data dictionary associated with the model. See Storage Locations for Variant Control Variables (Operands) in Variant Parameters.
After creating a variant parameter, you can use it to set the value of a block parameter, such as the Gain parameter of a Gain block. During simulation, the variant parameter value associated with the variant condition that evaluates to true
becomes the active value of that block parameter. You can change the active value of a variant parameter by changing the value of the variant control variable.
Explore Example Model
Open the model slexVariantParameters
. The model uses the base workspace.
open_system('slexVariantParameters')
This example uses two variant parameters, K1
and K2
. Each parameter has two choice values corresponding to the variant conditions V==1
and V==2
. K1
specifies possible values for the Gain parameter of the Gain1 block, and K2
specifies possible values for the Gain parameter of the Gain2 block. This table shows the variant parameter values used in the model.
Create Variant Parameters and Variant Control Variable Object
To create K1
and K2
and to specify them as the Gain parameters of the Gain1
and Gain2
blocks:
1. Define a
object Simulink.VariantControl
V
in the base workspace of the model.
V = Simulink.VariantControl(Value=1, ActivationTime="update diagram")
V = VariantControl with properties: Value: 1 ActivationTime: 'update diagram'
The Value
property of the variant control variable object determines the active value of the variant parameter. The value of V
is set to 1
. The object also associates the value with a variant activation time. For more information on activation time, see Activate Variant During Different Stages of Simulation and Code Generation Workflow.
2. Create
objects to define multiple values for the Gain parameter of each Gain block and associate each value with a variant condition expression.Simulink.VariantVariable
You can specify properties such as dimension, data type, and storage class for each variant parameter. For this, create a Simulink.Parameter
object with the required properties and use the name of this object to set the Specification
property of the variant parameter object.
Pspec = Simulink.Parameter(0); Pspec.CoderInfo.StorageClass = 'ExportedGlobal'; K1 = Simulink.VariantVariable(Specification = "Pspec", Choices = {'V==1', 3.5, 'V==2', 8.5}); K2 = Simulink.VariantVariable(Specification = "Pspec", Choices = {'V==1', 4.5, 'V==2', 9.5});
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. Double-click the Simulink.VariantVariable
object created in the base workspace to open the dialog box. You can also use the Variant Parameters tab in Variant Manager to view the variant parameters present in the base workspace or data dictionaries associated with the model and to edit the variant condition and value of the choices.
3. Open the block parameter dialog box of each Gain block in the model. Specify the Gain parameter of the Gain1
block as K1
and the Gain parameter of the Gain2
block as K2
.
4. To simulate the model, on the Simulation tab, click Run. During simulation, the variant condition V == 1
evaluates to true
. Simulink sets the active value of K1
and K2
to the value corresponding to this condition. The active value is then assigned to the block parameter. The value of the Gain parameter of the Gain1 block is set to 3.5
and the value of the Gain parameter of the Gain2 block is set to 4.5
.
5. To change the value of the Gain parameters, set the value of V
to 2
and run the simulation again. You can change the value of V
by performing any of these steps:
Double-click the variant control variable created in the base workspace. In the VariantControl dialog box, specify the value of
V
as2
.
In the MATLAB® Editor, execute this command:
V.Value = 2;
During simulation, because the variant condition V == 2
evaluates to true
, the value of the Gain parameter of the Gain1 block is set to 8.5
, and the value of the Gain parameter of the Gain2 block is set to 9.5
.