パラレル ステートの実行順序
パラレル (AND) ステートは同時に実行されますが、Stateflow® チャートでは、シミュレーション時にそれぞれをアクティブ化するタイミングが判定されなければなりません。この順序付けによって、実行の全ステージを通して各パラレル ステートによりアクションが実行されていくタイミングが決定されます。
パラレル ステートの順序付け
チャートでは、各パラレル ステートに優先順位の番号が割り当てられます。番号が小さいほど、ステートが実行される順序は早くなります。優先順位の番号は各ステートの右上隅に表示されます。
新しいチャートまたはパラレル ステートが含まれていないチャートを開くと、パラレル ステートに対してその作成順で優先順位が自動的に割り当てられます。親のコンテナーで次に使用可能な番号から、番号が割り当てられます。
パラレル ステートの実行順序を変更するには、以下の手順に従います。
パラレル ステートを右クリックします。
[実行順序] をクリックし、新しい優先順位の番号を選択します。
パラレル ステートの優先順位の番号を変更すると、他のパラレル ステートについては相対的な優先順位を保持したまま、チャートによって自動的に番号が変更されます。
パラレル ステートを含むチャートから生成されたコードでは、各ステートはその優先順位に基づいて実行されます。
パラレル ステートの順序の維持
パラレル ステートを削除、番号変更、追加した場合に、パラレル ステートの優先順位が以下のように再設定されます。
シーケンスのギャップを埋めることで、順序付けの連続性を維持する。
2 つのステートに同じ優先順位が設定されないようにする。
意図された相対的な優先順位を保持する。
以下の例を考えます。
既定では、ステートとサブステートは、作成した順序で番号が設定されます。たとえば、チャートに次のような変更を加えたとします。
最上位のステート
b
の優先順位を 3 に変更します。最上位のステート
g
を追加します。サブステート
e
を削除します。
最上位のステート b
に明示的に設定した優先順位が保持されていますが、他のすべてのパラレル ステートの番号は、以前の相対的な順序を保持するように変更されています。
復元されたステートにおける実行優先順位
パラレル ステートを Stateflow チャートから削除した後に復元しなければならない場合があります。ただし、常に復元したステートに対して元の実行優先順位を復元できるわけではありません。復元できるかどうかは、ステートの復元方法によります。
ステートを削除した方法 | ステートを復元した方法 | 優先順位の結果 |
---|---|---|
削除、切り取り、親ステートの境界線外へのドラッグ、または境界線が親ステートに重なるようにドラッグ | undo コマンドの使用 | 元の優先順位が復元されます。 |
親ステートの境界線外にドラッグするか境界線が親ステートに重なるようにドラッグして、さらにマウス ボタンをリリース | 親ステートの内側にドラッグ | 元の優先順位は失われます。Stateflow チャートは、復元されたステートを最後に作成されたステートとして扱い、最低の実行優先順位を割り当てます。 |
親ステートの境界線外にドラッグするか境界線が親ステートに重なるようにドラッグするが、マウス ボタンはリリースしない | 親ステートの内側にドラッグ | 元の優先順位が復元されます。 |
境界線が 1 つ以上の兄弟関係のステートに重なるようにドラッグ | 同じ親ステートの内側で境界線が重ならない場所にドラッグ | 元の優先順位が復元されます。 |
切り取り | 貼り付け | 元の優先順位は失われます。Stateflow チャートは、復元されたステートを最後に作成されたステートとして扱い、最低の実行優先順位を割り当てます。 |
ボックスとサブチャート内のパラレル ステートの実行順序
ボックス内で一連のパラレル ステートをグループ化しても、相対的な実行順序は保持されます。さらに、Stateflow チャートは、既定の順序付けのルールに基づき、独自の優先順位をボックスに割り当てます。この優先順位は、ボックス内のパラレル ステートがアクティブになるときに判定されます。
パラレル構造を含むステートをサブチャートに変換すると、そのサブステートの相対的な実行順序は保持されます。