Main Content

Schedule Subsystems to Execute at Specific Times

This example shows how to design a temporal logic scheduler in Stateflow®. The temporal logic scheduler design pattern allows you to schedule Simulink® subsystems to execute at specified times. Stateflow schedulers extend control of subsystem execution in a Simulink model, which determines order of execution implicitly based on block connectivity and sample time propagation.

Key Behavior of the Temporal Logic Scheduler

In this example, the Temporal Logic Scheduler chart contains two states that schedule the execution of three function-call subsystems (A1, A2, and A3) at different rates, as determined by the temporal logic operator every.

When the FastScheduler state is active, the chart schedules function calls to different Simulink subsystems at a fraction of the base rate at which the input event call wakes up the chart.

  • The chart sends an event to execute subsystem A1 at the base rate.

  • The chart sends an event to execute subsystem A2 at half the base rate.

  • The chart sends an event to execute subsystem A3 at one quarter the base rate.

When the SlowScheduler state is active, the chart schedules function calls for A1, A2, and A3 at 1/8, 1/16, and 1/32 times the base rate.

The chart switches between the fast and slow execution modes after every 100 invocations of the call event.

Run the Temporal Logic Scheduler

When you simulate the model, the scope displays the value of y at each time step.

The changes in value illustrate the different rates of execution.

  • When the chart executes the subsystems at a slow rate (for example, from $t=4.5$ to $t=4.6$, from $t=4.7$ to $t=4.8$, and from $t=4.9$ to $t=5.0$), the values change slowly.

  • When the chart executes the subsystems at a fast rate (for example, from $t=4.6$ to $t=4.7$ and from $t=4.8$ to $t=4.9$), the values change rapidly.

See Also

|

Related Topics