使用触发子系统
触发子系统是一种条件执行原子子系统,它在每次控制信号(触发信号)出现以下情况时运行:
从负值上升到正值或零,或者从零值上升到正值。
从正值下降到负值或零,或者从零值下降到负值。
上升或下降到零值或者过零。
与 Enabled Subsystem 模块不同,Triggered Subsystem 模块始终在触发之间保留其上一个输出值。此外,触发子系统不能在执行时重置模块状态;任何离散模块的状态将会在触发之间保留。
创建触发子系统
创建触发子系统:
为您的模型添加一个 Triggered Subsystem 模块。
将 Simulink® Ports & Subsystems 库中的模块复制到您的模型中。
点击模型图,键入
trigger
,然后选择 Triggered Subsystem。
设置 Outport 模块的初始值和禁用值。请参阅条件子系统初始输出值和Conditional Subsystem Output Values When Disabled。
设置控制信号如何触发执行。
打开子系统模块,然后打开 Trigger 端口模块的参数对话框。从触发器类型下拉列表中,选择:
上升沿 - 当控制信号从负值或零值上升至正值时,触发子系统的执行。
下降沿 - 当控制信号从正值或零值下降至负值时,触发子系统的执行。
任一沿 - 通过上升或下降控制信号触发子系统的执行。
Trigger 和 Subsystem 模块上将出现不同的符号,以指示上升和下降触发器。
从 Trigger 端口模块输出启用控制信号。打开 Trigger 端口模块。选中显示输出端口复选框,以便将控制信号传递给触发子系统。
您可以将此信号用于依赖控制信号值的算法。
从输出数据类型下拉列表中,选择
auto
、int8
或double
。auto
选项会使得输出信号的数据类型采用连接到信号的模块端口的数据类型(int8
或double
)。
离散时间系统的触发
对于离散时间系统,触发控制信号必须保持为零超过一个时间步。该触发策略可消除由控制信号采样引起的错误触发。
在下面的离散系统时序图中,上升触发信号 (R) 未在第 3 个时间步发生。触发信号仅在一个时间步保持为零,然后信号从零开始上升。
触发模型与触发子系统
您可以在 Model 模块(引用模型)中放置一个 Trigger 端口模块以简化模型设计,而不是使用以下模块之一:
Model 模块中的 Triggered Subsystem 模块。
Triggered Subsystem 模块中的 Model 模块。
有关在引用模型中使用 Trigger 端口模块的信息,请参阅Conditionally Execute Referenced Models。
要转换子系统以使用模型引用,请参阅将子系统转换为引用模型。
触发子系统中的模块
触发子系统中的所有模块的采样时间都必须设置为继承 (-1
) 或固定 (inf
)。此要求允许触发子系统中的模块仅在触发子系统本身运行时才运行。此要求还意味着触发子系统不能包含连续模块,如 Integrator 模块。
模型示例
有关模型示例,请参阅:
另请参阅
Enabled Subsystem | Triggered Subsystem | Enabled and Triggered Subsystem | Function-Call Subsystem