# 使用触发子系统


触发子系统时一种条件执行原子子系统,它在每次控制信号(触发信号)出现以下情况时运行:

  • 上升沿触发:从负值上升到正值或零,或者从零值上升到正值。

  • 下降沿触发:从正值下降到负值或零,或者从零值下降到负值。

  • 任意沿触发:上升或下降到零值或过零。

创建触发子系统

  1. 在模型中添加 Trigger Subsystem 模块。

    • Sysblock 框图建模环境,添加 Subsystem 模块到您的模型中。

    • 进入 Subsystem 模块,双击呼出快速搜索框,键入 trigger,然后选择 Subsystem.trigger。

  2. 设置控制信号如何触发执行。

    • 打开子系统模块,然后打开 Trigger 端口模块的参数对话框。从触发类型下拉列表中,选择:
      • rising(上升沿):当控制信号从负值或零值上升至正值或从负值上升到零值时,触发子系统的执行。
      • falling(下降沿):当控制信号从正值或零值下降至负值或从正值下降到零值时,触发子系统的执行。
      • either(任一沿):通过上升或下降控制信号触发子系统的执行。
    • Trigger和Subsystem模块上将出现不同的符号,以指示上升和下降触发器。

# 离散时间系统的触发

对于离散时间系统,当控制信号在信号值的两次上升或两次下降之间相差一个以上的时间步时,会发生触发。

# 触发模型与触发子系统

可以在 Model 模型(引用模型)中放置一个 Trigger 端口模块以简化模型设计。

# 触发子系统中的模块

触发子系统中的所有模块的采样时间必须设置为继承(-1)或固定(inf)。此要求允许触发子系统中的模块仅在触发子系统本身运行时才运行。此要求还意味着触发子系统不能包含连续模块,如 Integrator 模块。

# 模型示例

基于触发子系统的特性,可以搭建如下验证系统。

其中,subSystem 为上升沿,subSystem1 为下降沿,subSystem2 为任意沿。 子系统中执行一个累加算法。

仿真时间设置为 4 秒,触发信号信号的正弦周期设置为 2 秒,采样步长设置为 0.1 秒,仿真结果如下图所示。

  • 上升沿仿真结果中,正弦值在 [2, 2.1] 时从负值上升到正值,因此在一个步长中,值从 1 变为 2。

  • 下降沿仿真结果中,正弦值在 [1, 1.1] 时从正值下降到负值,因此在一个步长中,值从0变为1。

  • 任意沿仿真结果中,正弦值在 [1, 1.1] 时从正值下降到负值,因此在一个步长中,值从 0 变为 1;正弦值在 [2, 2.1] 中从负值上升到正值,因此在一个步长中,值从 2 变为 3。

# 相关主题