Stateflow チャートの実行
Stateflow® チャートが起動すると、チャートはワークフローに従ってアクションを実行します。Stateflow チャートは次のタイミングで起動します。
各タイム ステップにおいて
Stateflow チャートがイベントを受け取ったとき
チャートがはじめて起動する場合、チャートまたはステートに入るためのワークフローで説明されているように、チャートは初期化されてアクティブになります。これ以上取るべきアクションがない場合、新しいタイム ステップまたはイベントによって起動されるまでチャートはスリープ状態に移行します。
Stateflow チャート実行のワークフロー
次のフロー チャートは、Stateflow がチャートまたはステートを実行する際に行われるイベントの進行を示しています。このフロー チャートでは、現在のステートは、決定またはプロセスが実行されるステートを参照します。
デフォルト遷移
"デフォルト遷移" は、遷移元がない遷移です。ステートが含まれていない Stateflow チャートでは、デフォルト遷移がフロー チャートの開始位置としてマークされます。詳細については、Stateflow でのフロー チャートの作成を参照してください。
Stateflow チャートにステートが含まれていない場合、チャートが起動されるたびに、チャートによってデフォルト遷移パスが評価されます。評価対象のデフォルト遷移をマークした後、チャートは遷移を評価するためのワークフローに示すステップに従います。
メモ
チャートは、チャートが起動するたびにではなく、ステート entry 時にのみステート内のデフォルト遷移パスを評価します。
外部遷移
"外部遷移" は、遷移元ステートを出る遷移です。Stateflow チャートは、ステートを実行する最初のステップとして、評価対象の外部遷移をマークします。評価対象の外部遷移をマークした後、チャートは遷移を評価するためのワークフローに示すステップに従います。
during アクション
during
アクションは、ステート ラベルのアクション内で、接頭辞 during
または du
を使用して定義されたアクションです。詳細については、ステートのアクションの定義を参照してください。
ステートは、チャートが起動されたとき、ステートがアクティブなとき、および有効な外部遷移がないときに、during
アクションを実行します。
内部遷移
"内部遷移" は、遷移元のステートを終了しない遷移です。詳細については、内部遷移を使用したチャートの実行の制御を参照してください。
Stateflow チャートは、ステートで during
アクションが実行された後に、評価対象の内部遷移をマークします。評価対象の内部遷移をマークした後、チャートは遷移を評価するためのワークフローに示すステップに従います。
有効な遷移のあるチャート実行
この例では、Stateflow チャートが初期化済みで、StateA
と StateA1
に対し entry
アクションが実行済みです。新しいタイム ステップが発生してチャートが起動します。
このタイム ステップでは、x = 5
、y = 2
、z = 0
です。
以下のステップがチャートで実行されます。
チャートにアクティブなサブステート
StateA
があります。StateA
にはStateB
への外部遷移があります。チャートで遷移が有効であると判定されます。チャートによって
StateB
が entry 対象として、StateA
が exit 対象としてマークされます。StateA
を出るために、チャートはステートを出るためのワークフローに示すステップに従います。StateB
に入るために、チャートはチャートまたはステートに入るためのワークフローに示すステップに従います。
有効な遷移のないチャート実行
この例では、Stateflow チャートが初期化済みで、StateA
と StateA1
に対し entry
アクションが実行済みです。新しいタイム ステップが発生してチャートが起動します。
このタイム ステップでは、x = 3
、y = 0
、z = 0
です。
以下のステップがチャートで実行されます。
チャートにアクティブなサブステート
StateA
があります。StateA
にはStateB
への外部遷移があります。チャートで遷移が無効であると判定されます。チャートは、
StateA
に対してduring
アクションを実行します。ここでy = 1
になります。StateA
には内部遷移がありません。StateA
のアクティブなサブステートはStateA1
です。StateA1
にはStateA2
への外部遷移があります。チャートで遷移が無効であると判定されます。チャートは、
StateA1
に対してduring
アクションを実行します。ここでx = 4
になります。StateA1
にはアクティブなサブステートがありません。チャートはスリープします。