メインコンテンツ

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

R2026b

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.A1 と B.B1 がアクティブであり、パラレル (AND) スーパーステート A と B がアクティブであることも意味します。条件 [data1==1] は真です。イベント E_one はチャートに属しており、A と B の両方にとって可視的です。

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

  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.B1 の exit アクション (exitB1()) が実行されて完了します。

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

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

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

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

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

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

  7. ステート A.A2 の entry アクション (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.B1 の exit アクション (exitB1()) が実行されて完了します。

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

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

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

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

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

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

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

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

参考

トピック