Simulink的组件万博1manbetx®模型中包含的变体将根据您选择的变体被激活或取消激活。
模型中的每个变量选择都与一个称为变量控制的条件表达式相关联。变体控制决定哪个变体选择是主动的。通过更改变量控件的值,可以切换活动变量选择。
虽然每个变体选择都与一个变体控件相关联,但只有一个变体控件可以计算为真。当一个变量控制的值为true时,Simulink激活与该变量控制相对应的变量选择。万博1manbetx
变量控件是一个布尔表达式,它在计算为时激活特定的变量选择真正的
.
你可以在MATLAB中指定变量控制®全局工作区或数据字典。
可以指定变体控件为万博1manbetx仿真软件。变体
对象、MATLAB表达式(包括结构)或包含一个或多个操作数和操作符的表达式。
变量控制方式在“块参数”对话框中可以选择的参数表达式
或标签
用于建模Variant块的模式。
表达式:
根据对变量条件的评估指定活动变量。
变体控制模式:表达式
标签:
指定基于名称的Variant控件(标签模式主动选择)。在标签
模式下,不需要在全局工作区中创建Variant控件。或者,您可以从命令行中选择Label模式。例如,set_param(块,“LabelModeActiveChoice”、“Choice_1”)
.
可变控制方式:标号
解析为MATLAB变量或的变量名万博1manbetx仿真软件。参数
具有整数或枚举数据类型和标量文本值的对象
解析为的变量名万博1manbetx仿真软件。变体
对象
表示整型或枚举值的标量字面值
括号进行分组
算术、关系、逻辑或位操作符
有关更多信息,请参见变量条件表达式中的操作符和操作数.
当您编译模型时,如果它的变量控制计算为,Simulink万博1manbetx将确定一个变量选择是活动的真正的
.活动变量的计算发生在编译的早期阶段,一旦模型被编译,活动变量就不能被更改。
万博1manbetx不允许在结构中使用Simulink变量对象。
万博1manbetx不允许在结构中使用Simulink参数。
您可以使用许多方法在不同选项之间进行切换——从原型时使用的选项到从模型生成代码所需的选项。
规范 | 目的 | 例子 |
---|---|---|
标量变量 | 快速原型 | = = 1 |
万博1manbetx仿真软件。变体 对象 |
重用条件变体 | LinearController =仿万博1manbetx真软件。变体('FUEL==2 && EMIS==1'); |
万博1manbetx仿真软件。参数 对象或MATLAB变量 |
为代码生成生成预处理条件 | 模式= = 1 ,在那里模式 可以万博1manbetx仿真软件。参数 对象或MATLAB变量 |
枚举类型 | 提高代码可读性,因为条件值表示为有意义的名称而不是整数 | 级别= =级别。先进的 |
您可以使用该函数找到控制变量万博1manbetxSimulink.VariantManager.findVariantControlVars
.
标量MATLAB变量允许您在构建模型时快速原型变量选择。它们帮助你更专注于构建你的不同选择,而不是发展激活这些选择的表达。
考虑一个包含两个变量选择的模型,每个变量选择由不同的子系统块。
控件的块参数对话框中,可以以最简单的形式指定变量控件作为标量变量不同的子系统块。
的条件字段的值线性控制器
和非线性控制器
是N/A
,因为变量控制本身就是条件。
您可以通过定义标量变量来激活其中一个变量选择V
并将其值设置为1
在MATLAB命令窗口。
V = 1;
线性控制器
变体的选择。当%
使用符号。类似地,如果变量控制为空,则忽略该选项。
类似地,如果你改变的值V
来2
, 万博1manbetxSimulink激活非线性控制器
变体的选择。
万博1manbetx仿真软件。变体
变量条件重用的对象在确定您的模型需要的变量选择之后,您可以构造复杂的变量条件来控制您的变量选择的激活。定义变量条件为万博1manbetx仿真软件。变体
对象。
万博1manbetx仿真软件。变体
对象使您能够跨模型重用通用的变量条件,并帮助您封装复杂的变量条件表达式。
考虑一个已经在全局工作区中定义了变体控件的示例。
V = 1;V = 2;
可以将这些控件转换为封装为的条件表达式万博1manbetx仿真软件。变体
对象。
LinearController 万博1manbetx= Simulink.Variant(“V = = 1”);NonLinearController 万博1manbetx= Simulink.Variant(“V = = 2”);
然后您可以指定这些万博1manbetx仿真软件。变体
对象的块参数对话框中的变量控件不同的子系统块。
的条件字段现在反映封装的变量条件。使用这种方法,您可以开发可重用的复杂变量条件表达式。
万博1manbetx仿真软件。参数
对象或MATLAB用于代码生成的变量如果您想为包含变量选择的模型生成代码,请指定变量控制变量为MATLAB变量或万博1manbetx仿真软件。参数
对象。万博1manbetx仿真软件。参数
对象允许您指定生成代码所需的其他属性(如数据类型)。
VSSMODE = 万博1manbetxSimulink.Parameter;VSSMODE。Value = 1; VSSMODE.DataType = 'int32'; VSSMODE.CoderInfo.StorageClass = 'Custom'; VSSMODE.CoderInfo.CustomStorageClass = 'ImportedDefine'; VSSMODE.CoderInfo.CustomAttributes.HeaderFile =... 'rtwdemo_importedmacros.h';
万博1manbetx仿真软件。参数
对象可以有以下其中一个存储类:
定义
或ImportedDefine
指定头文件
CompilerFlag
SystemConstant (AUTOSAR)
将数据定义为宏的自己的存储类
还可以将标量变量控制变量转换为万博1manbetx仿真软件。参数
对象。看到在Simulink中转换变量控制变量。万博1manbetx参数对象.
使用枚举类型为用作变量控制值的整数提供有意义的名称。
在MATLAB编辑器中,定义将枚举值映射到有意义名称的类。
classdefsldemo_mrv_CONTROLLER_TYPE <仿万博1manbetx真软件。IntEnumType枚举非线性二阶(1)结束结束
定义万博1manbetx仿真软件。变体
全局工作空间中这些类的对象。
VE_NONLINEAR_CONTROLLER = 万博1manbetxSimulink.Variant……(“E_CTRL = = sldemo_mrv_CONTROLLER_TYPE.NONLINEAR”)VE_SECOND_ORDER_CONTROLLER万博1manbetx = Simulink.Variant……(“E_CTRL = = sldemo_mrv_CONTROLLER_TYPE.SECOND_ORDER”)VE_PROTOTYPE万博1manbetx = Simulink.Variant……(“E_CURRENT_BUILD = = sldemo_mrv_BUILD_TYPE.PROTOTYPE”)VE_PRODUCTION万博1manbetx = Simulink.Variant……(“E_CURRENT_BUILD = = sldemo_mrv_BUILD_TYPE.PRODUCTION”)
使用枚举类型简化了生成的代码,因为它包含值的名称而不是整数。
变体条件图例帮助您可视化与模型相关联的变体条件。要查看变体条件图例,请在调试选项卡上,选择信息覆盖>变体的传说.
如果变体的传说是不可用的,在调试选项卡上,选择信息覆盖>变异的条件.
默认情况下,变量条件图例显示变量条件注释和模拟期间的变量条件。要查看生成代码中的变体条件,请选择显示生成的代码条件选项。
在变量条件图例中,块上的变量条件被注释为v: c
,在那里v
变体是否语义指示符和c
表示可变条件索引。您可以单击超链接的变体注释,以观察条件对应于模型的哪个部分。
当您将鼠标悬停在具有变体条件的块上时,工具提示将显示该块的变体注释和相关的变体条件。要查看变量条件注释工具提示,请使用变异条件选项必须被选中。
查看变异条件传奇通过编程,使用万博1manbetxSimulink.VariantManager.VariantLegend
函数。
万博1manbetxSimulink在变量控制中计算条件表达式,以确定主动变量选择。你可以在条件表达式中包含以下操作数:
标量变量
万博1manbetx仿真软件。参数
非结构的对象,且具有非结构的数据类型万博1manbetx仿真软件。公共汽车
对象
枚举类型
括号进行分组
变量条件表达式可以包含MATLAB操作符,前提是表达式的计算结果为布尔值。在这些例子中,一个
和B
表达式的计算结果是一个整数,和x
是常量整型字面值。
支持生成预处理条件的MATLAB表达式万博1manbetx | C预处理器中的等价表达式 |
---|---|
算术 | |
|
|
|
|
A * B |
A * B |
idivide (A, B) |
如果第二个操作数的值( |
快速眼动(A, B) |
如果第二个操作数的值( |
关系 | |
|
A = = |
|
一个= B ! |
|
< B |
|
A > |
|
< = B |
|
> = B |
逻辑 | |
~一个 |
! ,在那里一个 不是整数 |
& & B |
& & B |
一个| | B |
一个| | B |
位(一个 和B 不能都是常量整型字面值) |
|
|
A和B |
|
A | |
|
A ^ |
|
~一个 |
|
< < x |
|
一个> > x |
净变条件是局部条件和原始条件的总和。
考虑这个模型slex_netvariant
单输入单输出(SISO)变异来源块,变异来源
和变体Source1
变条件为V = = 1
和W = = 1
,分别。
当你模拟这个模型时变体Source1
块和其他块在子系统块将具有一个局部条件W = = 1
传播的变体Source1
块。祖先的条件V = = 1
是从变异来源
块上子系统块。因此,净变条件上变体Source1
块和其他块在子系统块将V = = 1 & & W = = 1
.