Variant Assembly Component
Variant Assembly Component 模块是一个模板,允许您从外部源添加或删除其变体选择项,而无需修改模型。一个 Variant Assembly Component 模块可以包含 Model 模块、Subsystem Reference 模块或两者作为其变体选择项。您可以在模块参数对话框中指定变体选择项的来源,然后修改来源以从模块中添加或删除变体选择项。与 Variant Component 不同,您无法在 Variant Assembly Component 模块中添加内嵌组件作为变体选择项。
Variant Assembly Component 模块在 System Composer™ 架构模型库的组件列表中不可用。要访问其功能,您必须将 Variant Component 模块转换为 Variant Assembly Component 模块。有关详细信息,请参阅将 Variant Component 转换为 Variant Assembly Component。Variant Assembly Component 与 Simulink® 中的 Variant Assembly Subsystem 模块相同。
注意
软件架构和 AUTOSAR 架构不支持从 Variant Component 到 Variant Assembly Component 的转换。
使用外部文件添加或删除 Variant Assembly Component 模块的变体选择项
Variant Assembly Component 模块可使用 Model 模块、Subsystem Reference 模块或两者作为其变体选择项。变体选择项保存在位于 MATLAB® 路径下的单独模型和子系统文件中。您可以在不修改模型的情况下,从 Variant Assembly Component 模块中添加或删除变体选择项。您可以使用外部源(如枚举类或 MATLAB 函数)来管理 Variant Assembly Component 模块的变体选择项。与使用 Variant Component 模块不同,您无需在 Variant Assembly Component 模块中导航来添加或删除模块中的变体选择项。有关详细信息,请参阅 Variant Component 中的 Variant Assembly Component。此示例说明如何在标签和表达式模式下操作 Variant Assembly Component 模块的变体选择项。
打开模型
模型 slexVariantAssemblyComponent
包含两个 Variant Assembly Component 模块,一个为标签模式 Controller1
,另一个为表达式模式 Controller2
.
在此示例中,vacLinearController1
and vacLinearController2
为模型引用模块。vacNonLinearController1
and
vacNonLonlinearController2
是 Subsystem Reference 模块。这些选择将作为子系统或模型文件保存在当前工作文件夹中。
systemcomposer.openModel('slexVariantAssemblyComponent.slx');
在标签模式下操作 Variant Assembly Component 模块的变体选择项
要向 Controller1
模块添加变体选择项,请右键点击模块图标上的变体徽章,然后选择模块参数。在 Variant choices specifier 参数中指定此 MATLAB 表达式。
{'*Controller*'}
探索 Controller1
模块,观察添加到 Controller1
模块的四个变体选择项 vacLinearController1
、vacLinearController2
、vacNonLinearController1
和 vacNonLinearController2
。新添加的变体选择项的文件名和路径显示在引用选项卡中的变体选择项表中。
从标签模式活动选择项中选择 vacLinearController1
,然后对模型进行仿真。请注意,vacLinearController1
选择项已激活。
您可以按照 Specify Variant Choices of Variant Assembly Subsystem Block in Variant Choices Specifier Parameter 中所述修改变体选择项设定表达式参数中的表达式,然后再次仿真模型。
在表达式模式下操作 Variant Assembly Component 模块的变体选择项
使用枚举将 vacLinearController1
和 vacNonLinearController1
模块作为选择项添加到 Controller2
模块中。探索 Controller2
模块,观察两个变体选择项 vacLinearController1
和 vacNonLinearController1
已添加到 Controller2
模块中。
要配置 Controller2
模块,请在“模块参数”对话框中将变体控制项变量参数设置为 'V'
,将变体选择项枚举参数设置为 ControllersEnum
。有关如何定义枚举的详细信息,请参阅Manipulate Variant Choices of Variant Assembly Subsystem Block in Expression Mode。
mdl = 'slexVariantAssemblyComponent'; open_system(mdl) vacBlkPath = [mdl,'/Controller2'];
要配置 Controller
模块,请在“模块参数”对话框中将变体控制项变量参数设置为 variantCtrlVar
,将变体选择项枚举参数设置为 controllerTypesMFile
。
set_param(vacBlkPath, 'VariantChoicesEnumeration','ControllersEnum') set_param(vacBlkPath, 'VariantControlVariable','V')
要激活 vacLinearController1
选择,请将 'V'
设置为 ControllersEnum.vacLinearController1
,然后仿真模型。在仿真过程中,V == ControllersEnum.vacLinearController1
表达式的值为 true
。随后,vacLinearController1
选择项变得可用。
V = ControllersEnum.vacLinearController1; sim(mdl);
同样,要激活 vacNonLinearController1
选择,将 'V'
设置为 ControllersEnum.vacNonLinearController1
,然后再次仿真模型。
V = ControllersEnum.vacNonLinearController1; sim(mdl);
将 Variant Component 转换为 Variant Assembly Component
Variant Assembly Component 模块允许您从外部源添加或删除其变体选择项,而无需修改模型。Variant Assembly Component 模块可以包含 Model 模块、子系统引用 模块或两者作为其变体选择项。这些选择保存在位于 MATLAB® 路径下的相应模型或子系统文件中。
注意
软件和 AUTOSAR 架构模型不支持将 Variant Component 转换为 Variant Assembly Component。
以交互方式将 Variant Component 转换为 Variant Assembly Component
考虑架构模型画布中的一个 Variant Component 模块,其变体选择项为模型引用或子系统引用或 Simulink® 模型,且处于 label
或 expression
模式,需要转换为 Variant Assembly Component 模块。有关将 Variant Component 交互式转换为 Variant Assembly Component 的步骤的详细信息,请参阅 Convert Variant Subsystem Block with Expressions to Variant Assembly Subsystem Block Interactively 和 Convert Variant Subsystem Block with Labels to Variant Assembly Subsystem Block Interactively。
以编程方式将 Variant Component 转换为 Variant Assembly Component
要使用 systemcomposer.arch.VariantComponent
对象的 makeVariantAssembly
函数将 Variant Component 模块转换为 Variant Assembly Component 模块,请参阅 makeVariantAssembly
。
另请参阅
模块
对象
函数
addChoice
|addVariantComponent
|getActiveChoice
|getChoices
|getCondition
|makeVariant
|makeVariantAssembly
|setActiveChoice
|setCondition
|updatePortsFromChoices