Main Content

パラレル ステートでのローカル イベントのブロードキャスト

send による指示のあるイベント ブロードキャスト

以下の例は、遷移での send(event_name,state_name) 構文による指示のあるイベント ブロードキャストの動作を示しています。

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

最初は、チャートはスリープ状態です。パラレル サブステート A.A1B.B1 がアクティブであり、パラレル (AND) スーパーステート AB がアクティブであることも意味します。条件 [data1==1] は真です。イベント E_one はチャートに属しており、AB の両方にとって可視的です。

起動後、チャートは階層の各レベルで有効な遷移をチェックします。

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

  2. イベントの結果、ステート A の有効な遷移がチェックされます。条件 [data1==1] が真であるため、ステート A.A1 からステート A.A2 への有効な遷移が存在します。

  3. アクション send(E_one,B) が実行されます。

    1. イベント E_one のブロードキャストがステート B に到達します。ステート B がアクティブであるため、ステートがイベント ブロードキャストを受け入れ、有効な遷移が存在するかどうかをチェックします。B.B1 から B.B2 への有効な遷移が存在します。

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

    3. ステート B.B1 が非アクティブになります。

    4. ステート B.B2 がアクティブになります。

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

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

  5. ステート A.A1 が非アクティブになります。

  6. ステート A.A2 がアクティブになります。

  7. ステート A.A2entry アクション (entA2()) が実行されて完了します。

このシーケンスは、パラレル ステートに対する指示のあるイベント ブロードキャストを伴うチャートの実行を完了します。

修飾イベント名による指示のあるイベント ブロードキャスト

以下の例は、遷移アクションでの修飾イベント名による指示のあるイベント ブロードキャストの動作を示しています。

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

send による指示のあるイベント ブロードキャスト におけるチャートとの唯一の違いは、以下のとおりです。

  • イベント E_one がステート B に属しており、そのステートにとってのみ可視的です。ステート B のスコープにイベント E_one を割り当てるには、モデル エクスプローラーでステートを選択してイベントを追加します。

  • アクション send(E_one,B)send(B.E_one) です。

    E_one がステート A にとって可視的ではないため、修飾イベント名を使用しなければなりません。

起動後、チャートは階層の各レベルで有効な遷移をチェックします。

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

  2. イベントの結果、ステート A の有効な遷移がチェックされます。条件 [data1==1] が真であるため、ステート A.A1 からステート A.A2 への有効な遷移が存在します。

  3. アクション send(B.E_one) が実行されて完了します。

    1. イベント E_one のブロードキャストがステート B に到達します。ステート B がアクティブであるため、ステートがイベント ブロードキャストを受け入れ、有効な遷移が存在するかどうかをチェックします。B.B1 から B.B2 への有効な遷移が存在します。

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

    3. ステート B.B1 が非アクティブになります。

    4. ステート B.B2 がアクティブになります。

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

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

  5. ステート A.A1 が非アクティブになります。

  6. ステート A.A2 がアクティブになります。

  7. ステート A.A2entry アクション (entA2()) が実行されて完了します。

このシーケンスは、修飾イベント名によるパラレル ステートへの指示のあるイベント ブロードキャストを伴うチャートの実行を完了します。

参考

関連するトピック