Main Content

Message Triggered Subsystem, Message Polling Subsystem

Subsystem whose execution is controlled by message input

  • Library:
  • Simulink / Messages & Events

  • Block icon for Message Triggered Subsystem block

Description

This block is a Subsystem block preconfigured as a starting point for creating a subsystem that executes based on message input. The block has different names based on the timing of execution.

  • A Message Triggered Subsystem block executes whenever a message is available at the control port, independent of the block sample time.

  • A Message Polling Subsystem block periodically checks for messages and executes if a message is available at the control port.

Inside the subsystem, a Trigger block displays an output port that outputs a data signal carrying the message payload.

For an explanation of the Message Triggered Subsystem and Message Polling Subsystem block parameters, see Subsystem block parameters. For an explanation of the Trigger block parameters, see Trigger block parameters.

Message Triggered Subsystem

A Message Triggered Subsystem block enables event-based message triggers. The block executes whenever a message is available at the control port, independent of sample time. The block contains a Trigger block with the Trigger type set to message and the Trigger time set to on message available.

The block operates in two modes, scheduled and immediate.

  • In scheduled mode, execution order of a subsystem can be scheduled in the Schedule Editor to model asynchronous behavior. You can defer subsystem execution to follow a specific Simulink® task while staying at the same time step. A Queue block in front of the trigger port can buffer messages before they enter the subsystem. When a message arrives at the Queue block, it raises an event that triggers the subsystem to pull the message from the Queue block based on the schedule. If there is no Queue block between the message source and the trigger port, Simulink treats the trigger port as having an internal, overwriting-type queue with a capacity of 1, similar to the Receive block. The trigger port can be connected to a root-level Inport block for modeling a software component. The model must be configured as an export-function model.

    To use scheduled mode, select the Schedule as aperiodic partition check box in the Trigger block.

  • In immediate mode, the subsystem executes as soon as a message is available at the control port, which pushes the message to the subsystem without a queue buffering the message.

    To use immediate mode, clear the Schedule as aperiodic partition check box in the Trigger block.

Message Polling Subsystem

A Message Polling Subsystem block executes conditionally at each time step based on whether a message is available at the control port. The block contains a Trigger block with the Trigger type set to message and the Trigger time set to on sample time hit.

The block tries at each time step to pull a message from the queue in front of the control port. If there is no Queue block between the message source and the control port, Simulink treats the control port as having an internal, overwriting-type queue with a capacity of 1, similar to the Receive block. If the queue is not empty, a message is pulled and the subsystem executes, with the message payload as input. Only one message is pulled at each time step. If more than one message is in the queue at the current time step, the next message is pulled at the next time step. If the queue is empty, the subsystem does not execute at that time step. You can set the sample time in the block dialog box of the Message Polling Subsystem block. See Sample time.

Ports

Input

expand all

Placing a Trigger block with the Trigger type set to message in a Subsystem block adds an external message input port to the block.

Use the Trigger port to control execution of the subsystem and to pass data to the subsystem.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Output

expand all

Placing an Outport block in a Subsystem block adds an external output port to the block. The port label on the Subsystem block matches the name of the Outport block.

Use Outport blocks to send signals to the local environment.

Data Types: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

Block Characteristics

Data Types

Booleana | busa | doublea | enumerateda | fixed pointa | halfa | integera | singlea | stringa

Direct Feedthrough

no

Multidimensional Signals

limiteda

Variable-Size Signals

limiteda

Zero-Crossing Detection

no

a Actual data type or capability support depends on block implementation.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Version History

Introduced in R2022a