定义、配置和激活变体子系统块中的变体选择
在一个可变子系统中表示不同的选择
变体选择是模型中组件的两个或多个配置。实例中显示了如何表示变量选择不同的子系统块。一个不同的子系统块允许您使用的组合子系统,模型,或子系统的参考块作为变量选择。有关表示设计变体的其他方法,请参见Simulink中的变量类型.
添加一个不同的子系统块到您的模型,并命名块。
这个块作为变量选择的容器。
双击不同的子系统块。添加轮廓尺寸而且外港控件的输入和输出相匹配不同的子系统块。
打开块参数对话框。控件上的徽章右键单击不同的子系统块和选择块参数(子系统).
提示
上的所有参数的信息不同的子系统块,看不同子系统,不同模型.
的变量的选择块参数对话框中的变量选项不同的子系统.可以使用表左侧的按钮在表中添加或修改元素。
行动 按钮 创建并添加一个新的子系统选择:创建一个新的子系统块作为一个变体选择,并为表中的新选择添加一个条目。 创建并添加一个新的模型变量选择:创建一个新的模型块作为一个变体选择,并为表中的新选择添加一个条目。 创建/编辑选定的变量对象:创建或编辑
仿真软件。变体
对象中指定变量条件仿真软件。变体
对象参数对话框。请注意
对于使用基本工作区的模型,此操作将创建
仿真软件。变体
对象,该对象仅对当前MATLAB会话可用。若要永久存储数据,请将对象保存在MAT文件或MATLAB脚本中。打开所选变量选择块:打开所选行对应的子系统块。 从Variant子系统内容刷新对话框信息:更新变量的选择表根据变量选择和变量控件的值在全局工作空间。
包括子系统块作为变量选择
包括子系统块作为变量选择不同的子系统:
在块参数对话框中,单击按钮,用于您想添加的每个变体子系统选择。
动态仿真模块®创建空子系统控件中的不同的子系统块。新块具有与包含块相同数量的输入和输出端口不同的子系统块。
提示
如果您的变体选择具有不同数量的输入和输出端口,请参见在变型子系统中映射变型选择的输入和输出.
打开每个子系统块并创建表示变体选择的模型。
当你创建原型变量时,你可以创建空的子系统控件中没有输入或输出的不同的子系统块。空子系统重新创建了一个子系统不活跃的情况,而不需要对变量进行完全建模。对于空的变量选择,要么指定一个变量激活条件,要么通过放置
%
条件前的符号。如果在编译期间空变量选择是活动的,Simulink将忽略它。
包括动态仿真模块作为变量选择的模型
控件中可以包含一个Simulink模型作为变体选择不同的子系统块。
创建一个您想要包括作为一个变体选择的模型。确保它具有与包含的相同数量的输入和输出端口不同的子系统块。
请注意
如果您的模型有不同数量的输入和输出端口,请参见在变型子系统中映射变型选择的输入和输出.
在模型中,右键单击不同的子系统块,包含不同的选项和选择块参数(子系统).
在块参数对话框中,单击按钮,以添加模型块作为一个变体选择。
Simulink创造了一个未解决的问题模型块不同的子系统块。
双击未解决的模型块。在模型名称框中,输入要用作模型变量选择的模型的名称,然后单击好吧.
配置变量控制
您可以使用变量控件指定激活变量选择的条件。虽然模型中的每个变量选择都与一个变量控制相关联,但只有一个变量控制可以计算到真正的
.您也可以指定最多一个变量选项作为默认值。
控件选择要在其中指定变体控件的模式变型控制方式参数。本例使用表达式
模式。在这里,我们将变量控件指定为包含普通MATLAB的布尔条件表达式®在模型的基本工作区中定义的变量。
在MATLAB命令窗口中,指定组合时创建激活条件的变量控制变量。
Mode = 3;版本= 2;
右键单击不同的子系统块,它是模型中变量选择的容器块参数(子系统).
在块参数对话框中,在版本控制列,选择
(默认)
这是一个选择。为其他每个选项指定不同的条件。如果使用空变量选项,请为该选项指定变量条件,或通过放置
%
条件前的符号。Simulink评估变量控件,并验证在仿真过程中只有一个变量选择是活动的。如果没有一个变量控件求值为
真正的
, Simulink使用(默认)
用于模拟和代码生成的变体。如果允许零主动变量控制被选中时,您可以在不同的子系统.选择此选项且没有活动变量选择时,Simulink将在没有任何活动变量选择的情况下模拟模型不同的子系统.当不存在时,此参数有效
(默认)
不同的选择不同的子系统如果你设置变型控制方式来表达式
.点击应用以保存更改。
在变型子系统中映射变型选择的输入和输出
一个不同的子系统块允许您使用的组合子系统,模型,或子系统的参考块作为变量选择。输入不同的子系统块从上游模型组件接收映射到变量选择的输入和输出端口。
表示不同选择的块可以具有输入和输出端口,这些端口的数量与父模块中的输入和输出端口不同不同的子系统块。但是,必须满足以下条件:
变量选项的导入集必须与不同的子系统容器块或者它必须是容器块上端口的子集。
变量选项的输出端口集必须与不同的子系统容器块或者它必须是容器块上端口的子集。
如果不同的子系统容器块有控制端口:
所有变体选项中的控制端口块类型必须与不同的子系统块。例如,你不能使用启用子系统而且函数调用子系统控件中的选项不同的子系统块。
的控制端口不同的子系统块及其对应的控制端口上的变体选择必须具有相同的名称。例如,控制端口的名称不同的子系统是
fcn
,则对应的控制端口的名称对其所有变体的选择也必须为fcn
.
在模拟过程中,Simulink将禁用控件中的非活动端口不同的子系统块。
转换为变体子系统块
在Simulink编辑器中,您可以将这些块转换为不同的子系统布洛克:
子系统块
模型块
变体模型块(用于在R2017b之前的版本中创建的模型)
有条件执行的子系统
为此,右键单击块。然后,在上下文菜单中单击子系统和模型参考>转换为>不同的子系统.
您还可以将这些块转换为不同的子系统块以编程方式。要做到这一点,可以使用以下语法:
例如:
目录fullfile (matlabroot“例子”,“simulink_variants”,“主要”));open_system(“sldemo_variant_subsystems”);Simulink.VariantManager.convertToVariant(“sldemo_variant_subsystems /控制器”);
如果将不同的模型转换为不同的子系统,请注意模型块参数生成预处理器条件不同于不同的子系统块参数变体激活时间.对于不同的模型,启用生成预处理器条件参数导致模拟和更新关系图只编译活动变量。对于变体子系统,启用该参数将编译所有变体,从而降低仿真和更新的速度。
将不同的模型转换为不同的子系统可能要求您更新使用变体
命令行参数。