排他的ステート間の遷移
ステート間の遷移に対するラベル形式
以下の例は、ステートに入力する遷移に対する一般的なラベル形式を示しています。

チャートは、この遷移を以下のように実行します。
イベントが発生すると、ステート
S1は一致するイベントが指定された出力遷移をチェックします。一致するイベントを含む遷移が検出された場合は、その遷移の条件 (
[condition]) が評価されます。conditionが真の場合は、condition_actionが実行されます。遷移先ステートへの有効な遷移が存在する場合は、遷移が実行されます。
ステート
S1からの出力が発生します。遷移が実行されると、遷移アクション
transition_actionが実行されます。ステート
S2への入力が発生します。
イベントによるステート間の遷移
以下の例は、ステートがアクティブになるか非アクティブになるかどうかの結果に注目して、簡単な遷移の動作を示しています。

最初のイベントの処理
最初は、チャートはスリープ状態です。ステート On とステート Off は、OR ステートです。ステート On がアクティブです。イベント E_one が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_oneの結果、有効な遷移が存在するかどうかをチェックします。ステートOnからステートOffで、有効な遷移が検出されます。ステート
Onの exit アクション (exitOn()) が実行されて完了します。ステート
Onが非アクティブとしてマークされます。イベント
E_oneが遷移アクションとしてブロードキャストされます。この 2 番目のイベント
E_oneが処理されますが、どちらのステートもアクティブにならないため、影響はありません。E_oneの 2 番目のブロードキャストが原因で有効な遷移が発生した場合は、E_oneの最初のブロードキャストの処理よりも優先されます。早期リターン ロジックを参照してください。ステート
Offがアクティブとしてマークされます。ステート
Offの entry アクション (entOff()) が実行されて完了します。チャートはスリープ状態に戻ります。
このシーケンスは、ステート On が最初にアクティブな場合に、イベント E_one に関連する Stateflow® チャートの実行を完了します。
2 番目のイベントの処理
同じ例を使用して、ステート Off がアクティブなときに、次のイベント E_one が発生した場合の影響を考えます。

最初は、チャートはスリープ状態です。ステート Off がアクティブです。イベント E_one が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_oneの結果、有効な遷移が存在するかどうかをチェックします。ステート
OffからステートOnで、有効な遷移が検出されます。ステート
Offの exit アクション (exitOff()) が実行されて完了します。ステート
Offが非アクティブとしてマークされます。ステート
Onがアクティブとしてマークされます。ステート
Onの entry アクション (entOn()) が実行されて完了します。チャートはスリープ状態に戻ります。
このシーケンスは、ステート Off が最初にアクティブな場合に、2 番目のイベント E_one に関連する Stateflow チャートの実行を完了します。
3 番目のイベントの処理
同じ例を使用して、3 番目のイベント E_two が発生した場合の影響を考えます。

上記の例では、イベント E_two は明示的に使用されていないことに注意してください。ただし、このイベントが発生 (または何らかのイベントが発生) すると、動作に影響します。最初はチャートはスリープ状態であり、ステート On がアクティブです。
イベント
E_twoが発生して、チャートを起動します。イベント
E_twoは、チャートのルートからチャートの階層の下方向に処理されます。チャートのルートは、
E_twoの結果、有効な遷移が存在するかどうかをチェックします。該当するものは存在しません。ステート
Onの during アクション (durOn()) が実行されて完了します。チャートはスリープ状態に戻ります。
このシーケンスは、ステート On が最初にアクティブな場合に、イベント E_two に関連する Stateflow チャートの実行を完了します。
ヒント
指示のないローカル イベント ブロードキャストは使用しないでください。指示のないローカル イベント ブロードキャストを使用すると、チャート内で不要な再帰的動作が発生する場合があります。代わりに、指示のあるブロードキャストを使用してローカル イベントを送信してください。詳細については、ローカル イベントをブロードキャストしてパラレル ステートを同期を参照してください。
シミュレーション時に Stateflow チャートは指示のないローカル イベント ブロードキャストを検出できます。診断アクションのレベルを制御するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[診断] 、 [Stateflow] ペインで、[指示のないイベント ブロードキャスト] パラメーターを [なし]、[警告]、または [エラー] に設定します。既定の設定は [警告] です。詳細については、指示のないイベント ブロードキャスト (Simulink)を参照してください。
イベントによるサブステート間の遷移
以下の例は、OR サブステート間の遷移の動作を示しています。

最初は、チャートはスリープ状態です。ステート A.A1 がアクティブです。条件 C_one は真です。イベント E_one が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_oneの結果、有効な遷移が存在するかどうかをチェックします。ステートA.A1からステートB.B1への有効な遷移が存在します (条件C_oneは真です)。ステート
Aの during アクション (durA()) が実行されて完了します。ステート
A.A1の exit アクション (exitA1()) が実行されて完了します。ステート
A.A1が非アクティブとしてマークされます。ステート
Aの exit アクション (exitA()) が実行されて完了します。ステート
Aが非アクティブとしてマークされます。遷移アクション
Aが実行されて完了します。ステート
Bがアクティブとしてマークされます。ステート
Bの entry アクション (entB()) が実行されて完了します。ステート
B.B1がアクティブとしてマークされます。ステート
B.B1の entry アクション (entB1()) が実行されて完了します。チャートはスリープ状態に戻ります。
このシーケンスは、イベント E_one に関連する Stateflow チャートの実行を完了します。