简介变控制

Simulink的的组件金宝app®包含变体的模型根据您选择的变体激活或停用。

模型中的每个变体选择都与称为变体控件的条件表达式相关联。变量控制决定哪个变量选择是活动的。通过更改变量控件的值,可以切换活动变量选择。

虽然每个变体选择都与一个变体控件相关联,但是只有一个变体控件的值为true。当一个变体控件的值为true时,Simulink激活对应于该变体控件的变体选择。金宝app

变式控件是一个布尔表达式,当它求值时激活特定的变式选择真正.

请注意

您可以在MATLAB中指定不同的控件®全局工作区或数据字典。

可以将变量控件指定为金宝appSimulink.Variant对象、MATLAB表达式(包括结构)或包含一个或多个操作数和运算符的表达式。

变异控制模式

变异控制模式可在“块参数”对话框中选择参数表达式要么标签对不同块建模的模式。

  • 表达式:指定基于对变量条件的评估的活动变量。

    变控制方式:表达式

  • 标签:指定基于名称的变体控件(标签模式活动选择)。在标签模式时,不需要在全局工作区中创建变量控件。或者,您可以从命令行选择Label模式active choice。例如,set_param(块,“LabelModeActiveChoice”、“Choice_1”).

    变式控制方式:标号

操作数

  • 变量名解析为MATLAB变量或金宝appSimulink.Parameter具有整数或枚举数据类型和标量文字值的对象

  • 解析为的变量名金宝appSimulink.Variant对象

  • 表示整数或枚举值的标量文字值

运营商

  • 括号分组

  • 算术运算符、关系运算符、逻辑运算符或按位运算符

有关更多信息,请参见不同条件表达式中的运算符和操作数.

当您编译模型时,Simulink确定如果变量控件的计算结金宝app果为,则该变量选择是活动的真正.活动变量的评估发生在编译的早期阶段,一旦模型被编译,活动变量就不能被更改。

已知限制

  • 金宝app不允许在结构中使用Simulink变量对象。

  • 金宝app不允许在结构中使用Simulink参数。

指定变量控件的方法

您可以使用多种方法进行变型的选择,从之间切换选项使用,而原型为从模型生成代码所需的选项。

规范 目的 例子
标量变量 快速原型 = = 1
金宝appSimulink.Variant对象 重用条件变体 LinearController = 金宝appSimulink.Variant( 'FUEL == 2 && EMIS == 1');
金宝appSimulink.Parameter对象或MATLAB变量 生成的代码生成预处理条件 模式== 1,在那里模式可以金宝appSimulink.Parameter对象或MATLAB变量
枚举类型 改善了代码的可读性,因为条件值被表示为有意义的名称,而不是整数 水平= = Level.Advanced

您可以使用该函数找到控制变量金宝appSimulink.VariantManager.findVariantControlVars.

快速原型的标量变量

标MATLAB变量让你可以快速原型的变体的选择,当你还在构建模型。它们可以帮助您更专注于构建变种的选择,要比在开发激活这些选择的表达。

考虑一个包含两个变体选择的模型,每个选择由a表示不同的子系统块。

方法的“块参数”对话框中,可以将最简单形式的变量指定为标量变量不同的子系统块。

条件两个字段线性控制器非线性控制器N /一个,因为该变种控制本身的条件。

您可以通过定义一个标量变量来激活其中一个变量选择V并将其值设置为1在MATLAB命令窗口。

V = 1;
这个条件激活了线性控制器变体的选择。变量控件将被忽略%使用符号。类似地,如果变量控件为空,则选择将被忽略。

类似地,如果你改变的值V2,S金宝appimulink的激活非线性控制器变体的选择。

金宝appSimulink.Variant用于不同条件重用的对象

在确定了模型所需的变体选择之后,您可以构造复杂的变体条件来控制变体选择的激活。将变量条件定义为金宝appSimulink.Variant对象。

金宝appSimulink.Variant对象使您能够跨模型重用常见的变量条件,并帮助您封装复杂的变量条件表达式。

考虑一个已经在全局工作区中定义了变量控件的例子。

V = 1;V = 2;

您可以将这些控件转换为封装为的条件表达式金宝appSimulink.Variant对象。

LinearController 金宝app= Simulink.Variant( 'V == 1');NonLinearController 金宝app= Simulink.Variant( 'V == 2');

然后可以指定这些金宝appSimulink.Variant控件的块参数对话框中的变量控件不同的子系统块。

条件字段现在反映封装的变量条件。使用这种方法,您可以开发可重用的复杂变量条件表达式。

金宝appSimulink.Parameter对象或MATLAB代码生成变量

如果您打算为包含变量选择的模型生成代码,请将变量控制变量指定为MATLAB变量或金宝appSimulink.Parameter对象。金宝appSimulink.Parameter对象允许您指定生成代码所需的其他属性(例如数据类型)。

