Stateflow® チャートが起動すると、チャートはワークフローに従ってアクションを実行します。Stateflow チャートは次のタイミングで起動します。
Simulink® ソルバーに基づく各タイム ステップで
Stateflow チャートがイベントを受け取ったとき
チャートがはじめて起動する場合、チャートは初期化されてアクティブになります。チャート Entryを参照してください。チャートがアクティブになり、取るべきアクションがない場合、新しいタイム ステップまたはイベントによってトリガーされるまでチャートはスリープ状態に移行します。
次のフロー チャートは、Stateflow がチャートまたはステートを実行するために行われるイベントの進行を示しています。このフロー チャートでは、現在のステートが、決定またはプロセスの実行されているステートを参照します。
ステートでの during アクションは次の場合に実行されます。
ステートがアクティブで、新しいタイム ステップが発生し、別のステートへの有効な遷移がない
ステートがアクティブで、イベントが発生し、別のステートへの有効な遷移がない
during アクションには接頭辞 during
または du
が先行し、必須のコロン (:
)、1 つ以上のアクションが続きます。複数のアクションは、キャリッジ リターン、セミコロン (;
) またはコンマ (,
) で区切ります。ステートメントに対しステート アクション タイプを明示的に指定しない場合、チャートではそのステートメントを entry
,during
アクションとして扱います。
チャートが起動すると、ステートはその during
アクションを実行します (指定されている場合)。上記のフロー チャートはステート実行のプロセスを描写し、during
アクションが発生するタイミングを示しています。
Stateflow チャートにステートが含まれていない場合、チャートが実行されるたびに、Stateflow は必ずデフォルト遷移のパスを評価します。
Stateflow は、Stateflow チャート実行の一環として、出力遷移を評価のためにマークします。出力遷移が評価対象としてマークされたら、遷移を評価するためのワークフローに従ってください。Stateflow が出力遷移を評価する方法の詳細については、遷移の評価を参照してください。
Stateflow は、Stateflow チャート実行の一環として、内部遷移を評価のためにマークします。内部遷移が評価対象としてマークされたら、遷移を評価するためのワークフローに従ってください。Stateflow が内部遷移を評価する方法の詳細については、遷移の評価を参照してください。
この例では、Stateflow チャートが初期化され、StateA
と StateA1
に対し entry
アクションが実行されます。新しいタイム ステップが発生してチャートが起動します。
このタイム ステップでは、x = 5
、y = 2
、z = 0
です。
Stateflow チャート実行のワークフローに従うと、チャート実行のステップは次のような順序になります。
チャートにアクティブなサブステート StateA
があります。
StateA
には StateB
への出力遷移があります。遷移を評価するためのワークフローに従い、遷移が有効であると判定されます。
StateB
が entry
、StateA
が exit
の対象としてマークされます。
タイム ステップを完了するには、StateA
についてはステートを出るためのワークフロー、StateB
についてはチャートまたはステートに入るためのワークフローに従います。
この例では、Stateflow チャートが初期化され、StateA
と StateA1
に対し entry
アクションが実行されます。新しいタイム ステップが発生してチャートが起動します。
このタイム ステップでは、x = 3
、y = 0
、z = 0
です。
チャートがスリープするまでStateflow チャート実行のワークフローに従うと、チャート実行のステップは次のような順序になります。
チャートにアクティブなサブステート StateA
があります。
StateA
には StateB
への出力遷移があります。遷移を評価するためのワークフローに従い、遷移は無効であると判定されます。
StateA
に対して during
アクションを実行します。ここで y = 1
になります。
StateA
には内部遷移がありません。
StateA
のアクティブなサブステートは StateA1
です。
StateA1
には StateA2
への出力遷移があります。遷移を評価するためのワークフローに従い、遷移は無効であると判定されます。
StateA1
に対して during
アクションを実行します。ここで x = 4
になります。
StateA1
にはアクティブなサブステートがありません。
チャートはスリープします。
ステップ 1 ~ 9 は 2 番目のタイム ステップで発生します。