Main Content

使用使能子系统

使能子系统是一种条件执行子系统,它在控制信号具有正值时在每个主时间步运行一次。如果信号在子时间步发生过零事件,则子系统要到下一个主时间步才会启用或禁用。

控制信号可以是标量或向量。

  • 如果标量值大于零,则子系统执行。

  • 如果任何向量元素值大于零,则子系统执行。

创建使能子系统

创建使能子系统:

  1. 在您的模型中添加一个 Enabled Subsystem 模块。

    • 将 Simulink® Ports & Subsystems 库中的模块复制到您的模型中。

    • 点击模型图,键入 enabled,然后选择 Enabled Subsystem

  2. 设置 Outport 模块的初始值和禁用值。请参阅条件子系统初始输出值Conditional Subsystem Output Values When Disabled

  3. 指定子系统启用后如何处理子系统状态。

    打开子系统模块,然后打开 Enable 端口模块的参数对话框。从启用时的状态下拉列表中,选择:

    • 保持 - 状态保持最近使用的值。

    • 重置 - 如果子系统禁用至少一个时间步,则状态还原到初始条件。

      注意

      如果子系统内有包含 Simulink Function 模块的 Stateflow® 图,则 Simulink Function 模块内部的模块不会恢复到其初始条件。如需更通用的重新初始化功能,请考虑使用 Reinitialize Function 模块。

      在简化初始化模式(默认值)下,在子系统变为使能子系统后首次执行期间会始终重置其已用时间。无论子系统是否配置为在启用时重置,都会进行此重置。请参阅Underspecified initialization detection

    对于其 Enable 模块具有不同参数设置的嵌套子系统,子级子系统的设置将覆盖从父级子系统继承的设置。

  4. Enable 模块输出控制信号。

    Enable 模块的参数对话框中,选中显示输出端口复选框。

    选择此参数允许您将控制信号传递给使能子系统。您可以将此信号用于依赖控制信号值的算法。

使能子系统中的模块

离散模块

使能子系统中的离散模块仅在子系统执行时执行,且仅在其采样时间与仿真采样时间同步时执行。

假设此模型中包含四个离散模块和一个控制信号。离散模块包括:

  • Block A,采样时间为 0.25 秒

  • Block B,采样时间为 0.5 秒

信号 E 是由 Pulse Generator 生成的使能控制信号,采样时间为 0.125 秒。其输出在 0.375 秒时将值从 0 更改为 1,并在 0.875 秒时返回 0。

使能子系统中的离散模块包括:

  • 模块 C,位于使能子系统内,采样时间为 0.125 秒

  • 模块 D,也位于使能子系统内,采样时间为 0.25 秒

离散模块按图中所示的采样时间执行。

模块 A 和 B 独立于启用控制信号执行,因为它们不是使能子系统的一部分。当启用控制信号变为正时,模块 C 和 D 按其分配的采样率执行,直到启用控制信号再次变为零。当启用控制信号变为零时,模块 C 在 0.875 秒处不会执行。

Goto 模块

使能子系统可以包含 Goto 模块。但是,只有具有状态的模块的输出端口可以连接到 Goto 模块。有关在使能子系统中使用 Goto 模块的示例,请参阅 sldemo_clutch 模型中的 Locked 子系统。

交替执行使能子系统模块

您可以将条件子系统与 Merge 模块结合使用,以创建一组根据模型的当前状态交替执行的子系统。

假设有一个模型使用两个 Enabled Subsystem 模块和一个 Merge 模块对全波整流器(一种可将交流电流转换为脉动直流电流的设备)进行建模。

打开示例模型 ex_alternately_executing_model

打开名为 pos 的子系统。

此子系统在交流波形为正时启用,并将波形不加更改地传递到其输出。

打开名为 neg 的子系统。

当波形为负时,此子系统启用并反转波形。

Merge 模块将当前使能子系统的输出随原始波形一起传递到 Scope 模块。

对模型进行仿真。然后,打开 Scope 模块。

模型示例

有关模型示例,请参阅:

另请参阅

| | |

相关主题