Main Content

Configurable Subsystem

表示从用户指定的模块库中选择的任何模块

在以后的版本中将会删除 Configurable Subsystem 模块。请改用 Variant Subsystem, Variant Model, Variant Assembly Subsystem。有关更新模型的详细信息,请参阅版本历史记录

  • Configurable Subsystem block

库:
Simulink / Ports & Subsystems

描述

Configurable Subsystem 模块表示指定模块库中包含的一组模块中的一个模块。Configurable Subsystem 模块的上下文菜单允许您选择可配置子系统要表示的具体模块。

Configurable Subsystem 模块简化了表示一系列设计的模型的创建过程。例如,假设您要为一款提供多种发动机选择的汽车建模。要为这样的设计建模,您需要先创建一个该汽车可用的发动机类型的模型库。然后,在您的汽车模型中使用一个 Configurable Subsystem 模块来表示发动机选择。要为基本汽车设计的特定变体建模,用户只需使用可配置发动机模块的对话框来选择发动机类型即可。

要在模型中创建可配置子系统,您必须先创建一个库,其中包含一个可配置的主子系统以及它所表示的模块。然后,您可以通过将主要子系统的副本从库中拖放到模型中,创建主要子系统的可配置实例。

您可以将任何类型的模块添加到主要可配置子系统库中。Simulink® 通过为所有可供选择的端口名称生成唯一列表,为可配置子系统派生端口名称。但是,Simulink 为非子系统模块选项使用默认的端口名称。

您不能断开可配置子系统中的库链接,因为在您选择新配置时,Simulink 将使用这些链接来重新配置子系统。仅当您不打算重新配置子系统时,才可以断开链接。在这种情况下,您可以将可配置子系统替换为实现永久配置的不可配置子系统。

创建主可配置子系统

要创建主可配置子系统,请执行以下操作:

  1. 创建一个模块库,以表示可配置子系统的各种配置。

  2. 保存库。

  3. 在库中创建 Configurable Subsystem 模块的实例。

    为此,请将 Configurable Subsystem 模块的副本从 Simulink Ports & Subsystems 库拖到您在上一步中创建的库中。

  4. 双击该模块以显示 Configurable Subsystem 模块对话框。此对话框显示了库中其他模块的列表。

  5. 在此对话框中的模块选择项列表下,选择表示您要创建的可配置子系统的各种配置的模块。

  6. 要应用所做的更改并关闭对话框,请点击确定按钮。

  7. Configurable Subsystem 模块的上下文菜单中选择模块选择项

    上下文菜单会显示一个子菜单,列出子系统可以表示的模块。

  8. 选择您希望子系统在默认情况下表示的模块。

  9. 保存库。

    注意

    如果您在库中添加或删除模块,则必须重新创建使用此库的所有 Configurable Subsystem 模块。

如果您修改的库模块是可配置子系统的默认模块选择,更改不会立即传播给可配置子系统。要传播此更改,请执行以下操作之一:

  • 将默认模块选择更改为子系统中的另一个模块,然后将默认模块选择改回原来的模块。

  • 重新创建 Configurable Subsystem 模块,将更新后的模块选择作为默认模块选择。

如果您模型中的可配置子系统包含断开的库模块链接,则编辑该链接并保存模型并不会在您下次打开模型时修复断开的链接。要修复可配置子系统中断开的库链接,请使用以下方法之一:

  • 将可配置子系统转换为可变子系统。右键点击可配置子系统,然后选择子系统和模型引用 > 转换为 > 可变子系统

  • 从主可配置子系统库中删除库模块,将库模块添加回主可配置子系统库,然后重新保存可配置的主子系统库。

创建可配置子系统实例

要在模型中创建可配置子系统实例:

  1. 打开包含主可配置子系统的库。

  2. 将主可配置子系统的副本拖到模型中。

  3. Configurable Subsystem 实例的上下文菜单中选择模块选择项

  4. 选择您希望可配置子系统表示的模块。

可配置子系统的实例显示它所表示的模块的图标和参数对话框。

设置实例模块参数

与其他模块一样,您可以使用可配置子系统实例的参数对话框以交互方式设置其参数,还可以使用 set_param 命令从 MATLAB® 命令行或 MATLAB 文件中设置参数。如果您使用 set_param,必须指定可配置子系统的当前模块选择的完整路径名称作为 set_param 的第一个参量,例如:

