Main Content

Stateflow チャートの実行

Stateflow® チャートが起動すると、チャートはワークフローに従ってアクションを実行します。Stateflow チャートは次のタイミングで起動します。

  • 各タイム ステップにおいて

  • Stateflow チャートがイベントを受け取ったとき

チャートがはじめて起動する場合、チャートまたはステートに入るためのワークフローで説明されているように、チャートは初期化されてアクティブになります。これ以上取るべきアクションがない場合、新しいタイム ステップまたはイベントによって起動されるまでチャートはスリープ状態に移行します。

Stateflow チャート実行のワークフロー

次のフロー チャートは、Stateflow がチャートまたはステートを実行する際に行われるイベントの進行を示しています。このフロー チャートでは、現在のステートは、決定またはプロセスが実行されるステートを参照します。

Flow chart that shows the steps for executing a chart or state.

デフォルト遷移

"デフォルト遷移" は、遷移元がない遷移です。ステートが含まれていない Stateflow チャートでは、デフォルト遷移がフロー チャートの開始位置としてマークされます。詳細については、Stateflow でのフロー チャートの作成を参照してください。

Stateflow チャートにステートが含まれていない場合、チャートが起動されるたびに、チャートによってデフォルト遷移パスが評価されます。評価対象のデフォルト遷移をマークした後、チャートは遷移を評価するためのワークフローに示すステップに従います。

メモ

チャートは、チャートが起動するたびにではなく、ステート entry 時にのみステート内のデフォルト遷移パスを評価します。

外部遷移

"外部遷移" は、遷移元ステートを出る遷移です。Stateflow チャートは、ステートを実行する最初のステップとして、評価対象の外部遷移をマークします。評価対象の外部遷移をマークした後、チャートは遷移を評価するためのワークフローに示すステップに従います。

during アクション

during アクションは、ステート ラベルのアクション内で、接頭辞 during または du を使用して定義されたアクションです。詳細については、ステートのアクションの定義を参照してください。

ステートは、チャートが起動されたとき、ステートがアクティブなとき、および有効な外部遷移がないときに、during アクションを実行します。

内部遷移

"内部遷移" は、遷移元のステートを終了しない遷移です。詳細については、内部遷移を使用したチャートの実行の制御を参照してください。

Stateflow チャートは、ステートで during アクションが実行された後に、評価対象の内部遷移をマークします。評価対象の内部遷移をマークした後、チャートは遷移を評価するためのワークフローに示すステップに従います。

有効な遷移のあるチャート実行

この例では、Stateflow チャートが初期化済みで、StateAStateA1 に対し entry アクションが実行済みです。新しいタイム ステップが発生してチャートが起動します。

このタイム ステップでは、x = 5y = 2z = 0 です。

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

以下のステップがチャートで実行されます。

  1. チャートにアクティブなサブステート StateA があります。

  2. StateA には StateB への外部遷移があります。チャートで遷移が有効であると判定されます。

  3. チャートによって StateB が entry 対象として、StateA が exit 対象としてマークされます。

  4. StateA を出るために、チャートはステートを出るためのワークフローに示すステップに従います。

  5. StateB に入るために、チャートはチャートまたはステートに入るためのワークフローに示すステップに従います。

有効な遷移のないチャート実行

この例では、Stateflow チャートが初期化済みで、StateAStateA1 に対し entry アクションが実行済みです。新しいタイム ステップが発生してチャートが起動します。

このタイム ステップでは、x = 3y = 0z = 0 です。

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

以下のステップがチャートで実行されます。

  1. チャートにアクティブなサブステート StateA があります。

  2. StateA には StateB への外部遷移があります。チャートで遷移が無効であると判定されます。

  3. チャートは、StateA に対して during アクションを実行します。ここで y = 1 になります。

  4. StateA には内部遷移がありません。

  5. StateA のアクティブなサブステートは StateA1 です。

  6. StateA1 には StateA2 への外部遷移があります。チャートで遷移が無効であると判定されます。

  7. チャートは、StateA1 に対して during アクションを実行します。ここで x = 4 になります。

  8. StateA1 にはアクティブなサブステートがありません。

  9. チャートはスリープします。

関連するトピック