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 ずつインクリメントする。

参考

関連するトピック