Main Content

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

デフォルト遷移を使用したチャートの実行の制御

排他的 (OR) 構造のデフォルト遷移

以下の例は、サブステートへのデフォルト遷移が定義されている、OR ステートから排他的 (OR) 構造を含むスーパーステートへの遷移を示しています。

Stateflow chart with top-level states called A and B. State B has substates called B1 and B2.

最初は、チャートはスリープ状態です。ステート A がアクティブです。イベント E_one が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。

  1. チャートのルートは、E_one の結果、有効な遷移が存在するかどうかをチェックします。ステート A からスーパーステート B への有効な遷移が存在します。

  2. ステート A の exit アクション (exitA()) が実行されて完了します。

  3. ステート A が非アクティブとしてマークされます。

  4. 遷移アクション A が実行されて完了します。

  5. ステート B がアクティブとしてマークされます。

  6. ステート B の entry アクション (entB()) が実行されて完了します。

  7. ステート B がステート B.B1 への有効なデフォルト遷移を検出します。

  8. ステート B.B1 がアクティブとしてマークされます。

  9. ステート B.B1 の entry アクション (entB1()) が実行されて完了します。

  10. チャートはスリープ状態に戻ります。

このシーケンスは、ステート A が最初にアクティブな場合に、イベント E_one に関連する Stateflow® チャートの実行を完了します。

ジャンクションへのデフォルト遷移

以下の例は、コネクティブ ジャンクションへのデフォルト遷移の動作を示しています。ジャンクションへのデフォルト遷移は、チャートが起動するたびにではなく、最初にステート B が開始されたときにのみ有効です。

Stateflow chart with top-level states called A and B. State B has substates called B1 and B2.

この例では、最初は、チャートはスリープ状態です。ステート B.B1 がアクティブです。条件 [C_two] は真です。イベントが発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。

  1. ステート B は、いずれかのイベントの結果、有効な遷移が存在するかどうかをチェックします。該当するものは存在しません。

  2. ステート Bduring アクション (durB()) が実行されて完了します。

  3. ステート B1 は、いずれかのイベントの結果、有効な遷移が存在するかどうかをチェックします。該当するものは存在しません。

  4. ステート B1during アクション (durB1()) が実行されて完了します。

このシーケンスは、いずれかのイベントの発生と関連する Stateflow チャートの実行を完了します。

デフォルト遷移とヒストリ ジャンクション

以下の例は、デフォルト遷移とヒストリ ジャンクションを含むスーパーステートの動作を示しています。チャートでは、出力遷移の暗黙的な順序付けが使用されます (暗黙的な順序付けを参照)。

Stateflow chart with top-level states called A and B. State B has substates called B1, B2, B3, and B4.

最初は、チャートはスリープ状態です。ステート A がアクティブです。ヒストリ ジャンクションが、ステート B4 がスーパーステート B の以前にアクティブであったサブステートであるという事実を記録します。イベント E_one が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。

  1. チャートのルートは、E_one の結果、有効な遷移が存在するかどうかをチェックします。

    ステート A からスーパーステート B への有効な遷移が存在します。

  2. ステート A の exit アクション (exitA()) が実行されて完了します。

  3. ステート A が非アクティブとしてマークされます。

  4. ステート B がアクティブとしてマークされます。

  5. ステート B の entry アクション (entB()) が実行されて完了します。

  6. ステート B はヒストリ ジャンクションを使用して、スーパーステートの遷移先を判定します。

    ヒストリ ジャンクションは、サブステート B.B4 が最後のアクティブなサブステートであり、遷移先になることを示します。

  7. ステート B.B4 がアクティブとしてマークされます。

  8. ステート B.B4 の entry アクション (entB4()) が実行されて完了します。

  9. チャートはスリープ状態に戻ります。

このシーケンスは、イベント E_one に関連する Stateflow チャートの実行を完了します。

ラベル付きのデフォルト遷移

以下の例は、ラベル付きのデフォルト遷移を使用する方法を示しています。チャートでは、出力遷移の暗黙的な順序付けが使用されます (暗黙的な順序付けを参照)。

Stateflow chart with top-level states called A and B. State B has substates called B1 and B2.

最初は、チャートはスリープ状態です。ステート A がアクティブです。イベント E_one が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。

  1. チャートのルートは、E_one の結果、有効な遷移が存在するかどうかをチェックします。

    ステート A からスーパーステート B への有効な遷移が存在します。イベント E_one または E_two が発生した場合に遷移は有効になります。

  2. ステート A の exit アクション (exitA()) が実行されて完了します。

  3. ステート A が非アクティブとしてマークされます。

  4. ステート B がアクティブとしてマークされます。

  5. ステート B の entry アクション (entB()) が実行されて完了します。

  6. ステート B がステート B.B1 への有効なデフォルト遷移を検出します。E_one の結果、デフォルト遷移が有効になります。

  7. ステート B.B1 がアクティブとしてマークされます。

  8. ステート B.B1 の entry アクション (entB1()) が実行されて完了します。

  9. チャートはスリープ状態に戻ります。

このシーケンスは、ステート A が最初にアクティブな場合に、イベント E_one に関連する Stateflow チャートの実行を完了します。