一个模型的组件金宝app®模型包含变异激活或不激活基于变体的选择,你选择。
模型中的每个变体的选择有关版本控制。变异控制确定哪些变量选择是活跃。通过改变变量的值控制,可以切换活动变体的选择。
虽然每个变体的选择与控制一个变体有关,只有一个版本控制可以评估真正的
。当控制评估一个变体真正的
,仿金宝app真软件激活的变体选择对应版本控制。
您可以指定控件类型的变体表达式
,标签
或sim codegen切换
块和变异参数建模变体。
您可以指定变量控制方式参数为:
表达式
——在表达式
模式,模型选金宝app择积极的变异基于变异条件的评估。当一个表达式计算条件真正的
选择变得活跃,相应的变体。当一个表达式计算条件假
选择变得不活跃,相应的变体。看到切换选择不同区块的使用条件表达式和变异参数。
标签
——在标签
模式,模型选金宝app择积极的变异基于名称的变体。版本控制是一个字符串,并且不需要在任何工作区创建变量。看到选择在变体使用标签之间切换。
sim codegen切换
——自动切换变异模拟和代码生成工作流没有创建任何工作空间变量,使用sim codegen切换
模式。当你模拟模型,模型自动选择金宝appsim卡
分支的主动选择。同样的,当你做一个Software-in-the-loop (SIL)或Processor-In-Loop(公益诉讼)模拟,生成代码,或使用外部模式,模型自动选择金宝appcodegen
分支。看到切换选择块模拟和代码生成工作流的变体。
在表达式
模式,模型选金宝app择积极的变异基于变异条件的评估。当一个表达式计算条件真正的
选择变得活跃,相应的变体。当一个表达式计算条件假
选择变得不活跃,相应的变体。
您可以使用表达式
控制类型的变体在变体块和变异参数。
指定块变体的变异条件表达式:
右键单击变体块徽章,选择块的参数,然后指定的变异条件表达式变异控制表达式参数块的参数对话框。
以编程方式,通过使用这个命令:
set_param (' set_param ('choiceName”、“VariantControl”、“= = 1”)
指定变量参数的变异条件表达式,使用金宝appSimulink.VariantVariable
对象。前更多信息,请参阅创建一个简单的变异参数模型。
版本控制可以:
布尔为快速成型条件表达式。例如,A + B
,A = =
,& & B
,等等。
一个金宝appSimulink.Variant
对象,该对象包含一个条件表达式条件重用。看到金宝appSimulink.Variant块对象变异条件重用变体和金宝appSimulink.VariantObjects for Variant Condition Reuse of Variant Parameters。
选择默认的变体如果没有选择评估真正的
。
在这里,一个
和B
是操作数称为不同的控制变量。+
,= =
,& &
运营商在条件表达式。条件表达式可以包含一个或多个这样的变异控制变量和运营商。支持的类型和信息存储位置的变异控制变量金宝app,看看控制变量类型的变体(操作数)的变异条件表达式和存储位置变异控制变量条件表达式(操作数)的变体。运营商的信息,请参阅运营商变异条件表达式。
请注意
你可以从模型模拟和生成代码包含一个变体块变量控制方式设置为表达式
模式。
在表达式
模式中,您可以指定变量控制变量的这些类型从选项使用原型时从模型生成代码所需选项。
规范 | 目的 | 例子 |
---|---|---|
金宝appSimulink.VariantControl |
关联变异激活时间 | = = 1 ,在那里一个 是一个金宝appSimulink.VariantControl 对象。看到不同控制变量对象关联一个激活时间变异块和快速原型的标量值变异参数。 |
标量变量 | 快速原型 |
请注意 标量变量变异控制变量变异参数不支持。金宝app |
金宝appSimulink.Parameter 对象 |
为代码生成生成预处理条件 | Vssmode = = 1 ,在那里Vssmode 是一个金宝appSimulink.Parameter 对象。看到的,金宝appSimulink.Parameter块对象与整数代码生成的变体和金宝appSimulink.ParameterObjects for Code Generation of Variant Parameters。 |
金宝app仿真软件枚举 | 提高代码的可读性,因为条件值表示为有意义的名字,而不是整数 | 水平= = Level.Advanced ,在那里水平 是一个基于整数枚举类和先进的 枚举值。看到的,枚举类型来改善代码的可读性变体和枚举类型参数来改善代码的可读性变体。 |
金宝appSimulink.Variant 对象 |
重用条件变体 | LinearController = = 1 ,在那里LinearController 是一个金宝appSimulink.Variant 对象,该对象封装了条件表达式燃料= = 2 & &工作= = 1 。看到的,金宝appSimulink.Variant块对象变异条件重用变体和金宝appSimulink.VariantObjects for Variant Condition Reuse of Variant Parameters。 |
您可以定义变量控制变量根据您的需求在不同的存储位置。
请注意
变体块中的所有变量控制变量或变量参数必须源自相同的存储位置。
定义变量控制变量:
在 | 来 | 金宝app控制变量(见支持类型的变体控制变量类型的变体(操作数)的变异条件表达式) | 的更多信息 |
---|---|---|---|
基本工作空间 | 时存储变量与临时模型实验 | 标量变量,金宝appSimulink.VariantControl ,金宝appSimulink.Variant ,金宝appSimulink.Parameter ,枚举类型 |
临时数据:基本工作空间 |
面具的工作区 | 永久存储数据的局部块的面具。 | 标量变量,金宝appSimulink.VariantControl ,枚举类型 |
方法控制活跃变体选择的一个变体块工作区使用面具或模型 |
模型的工作空间 | 永久存储数据是本地的一个模型 | 标量变量,金宝appSimulink.VariantControl ,枚举类型 |
方法控制活跃变体选择的一个变体块工作区使用面具或模型 |
数据字典 | 永久存储全局数据模型之间的数据共享,并跟踪数据所做的更改。 | 标量变量,金宝appSimulink.VariantControl ,金宝appSimulink.Variant ,金宝appSimulink.Parameter ,枚举类型 |
什么是数据字典? |
为每个存储位置的功能和优势,明白了确定在哪里存储变量和对象模型模型金宝app
变异条件表达式可以包含MATLAB®运营商提供的表达式的求值结果为一个布尔值。
的表达式
模式支持金宝app更新图
,更新图分析所有的选择
,代码编译
,启动
激活时间。有关变量的更多信息激活时间,明白了激活变体在不同阶段的模拟和代码生成工作流。
金宝app活跃在仿真模型确定模型组件的过程变异条件下传播。这个过程评估变体上指定的变量控制块和自动传播的变异条件连接块。变异条件可以通过信号线路传播,巴士和函数调用到其他块模型。失活过程与活动相关联的模型组件的选择,他们不参与模拟。你可以停止条件传播模型中定义区域变体。
您可以使用条件传奇传播形象化变异条件变体,激活每个变体的选择。金宝app动态仿真模块注释模型组件如果有条件变体,和变异条件传说显示条件,对应于每个注释。
有关更多信息,请参见变异条件下传播概述。
在标签
模式,模型选金宝app择积极的变异基于名称的变体。版本控制是a字符串
并且不需要你创建变量在任何工作区。
指定标签变体选择的块,右键单击变体块徽章,选择块的参数,然后指定的标签变异控制标签参数块的参数对话框。
请注意
你不能联系标签
控制一个变量参数类型的变体。
在标签
模式,激活时间设置为变量的块更新图
默认情况下。换句话说,当您模拟模型,模型确定活动的模型中选择编译阶段和生成的代码只选择。金宝app看到的,激活变体在不同阶段的模拟和代码生成工作流。
你只能模拟模型包含块与一个变体变量控制方式设置为标签
模式。不支持代码生成。金宝app
你可以按照这些方法积极的选择标签
模式:
指定一个名称为每个变体的选择变异控制标签变体块的参数对话框。列出了所有您所指定的名称标签模式积极的选择下拉。从列表中选择的标签成为活动的选择。
右键单击变体块上的徽章和选择标签模式积极的选择。
的面具工作区变体使用初始化代码块。面具的主动选择你指定初始化代码覆盖您指定使用的积极选择标签模式积极的选择下拉或标签模式积极的选择菜单项。有关更多信息,请参见面具一个变种子系统。
以编程方式,通过使用这个命令:
set_param (blockName,“LabelModeActiveChoice”、“variantChoiceLabel”)
自动切换选择模拟和代码生成工作流没有创建任何工作空间变量,使用sim codegen切换
变量控制方式。
为变量指定模拟和代码生成分支选择,右键单击变体块徽章,选择块的参数,然后指定(sim)
和(codegen)
关键字的变异控制开关参数块的参数对话框。
当你模拟(正常、加速器、快速加速器)模型,模型自动选择金宝app(sim)
分支的主动选择。同样的,当你做一个Software-in-the-loop(银),Processor-In-Loop(公益诉讼)模拟或生成代码或使用外部模式,模型自动选择金宝app(codegen)
分支。生成的代码只有在积极的选择。不活跃的选择是不包括在生成的代码中。在这种模式下,你可以在变种最多只有两个选择。
请注意
你不能联系sim codegen切换
控制一个变量参数类型的变体。
在sim codegen切换
模式,只有更新图
和更新图分析所有的选择
激活时间支持。金宝app换句话说,当你模拟或生成代码从一个模型,模型确定活动的模型中选择编译阶段和生成的代码只选择。金宝app看到的,激活变体在不同阶段的模拟和代码生成工作流。
这个表解释不同的变体控制模式的功能来帮助你选择一个满足您的需求。
变量控制方式 | 功能 |
---|---|
|
使用
|
|
使用
|
|
使用
|
不同变体激活时间的可用性取决于的类型变量控制方式你指定。变体激活时间决定模型集的时候主动选择。金宝app变体激活时间也决定了哪些变化包括在生成的代码中。有关变量的更多信息激活时间,明白了激活变体在不同阶段的模拟和代码生成工作流。
这个表解释了变体激活时间控制方式由每个变体。金宝app
变体激活时间 | ||||
---|---|---|---|---|
变量控制方式 | 更新图 |
更新图分析所有的选择 |
代码编译 |
启动 |
表达式 |
✓ | ✓ | ✓ | ✓ |
标签 |
✓ | x | x | x |
sim codegen切换 |
✓ | ✓ | x | x |
本节解释如何使用不同类型的变体控制变量变异条件表达式。
金宝appSimulink.VariantControl
对象允许您将一个变体激活时间与控制变量的一个变体。您可以定义金宝appSimulink.VariantControl
类型的控制变量存储位置中列出存储位置变异控制变量条件表达式(操作数)的变体。
考虑一个模型,该模型包含了一个不同的子系统块和两个变体的选择,线性控制器
和非线性控制器
子系统。
块的参数对话框不同的子系统块,指定变量控制,V = = 1
和V = = 2
。
在基本工作空间,定义一个变量控制变量对象,V
,使用金宝appSimulink.VariantControl
设置它的值1
,然后模拟模型。在模拟过程中,线性控制器
变体的选择变得活跃。
V = 金宝appSimulink.VariantControl (“价值”1 ActivationTime“更新图分析所有的选择”)
请注意
的变体激活时间您指定的块覆盖参数对话框ActivationTime
你指定的金宝appSimulink.VariantControl
对象。
同样的,如果你改变的价值V
来2
,非线性控制器
变体的选择变得活跃。
V。V一个lue = 2;
标量MATLAB变异控制变量允许您快速原型变体的选择当你还构建模型。他们帮助你更加关注建筑变体的选择比在发展中激活这些选择的表达式。您可以定义标量控制变量存储位置中列出存储位置变异控制变量条件表达式(操作数)的变体。
考虑一个模型,该模型包含了一个不同的子系统块和两个变体的选择,线性控制器
和非线性控制器
子系统。
块的参数对话框不同的子系统块,指定变量控制在其最简单的形式作为标量变量,V = = 1
和V = = 2
。
在基本工作空间,定义一个变量控制变量,V
设置它的值1
,然后模拟模型。在模拟过程中,线性控制器
变体的选择变得活跃。
V = 1;
同样的,如果你改变的价值V
来2
,非线性控制器
变体的选择变得活跃。
V = 2;
金宝appSimulink.Parameter
块对象与整数代码生成的变体如果您打算为模型生成代码包含变量的选择,指定变量作为控制变量金宝appSimulink.Parameter
对象。金宝appSimulink.Parameter
对象允许您指定的其他属性(比如数据类型)生成代码所必需的。
请注意
您可以定义一个变量控制变量的类型金宝appSimulink.Parameter
只有在基本工作空间或在数据字典。定义一个变量控制变量的类型金宝appSimulink.Parameter
在面罩或不支持模型的工作区。金宝app为控制变量存储位置变量的更多信息,见存储位置变异控制变量条件表达式(操作数)的变体。
金宝appSimulink.Parameter
以外的对象的内部结构和数据类型金宝appSimulink.Bus
不支持对象。金宝app
考虑一个模型,该模型包含了一个不同的子系统块和两个变体的选择,线性控制器
和非线性控制器
子系统。
在定义一个基本工作空间金宝appSimulink.Parameter
对象,VssMode
。
VssMode = 金宝appSimulink.Parameter;VssMode。V一个lue = 1; VssMode.DataType =“int32”;VssMode.CoderInfo。StorageClass =“自定义”;VssMode.CoderInfo。CustomStorageClass =“ImportedDefine”;VssMode.CoderInfo.CustomAttributes。HeaderFile =“rtwdemo_importedmacros.h”;
变量定义为控制变量金宝appSimulink.Parameter
对象可以有一个这样的存储类:
定义
或ImportedDefine
指定头文件
CompilerFlag
SystemConstant (AUTOSAR)
自己的存储类,它定义了数据作为一个宏
关于这些存储类的更多信息,见选择存储类数据表示控制生成的代码(金宝app仿真软件编码器)。
你也可以一个标量变量控制变量转换成一个金宝appSimulink.Parameter
对象。有关更多信息,请参见不同控制变量转换成仿真软件。金宝app参数对象。
指定金宝appSimulink.Parameter
对象作为块中的变量控制变量参数的对话框不同的子系统块,然后模拟模型。在模拟过程中,线性控制器
变体的选择变得活跃。
使用枚举类型给整数有意义的名称作为变量值的控制。您可以定义枚举类型的变量控制变量的存储位置中列出存储位置变异控制变量条件表达式(操作数)的变体。
考虑一个模型,该模型包含了一个不同的子系统块和两个变体的选择,线性控制器
和非线性控制器
子系统。
在基本工作空间中,定义的类枚举值映射到有意义的名称。
在这里,sldemo_mrv_CONTROLLER_TYPE
是一个基于整数枚举类,它来源于内置的数据类型,int32
。这个类有两个枚举值,线性
和非线性
。这些枚举值有潜在的整数值0
和1
。
classdefsldemo_mrv_CONTROLLER_TYPE < 金宝appSimulink.IntEnumType枚举线性(1)非线性(2)结束结束
块中指定的名称作为变量控制变量参数的对话框不同的子系统块。
定义金宝appSimulink.VariantControl
对象,E_Ctrl
在基本工作空间,指定它的价值1
然后模拟模型。在模拟过程中,线性控制器
变体的选择变得活跃。
E_Ctrl.Value = 1
金宝appSimulink.Variant
块对象变异条件重用变体后识别你的模型需要的变体的选择,您可以构建复杂的变异条件控制激活你的变体的选择条件,通过定义变体金宝appSimulink.Variant
对象。金宝appSimulink.Variant
对象允许您跨模型和重用常见变异条件帮助你封装复杂的变异条件表达式。
您可以指定整个只变异条件表达式或变量控制变量在条件表达式的类型金宝appSimulink.Variant
。
请注意
您可以定义一个变量控制变量的类型金宝appSimulink.Variant
只有在基本工作空间或在数据字典。定义一个变量控制变量的类型金宝appSimulink.Variant
在面罩或不支持模型的工作区。金宝app为控制变量存储位置变量的更多信息,见存储位置变异控制变量条件表达式(操作数)的变体。
金宝appSimulink.Variant
在不支持结构。金宝app
考虑一个模型,该模型包含了一个不同的子系统块和两个变体的选择,线性控制器
和非线性控制器
子系统。
在基本工作空间,控制表达式作为封装变体金宝appSimulink.Variant
对象。
线性= Sim金宝appulink.Variant (“V = = 1”);非线性= Simul金宝appink.Variant (“V = = 2”);
指定金宝appSimulink.Variant
对象作为块中的变量控制变量参数的对话框不同的子系统块。
的条件(只读)参数显示封装条件变体。
定义金宝appSimulink.VariantControl
对象,V
在基本工作空间,指定它的价值1
然后模拟模型。在模拟过程中,线性控制器
变体的选择变得活跃。
V。V一个lue = 1;
使用这种方法,您可以开发复杂的变异条件表达式是可重用的。
MATLAB®标量变量允许您快速原型变量值时仍在构建模型。他们帮助你更加关注建筑变体的价值观比发展中激活这些选择的表达式。
您可以定义标量控制变量中列出的位置存储位置变异控制变量条件表达式(操作数)的变体。
在MATLAB编辑器中,指定变体选择标量变量在最简单的形式金宝appSimulink.VariantVariable
对象。
vpObj = 金宝appSimulink.VariantVariable (“选择”,{“VCtrl = = 1”,1000,《VCtrl = = 2》2000})
vpObj = VariantVariable 2选择:条件值__________ _____ VCtrl = = 1 1000 VCtrl = = 2 2000规范:“使用getChoice、setChoice addChoice, removeChoice访问,修改、添加或删除选项
激活一个变量值通过定义一个控制变量,VCtrl
,并设置它的值1
在一个金宝appSimulink.VariantControl
对象。这个条件激活的价值1000年
和分配这个值vpObj
。
VCtrl = 金宝appSimulink.VariantControl (“价值”,1“ActivationTime”,“更新图”)
VCtrl = VariantControl属性:值:1 ActivationTime:“更新图”
如果你改变的价值VCtrl
来2
,仿金宝app真软件®设置的值vpObj
来2000年
。
VCtrl。V一个lue = 2;
如果您打算为模型生成代码包含变异参数值,指定变量控制MATLAB®变量或变量金宝appSimulink.Parameter
对象。金宝appSimulink.Parameter
对象允许您指定的其他属性(比如数据类型)生成代码所必需的。
请注意:
您可以定义一个变量控制变量的类型金宝appSimulink.Parameter
只有在基本工作空间或在数据字典。定义金宝appSimulink.Parameter
面具或模型中的控制变量类型的变体工作区不支持。金宝app为控制变量存储位置变量的更多信息,见存储位置变异控制变量条件表达式(操作数)的变体。
金宝appSimulink.Parameter
以外的对象的内部结构和数据类型金宝appSimulink.Bus
不支持对象。金宝app
在MATLAB编辑器中,定义一个金宝appSimulink.Parameter
对象。
VSSMODE = 金宝appSimulink.Parameter;VSSMODE。V一个lue = 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
对象。有关更多信息,请参见不同控制变量转换成仿真软件。金宝app参数对象。
指定对象作为变异控制使用金宝appSimulink.VariantVariable
对象。
vpObj = 金宝appSimulink.VariantVariable (“选择”,{“VCtrl = = 1”,1000,《VCtrl = = 2》2000});
激活一个变量值通过定义一个控制变量VCtrl
并将它的值设置为VSSMODE
在一个金宝appSimulink.VariantControl
对象。这个条件激活的价值1000年
和分配这个值vpObj
。
VCtrl = 金宝appSimulink.VariantControl (“价值”VSSMODE,“ActivationTime”,代码编译的)
VCtrl = VariantControl属性:价值:[1 x1仿真软件。金宝app参数]ActivationTime:代码编译的
使用枚举类型给整数有意义的名称作为变量值的控制。
您可以定义枚举类型的变量控制变量的存储位置中列出存储位置变异控制变量条件表达式(操作数)的变体。
在MATLAB®编辑器中,定义类,枚举值映射到有意义的名称。
在这里,EngType
是一个基于整数枚举类,它来源于内置的数据类型,int32
。这个类有两个枚举值,小
和大
。这些枚举值有潜在的整数值1
和2
。
类型EngType.m
classdef EngType <仿金宝app真软件。在tEnumType enumeration Small (1) Big (2) end end
选择在一个指定名称的变体金宝appSimulink.VariantVariable
对象。
vpObj = 金宝appSimulink.VariantVariable (“选择”,{“VCtrl = = EngType.Small”,3.5,“VCtrl = = EngType.Big”,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.Small
在一个金宝appSimulink.VariantControl
对象。这个条件激活的价值3.5
和分配这个值vpObj
。
注意:对于控制变量对象的一种变体启动的
激活时间,不支持指定枚举类型的值。金宝app
VCtrl = 金宝appSimulink.VariantControl (“价值”EngType.Small,“ActivationTime”,代码编译的)
VCtrl = VariantControl属性:价值:小ActivationTime:代码编译的
使用枚举类型简化生成的代码,因为它包含的名称值而不是整数。
识别模型需要的变量值之后,您可以构建复杂的变异条件控制激活你的变异参数值通过定义变量条件金宝appSimulink.Variant
对象。金宝appSimulink.Variant
对象允许您跨模型和重用常见变异条件帮助你封装复杂的变异条件表达式。
请注意:
您可以定义一个变量控制变量的类型金宝appSimulink.Variant
只有在基本工作空间或在数据字典。定义金宝appSimulink.Variant
面具或模型中的控制变量类型的变体工作区不支持。金宝app为控制变量存储位置变量的更多信息,见存储位置变异控制变量条件表达式(操作数)的变体。
金宝appSimulink.Variant
在不支持结构。金宝app
在MATLAB®编辑器中,封装变异控制表达式金宝appSimulink.Variant
对象。
LinearController 金宝app= Simulink.Variant (“VCtrl = = 1”);NonLinearController 金宝app= Simulink.Variant (《VCtrl = = 2》);
指定金宝appSimulink.Variant
控制在一个对象的变体金宝appSimulink.VariantVariable
对象。
vpObj = 金宝appSimulink.VariantVariable (“选择”,{“LinearController”,1000,“NonLinearController”2000})
vpObj = VariantVariable 2选择:条件值___________________ _____ LinearController 1000 NonLinearController 2000规范:“使用getChoice、setChoice addChoice, removeChoice访问,修改、添加或删除选项
激活一个变量值通过定义一个控制变量,VCtrl
,并设置它的值LinearController
在一个金宝appSimulink.VariantControl
对象。这个条件激活的价值1000年
和分配这个值vpObj
。
VCtrl = 金宝appSimulink.VariantControl (“价值”,1“ActivationTime”,“更新图”)
VCtrl = VariantControl属性:值:1 ActivationTime:“更新图”
使用这种方法,您可以开发复杂的变异条件表达式是可重用的。