主要内容

本页采用了机器翻译。点击此处可查看英文原文。

变体组件

变体组件定义架构模型的一部分,其中可以存在多个变体选择项或变体。变体是变体组件中众多结构或行为选择项之一。每个变体代表子系统的不同设计配置。您可以在单个架构模型中为任何组件建模变体选择项。您可以将变体选择项定义为由 Simulink® 模型定义的行为与由 System Composer™ 架构模型定义的架构的组合。例如,一个组件可以有三个变体选择项,包括两个替代结构分解和一个替代 Simulink 行为。

例如,假设您要仿真一个代表具有三种可能发动机配置的车辆的模型:4 缸汽油发动机、6 缸汽油发动机和 8 缸汽油发动机。您可以使用 System Composer 架构模型将每个引擎模型作为单独的变体选择项在 Variant Component 模块中实现。您可以使用架构模型来表示 4 缸汽油和 6 缸汽油发动机配置,并使用 Simulink 行为来表示 8 缸汽油配置。

在执行分析时,使用变体可快速切换组件的不同架构设计变体控制项通过确定活动的变体选择项,提供交换不同架构设计的能力。

变体控制

变体控件可以在两种模式下运行:标签表达式模式。

表达式模式下,System Composer 根据对变体条件表达式的计算选择活动变体。架构模型中的每个变体选择项都与一个变体控制表达式相关联,该表达式使用一个公共变体控制变量。变量的值可以在运行时从任何工作区更改,从而确定变体控制表达式的结果,并由此确定活动选择项。当与变体选择项相关的变体控制表达式评估为 true 时,System Composer 将激活该变体选择项。当变体控制表达式评估为 false 时,System Composer 将停用相应的变体。一次只能有一个变体控制表达式评估为 true

标签模式下,System Composer 根据变体名称选择活动变体。变体控制是一个字符串,无需在任何工作区中定义变量。

此表可帮助您决定对变体组件使用哪种变体控制模式。

变体控制模式用法
expression

使用 expression 模式来:

  • 从基础工作区、模型工作区或数据字典中控制活动选择项。每个源都定义了一个可见性范围,您可以借此为不同范围中的变体高效地设置不同的活动选择项。

  • 允许可选变体选择项的存在,这意味着您可以配置架构模型,在仿真运行期间,如果所有变体控制表达式均未评估为 true,则忽略变体组件。

label

使用 label 模式在不创建工作区变量的情况下控制活动选择项。此变体控制模式是激活变体选择项的最简单方法。

在标签模式下创建变体组件

在架构模型中,组件由 Variant Component 模块表示。Variant Component 模块将变体抽象为一个单独的分层结构,该结构与顶层架构模型层相距一步。

The variant component 'Sensor' with an arrow pointing to the inside. There is an active variant called 'Sensor' and an inactive variant called 'Component'.

标签模式下创建一个变体组件,并尝试其他相关选项:

  1. 首先,将 Component 模块转换为 Variant Component 模块,创建一个变体组件模块。要完成转换,必须向组件添加变体选择项。要添加变体选择项,请右键点击 Variant Component 模块(组件),然后从组件上下文菜单中选择添加变体选择项。“将组件转换为变体组件”对话框随即打开。

    Convert Component to Variant Component dialog box.

  2. 变体控制项模式参数设置为标签,然后点击转换

  3. 请注意,系统会自动创建两个名为 ComponentComponent1 的变体选择项。默认情况下,Component 选择项处于激活状态。

  4. ComponentComponent1 变体选择项的名称分别修改为 Motor1Motor2。点击工具栏中的蓝色“向上到父级”箭头,返回上一级主架构模型。

  5. 通过从上下文菜单中选择 变体 > 标签模式活动选择项 > Component1 (Motor2) 来切换活动选择项。请注意,Motor2 变体选择项被高亮显示,而 Motor1 组件现在已变为灰色。

  6. 从主架构模型中,通过从上下文菜单中选择 变体 > 打开 > Component1 (Motor2),直接导航到 Variant Component 模块中的 Motor2

  7. 右键点击组件上的 variant 徽章,然后选择模块参数 (Subsystem),查看组件的模块参数。模块参数:“组件”对话框打开。

    The Block Parameters dialog box for a Variant Component block, with Variant control mode set to label.

  8. 请注意,在变体选择项表中,变体选择项名称 Motor1Motor2 分别被分配给变体控制标签 ComponentComponent1。列出在名称(只读) 列中的变体名称按字母顺序排列,并相应地重新排列变体控制项标签列中分配的变体控件。

  9. 通过检查标签模式活动选择项参数来确定活动选择项。将活动选择项恢复为 Motor1,方法是将标签模式活动选择项参数设置为 Component (Motor1)

  10. 选中将条件传播到可变子系统之外复选框,允许变体状态传播到“变体组件”,以便外部组件相应地调整其接口。映射到活动选择项上的端口将变为活动端口。未映射到非活动选择项上的端口将变为非活动状态。选择此选项可确保变体组件外的组件知道变体组件内组件的活动和非活动状态。

  11. 选中允许灵活接口复选框,以使用输入端口和输出端口数量与 Variant Component 模块不同的变体选择项对模型进行仿真。

在表达式模式下创建变体组件

表达式模式下创建一个变体组件,并尝试其他相关选项:

  1. 双击画布,在组件字段中输入模块名称 Variant Component。从 System Composer 库中选择“变体组件”搜索结果。该模块默认有两个变体选择项,其中 Component 为活动选择项。

  2. 右键点击组件上的 variant 徽章,然后选择模块参数 (Subsystem),查看组件的模块参数。模块参数:“组件”对话框打开。变体控制项模式参数默认设置为标签。将其更改为表达式

  3. 从以下选项中选择变体激活时间

    变体激活时间用法
    update diagram System Composer 在模型编译阶段开始时设置活动选择项。非活动选择项将从仿真工作流中删除。
    update diagram analyze all choicesSystem Composer 分析所有变体选择项,以检查每个选择项是否可以接受与其输入连接的信号。然后在模型编译阶段后期设置活动选择项。非活动选择项将从仿真工作流中删除。

  4. 变体选择项表中,将所有变体选择项的变体控制项表达式设置为可评估为 truefalse 的布尔表达式。例如,如果 b == 2 在封装、模型或基本工作区中被设置为 true,则表达式 b 的值为 2。变体控制表达式支持标量变量和其他数据类型。有关详细信息,请参阅变体控制变量的类型

    Variant Component block parameters with Variant control mode set to expression.

  5. 选择默认选项的替代方案。如果仿真期间没有变体控制表达式评估为 true,则默认选择适用。

    • 内置空选择项 - 输入到 Variant Component 模块的值不会传递到输出端口。换句话说,输入端被终止,输出端接地。在这种情况下,信息不会从变体组件传递到架构模型的其他部分。

    • 内置直通选择项 - 输入值将原样传递到输出端口,不会发生任何变化。信息从变体组件以未修改的形式传递到模型的其他部分。

另请参阅

主题