単一のステップでサブシステムを複数回スケジュール
この例では、Stateflow® で"ループ スケジューラ" を設計する方法を説明します。ループ スケジューラの設計パターンを使用すると、単一のタイム ステップで Simulink® サブシステムを複数回実行できます。Stateflow スケジューラにより、Simulink モデルのサブシステム実行の制御が拡張され、ブロックの接続状態とサンプル時間の伝播に基づいて実行順序が暗黙的に決定されます。
ループ スケジューラの主な動作
この例では、Loop Scheduler チャートは Function-Call Subsystem A1 を実行する関数呼び出し出力イベントを、各タイム ステップで複数回ブロードキャストします。各タイム ステップにおいて次が行われます。
Simulink モデルは 1 ミリ秒のパルス発生器の立ち上がりエッジで Edge to Function チャートをアクティブ化します。
Edge to Function チャートは関数呼び出し出力イベント
call
をブロードキャストして、Loop Scheduler チャートをアクティブ化します。Loop Scheduler チャートは
send
演算子を呼び出して、関数呼び出し出力イベントA1
を複数回ブロードキャストします。
イベントA1
の各ブロードキャストはサブシステム A1 を実行します。サブシステムはその出力を計算し、Loop Scheduler チャートに制御を戻します。
ループ スケジューラの実行
モデルをシミュレートすると、スコープにタイム ステップごとの値y
が表示されます。
以下の理由により、値y
は各タイム ステップで 25 ずつ増加します。
Loop Scheduler のフロー チャートは 10 回反復する
for
ループを実装している。for
ループの各反復において、チャートはy
を 1 ずつインクリメントする (入力u1
の定数値)。チャートが出力イベントをサブシステム A1 にブロードキャストするたびに、サブシステムは
y
を 1.5 ずつインクリメントする。