curr_choice = get_param('mymod/myconfigsys', 'BlockChoice');
curr_choice = ['mymod/myconfigsys/' curr_choice];
set_param(curr_choice, 'MaskValues', ...);

映射 I/O 端口

可配置子系统显示一组输入和输出端口,这些端口对应于所选库中的输入和输出端口。Simulink 按照以下规则将库端口映射到 Configurable Subsystem 模块端口:

  • 将库中每个具有唯一名称的输入/输出端口映射到 Configurable Subsystem 模块上具有相同名称的一个单独的输入/输出端口。

  • 将库中具有相同名称的所有输入/输出端口映射到 Configurable Subsystem 模块上相同的输入/输出端口。

  • 使用 Terminator/Ground 模块终止当前所选库模块不使用的任何输入/输出端口。

这种映射允许用户更改 Configurable Subsystem 模块表示的库模块,而无需与 Configurable Subsystem 模块重新建立连接。

例如,假设一个库中包含 AB 两个模块,模块 A 的输入端口标记为 abc,输出端口标记为 d;模块 B 的输入端口标记为 ab,输出端口标记为 e

基于此库的 Configurable Subsystem 模块将有三个输入端口(分别标记为 abc)和两个输出端口(分别标记为 de)。

在本示例中,不管选择哪个模块,Configurable Subsystem 模块上的端口 a 都连接到选定库模块的端口 a。仅当选择库模块 A 时,Configurable Subsystem 模块上的端口 c 才起作用。否则,它就会终止。

注意

Configurable Subsystem 模块不提供与非 I/O 端口(例如触发和使能子系统上的触发器和使能端口)对应的端口。所以,您不能直接使用 Configurable Subsystem 模块来表示具有此类端口的模块。但是,您可以将此类模块包装在其输入或输出端口连接了非 I/O 端口的子系统模块中,从而间接表示此类模块。

转换为可变子系统

您可以通过以下四种方式之一将 Configurable Subsystem 模块转换为 Variant Subsystem 模块:

  • 以交互方式使用升级顾问

  • 以编程方式使用升级顾问

  • 使用 convertToVariantSubsystem 方法

  • 使用 Configurable Subsystem 模块的上下文菜单

有关详细信息,请参阅Convert Configurable Subsystem to Variant Subsystem

在转换过程中,Simulink 将执行以下操作:

  • Subsystem 模块替换为 Variant Subsystem 模块,同时保留端口和连接。

  • 添加原始子系统作为 Variant Subsystem 模块中的变体选择。

  • 覆盖 Variant Subsystem 模块,以使用最初作为活动选择项的子系统。

  • 保留库链接。对于链接的子系统,Simulink 将添加链接的子系统作为变体选择。

    Simulink 还保留子系统模块封装,并将封装复制到变体选择中。

有关变体选择项的详细信息,请参阅 Variant Subsystem

端口

输入

全部展开

Configurable Subsystem 的输入信号。Configurable Subsystem 表示的模块确定支持的输入信号的数据类型和维度。

依存关系

输入端口的数量取决于库中 Configurable Subsystem 表示的模块。有关详细信息,请参阅 映射 I/O 端口

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

输出

全部展开

Configurable Subsystem 的输出信号。Configurable Subsystem 表示的模块确定输出信号的数据类型和维度。

依存关系

输出端口的数量取决于库中 Configurable Subsystem 表示的模块。有关详细信息,请参阅 映射 I/O 端口

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

参数

全部展开

选择您要选择作为可配置子系统成员的模块。您可以选择用户定义的子系统作为模块。

编程用法

模块参数MemberBlocks
类型:字符向量元胞数组
值:由字符向量形式的模块名称组成的元胞数组
默认值:{''}

列出成员模块的输入和输出端口。如果有多个输入端口和输出端口,您可以通过点击向上向下按钮,重新排列所选端口的位置。

模块特性

数据类型

Booleana | busa | doublea | enumerateda | fixed pointa | halfa | integera | singlea | stringa

直接馈通

多维信号

a

可变大小信号

a

过零检测

a 实际支持的数据类型或功能取决于模块实施。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开