このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Stateflow を使用した Simulink 関数のスケジューリング
この例では、時相論理を使用して Stateflow® チャートで Simulink® 関数をスケジュールする方法を説明します。Simulink 関数は、Stateflow チャート内で定義してステートと遷移のアクションで呼び出す Simulink サブシステムです。詳細については、Stateflow チャートでの Simulink 関数の再利用を参照してください。
モデルを開いて確認
この例の Simulink 関数 algo
では、入力がタイム ステップごとに 1 インクリメントします。Stateflow チャートには、関数 algo
を異なるレートで呼び出す 2 つのステートが含まれています。
時相論理演算子は、関数呼び出しとステート間の遷移のスケジュールを決定します。イベントベースの時相論理演算子every
は、Simulink 関数を 2 タイム ステップごとに呼び出すように FastScheduler
を設定し、同じ関数を 5 タイム ステップごとに呼び出すように SlowScheduler
を設定します。その結果、FastScheduler
は SlowScheduler
よりも頻繁に関数を実行します。
FastScheduler
が 1.5 秒間アクティブになった後、FastScheduler
から SlowScheduler
への遷移が発生します。SlowScheduler
が 3.5 秒間アクティブになった後、FastScheduler
に戻る遷移が発生します。絶対時間の時相論理演算子after
は、ステート間の遷移のタイミングを制御します。
イベントベースと絶対時間の時相論理演算子の相違点
使用する時相論理演算子のタイプは、関数呼び出しをスケジュールするか遷移をスケジュールするかによって異なります。
every
などのイベントベースの時相論理演算子は、Simulink ソルバーで使用されるステップ サイズに依存します。ステートがアクティブになってからの関数呼び出しの数もソルバーのステップ サイズに依存します。そのため、Simulink モデルのチャートでは、every
を絶対時間の時相論理演算子として使用することはサポートされていません。
after などの絶対時間の時相論理演算子は、ステートがアクティブになってからの経過時間に依存します。Simulink モデルのチャートでは、at
を絶対時間の時相論理演算子として使用することはサポートされていません。
詳細については、時相論理を使用したチャート実行の制御を参照してください。
シミュレーション結果の表示
モデルを実行します。Scope ブロックは、勾配の急峻さの違いで各関数呼び出しのレートを示します。勾配が急峻であるほど、Simulink 関数の呼び出しが頻繁に行われています。
参考
after
| every
| Temporal Logic Operators