Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Stateflow を使用した Simulink 関数のスケジューリング

この例では、時相論理を使用して Stateflow® チャートで Simulink® 関数をスケジュールする方法を説明します。Simulink 関数は、Stateflow チャート内で定義してステートと遷移のアクションで呼び出す Simulink サブシステムです。詳細については、Stateflow チャートでの Simulink 関数の再利用を参照してください。

モデルを開いて確認

この例の Simulink 関数 algo では、入力がタイム ステップごとに 1 インクリメントします。Stateflow チャートには、関数 algo を異なるレートで呼び出す 2 つのステートが含まれています。

時相論理演算子は、関数呼び出しとステート間の遷移のスケジュールを決定します。イベントベースの時相論理演算子everyは、Simulink 関数を 2 タイム ステップごとに呼び出すように FastScheduler を設定し、同じ関数を 5 タイム ステップごとに呼び出すように SlowScheduler を設定します。その結果、FastSchedulerSlowScheduler よりも頻繁に関数を実行します。

FastScheduler が 1.5 秒間アクティブになった後、FastScheduler から SlowScheduler への遷移が発生します。SlowScheduler が 3.5 秒間アクティブになった後、FastScheduler に戻る遷移が発生します。絶対時間の時相論理演算子afterは、ステート間の遷移のタイミングを制御します。

イベントベースと絶対時間の時相論理演算子の相違点

使用する時相論理演算子のタイプは、関数呼び出しをスケジュールするか遷移をスケジュールするかによって異なります。

every などのイベントベースの時相論理演算子は、Simulink ソルバーで使用されるステップ サイズに依存します。ステートがアクティブになってからの関数呼び出しの数もソルバーのステップ サイズに依存します。そのため、Simulink モデルのチャートでは、every を絶対時間の時相論理演算子として使用することはサポートされていません。

after などの絶対時間の時相論理演算子は、ステートがアクティブになってからの経過時間に依存します。Simulink モデルのチャートでは、at を絶対時間の時相論理演算子として使用することはサポートされていません。

詳細については、時相論理を使用したチャート実行の制御を参照してください。

シミュレーション結果の表示

モデルを実行します。Scope ブロックは、勾配の急峻さの違いで各関数呼び出しのレートを示します。勾配が急峻であるほど、Simulink 関数の呼び出しが頻繁に行われています。

参考

| |

関連するトピック