Main Content

条件执行子系统概述

条件执行子系统是允许用外部信号来控制其执行的非虚拟子系统。称为控制信号的外部信号连接到控制输入端口。如果您要创建复杂模型,其中一些组件的执行依赖于其他组件,此时可使用条件子系统。

Simulink canvas with Conditionally Executed Subsystem block. Subsystem block has control input port at the top and data input port at the left, both connected to Inport blocks. Subsystem block has data output port at the right, connected to an Outport block.

Simulink® 支持下列类型的条件子系统:

  • 使能子系统 - 当控制信号为正时,在每个时间步执行。在控制信号由负向至正向过零的时间步开始执行。请参阅使用使能子系统

  • 触发子系统 - 当控制信号上升或下降到零或过零时,在每个时间步执行。请参阅使用触发子系统

  • 使能触发子系统 - 在使能控制信号为正值且触发控制信号上升或下降到零时执行。请参阅使用使能触发子系统

  • 消息触发子系统 - 使用消息作为控制信号,每当控制端口上有消息时就执行,而不考虑模块采样时间。请参阅Using Message Polling and Message Triggered Subsystems

  • 消息轮询子系统 - 使用消息作为控制信号,在每个时间步当控制端口有消息时即执行。请参阅Using Message Polling and Message Triggered Subsystems

  • 函数调用子系统 - 当控制信号接收到函数调用事件时执行。事件可以在一个时间步内发生一次或多次。Stateflow® 图、Function-Call Generator 模块、S-Function 模块或 Hit Crossing 模块可以提供函数调用事件。请参阅使用函数调用子系统

条件执行子系统或条件执行引用模型的运行方式如下:

  • 当由控制模块启用时,在当前时间步运行一次。控制模块实现的控制逻辑与编程语言语句(如 if-then-elseswitch)所表达的逻辑类似。

  • 当由控制信号或动作信号启用或触发时,在当前时间步运行一次。

  • 在接收到函数调用事件时,在一个时间步内运行一次或多次。

Simulink canvas with If block with 2 output ports, each of which is connected by dotted lines to the action port of a separate If Action subsystem block. Output of each If Action subsystem block is connected to a Merge block, whose output is connected to an Outport block. Inputs of the If block and both If Action Subsystem blocks are connected to Inport blocks.

Simulink canvas showing 2 models. In the first model, there are 2 Enabled Subsystem blocks. An Inport block lableled "Enable Signal" is connected to the control port of one Enabled Subsystem block, and to a Not block whose output is connected to the other Enabled Subsystem block. The outputs of both Enabled Subsystem blocks are connected to a Merge block. In the second model, an Inport block labeled "Function-Call Event" is connected to the control port of a Model block labeled "Enabled_Model".

有关示例模型,请参阅 Simulink 子系统语义

另请参阅

| | | |

相关主题