变体控件简介

Simulink的组件金宝app®含有变异模式启动或关闭基于变种的选择,你选择。

每个变种选择在您的模型与所谓的变体控制的条件表达式有关。变体控制确定哪些变体的选择是有效的。通过改变一个变体控件的值,你可以切换活动变种的选择。

虽然每个变异的选择与变异控制有关,只有一个变体的控制可以评估为true。当一个变体控制的值为真,Simulink中激活所述变体的选择对应于该变型的控制。金宝app

变体控制是一个布尔表达式用于激活特定变体的选择,当计算结果为真正的

注意

您可以在MATLAB指定变形控制®全球工作区或数据字典。

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

变量控制方式

变量控制方式参数块参数对话框可让您选择表达标签模式造型变块。

  • 表达:指定活动变基础上的变异情况进行评估。

    变体控制模式:表达式

  • 标签:指定名称基于变控制(标签模式主动选择)。在标签模式,变控制不需要在全球的工作区创建。另外,您也可以选择在命令行标签模式的主动选择。例如,set_param(块, 'LabelModeActiveChoice', 'Choice_1')

    变体控制模式:标签

操作数

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

  • 变量名是决心金宝appSimulink.Variant对象

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

运营商

  • 括号进行分组

  • 算术,关系,逻辑的,或位运算符

欲了解更多信息,请参阅符和操作数在变条件表达式

当你编译模型,Simulink中确定变体的选择是积极的,金宝app如果它的变形控制计算结果为真正的。活性变评估发生在编译的早期阶段,一旦模型被编译主动变异不能改变。

已知的限制

  • 金宝app结构中的Simulink变异对象是不允许的。

  • 金宝app结构中Simulink的参数是不允许的。

为途径变指定控件

您可以使用许多方法在不同的选项之间进行切换——从原型化时要使用的选项到从模型生成代码所需的选项。

规范 目的
标量变量 快速原型 A == 1
金宝appSimulink.Variant目的 重用变种条件 LinearController =仿金宝app真软件。Variant('FUEL==2 && EMIS==1');
金宝appSimulink.Parameter对象或MATLAB变量 为代码生成生成预处理条件 模式= = 1,其中模式金宝appSimulink.Parameter对象或MATLAB变量
枚举类型 改进代码的可读性,因为状态值表示为有意义的名称,而不是整数 LEVEL == Level.Advanced

您可以使用功能找到控制变量金宝appSimulink.VariantManager.findVariantControlVars

为快速成型标量变量

当您仍在构建模型时,标量MATLAB变量允许您快速原型化各种选择。它们帮助你把更多的注意力放在构建你的变体选择上,而不是发展激活这些选择的表达方式上。

考虑包含两个变种选择一个模式,每一个代表变体子系统块。

您可以在最简单的形式作为块参数对话框框标量变量指定变形控制变体子系统块。

健康)状况两个领域线性控制器非线性控制器N / A,因为变体控制本身就是条件。

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

V = 1;
这种情况激活线性控制器变种的选择。变异控制被忽略时,符号使用。同样,如果变形控制是空的,选择被忽略。

同样,如果你改变的值V2时,金宝appSimulink激活非线性控制器变种的选择。

金宝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 = '自定义';VSSMODE.CoderInfo.CustomStorageClass = 'ImportedDefine';VSSMODE.CoderInfo.CustomAttributes.HeaderFile = ... 'rtwdemo_importedmacros.h';
变体控制变量定义为金宝appSimulink.Parameter对象可以有这些存储类之一:

  • 确定ImportedDefine指定头文件

  • CompilerFlag

  • SystemConstant(AUTOSAR)

  • 您自己的存储类,它将数据定义为宏

您还可以将标变种控制变量成金宝appSimulink.Parameter目的。看到转换变控制变量成Simulink.Parameter对象金宝app

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

使用枚举类型给有意义的名称用作变形控制值的整数。

  1. 在MATLAB编辑器中,定义将枚举值映射为有意义名称的类。

    classdefsldemo_mrv_CONTROLLER_TYPE 列举非线性(1)SECOND_ORDER(2)结束结束
  2. 确定金宝appSimulink.Variant对象为这些类在全球的工作区。

    VE_NONLINEAR_CONTROLLER = 金宝appSimulink.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 =金宝app Simulink.Variant ...(' E_CURRENT_BUILD == sldemo_mrv_BUILD_TYPE.PRODUCTION')

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

查看变条件

变体条件图例帮助您可视化与模型关联的变体条件。属性上的变量条件图例调试选项卡,选中信息覆盖>变异传奇

注意

如果变异传奇是不可用的,上调试选项卡,选中信息覆盖>变异条件

默认情况下,变条件图例显示变种条件注释和模拟过程中的变异情况。以查看在所生成的代码中的变体的条件,选择显示生成的代码条件选项中变传奇条件窗口。

在变条件图例中,块上的变条件标注为五:Ç,其中v是所述变体语义指示器和C表示变量条件索引。您可以单击超链接的变体注释,以观察条件对应于模型的哪个部分。

当你将鼠标悬停在有一个变体的条件,工具提示显示变种注释和块的相关变种条件块。以查看所述变体的条件注释工具提示,该变异条件选项必须选择。

要查看变异条件传奇通过编程,使用金宝appSimulink.VariantManager.VariantLegend函数在MATLAB命令窗口。

符和操作数在变条件表达式

金宝appSimulink的评估变体的控制内条件表达式,以确定活性变体的选择。您可以在一个条件表达式下列操作数:

  • 标量变量

  • 金宝appSimulink.Parameter不属于结构和对象的数据类型,比其他金宝appSimulink.Bus对象

  • 枚举类型

  • 括号进行分组

变体的条件表达式可以包含MATLAB运算符,提供的表达式计算为一个布尔值。在这些例子中,一个是评价一个整数表达式,X是一个常数整数文字。

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

  • + A

  • A + B

  • 一个

  • 一个 - B

  • ——一个

  • 一个 - B

  • ——一个

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

A / B

如果第二操作数的值()是0,该行为是不确定的。

REM(A,B)

A%B

如果第二操作数的值()是0,该行为是不确定的。

关系

A ==乙

A ==乙

A〜= B

阿!= B

A

A

A> B

A> B

A <= B

A <= B

A> = B

A> = B
合乎逻辑
〜一 !一个,其中一个是不是整数
& & B & & B
一个||乙 一个||乙
按位(一个不能同时为恒定整数常量)

BITAND(A,B)

A和B

BITOR(A,B)

A |乙

BITXOR(A,B)

一^ B

bitcmp(A)

〜一

位位移(A,x)的

A << X

bitshift (- x)

A >> X

净变异条件

净变种条件是总的局部状况及其祖先的条件。

考虑这个模型slex_netvariant具有两个单输入单输出(SISO)变异源块,变异源变体Source1有不同的条件,如V == 1w ^ == 1, 分别。

当你模仿这种模式下,变体Source1块和其他块中的子系统块将有一个当地的条件w ^ == 1传播的变体Source1块。祖条件V == 1从传播变异源块上子系统块。因此,净变条件对变体Source1块和其他块中的子系统块会V == 1 && w ^ == 1

相关的例子

更多关于