このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
パラレル ステート内の指示のないブロードキャスト イベント
ステート アクションでのイベントのブロードキャスト
以下の例は、パラレル ステートでのイベント ブロードキャスト アクションの動作を示しています。チャートは、パラレル ステートの暗黙的な順序付けを使用します (パラレル ステートの暗黙的な順序付けを参照)。
最初は、チャートはスリープ状態です。パラレル サブステート A.A1.A1a
と A.A2.A2a
がアクティブです。イベント E_one
が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_one
の結果、ルート レベルに有効な遷移が存在するかどうかをチェックします。有効な遷移は存在しません。ステート
A
のduring
アクション (durA()
) が実行されて完了します。ステート
A
の子は、パラレル (AND) ステートです。暗黙的な順序付けが適用されるため、左から右、上から下の順序でステートの評価と実行が行われます。ステートA.A1
が最初に評価されます。ステートA.A1
のduring
アクション (durA1()
) が実行されて完了します。ステートA.A1
が実行され、on
E_one
アクションが完了されて、イベント (E_two
) がブロードキャストされます。during
アクションとon
event_name
アクションは、ステートのラベル内での出現順に基づいて処理されます。イベント
E_two
のブロードキャストによって、チャートの 2 度目の起動が発生します。チャートのルートは、E_two
の結果、有効な遷移が存在するかどうかをチェックします。有効な遷移は存在しません。ステート A の
during
アクション (durA()
) が実行されて完了します。ステート A の子の有効な遷移がチェックされます。有効な遷移は存在しません。
ステート A の子がステート
A.A1
から順番に評価されます。ステートA.A1
のduring
アクション (durA1()
) が実行されて完了します。ステートA.A1
の有効な遷移が評価されます。ステートA1
には、E_two
の結果、有効な遷移は存在しません。ステート
A1a
のduring
アクション (durA1a()
) が実行されます。ステート
A.A2
が評価されます。ステートA.A2
のduring
アクション (durA2()
) が実行されて完了します。ステートA.A2
の有効な遷移がチェックされます。ステートA.A2
には、E_two
の結果、ステートA.A2
.A2a
からステートA.A2.A2b
への有効な遷移が存在します。ステート
A.A2.A2a
のexit
アクション (exitA2a()
) が実行されて完了します。ステート
A.A2.A2a
が非アクティブとしてマークされます。ステート
A.A2.A2b
がアクティブとしてマークされます。ステート
A.A2.A2b
のentry
アクション (entA2b()
) が実行されて完了します。
E_two
のon
イベント ブロードキャストが処理されてから、E_one
の処理は続行されます。イベントE_one
の結果として、ステートA
.A1
の有効な遷移がチェックされます。ステートA.A1.A1a
からステートA.A1.A1b
への有効な遷移が存在します。ステート
A.A1.A1a
がexit
アクション (exitA1a
) の実行を完了します。ステート
A.A1.A1a
が非アクティブとしてマークされます。ステート
A.A1.A1b
がアクティブとしてマークされます。ステート
A.A1.A1b
のentry
アクション (entA1b()
) が実行されて完了します。パラレル ステート
A.A2
が次に評価されます。ステートA.A2
のduring
アクション (durA2()
) が実行されて完了します。E_one
の結果、有効な遷移は存在しません。ステート
A.A2.A2b
のduring
アクション (durA2b()
) が実行されて完了します。E_two
のon
イベント ブロードキャスト処理の結果、ステートA.A2.A2b
がアクティブになります。チャートはスリープ状態に戻ります。
このシーケンスは、イベント E_one
と、イベント E_two
のパラレル ステートへの on
イベント ブロードキャストに関連する Stateflow® チャートの実行を完了します。最後のチャート アクティビティでは、パラレル サブステート A.A1.A1b
および A.A2.A2b
がアクティブになります。
ヒント
指示のないローカル イベント ブロードキャストは使用しないでください。指示のないローカル イベント ブロードキャストを使用すると、チャート内で不要な再帰的動作が発生する場合があります。代わりに、指示のあるブロードキャストを使用してローカル イベントを送信してください。詳細については、ローカル イベントをブロードキャストしてパラレル ステートを同期を参照してください。
シミュレーション時に Stateflow チャートは指示のないローカル イベント ブロードキャストを検出できます。診断アクションのレベルを制御するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[診断] 、 [Stateflow] ペインで、[指示のないイベント ブロードキャスト] パラメーターを [なし]
、[警告]
、または [エラー]
に設定します。既定の設定は [警告]
です。詳細については、指示のないイベント ブロードキャスト (Simulink)を参照してください。
遷移アクションでのイベントのブロードキャスト
以下の例は、パラレル ステートで入れ子にされたイベント ブロードキャストを含むイベント ブロードキャスト遷移アクションの動作を示しています。チャートは、パラレル ステートの暗黙的な順序付けを使用します (パラレル ステートの暗黙的な順序付けを参照)。
イベント E_one 処理の開始
最初は、チャートはスリープ状態です。パラレル サブステート A.A1.A1a
と A.A2.A2a
がアクティブです。イベント E_one
が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_one
の結果、有効な遷移が存在するかどうかをチェックします。有効な遷移は存在しません。ステート
A
のduring
アクション (durA()
) が実行されて完了します。ステート
A
の子は、パラレル (AND) ステートです。暗黙的な順序付けが適用されるため、左から右、上から下の順序でステートの評価と実行が行われます。ステートA.A1
が最初に評価されます。ステートA.A1
のduring
アクション (durA1()
) が実行されて完了します。イベント
E_one
の結果として、ステートA.A1
の有効な遷移がチェックされます。ステートA.A1.A1a
からステートA.A1.A1b
への有効な遷移が存在します。ステート
A.A1.A1a
がexit
アクション (exitA1a
) の実行を完了します。ステート
A.A1.A1a
が非アクティブとしてマークされます。
E_one よりも優先されるイベント E_two
イベント
E_two
をブロードキャストする遷移アクションが実行されて完了します。イベント
E_two
のブロードキャストは、ステートA1a
からステートA1b
(イベントE_one
によってトリガー) への遷移よりも優先されます。イベント
E_two
のブロードキャストによって、チャートの 2 度目の起動が発生します。チャートのルートは、E_two
の結果、有効な遷移が存在するかどうかをチェックします。有効な遷移は存在しません。ステート
A
のduring
アクション (durA()
) が実行されて完了します。ステート
A
の子がステートA.A1
から順番に評価されます。ステートA.A1
のduring
アクション (durA1()
) が実行されて完了します。ステートA.A1
の有効な遷移が評価されます。ステートA1
には、E_two
の結果、有効な遷移は存在しません。ステート
A.A2
が評価されます。ステートA
.A2
のduring
アクション (durA2()
) が実行されて完了します。ステートA
.A2
の有用な遷移がチェックされます。ステートA
.A2
には、E_two
の結果、ステートA.A2.A2a
からステートA.A2.A2b
への有効な遷移が存在します。ステート
A.A2.A2a
のexit
アクション (exitA2a()
) が実行されて完了します。ステート
A.A2.A2a
が非アクティブとしてマークされます。ステート
A.A2.A2b
がアクティブとしてマークされます。ステート
A.A2.A2b
のentry
アクション (entA2b()
) が実行されて完了します。
イベント E_one の処理再開
ステート
A.A1.A1b
がアクティブとしてマークされます。ステート
A.A1.A1b
の entry アクション (entA1b()
) が実行されて完了します。パラレル ステート
A.A2
が次に評価されます。ステートA.A2
の during アクション (durA2()
) が実行されて完了します。E_one
の結果、有効な遷移は存在しません。ステート
A.A2.A2b
の during アクション (durA2b()
) が実行されて完了します。イベント ブロードキャスト
E_two
処理の結果、ステートA.A2.A2b
がアクティブになります。チャートはスリープ状態に戻ります。
このシーケンスは、イベント E_one
と、イベント E_two
のパラレル ステートへの遷移アクション イベント ブロードキャストに関連する Stateflow チャートの実行を完了します。最後のチャート アクティビティでは、パラレル サブステート A.A1.A1b
および A.A2.A2b
がアクティブになります。
ヒント
指示のないローカル イベント ブロードキャストは使用しないでください。指示のないローカル イベント ブロードキャストを使用すると、チャート内で不要な再帰的動作が発生する場合があります。代わりに、指示のあるブロードキャストを使用してローカル イベントを送信してください。詳細については、ローカル イベントをブロードキャストしてパラレル ステートを同期を参照してください。
シミュレーション時に Stateflow チャートは指示のないローカル イベント ブロードキャストを検出できます。診断アクションのレベルを制御するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[診断] 、 [Stateflow] ペインで、[指示のないイベント ブロードキャスト] パラメーターを [なし]
、[警告]
、または [エラー]
に設定します。既定の設定は [警告]
です。詳細については、指示のないイベント ブロードキャスト (Simulink)を参照してください。
条件アクションでのイベントのブロードキャスト
以下の例は、パラレル (AND) ステートでの条件アクション イベント ブロードキャストの動作を示しています。チャートは、パラレル ステートの暗黙的な順序付けを使用します (パラレル ステートの暗黙的な順序付けを参照)。
最初は、チャートはスリープ状態です。パラレル サブステート A.A1.A1a
と A.A2.A2a
がアクティブです。イベント E_one
が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_one
の結果、有効な遷移が存在するかどうかをチェックします。有効な遷移は存在しません。ステート
A
のduring
アクション (durA()
) が実行されて完了します。ステート
A
の子は、パラレル (AND) ステートです。暗黙的な順序付けが適用されるため、上から下、左から右の順序でステートの評価と実行が行われます。ステートA.A1
が最初に評価されます。ステートA.A1
のduring
アクション (durA1()
) が実行されて完了します。イベント
E_one
の結果として、ステートA.A1
の有効な遷移がチェックされます。ステートA.A1.A1a
からステートA.A1.A1b
への有効な遷移が存在します。有効な条件アクションも存在します。E_two
の条件アクション イベント ブロードキャストが実行されて完了します。ステートA.A1.A1a
はこの時点でもアクティブです。イベント
E_two
のブロードキャストによって、Stateflow チャートの 2 度目の起動が発生します。チャートのルートは、E_two
の結果、有効な遷移が存在するかどうかをチェックします。有効な遷移は存在しません。ステート
A
のduring
アクション (durA()
) が実行されて完了します。ステート
A
の子がステートA.A1
から順番に評価されます。ステートA
.A1
のduring
アクション (durA1()
) が実行されて完了します。ステートA.A1
の有効な遷移が評価されます。ステートA1
には、E_two
の結果、有効な遷移は存在しません。ステート
A1a
のduring
アクション (durA1a()
) が実行されます。ステート
A.A2
が評価されます。ステートA.A2
のduring
アクション (durA2()
) が実行されて完了します。ステートA.A2
の有効な遷移がチェックされます。ステートA.A2
には、E_two
の結果、ステートA.A2.A2a
からステートA.A2.A2b
への有効な遷移が存在します。ステート
A.A2.A2a
のexit
アクション (exitA2a()
) が実行されて完了します。ステート
A.A2.A2a
が非アクティブとしてマークされます。ステート
A.A2.A2b
がアクティブとしてマークされます。ステート
A.A2.A2b
のentry
アクション (entA2b()
) が実行されて完了します。
ステート
A.A1.A1a
がexit
アクション (exitA1a
) の実行を完了します。ステート
A.A1.A1a
が非アクティブとしてマークされます。ステート
A.A1.A1b
がアクティブとしてマークされます。ステート
A.A1.A1b
のentry
アクション (entA1b()
) が実行されて完了します。パラレル ステート
A.A2
が次に評価されます。ステートA.A2
のduring
アクション (durA2()
) が実行されて完了します。E_one
の結果、有効な遷移は存在しません。ステート
A.A2.A2b
のduring
アクション (durA2b()
) が実行されて完了します。E_two
の条件アクション イベント ブロードキャスト処理の結果、ステートA.A2.A2b
がアクティブになります。チャートはスリープ状態に戻ります。
このシーケンスは、イベント E_one
と、イベント E_two
のパラレル ステートへの条件アクション イベント ブロードキャストに関連する Stateflow チャートの実行を完了します。最後のチャート アクティビティでは、パラレル サブステート A.A1.A1b
および A.A2.A2b
がアクティブになります。
ヒント
指示のないローカル イベント ブロードキャストは使用しないでください。指示のないローカル イベント ブロードキャストを使用すると、チャート内で不要な再帰的動作が発生する場合があります。代わりに、指示のあるブロードキャストを使用してローカル イベントを送信してください。詳細については、ローカル イベントをブロードキャストしてパラレル ステートを同期を参照してください。
シミュレーション時に Stateflow チャートは指示のないローカル イベント ブロードキャストを検出できます。診断アクションのレベルを制御するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[診断] 、 [Stateflow] ペインで、[指示のないイベント ブロードキャスト] パラメーターを [なし]
、[警告]
、または [エラー]
に設定します。既定の設定は [警告]
です。詳細については、指示のないイベント ブロードキャスト (Simulink)を参照してください。