Main Content

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

创建子系统

随着模型的大小和复杂度的增加,您可以通过将模块组合为子系统来简化它。子系统是组合为一个 Subsystem 模块的一组模块。

使用子系统,您可以:

  • 建立一个分层模块图,其中一个 Subsystem 模块位于一个层中,而构成该子系统的模块位于另一个层中。

  • 将功能相关的模块放在一起。

  • 帮助减少您的模型窗口中显示的模块数目。

  • 建立一个带输入和输出的界面。

当您创建子系统的副本时,该副本将独立于源子系统。要在一个模型范围内或跨多个模型重用子系统的内容,请考虑引用子系统、引用模型或链接到自定义库中某个模块的子系统。有关详细信息,请参阅 Choose Among Types of Model Components

子系统的类型

子系统可以是虚拟的,也可以是非虚拟的。虚拟子系统提供模型中的图形层次结构,并且不影响模型的执行。非虚拟子系统作为模型中的单个单元执行。

提示

对于控制器和其他独立组件,使用非虚拟子系统或引用模型在相关模块周围定义硬边界。当您要为组件生成代码时,预先定义硬边界可以避免代价高昂的重构。

Simulink® 将非虚拟子系统分为以下类型:

子系统的类型说明
Atomic Subsystem

作为单一单元执行的子系统。

Enabled Subsystem

由外部输入使能执行的子系统。

Triggered Subsystem

由外部输入触发执行的子系统。

Function-Call Subsystem

由外部函数调用输入控制执行的子系统。

Enabled and Triggered Subsystem

由外部输入使能和触发执行的子系统。

Resettable Subsystem

通过外部触发器重置模块状态的系统。

If Action Subsystem

其执行由 If 模块使能的子系统。

Switch Case Action SubsystemSwitch Case 模块控制执行的子系统。
While Iterator Subsystem

当逻辑条件为 true 时,在仿真时间步重复执行的子系统。

For Iterator Subsystem在仿真时间步内重复执行指定迭代次数的子系统。
For Each Subsystem

对输入信号的每个元素或子数组都执行一遍运算,再将运算结果串联起来的子系统。

创建子系统

要创建子系统,您可以:

  • 在 Simulink Editor 中,双击并开始键入子系统类型,然后从菜单中选择对应的模块。

  • 在 Simulink Editor 中,拖动以形成一个选择框来容纳要创建的子系统,然后选择子系统类型。

  • 从库浏览器中拖动一个 Subsystem 模块。

  • 从模型中复制并粘贴一个 Subsystem 模块。

从选择框创建子系统时,所选内容可以为空,也可以在模型的一个区域中包含多个模块。

从操作栏中,选择要创建的子系统的类型。

当所选内容包含对应于输入和输出端口的模块时,新子系统包括这些模块的副本。新子系统不包含对应于控制端口的模块的副本。

您可以在创建后更改子系统的类型。

  • 要使一个子系统作为一个单元执行,请点击 Subsystem 模块。在 Subsystem 选项卡上,选择 Is Atomic Subsystem

  • 要使子系统有条件地执行,请添加对应于一个控制端口的模块。

  • 要使子系统无条件执行,请删除对应于控制端口的模块。

向子系统添加端口

Subsystem 模块上的端口对应于子系统内部的模块。

例如,以下 Subsystem 模块有两个输入端口和一个输出端口。

该子系统包含两个 Inport 模块(In1In2)和一个 Outport 模块 (Out1),它们对应于 Subsystem 模块上的端口。

要向子系统添加端口,请执行以下操作:

  • 点击 Subsystem 模块的边,然后选择要创建的端口的类型。

  • 将一条线拖到 Subsystem 模块的边。

  • 双击 Subsystem 模块以打开子系统,然后将对应的模块添加到该子系统中。

    端口的类型对应的模块
    信号端口、输入Inport 模块
    信号端口、输出Outport 模块
    总线端口、输入In Bus Element 模块
    总线端口、输出Out Bus Element 模块
    控制端口、使能Enable 模块
    控制端口、触发Trigger 模块
    控制端口、函数调用Trigger type 设置为 “function-call” 的 Trigger 模块
    控制端口、重置Reset 模块
    控制端口、操作Action Port 模块
    连接端口Connection Port (Simscape) 模块

要更改 Subsystem 模块上端口的位置,请将该端口拖到 Subsystem 模块任意一侧的新位置。

A port is dragged from the left side of the block to the top side of the block.

默认情况下,Simulink 为 Subsystem 模块上的端口添加标签。要指定 Simulink 如何为子系统的端口添加标签,请执行下列步骤:

  1. 选择 Subsystem 模块。

  2. 在 Simulink 工具条的 Format 选项卡上,从 Port Labels 菜单中选择一个标签选项。有关详细信息,请参阅显示端口标签

配置子系统

您可以更改 Subsystem 模块的名称并修改该模块,就像您处理任何其他模块一样。例如,您可以:

  • 应用模块封装来隐藏子系统内容,使用它自己的图标和参数对话框将内容以原子块的形式显示。有关详细信息,请参阅 封装基础知识

  • 使用模块回调来执行操作,以响应子系统建模操作,例如处理错误、删除子系统中的模块或信号线或关闭子系统。有关模块属性(如回调)的详细信息,请参阅指定模块属性

限制子系统访问

Subsystem 模块的 Read/Write permissions 参数控制对子系统允许的访问级别。

注意

限制读取或写入访问并不阻止更改访问限制。要隐藏专有信息,请考虑使用受保护模型。有关详细信息,请参阅 了解受保护模型的功能

当子系统存储在自定义库中时,可以使用父库模块上的 Read/Write permissions 参数来控制对该模块的链接实例的访问。只要库链接保持不变,受限访问就可以防止人们查看或修改子系统的内容,同时仍然允许他们在模型中使用它。有关详细信息,请参阅 链接模块

另请参阅

相关主题