Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

定义、配置和激活变体

表示变体选择项

变体选择项是模型中一个组件的两种或多种配置。以下示例说明如何表示模型中 Variant Subsystem 模块内的变体选择项。有关表示设计变体的其他方法,请参阅 Simulink 中表示变体的选项

  1. Variant Subsystem 模块添加到模型中并对其命名。

    此模块用作变体选择项的容器。

  2. 双击 Variant Subsystem 模块。添加 InportOutport 模块,以匹配此模块的输入和输出。

    注意

    您只能在一个 Variant Subsystem 模块内添加 InportOutportSubsystemModel 模块。您可以通过数据端口来传递控制信号。

  3. 右键点击 Variant Subsystem 模块上的标记,然后选择 Block Parameters (Subsystem)

  4. 在模块参数对话框中,为要添加的每个可变子系统选择点击 按钮。

    Simulink®Variant Subsystem 模块内创建空的 Subsystem 模块。新模块的输入和输出端口数与作为其父容器的 Variant Subsystem 模块相同。

    提示

    (如果您的变体选择项具有不同数量的输入和输出端口,请参阅映射变体选择项的输入和输出端口。)

  5. 打开每个 Subsystem 模块并创建一个表示变体选择项的模型。

  6. 在为变体进行原型构建时,可以在 Variant Subsystem 模块内创建没有输入或输出的空 Subsystem 模块。使用空子系统,无需对变体完整建模,即可重建子系统处于非活动状态的情形。对于空变体选择项,可以指定变体激活条件,也可以通过在条件前放置 % 符号来注释掉变体条件。

    如果在编译期间空变体选择项处于活动状态,Simulink 将忽略它。

包含 Simulink 模型作为变体选择项

您可以在 Variant Subsystem 模块中包含 Simulink 模型作为变体选择项。

  1. 创建一个要作为变体选择项包含在可变子系统中的模型。确保其输入和输出端口数与作为其父容器的 Variant Subsystem 模块相同。

    注意

    如果您的模型有不同的输入和输出端口数,请参阅映射变体选择项的输入和输出端口

  2. 在模型中,右键点击包含变体选择项的 Variant Subsystem 模块,然后选择 Block Parameters (Subsystem)

  3. 在模块参数对话框中,点击 按钮以添加 Model 模块作为变体选择项。

    Simulink 在 Variant Subsystem 模块中创建未解析的 Model 模块。

  4. 双击未解析的 Model 模块。在 Model name 框中,输入要用作模型变体选择项的模型的名称,然后点击 OK

配置变体控制项

您可以使用变体控制项指定激活变体选择项的条件。您还可以将最多一个变体选择项指定为默认值。

  1. 在 MATLAB® 命令提示符下,指定可组合创建激活条件的控制项变量。

    mode = 3;
    version = 2;

  2. 右键点击 Variant Subsystem 模块(该模块是模型中变体选择项的容器),然后选择 Block Parameters (Subsystem)

  3. 在模块参数对话框的 Variant control 列中,选择其中一个选择项旁边的 “(default)”。

    Simulink 验证对于仿真只有一个变体选择项处于活动状态。如果选择 Allow zero active variant controls,则可以有零个变体选择项。当控制条件未激活任何变体时,Simulink 将使用默认变体进行仿真和代码生成。

  4. 为每个其他选择项指定一个变体条件。如果您使用的是空变体选择项,请为该选择项指定一个变体条件。您还可以通过在一个现有激活条件前面添加 % 符号来注释掉它。

  5. 点击 Apply;否则,您的更改不会保存。

转换为变体

在 Simulink Editor 中,您可以将下列模块转换为 Variant Subsystem 模块:

  • Subsystem 模块

  • Model 模块

  • Variant Model 模块(对于在 R2017b 之前的版本中创建的模型)

  • 条件执行子系统

要转换模块,请右键点击模块,然后在上下文菜单中点击 Subsystem & Model Reference > Convert to > Variant Subsystem

您也可以通过编程方式将这些模块转换为 Variant Subsystem 模块。为此,请使用以下任一语法:

  • Simulink.VariantManager.convertToVariant(gcb)

  • Simulink.VariantManager.convertToVariant(gcbh)

例如,

open_system('sldemo_variant_subsystems');
Simulink.VariantManager.convertToVariant('sldemo_variant_subsystems/Controller');

如果将变体模型转换为可变子系统,请注意 Model 模块参数 Generate preprocessor conditionals 的行为与 Variant Subsystem 模块参数 Variant activation time 的行为不同。对于变体模型,启用该参数会导致仿真和更新图仅编译活动变体。对于可变子系统,启用该参数会编译所有变体,这会使仿真和更新变慢。

将变体模型转换为可变子系统可能需要更新使用 Variants 命令行参数的脚本。

相关示例

详细信息