VSSMODE = 金宝appSimulink.Parameter;VSSMODE。Value = 1; VSSMODE.DataType = 'int32'; VSSMODE.CoderInfo.StorageClass = 'Custom'; VSSMODE.CoderInfo.CustomStorageClass = 'ImportedDefine'; VSSMODE.CoderInfo.CustomAttributes.HeaderFile =... 'rtwdemo_importedmacros.h';
变量控制变量定义为金宝appSimulink.Parameter对象可以有这些存储类中的一个:

  • 定义要么ImportedDefine与头文件中指定

  • CompilerFlag

  • SystemConstant (AUTOSAR)

  • 数据定义为一个宏自己的存储类

还可以将标量变量控制变量转换为金宝appSimulink.Parameter对象。看到将变量控制变量转换为Simulink。金宝app参数对象.

用于改进代码可读性的枚举类型

使用枚举类型为用作变量控制值的整数赋予有意义的名称。

  1. 在MATLAB编辑器,定义地图枚举值以有意义的名字的类。

    classdefsldemo_mrv_CONTROLLER_TYPE < 金宝appSimulink.IntEnumType枚举非线性(1)二阶(2)结束结束
  2. 定义金宝appSimulink.Variant全局工作区中这些类的对象。

    VE_NONLINEAR_CONTROLLER = 金宝appSimulink.Variant……(“E_CTRL = = sldemo_mrv_CONTROLLER_TYPE.NONLINEAR”) VE_SECOND_ORDER_CONTROLLE金宝appR = Simulink.Variant……(“E_CTRL = = sldemo_mrv_CONTROLLER_TYPE.SECOND_ORDER”) VE_PROTOTYP金宝appE = Simulink.Variant……(“E_CURRENT_BUILD = = sldemo_mrv_BUILD_TYPE.PROTOTYPE”) VE_PRODUCTIO金宝appN = Simulink.Variant……(“E_CURRENT_BUILD = = sldemo_mrv_BUILD_TYPE.PRODUCTION”)

    使用枚举类型可以简化生成的代码,因为它包含值的名称,而不是整数。

查看变异条件

该变种条件传说可以帮助您可视化与模型关联的变异情况。要查看变条件传说,在调试选项卡上,选择信息覆盖>变体的传说.

请注意

如果变体的传说不可用,在调试选项卡上,选择信息覆盖>变异的条件.

默认情况下,变量条件图例在模拟期间显示变量条件注释和变量条件。若要查看生成的代码中的变体条件,请选择显示生成的代码的条件变量条件传奇窗口中的选项。

在变条件传说,上块的变种条件注释为v: c,在那里v变量语义指示符和c代表变种条件索引。您可以通过超链接的变种注释点击观察模型的条件对应的哪些部分。

当您将鼠标悬停在具有不同条件的块上时,工具提示将显示块的不同注释和相关的不同条件。若要查看变量条件注释工具提示,请使用变异条件必须选择选项。

查看变异状况传奇编程,使用金宝appSimulink.VariantManager.VariantLegend功能的MATLAB命令窗口。

不同条件表达式中的运算符和操作数

金宝appSimulink计算变量控件中的条件表达式,以确定活动的变量选择。可以在条件表达式中包含以下操作数:

  • 标量变量

  • 金宝appSimulink.Parameter不是结构且数据类型不是金宝appSimulink.Bus对象

  • 枚举类型

  • 括号分组

如果表达式的计算结果为布尔值,则变量条件表达式可以包含MATLAB操作符。在这些例子中,一个B表达式的值是否为整数x是常量整数文字。

MATLAB表达式预处理条件的支持代金宝app 等价表达式在C预处理条件
算术
  • A + B

  • +一个

  • A + B

  • 一个

  • A - B

  • -一个

  • A - B

  • -一个

A * B A * B
idivide (A, B)

A / B

如果第二个操作数的值(B)是0,则行为未定义。

快速眼动(A, B)

% B

如果第二个操作数的值(B)是0,则行为未定义。

相关的

A = =

A = =

~ = B

一个= B !

< B

< B

A >

A >

< = B

< = B

A > =

A > =
逻辑
~一个 !,在那里一个不是整数
一个&&乙 一个&&乙
一个| | B 一个| | B
位(一个B不能都是常量整数)

bitand (A, B)

A&B

bitor (A, B)

A |

bitxor (A, B)

A ^

bitcmp (A)

~一个

bitshift (A, x)

< < x

位位移(A,-x)

> > x

净变条件

净变条件是局部条件及其祖先条件的总和。

考虑这个模型slex_netvariant有两个单输入单输出(SISO)变异来源块,变异来源变异源1与变种条件V = = 1W = = 1,分别。

当你模拟这个模型时,变异源1块和内的其它块子系统块将具有局部条件W = = 1从传播的变异源1块。祖先的条件V = = 1是从?传播的变异来源块到子系统块。因此,在净变种条件变异源1块和内的其它块子系统块将V = = 1 & & W = = 1.

相关的例子

更多关于