使用使能子系统
使能子系统是一种条件执行子系统,它在控制信号具有正值时在每个主时间步运行一次。如果信号在子时间步发生过零事件,则子系统要到下一个主时间步才会启用或禁用。
控制信号可以是标量或向量。
如果标量值大于零,则子系统执行。
如果任何向量元素值大于零,则子系统执行。
创建使能子系统
创建使能子系统:
在您的模型中添加一个 Enabled Subsystem 模块。
将 Simulink® Ports & Subsystems 库中的模块复制到您的模型中。
点击模型图,键入
enabled
,然后选择 Enabled Subsystem。
设置 Outport 模块的初始值和禁用值。请参阅条件子系统初始输出值和Conditional Subsystem Output Values When Disabled。
指定子系统启用后如何处理子系统状态。
打开子系统模块,然后打开 Enable 端口模块的参数对话框。从启用时的状态下拉列表中,选择:
保持 - 状态保持最近使用的值。
重置 - 如果子系统禁用至少一个时间步,则状态还原到初始条件。
注意
如果子系统内有包含 Simulink Function 模块的 Stateflow® 图,则 Simulink Function 模块内部的模块不会恢复到其初始条件。如需更通用的重新初始化功能,请考虑使用 Reinitialize Function 模块。
在简化初始化模式(默认值)下,在子系统变为使能子系统后首次执行期间会始终重置其已用时间。无论子系统是否配置为在启用时重置,都会进行此重置。请参阅Underspecified initialization detection。
对于其 Enable 模块具有不同参数设置的嵌套子系统,子级子系统的设置将覆盖从父级子系统继承的设置。
从 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 模块。
模型示例
有关模型示例,请参阅:
另请参阅
Enabled Subsystem | Triggered Subsystem | Enabled and Triggered Subsystem | Function-Call Subsystem