Documentation Center

  • Trial Software
  • Product Updates

Create, Export, and Reuse Variant Controls

Create and Export Variant Controls

Create control variables, define variant conditions, and export control variables.

  1. Create control variables in the base workspace or a data dictionary.

    FUEL=2;
    EMIS=1;
  2. Use the control variables to define the control condition using a Simulink.Variant object.

    LinearContoller=Simulink.Variant('FUEL==2 && EMIS==1');

      Note:   Before each simulation, define Simulink.Variant objects representing the variant conditions.

  3. If you saved the variables in the base workspace, select the control variables to export. Right-click and click Save As to specify the name of a MAT-file.

Reuse Variant Conditions

If you want to reuse common variant conditions across models, specify variant control conditions using Simulink.Variant objects.

By reusing Simulink.Variant objects, you can dynamically change the model hierarchy to reflect variant conditions by changing the values of the control variables that define the condition expression.

The example models AutoMRVarAutoMRVar and AutoSSVarAutoSSVar show the use of Simulink.Variant objects to define variant control conditions.

Enumerated Types as Variant Controls

Use enumerated types to give meaningful names to integers used as variant control values.

  1. In the MATLAB® Editor, define the classes that map enumerated values to meaningful names.

    classdef sldemo_mrv_CONTROLLER_TYPE < Simulink.IntEnumType
            enumeration
            NONLINEAR (1)
            SECOND_ORDER (2)
            end
    end
    classdef sldemo_mrv_BUILD_TYPE < Simulink.IntEnumType
            enumeration
            PROTOTYPE (1)
            PRODUCTION (2)
            end
    end
    
  2. Define Simulink.Variant objects for these classes in the base workspace.

    VE_NONLINEAR_CONTROLLER = Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.NONLINEAR')
    VE_SECOND_ORDER_CONTROLLER =Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.SECOND_ORDER')
    VE_PROTOTYPE =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PROTOTYPE')
    VE_PRODUCTION =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PRODUCTION')

    Using enumerated types simplifies the generated code because it contains the names of the values rather than integers.

Related Examples

More About

Was this topic helpful?