ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

遷移

"遷移"は、矢印付きの線で表現されます。この線は、あるグラフィカル オブジェクトを別のグラフィカル オブジェクトにリンクします。ほとんどの場合、遷移は、あるモード (ステート) から別のモードに至るシステムの経路を表しています。遷移は通常、遷移元オブジェクトと遷移先オブジェクトを接続します。"遷移元" オブジェクトは遷移の開始点であり、"遷移先" オブジェクトは遷移の終了点です。以下のチャートは、遷移元ステート B から遷移先ステート A への遷移を示します。

ジャンクションは、遷移を遷移セグメントに分割します。この場合、遷移全体としては、元のステートから遷移先のステートに至るセグメントで構成されています。各セグメントは、遷移全体としての妥当性を判定する過程で評価されます。

以下の例には、 2 つのセグメントで構成された遷移が含まれています。1 つはステート On からステート Off、もう 1 つはステート On からそれ自体に至るものです。

デフォルト遷移は、遷移元オブジェクトを含まない特殊なタイプの遷移です。詳細は、デフォルト遷移を参照してください。

遷移階層

遷移は、ステートのように他のオブジェクトを含めることはできません。ただし、遷移はステートに含まれます。遷移の階層は、その親ステート、遷移元ステート、および遷移先ステートによって記述されます。親は、遷移元と遷移先を含める最下位レベルです。以下の例では、遷移の親を考えます。

以下の表は、前述の例に含まれる各遷移の親子関係を示しています。/ 文字はチャートを表します。ステートの階層内の各レベルは、ピリオド (.) 文字で区切られています。

遷移ラベル

遷移の親

遷移元

遷移先

switch_off

/

/Power_on.Low.Heat

/Power_off

switch_high

/Power_on

/Power_on.Low.Heat

/Power_on.High

switch_cold

/Power_on.Low

/Power_on.Low.Heat

/Power_on.Low.Cold

遷移ラベル表記法

"遷移ラベル" は、イベントまたはメッセージ、条件、条件アクション、および遷移アクションで構成することができます。ラベルの各部分はオプションです。? 文字はデフォルト遷移を表すラベルです。遷移ラベルは全体として次のような形式を取ります。

event_or_message[condition]{condition_action}/transition_action

次の例は遷移ラベルの部分を示しています。

イベント トリガーまたはメッセージ トリガー

条件が真の場合に遷移を発生させるイベントまたはメッセージを指定します。複数のイベントを指定するには、OR 論理演算子 (|) を使用します。イベントまたはメッセージの指定はオプションです。イベントまたはメッセージが指定されていない場合は、任意のイベントが発生したときに遷移が発生します。詳細については、イベントのブロードキャストによるモデル コンポーネントの同期メッセージ送信による Stateflow チャートとの通信を参照してください。

前の例では、条件 [off_count==0] が真の場合、イベント E のブロードキャストによって On から Off への遷移がトリガーされます。

条件

論理式を指定します。真の場合、これは、指定されたイベント トリガーまたはメッセージ トリガーに対して遷移を検証します。条件は大かっこ ([]) で囲みます。条件を指定していない場合、暗黙の条件は真として評価されます。詳細については、条件を参照してください。

前の例では、イベント E の発生に際し On から Off への遷移が有効であるためには、条件 [off_count==0] が真として評価されなければなりません。

条件アクション

実行されるのは、遷移の条件が真として評価された後、遷移先への遷移が有効と判定される前です。条件アクションは条件の後に中かっこ ({}) で囲んで指定します。詳細については、条件アクションの動作を参照してください。

前の例では、イベント E が発生し条件 [off_count==0] が真であれば、条件アクション {off_count = off_count + 1} が直ちに実行されます。

遷移アクション

遷移先への遷移が有効と判定された後に実行されます。遷移が複数のセグメントで構成されている場合、遷移アクションは、最終的な遷移先への遷移パス全体が有効であると判定されたときに実行されます。遷移アクションは、遷移元ステートの exit アクションの後、遷移先ステートの entry アクションの前に発生します。遷移アクションの前には、/ を追加します。詳細については、条件アクションと遷移アクションの動作を参照してください。

前の例では、イベント E が発生して条件 [off_count==0] が真の場合、On から Off への遷移が有効と判定されると遷移アクション {Light_off()} が実行されます。遷移アクションは、On が非アクティブになった後、Off がアクティブになる前に発生します。

遷移アクションは、Simulink® モデルの Stateflow® チャートでのみサポートされます。

有効な遷移

通常、遷移が有効になるのは、遷移元のステートがアクティブで遷移ラベルが有効なときです。デフォルト遷移では、遷移元のステートが存在しないため、上記と異なります。サブステートへのデフォルト遷移の妥当性が評価されるのは、スーパーステートがアクティブであるという状況で、スーパーステートへの遷移が発生したときです。このラベルリングの規範は、デフォルト遷移と通常遷移の両方に適用されます。以下に示すのは、有効な遷移ラベルの組み合わせです。

遷移ラベル

有効になる条件

イベントのみ

イベントの発生

イベントと条件

イベントの発生と条件が真であること

メッセージのみ

メッセージの発生

メッセージと条件

メッセージの発生と条件が真であること

条件のみ

任意のイベントの発生と条件が真であること

アクションのみ

任意のイベントの発生

指定なし

任意のイベントの発生

遷移接続

排他的 (OR) ステート間の遷移

以下の例は、排他的 (OR) ステート間の簡単な遷移を示しています。

以下の遷移...有効になるのは...
B から Aステート B がアクティブな状況でイベント E1 が発生したときです。
A1 から A2ステート A1 がアクティブな状況でイベント E2 が発生したときです。

この表記法のセマンティクスに関する詳細は、排他的ステート間の遷移を参照してください。

ジャンクション経由の遷移

以下のチャートは、コネクティブ ジャンクション経由の遷移を示しています。

チャートは時相論理を使用して、入力 u が 1 に等しくなるときを決定します。

入力が 1 に等しい場合...遷移が起きるのは...
t = 2 の前Start から Fast
t = 2 から t = 5 の間Start から Good
t = 5 の後Start から Slow

時相論理についての詳細は、時相論理を使用したチャート実行の制御を参照してください。この表記法のセマンティクスに関する詳細は、共通の遷移元から複数の遷移先への遷移を参照してください。

排他的 (OR) スーパーステート間の遷移

以下の例は、排他的 (OR) スーパーステート間の遷移とデフォルト遷移の使用法を示しています。

チャートには、階層の最上位レベルで 2 つのステート Power_offPower_on が設定されています。既定では、Power_off がアクティブです。イベント Switch は、システムを Power_off ステートと Power_on ステートの間で切り替えます。Power_on には次の 3 つのサブステートがあります。すなわち、FirstSecondThird です。既定の設定では、Power_on がアクティブになると First もアクティブになります。Shift が 1 に等しい場合は、イベント Switch が発生するたびに、システムは First から SecondSecond から ThirdThird から First に遷移し、このパターンを繰り返します。

この表記法のセマンティクスに関する詳細は、デフォルト遷移を使用したチャートの実行の制御を参照してください。

サブステート間の遷移

以下の例は、排他的 (OR) サブステート間の遷移を示しています。

このチャートの仕組みの詳細については、故障検出による信号のデバウンスを参照してください。この表記法のセマンティクスに関する詳細は、イベントによるサブステート間の遷移を参照してください。

関連するトピック