使用变体子系统实现变化在不同的层次结构
这个例子展示了如何配置和使用一个变种子系统在仿真软件®。金宝app是一个分层的变体块不同子系统的块。块可以封装多个实现或系统组件的变化在一个单独的层次结构模型。变体子系统中的每个组件的变化代表块被称为一个选择。只有一个变体子系统内的变异选择块模型执行期间可以是活动的。您可以使用的组合子系统块,模型块,或子系统的参考块代表选择子系统块内的变体。
关于块及其参数的信息,请参阅变体子系统、变体模型变体装配子系统。
探索模型
打开模型
sldemo_variant_subsystems
。一个变种子系统,控制器
,封装了两个不同的系统中控制器组件的实现。
打开变体子系统,
控制器
。两个子系统块代表的两种可能的变化控制器
组件。第一个选择是一个线性控制器
第二个选择是一个非线性控制器
。请注意,没有画变体子系统内部的模块之间的连接块。金宝app仿真软件自动连接活跃变体的轮廓尺寸和外港块变体子系统块在模拟和禁用不活跃的港口。
打开块参数对话框
控制器
块。的变量的选择表列出了不同子系统的选择。中的每个变量的选择控制器
块与控制一个变体。在这里,变异控制仿真软件。金宝app不同的对象VSS_LINEAR_CONTROLLER
和VSS_NONLINEAR_CONTROLLER
。金宝app模型确定的积极选择变异的变异控制子系统通过评估所有的选择。当控制评估一个变体真正的
,仿金宝app真软件激活的变体选择对应版本控制和禁用不活跃的选择。因此,尽管每个变体的选择与控制一个变体有关,只有一个变量控制必须评估真正的
。这允许您选择交换活跃的和不活跃的子系统,无需修改模型结构的变体。
配置一个变体子系统
在这个模型中,控制器
变体子系统预配置有两个子系统,线性控制器
和非线性控制器
变体的选择。添加更多的变体子系统阻塞这个模型和配置,执行以下步骤:
添加一个变体子系统块模型使用模型库浏览器或快速块插入菜单和名称。金宝app这一块是变体选择的容器。
打开不同的子系统,双击。不同的子系统,在默认情况下,模板预配置有两个子系统模块来表示变量的选择。
变体子系统内,添加尺寸和外港块匹配的输入和输出变量子系统。
名字变体的选择。
请注意:
你只可以添加尺寸,外港,子系统,子系统模型,参考块内部子系统块一个变体。你可以通过控制信号通过数据端口。
如果你的变体选择不同数量的输入和输出端口,看看代表不同的选择有不同的接口。
当你添加一个变体子系统块模型,变体激活时间参数设置为
更新图
和传播条件子系统之外的变体参数设置为从
默认情况下。
类型的变体选择不同的子系统
您可以添加子系统、仿真软件模型和子系统引用变量选金宝app择在不同的子系统。
包括子系统块变体的选择
您可以添加一个子系统块作为一个变体选择的块不同子系统的参数对话框或使用仿真软件的操作栏编辑器子系统内部的变体。金宝app金宝app模型创建一个空子系统块与相同数量的输入和输出端口块包含变种子系统。
使用块参数对话框
打开块参数对话框不同子系统的块。变体子系统块上的徽章上单击右键并选择块参数(子系统)。
的变体选择的变体(表系统)在块参数对话框中显示了您所添加的变体的选择。您可以使用按钮左边的表添加或修改元素表。
包括一个子系统块作为一个新的变体选择子系统内部的变种,单击创建和添加一个新的子系统变体选择按钮选择表左边的变体。
打开新的子系统块并添加模型元素代表一个变体的选择。
b。使用操作栏
双击变体子系统。
拖出一个选择框在一个空的区域变体子系统内部的块。操作栏显示子系统插入选项是基于子系统的类型选择。
从操作栏,选择变体子系统的选择选择添加一个子系统。
打开新的子系统块并添加模型元素代表一个变体的选择。
请注意:
如果你的变体选择不同数量的输入和输出端口,看看代表不同的选择有不同的接口。
您可以使用有条件地执行子系统如启用,触发,重置,函数调用子系统变体子系统块中的变量选择。有关更多信息,请参见使用变体子系统模块,有条件地执行子系统。
原型变量时,您可以创建空子系统模块没有输入或输出子系统块内部的变体。空子系统再现了子系统是不活跃的情况下,不需要完全建模变量的选择。
包括仿真软件模型金宝app变量的选择
包括仿真软件模型(模型块)金宝app作为一种新的变体选择子系统内部的变种,单击创建并添加一个新的模型变体选择按钮选择表左边的变体。金宝app模型创建一个未解决的模型块不同子系统的块。
双击未解决的模型块。在模型名称框中,输入模型您希望使用的名称作为模型变量的选择并单击OK。
请注意:引用模型必须有相同数量的输入和输出端口的包含块变体子系统。如果你的模型有不同数量的输入和输出端口,看看代表不同的选择有不同的接口。
包括子系统引用变量的选择
包括子系统引用作为一个新的变体选择子系统内部的变种,添加一个子系统对比试块使用模型库浏览器或快速块插入菜单。金宝app金宝app模型创建一个空子系统子系统块参考块的变体。
双击子系统对比试块。块的参数对话框中,指定子系统框图文件并单击OK。
选择一个变量控制方式
你必须把模型中的每个变体的选择与控制,用来决定选择一个变体是积极或不活跃。你可以选择你想要的方式来指定变量控制使用变量控制方式块参数。的变量控制方式参数的控制器
在本例中设置为表达式
。在这种模式下,你可以指定一个选择的变量控制一个布尔条件表达式,仿真软件。金宝app变体对象,选择默认的变种,或一个空的选择。信息的控制模式,不同类型的变体块变异控制模式变体。
使用变量控制激活和变体之间切换选择
在这个模型中,每个选择的变量控制使用两个定义金宝appSimulink.Variant
对象,VSS_LINEAR_CONTROLLER
和VSS_NONLINEAR_CONTROLLER
。看到的定义金宝appSimulink.Variant
对象在这个模型中,点击模型设置> > PreLoadFcn模型属性回调。当你打开模型,PreLoadFcn
回调中运行并创建对象模型的基本工作空间。
一个金宝appSimulink.Variant
对象允许您封装一个布尔条件表达式,激活特定的变体选择当评估真正的
。您可以构建条件表达式控制变量使用一个或多个变种,它被定义为MATLAB®或变量金宝appSimulink.Parameter
基本工作空间中的对象或数据字典。在这个例子中,一个正常的MATLAB变量,VSS_MODE
,用于构建条件的表达式金宝appSimulink.Variant
对象。
关联的金宝appSimulink.Variant
对象,VSS_LINEAR_CONTROLLER
和VSS_NONLINEAR_CONTROLLER
的变体的选择控制器
布洛克:
在块参数对话框中,输入对象的名称变异控制表达式为每个选择列。
的条件列自动显示的布尔条件
金宝appSimulink.Variant
对象表示。
自VSS_MODE
被设置为2
,非线性控制器
在默认情况下被激活。积极的选择开关线性控制器
,设置VSS_MODE = 1
在基本工作空间和模拟模型中。
指定默认变量选择控制方式设置为:当变体表达式
最多,您可以指定一个变体选择的默认模式。金宝app仿真软件评价变量控制和确认只有一个变体的选择是活跃在模拟。如果没有版本控制评估为true,仿真软件使用金宝app默认的
变体的模拟和代码生成。设置一个变量作为默认选择,选择(默认)
关键字的变异控制表达式列的选择。
指定空变量的选择:如果你添加一个空的变体的选择,你可以指定一个变体活化条件的选择或注释掉条件通过将现有的变体%
符号前的状态。如果这个变体的选择是活跃在模拟,模型忽略了空变体的选择。金宝app然而,模型内继续执金宝app行块回调空变量的选择。
有关其他方面的信息来定义变量控制,明白了使用变量控制变量变异块。
选择一个变体激活时间
的变体激活时间您指定的变体子系统块决定阶段模型集的主动选择。金宝app这个参数也决定了活跃的和不活跃的选择参与模拟和代码生成工作流。
为控制器
块,这个参数设置为更新图
。所以,仿金宝app真软件设置活动选择的模型编译阶段和活动选择删除。当您执行模型,只有主动选择分析的一致性。生成的代码只包含积极的选择。有关其他变体激活时间的信息,明白了激活变体在不同阶段的模拟和代码生成工作流。
代表不同的选择有不同的接口
在这个例子中,这两个变量的选择,线性控制器
和非线性控制器
具有相同数量的输入和输出端口控制器
变体子系统。代表变体选择的块也可以有输入和输出端口不同数量的输入和输出端口的父块变体子系统。变体子系统块可以调整其接口基于底层块的主观能动性。这允许您模型组件的变化,没有类似的界面。在这种情况下,这些变体的选择必须满足的条件:
变体的选择必须有相同的港口变体子系统容器块或必须在集装箱港口的一个子集。
变体的选择必须有相同的外港的变体子系统容器块或必须在集装箱港口的一个子集。
如果变体子系统容器块控制端口,控制端口块的类型在所有变体的选择必须子系统块一样的变体。例如,您不能使用启用子系统和函数调用子系统模块子系统的一个变体块中的选择。变体子系统的控制端口块在其变体的选择和相应的控制端口必须具有相同的名称。例如,如果控制端口的名字变体子系统
fcn
,那么相应的控制端口的名称选择也必须在所有的变体fcn
。
例如,看到的变体自适应用户界面子系统。
允许零活跃变异控制子系统的变体
的允许控制零活跃的变体变体子系统的参数块决定是否允许模拟即使没有变异的选择是活跃的。当你选择这个选项,如果没有积极的变体的选择,仿真软件模拟该模型没有任何活跃的变体选择变体子系统。金宝app当你清晰的选择,模型生成一个错误当没有活跃的变体的选择金宝app。该参数只提供如果没有(默认)
变体选择子系统和如果你设置的变体变量控制方式来表达式
。
传播变异条件变体以外的子系统
在仿真中,仿真软件自动传播变异条件变体金宝app块模型的连接块,以确定哪些组件保持活跃。变体子系统,变异条件上定义的选择不传播默认变体子系统外块。为此,您可以设置传播条件子系统之外的变体变体子系统的参数块。
当您选择传播条件变体以外的子系统参数,仿真软件传播的变异条件底层块变体子系统容器块子系统可以调整其接口底层模块的状态。金宝app端口映射到活跃的港口选择变得活跃。端口映射到港口在不活跃的选择变得不活跃。选择这个选项可以确保组件之外的变体子系统是意识到活跃的和不活跃的状态子系统块内块的变体。有关更多信息,请参见传播变异条件变体以外的子系统。
转换为块变体子系统
在模型编辑器中金宝app,您可以将这些积木一块变体子系统:
子系统块
模型块
有条件地执行子系统
为此,右键单击块并在上下文菜单中单击子系统与子系统模型参考>转换为>变体。
你也可以将这些块转换成一个变种子系统块编程方式使用金宝appSimulink.VariantManager.convertToVariant
方法。
看到更多的
代码生成变种街区(嵌入式编码)
使用变体子系统生成的代码,使用C预处理器条件(嵌入式编码)