Main Content

単一のステップでサブシステムを複数回スケジュール

この例では、Stateflow® で "ループ スケジューラ" を設計する方法を説明します。ループ スケジューラの設計パターンを使用すると、単一のタイム ステップで Simulink® サブシステムを複数回実行できます。Stateflow スケジューラにより、Simulink モデルのサブシステム実行の制御が拡張され、ブロックの接続状態とサンプル時間の伝播に基づいて実行順序が暗黙的に決定されます。

ループ スケジューラの主な動作

この例では、Loop Scheduler チャートは Function-Call Subsystem A1 を実行する関数呼び出し出力イベントを、各タイム ステップで複数回ブロードキャストします。各タイム ステップにおいて次が行われます。

  1. Simulink モデルは 1 ミリ秒のパルス発生器の立ち上がりエッジで Edge to Function チャートをアクティブ化します。

  2. Edge to Function チャートは関数呼び出し出力イベント call をブロードキャストして、Loop Scheduler チャートをアクティブ化します。

  3. Loop Scheduler チャートはsend演算子を呼び出して、関数呼び出し出力イベント A1 を複数回ブロードキャストします。

イベント A1 の各ブロードキャストはサブシステム A1 を実行します。サブシステムはその出力を計算し、Loop Scheduler チャートに制御を戻します。

ループ スケジューラの実行

モデルをシミュレートすると、スコープにタイム ステップごとの値 y が表示されます。

以下の理由により、値 y は各タイム ステップで 25 ずつ増加します。

  • Loop Scheduler のフロー チャートは 10 回反復する for ループを実装している。

  • for ループの各反復において、チャートは y を 1 ずつインクリメントする (入力 u1 の定数値)。

  • チャートが出力イベントをサブシステム A1 にブロードキャストするたびに、サブシステムは y を 1.5 ずつインクリメントする。

参考

関連するトピック