Main Content

チャートの実行タイプ

Stateflow チャートのライフ サイクル

Stateflow® チャートは、以下に示す複数の実行ステージを経て実行されます。

ステージ説明
非アクティブチャートにアクティブなステートが存在していない
アクティブチャートにアクティブなステートが存在している
スリープチャートにアクティブなステートは存在しているが、処理する対象のイベントは存在していない

Simulink® モデルによって最初に Stateflow チャートがトリガーされた時点では、チャートは非アクティブであり、アクティブなステートは存在していません。実行後、Simulink モデルの初期トリガー イベントの処理が完了したチャートは、モデルに制御を戻して、スリープ状態に移行します。次の Simulink トリガー イベントで、チャートはスリープ状態からアクティブ ステージに移行します。

イベントを使用してチャートを実行 を参照してください。

非アクティブなチャートの実行

チャートが非アクティブで、Simulink モデルからのイベントで最初にトリガーされるとき、まず既定のフロー チャートが実行されます (一連のフロー チャートの実行順序を参照)。このアクションによってステートへの移行が行われず、チャートにパラレル構造が設定されている場合は、各パラレル ステートがアクティブになります (チャートまたはステートに入るを参照)。

既定のフロー パスの実行によってステート Entry が発生しなかった場合は、ステートの矛盾エラーが発生します。

アクティブなチャートの実行

チャートは Simulink モデルによって最初にトリガーされた後に、アクティブなチャートになります。モデルから別のイベントを受信した場合は、再びアクティブ チャートとして実行されます。チャートにステートが存在しない場合は、実行ごとにチャートが初期化されることになります。そうでない場合は、アクティブなサブステートが実行されます。パラレル ステートは、アクティブになるのと同じ順序で実行されます。

チャートの初期化実行

既定の設定では、初めて起動したチャートにより、デフォルト遷移パスが実行されます。この時点では、入力へのアクセス、出力への書き込み、およびイベントのブロードキャストが可能です。

既知のコンフィギュレーションからチャートを開始する必要がある場合は、[初期化時に指定されたチャートを実行 (入力)] チャート プロパティを有効にします。このオプションをオンにすると、チャートのステート構成は、最初の入力イベントの発生時ではなく、ゼロ時間で初期化されます。S-Function の mdlInitializeConditions() (Simulink) フェーズに対応する時間 0 でのモデル初期化フェーズ中に、チャートのデフォルト遷移パスが実行されます。詳細については、初期化時に指定されたチャートを実行 (入力)を参照してください。

メモ

このチャートの出力が SimEvents® ブロックに接続される場合は、このチェック ボックスを選択しないでください。Stateflow チャートと SimEvents ブロックを組み合わせてモデルで使用する方法の詳細は、SimEvents ドキュメンテーションを参照してください。

初期化フェーズの過渡特性を考慮して、初期化時に実行されるチャートのデフォルト遷移パスに含まれる特定のアクションと、そのアクションに関連するステート entry アクションは実行しないでください。以下のガイドラインに従います。

  • チャートの入力端子に接続されたブロックで出力が初期化されていない可能性があるので、チャート入力データにアクセスしないでください。

  • 他のチャートは初期化されていない可能性があるので、エクスポートされたグラフィカル関数を他のチャートから呼び出さないでください。

  • Triggered Subsystem は初期化されていない可能性があるので、関数呼び出し出力イベントをブロードキャストしないでください。

チャートの入力データへの無効なアクセスに対する診断アクションのレベルを制御するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[診断][Stateflow] ペインで、[チャート初期化の無効な入力データ アクセス] パラメーターを [なし][警告]、または [エラー] に設定します。既定の設定は [警告] です。詳細については、Invalid input data access in chart initialization (Simulink)を参照してください。

ステートを含んでいない Stateflow チャートでは、初期化時の実行は無視されます。

初期化時の実行の例

この例では、Step Function ブロックの値が 5 秒後に 0 から 1 に上昇し、チャートがトリガーされます。

Simulink model that triggers a chart after 5 seconds.

The chart sets the value of output to 1.

Triggered chart. The default transition connects to the Set_Output state. On entry, the Set_Output state sets the value of the output symbol to 1.

[初期化時に指定されたチャートを実行 (入力)] チャート プロパティを無効にすると、Scope ブロックは最初に、output の値を 0 と表示します。これは、初期化されていないシンボルの既定値です。5 秒後、Step Function ブロックがチャートをトリガーし、output の値が 1 に設定されます。

Scope block after disabling the Execute (enter) Chart Initialization chart property. From 0 to 5 seconds, output displays a value of 0. From 5 to 10 seconds, output displays a value of 1.

[初期化時に指定されたチャートを実行 (入力)] チャート プロパティを有効にすると、シミュレーション開始と同時にチャートが実行されます。0 秒になると、Scope ブロックは、output の値を 1 と表示します。

Scope block after enabling the Execute (enter) Chart Initialization chart property. Starting at 0 seconds, output displays a value of 1.

関連するトピック