Simulink的组件金宝app®包含变量的模型将根据您选择的变量选择激活或停用。
模型中的每个变体选项都与版本控制.变体控制决定哪个变体选择是主动的。通过更改变量控件的值,可以切换活动变量选择。
虽然每个变体选择都与一个变体控制相关联,但只有一个变体控制可以计算为真正的
。当变量控件的计算结果为真正的
, 金宝appSimulink激活对应于该变体控制的变体选择。
可以指定类型为的变量控件表达
,标签
或sim码元交换
用于建模变块和变参数。
您可以指定变量控制模式参数为:
表达
-在表达
模式下,Si金宝appmulink根据变量条件的评估选择主动变量。当条件表达式的计算结果为真正的
,相应的变量选择将变为活动状态。当条件表达式的计算结果为假的
时,相应的变量选择变为非活动的。看到使用变量块中的条件表达式和变量参数在选项之间切换.
标签
-在标签
模式下,Si金宝appmulink根据变量的名称选择活动变量。变量控件是一个字符串,不需要您在任何工作空间中创建变量。看到使用变量块中的标签在选项之间切换.
sim码元交换
-要在模拟工作流和代码生成工作流的变量之间自动切换,而不创建任何工作空间变量,请使用sim码元交换
模式。当你模拟一个模型时,Simulink会自动选择金宝app模拟
分支作为活动选择。类似地,当您执行软件在环(SIL)或处理器在环(PIL)模拟、生成代码或使用外部模式时,Simulink会自动选择金宝app编码基因
分支。看到在变量块中模拟和代码生成工作流的选择之间切换.
在里面表达
模式下,Si金宝appmulink根据变量条件的评估选择主动变量。当条件表达式的计算结果为真正的
,相应的变量选择将变为活动状态。当条件表达式的计算结果为假的
时,相应的变量选择变为非活动的。
你可以使用表达
变量块和变量参数中的变量控件的类型。
要在变量块中指定变量条件表达式,请执行以下操作:
右键单击变体块上的徽章,选择块的参数,然后在。中指定变量条件表达式变异控制表达式“块参数”对话框的参数。
以编程方式,通过使用以下命令:
set_param (' set_param ('choiceName”、“VariantControl”、“A==1')
要在变量形参中指定变量条件表达式,请使用金宝app仿真软件。变体V一个riable
对象有关详细信息,请参阅创建一个简单的变量参数模型.
变体控件可以是:
用于快速成型的布尔条件表达式。例如,A+B
,A = =
,& & B
,等等。
一个金宝app仿真软件。变体
对象,该对象包含用于条件重用的条件表达式。请参阅金宝appSimulink.Variant对象用于在变量块中重用变量条件和金宝app仿真软件。变体Objects for Variant Condition Reuse of Variant Parameters.
默认变量选择如果所有选项的计算结果都不是真正的
.
在这里一个
和B
操作数被称为不同的控制变量.+
,==
,&&
是条件表达式中的运算符。条件表达式可以包含一个或多个此类变量控制变量和运算符。有关支持的变量控制变量类型和存储位置的信息,请参阅金宝app变量条件表达式中变量控制变量(操作数)的类型和变量条件表达式中变量控制变量(操作数)的存储位置. 有关运算符的信息,请参阅变条件表达式中的运算符.
请注意
可以从包含变量块的模型中模拟和生成代码变量控制模式着手表达
模式。
在里面表达
模式下,您可以将变体控制变量指定为这些类型中的任何一种—从创建原型时使用的选项到从模型生成代码所需的选项。
规范 | 目的 | 例子 |
---|---|---|
金宝app仿真软件。变体Control |
关联一个不同的激活时间 | A==1 ,在那里一个 是一个金宝app仿真软件。变体Control 对象。看到变量控制变量在变量块中关联激活时间的对象和变参数快速成型的标量值. |
标量变量 | 快速成型 |
请注意 变量参数中不支持标量变量作为变量控制变量。金宝app |
金宝appSimulink.参数 对象 |
为代码生成生成预处理条件 | Vssmode = = 1 ,在那里Vssmode 是一个金宝appSimulink.参数 对象看见金宝appSimulink.变量块中代码生成的带整数的参数对象和金宝appSimulink.参数Objects for Code Generation of Variant Parameters. |
金宝appSimulink枚举 | 改进了代码可读性,因为条件值表示为有意义的名称,而不是整数 | LEVEL==LEVEL.Advanced ,在那里水平 是一个基于整数的枚举类和先进的 是枚举值。看到的,枚举类型以提高变量块的代码可读性和改进变量参数的代码可读性的枚举类型. |
金宝app仿真软件。变体 对象 |
重用可变条件 | LinearController==1 ,在那里线性控制器 是一个金宝app仿真软件。变体 对象,该对象封装条件表达式燃料= = 2 & &工作= = 1 . 看见金宝appSimulink.Variant对象用于在变量块中重用变量条件和金宝app仿真软件。变体Objects for Variant Condition Reuse of Variant Parameters. |
您可以根据需要在不同的存储位置定义变体控制变量。
请注意
变量块或变量参数中的所有变量控制变量必须来自相同的存储位置。
定义变量控制变量:
在里面 | 到 | 金宝app支持的变量控制变量类型(请参阅变量条件表达式中变量控制变量(操作数)的类型) | 更多信息 |
---|---|---|---|
基本工作空间 | 在试验临时模型时存储变量 | 标量变量,金宝app仿真软件。变体Control ,金宝app仿真软件。变体 ,金宝appSimulink.参数 ,枚举类型 |
临时数据:基础工作区 |
掩码工作区 | 永久存储块掩码的本地数据。 | 标量变量,金宝app仿真软件。变体Control ,枚举类型 |
使用蒙版或模型工作区控制变量块的主动变量选择的方法 |
模型的工作空间 | 永久存储模型的本地数据 | 标量变量,金宝app仿真软件。变体Control ,枚举类型 |
使用蒙版或模型工作区控制变量块的主动变量选择的方法 |
数据字典 | 永久存储全局数据,在模型之间共享数据,并跟踪对数据所做的更改。 | 标量变量,金宝app仿真软件。变体Control ,金宝app仿真软件。变体 ,金宝appSimulink.参数 ,枚举类型 |
什么是数据字典? |
有关每个存储位置的功能和优势,请参阅确定Simulink模型中变量和对象的存储位置金宝app
变量条件表达式可以包含MATLAB®运算符,前提是表达式的计算结果为布尔值。
的表达
模式支持金宝app更新图表
,更新图表,分析所有的选择
,代码编译
,启动
激活时间。有关各种激活时间的更多信息,请参阅在仿真和代码生成工作流的不同阶段激活变量.
金宝appSimulink通过以下过程确定仿真期间处于活动状态的模型组件:变异条件下传播.此过程评估在变量块上指定的变量控件,并自动将变量条件传播到连接块。可变条件可以通过信号线、总线和函数调用传播到模型中的其他块。该流程使与非活动选择相关联的模型组件失效,并且它们不参与模拟。您可以停止条件传播来定义模型中的不同区域。
您可以使用变体条件图例来可视化激活每个变体选择的传播变体条件。如果模型构件上存在变量条件,Simulink将对其进行注释,“变量条件”图例将显示对应于每个注释的条件。金宝app
有关更多信息,请参见变异条件传播概述.
在里面标签
模式下,Si金宝appmulink根据变量的名称选择活动变量。变型控制是一串
并且不要求您在任何工作空间中创建变量。
若要为变量块中的选项指定标签,请在变量块上的标记上单击鼠标右键,然后选择块的参数,然后在变异控制标签“块参数”对话框的参数。
请注意
你不能将标签
带有变量参数的变量控件的类型。
在里面标签
模式下,变量块的激活时间设置为更新图表
默认情况下。换句话说,当您模拟模型时,Simulink在模型编译阶段确定活动选项,并仅为该选项生成代码。请参阅金宝app,在仿真和代码生成工作流的不同阶段激活变量.
您只能模拟包含变量块的模型变量控制模式着手标签
模式不支持代码生成。金宝app
您可以使用这些方法中的任何一种来在中设置活动选项标签
模式:
为中的每个变量选项指定名称变异控制标签变量块对话框的参数。中列出了您指定的所有名称标签模式主动选择下拉。您从列表中选择的标签将成为活动选择。
右键单击变体块上的徽章并选择标签模式主动选择.
从变量块的掩码工作区中使用初始化代码。在掩码初始化代码中指定的活动选择覆盖使用标签模式主动选择下拉列表或标签模式主动选择菜单项。有关详细信息,请参阅屏蔽一个变型子系统.
以编程方式,通过使用以下命令:
设置参数(blockName,“LabelModeActiveChoice”,'变形金刚')
要在模拟和代码生成工作流的选择之间自动切换,而不创建任何工作空间变量,请使用sim码元交换
变量控制方式。
要为变量选项指定模拟和代码生成分支,请在变量块上的标记上单击鼠标右键,然后选择块的参数,然后指定(sim)
和(codegen)
关键字的变异控制开关“块参数”对话框的参数。
当你模拟(普通,加速器,快速加速器)一个模型时,Simulink自动选择金宝app(sim)
分支作为主动选择。类似地,当您进行软件在环(SIL)、处理器在环(PIL)仿真或生成代码或使用外部模式时,Simulink会自动选择金宝app(codegen)
分支。代码仅为活动选择生成。生成的代码中不包含非活动选择。在此模式下,在变量块中最多只能有两个选择。
请注意
你不能将sim码元交换
带有变量参数的变量控件的类型。
在里面sim码元交换
模式,只有更新图表
和更新图表,分析所有的选择
支持激活时间。金宝app换句话说,当您从模型中模拟或生成代码时,Simulink在模型编译阶段确定主动选择,并仅为选择生成代码。金宝app看到的,在仿真和代码生成工作流的不同阶段激活变量.
该表解释了不同变体控制模式的功能,以帮助您选择一种满足您的需求。
变量控制模式 | 功能 |
---|---|
|
使用
|
|
使用
|
|
使用
|
不同变体激活时间的可用性取决于变量控制模式你指定的。变量激活时间确定Simulink设置激活选项的时间。变量激活时间还决定了在生成的代码中包含哪些变量。有关变量激活时间的更多信息,请参金宝app阅在仿真和代码生成工作流的不同阶段激活变量.
此表说明了每个变量控制模式支持的变量激活时间。金宝app
可变激活时间 | ||||
---|---|---|---|---|
变量控制模式 | 更新图表 |
更新图表,分析所有的选择 |
代码编译 |
启动 |
表达 |
✓ | ✓ | ✓ | ✓ |
标签 |
✓ | x | x | x |
sim码元交换 |
✓ | ✓ | x | x |
本节解释如何在变量条件表达式中使用不同类型的变量控制变量。
金宝app仿真软件。变体Control
对象使您能够将变量激活时间与变量控制变量相关联。你可以定义金宝app仿真软件。变体Control
中列出的存储位置中的控制变量类型变量条件表达式中变量控制变量(操作数)的存储位置.
考虑包含一个模型的模型变型子系统Block with two variant choices,线性控制器
和非线性控制器
子系统。
的块参数对话框中变型子系统块,指定变量控件,V==1
和V = = 2
.
在基本工作区中,定义一个变量控制变量对象,V
,使用金宝app仿真软件。变体Control
,将其值设置为1
,然后对模型进行仿真。在模拟过程中线性控制器
变量选择变得活跃起来。
V =仿金宝app真软件。变体Control(“价值”1 ActivationTime“更新图表分析所有选项”)
请注意
的可变激活时间块参数对话框中指定的激活时间
您在金宝app仿真软件。变体Control
对象。
类似地,如果你改变的值V
到2
,非线性控制器
变量选择变得活跃起来。
V.Value = 2;
标量MATLAB变量控制变量允许您快速原型变量选择时,您仍在构建您的模型。它们帮助你更专注于构建你的不同选择,而不是发展激活这些选择的表达。可以在存储位置中定义标量控制变量,如变量条件表达式中变量控制变量(操作数)的存储位置.
考虑包含一个模型的模型变型子系统Block with two variant choices,线性控制器
和非线性控制器
子系统。
的块参数对话框中变型子系统块,将变量控制以最简单的形式指定为标量变量,V==1
和V = = 2
.
在基本工作空间中,定义变量控制变量,V
,将其值设置为1
,然后对模型进行仿真。在模拟过程中线性控制器
变量选择变得活跃起来。
V = 1;
类似地,如果你改变的值V
到2
,非线性控制器
变量选择变得活跃起来。
V = 2;
金宝appSimulink.参数
用于在变量块中生成代码的带整数的对象如果您想为包含变量选择的模型生成代码,请指定变量控制变量为金宝appSimulink.参数
物体。金宝appSimulink.参数
对象允许您指定生成代码所需的其他属性(如数据类型)。
请注意
您可以定义类型为的变量控制变量金宝appSimulink.参数
仅在基本工作区或数据字典中。定义一个版本控制variable of type金宝appSimulink.参数
不支持在掩码或模型工作区中。有关变量控制变量存储位置的更多信息,请参阅金宝app变量条件表达式中变量控制变量(操作数)的存储位置.
金宝appSimulink.参数
结构中的对象以及具有除金宝app模拟总线
对象不受支持。金宝app
考虑包含一个模型的模型变型子系统Block with two variant choices,线性控制器
和非线性控制器
子系统。
在基本工作空间中,定义金宝appSimulink.参数
对象,VssMode
.
VssMode = 金宝appSimulink.Parameter;VssMode。V一个lue = 1; VssMode.DataType =“int32”; VssMode.CoderInfo.StorageClass=“习俗”;VssMode.CoderInfo.CustomStorageClass=“导入定义”;VssMode.CoderInfo.CustomAttributes.HeaderFile=“rtwdemo_importedmacros.h”;
变量控制变量定义为金宝appSimulink.参数
对象可以具有以下存储类之一:
定义
或导入定义
指定了头文件
编译滞后
SystemConstant (AUTOSAR)
您自己的将数据定义为宏的存储类
有关这些存储类的更多信息,请参见选择存储类以控制生成代码中的数据表示(金宝appSimulink编码器).
还可以将标量变量控制变量转换为金宝appSimulink.参数
对象。有关详细信息,请参阅将变量控制变量转换为Simulink.Parameter对象金宝app.
指定金宝appSimulink.参数
对象作为“块参数”对话框中的变量控制变量变型子系统块,然后模拟模型。在模拟过程中,线性控制器
变量选择变得活跃起来。
使用枚举类型为用作变量控制值的整数指定有意义的名称。您可以在存储位置中定义枚举类型的变量控制变量,如中所列变量条件表达式中变量控制变量(操作数)的存储位置.
考虑包含一个模型的模型变型子系统Block with two variant choices,线性控制器
和非线性控制器
子系统。
在基本工作区中,定义将枚举值映射到有意义名称的类。
在这里sldemo\u mrv\u控制器\u类型
是从内置数据类型派生的基于整数的枚举类,int32
.该类有两个枚举值,线性的
和非线性
.这些枚举值具有基础整数值0
和1
.
classdefsldemo_mrv_CONTROLLER_TYPE <仿金宝app真软件。IntEnumType枚举线性(1)非线性(2)结束结束
控件的块参数对话框中指定变量控制变量的名称变型子系统块。
定义金宝app仿真软件。变体Control
对象,电子控制
在基本工作区中,将其值指定为1
然后模拟模型。在模拟过程中,线性控制器
变量选择变得活跃起来。
E_Ctrl.Value=1
金宝app仿真软件。变体
变量块中用于变量条件重用的对象在确定您的模型需要的变量选择之后,您可以通过将变量条件定义为来构造复杂的变量条件来控制您的变量选择的激活金宝app仿真软件。变体
物体。金宝app仿真软件。变体
对象使您能够跨模型重用常见的变量条件,并帮助您封装复杂的变量条件表达式。
可以指定变量条件表达式的整个部分,也可以只指定类型条件表达式中的变量控制变量金宝app仿真软件。变体
.
请注意
您可以定义类型为的变量控制变量金宝app仿真软件。变体
仅在基本工作区或数据字典中。定义一个版本控制variable of type金宝app仿真软件。变体
不支持在掩码或模型工作区中。有关变量控制变量存储位置的更多信息,请参阅金宝app变量条件表达式中变量控制变量(操作数)的存储位置.
金宝app仿真软件。变体
结构内部不受支持。金宝app
考虑包含一个模型的模型变型子系统Block with two variant choices,线性控制器
和非线性控制器
子系统。
在基本工作区中,将变量控制表达式封装为金宝app仿真软件。变体
物体。
线性=Simu金宝applink.Variant(“V = = 1”);非线性模型。金宝app变体(“V = = 2”);
指定金宝app仿真软件。变体
对象作为“块参数”对话框中的变量控制变量变型子系统块。
的条件(只读)参数显示封装的变量条件。
定义金宝app仿真软件。变体Control
对象,V
在基本工作区中,将其值指定为1
然后模拟模型。在模拟过程中,线性控制器
变量选择变得活跃起来。
V.值=1;
使用这种方法,您可以开发可重用的复杂变量条件表达式。
Scalar MATLAB®变量允许您在构建模型时快速原型化变量值。它们帮助您更专注于构建变量值,而不是开发激活这些选择的表达式。
中列出的位置中可以定义标量控制变量变量条件表达式中变量控制变量(操作数)的存储位置.
在MATLAB编辑器中,将变量选择的最简单形式指定为标量变量金宝app仿真软件。变体V一个riable
对象。
vpObj =仿金宝app真软件。VariantVariable (“选择”, {'VCtrl==1', 1000,'VCtrl==2', 2000})
vpObj = VariantVariable with 2 choices: Condition Value __________ _____ VCtrl == 1 1000 VCtrl == 2 2000规格:使用getChoice, setChoice, addChoice, removeChoice访问,修改,添加或删除选项
通过定义控制变量激活一个变量值,VCtrl
,并将其值设置为1
在一个金宝app仿真软件。变体Control
对象此条件激活该值1000
并把这个值赋给vpObj
.
VCtrl =仿金宝app真软件。VariantControl (“价值”1.“ActivationTime”,“更新图表”)
VCtrl=VariantControl,属性:值:1 ActivationTime:“更新图表”
如果你改变VCtrl
到2
,S金宝appimulink®设置vpObj
到2000
.
VCtrl。V一个lue = 2;
如果要为包含可变参数值的模型生成代码,请将可变控制变量指定为MATLAB®变量或金宝appSimulink.参数
物体。金宝appSimulink.参数
对象允许您指定生成代码所需的其他属性(如数据类型)。
请注意:
您可以定义类型为的变量控制变量金宝appSimulink.参数
仅在基本工作区或数据字典中。定义金宝appSimulink.参数
不支持掩码或模型工作区中的变量类型。有关变量存储位置的详细信息,请参阅金宝app变量条件表达式中变量控制变量(操作数)的存储位置.
金宝appSimulink.参数
结构中的对象以及具有除金宝app模拟总线
对象不受支持。金宝app
在MATLAB编辑器中,定义一个金宝appSimulink.参数
对象。
VSSMODE=Si金宝appmulink.Parameter;VSSMODE.Value=1;VSSMODE.DataType=“int32”;VSSMODE.CoderInfo.StorageClass =“习俗”;VSSMODE.CoderInfo.CustomStorageClass =“导入定义”; VSSMODE.CoderInfo.CustomAttributes.HeaderFile=“rtwdemo_importedmacros.h”;
变量控制变量定义为金宝appSimulink.参数
对象可以具有以下存储类之一:
定义或导入定义
指定了头文件
编译滞后
SystemConstant
(AUTOSAR)
您自己的将数据定义为宏的存储类
还可以将标量变量控制变量转换为金宝appSimulink.参数
对象。有关详细信息,请参阅将变量控制变量转换为Simulink.Parameter对象金宝app.
控件将对象指定为变体控件金宝app仿真软件。变体V一个riable
对象。
vpObj =仿金宝app真软件。VariantVariable (“选择”,{'VCtrl==1', 1000,'VCtrl==2'2000});
通过定义控制变量来激活其中一个变量值VCtrl
并将其值设置为VSSMODE
在一个金宝app仿真软件。变体Control
对象此条件激活该值1000
并把这个值赋给vpObj
.
VCtrl =仿金宝app真软件。VariantControl (“价值”VSSMODE,“ActivationTime”,代码编译的)
VCtrl=具有以下属性的VariantControl:值:[1x1 Simulink.Paramete金宝appr]ActivationTime:“代码编译”
使用枚举类型为用作变量控制值的整数指定有意义的名称。
可以在存储位置中定义枚举类型的变量控制变量,如中所列变量条件表达式中变量控制变量(操作数)的存储位置.
在MATLAB®编辑器中,定义将枚举值映射到有意义名称的类。
在这里英格特
是从内置数据类型派生的基于整数的枚举类,int32
.该类有两个枚举值,小
和大的
.这些枚举值具有基础整数值1
和2
.
类型英式英语
< Simulink. classde金宝appf EngTypeIntEnumType枚举小(1) Big (2) end end
将名称指定为列表中的变量选项金宝app仿真软件。变体V一个riable
对象。
vpObj =仿金宝app真软件。VariantVariable (“选择”,{' VCtrl = = EngType。小的, 3.5,' VCtrl = = EngType。大的, 8.5})
vpObj = VariantVariable 2选择:条件值 ______________________ _____ VCtrl = = EngType。大8.5000 VCtrl == EngType。小3.5000规范:'' Use getChoice, setChoice, addChoice, removeChoice to access, modify, add or remove choices
通过定义控制变量来激活其中一个变量值VCtrl
并将其值设置为EngType。小
在一个金宝app仿真软件。变体Control
对象此条件激活该值3.5
并把这个值赋给vpObj
.
注意:对于带有'启动的
不支持指定枚举类型的值。金宝app
VCtrl =仿金宝app真软件。VariantControl (“价值”, EngType。小,“ActivationTime”,代码编译的)
VCtrl=VariantControl,属性:值:Small ActivationTime:“代码编译”
使用枚举类型简化了生成的代码,因为它包含值的名称而不是整数。
确定模型所需的变量值后,可以通过将变量条件定义为,构造复杂的变量条件来控制变量参数值的激活金宝app仿真软件。变体
物体。金宝app仿真软件。变体
对象使您能够跨模型重用常见的变量条件,并帮助您封装复杂的变量条件表达式。
请注意:
您可以定义类型为的变量控制变量金宝app仿真软件。变体
仅在基本工作区或数据字典中。定义金宝app仿真软件。变体
不支持掩码或模型工作区中的变量类型。有关变量存储位置的详细信息,请参阅金宝app变量条件表达式中变量控制变量(操作数)的存储位置.
金宝app仿真软件。变体
结构内部不受支持。金宝app
在MATLAB®编辑器中,将变量控制表达式封装为金宝app仿真软件。变体
物体。
LinearController=金宝appSimulink.Variant('VCtrl==1'); 非线性控制器=Simulink.Vari金宝appant('VCtrl==2');
指定金宝app仿真软件。变体
对象作为金宝app仿真软件。变体V一个riable
对象。
vpObj =仿金宝app真软件。VariantVariable (“选择”, {“LinearController”, 1000,“NonLinearController”2000})
vpObj=VariantVariable,有两个选项:条件值\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
通过定义控制变量激活一个变量值,VCtrl
,并将其值设置为线性控制器
在一个金宝app仿真软件。变体Control
对象此条件激活该值1000
并把这个值赋给vpObj
.
VCtrl =仿金宝app真软件。VariantControl (“价值”,1,“ActivationTime”,“更新图表”)
VCtrl=VariantControl,属性:值:1 ActivationTime:“更新图表”
使用这种方法,您可以开发可重用的复杂变量条件表达式。