ドキュメンテーション

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

遷移

遷移とは

"遷移"は、矢印付きの線で表現されます。この線は、あるグラフィカル オブジェクトを別のグラフィカル オブジェクトにリンクします。ほとんどの場合、遷移は、あるモード (ステート) オブジェクトから別のモードに至るシステムの経路を表しています。遷移は通常、遷移元オブジェクトと遷移先オブジェクトを接続します。遷移元オブジェクトは遷移の開始点であり、遷移先オブジェクトは遷移の終了点です。以下のチャートは、遷移元ステート 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 論理演算子 (|) を使用します。イベントまたはメッセージの指定はオプションです。イベントまたはメッセージが指定されていない場合は、任意のイベントが発生したときに遷移が発生します。詳細については、イベントのブロードキャストによる Simulink サブシステムとの通信メッセージ送信による 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 がアクティブになる前に発生します。

有効な遷移

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

遷移ラベル

有効になる条件

イベントのみ

イベントの発生

イベントと条件

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

メッセージのみ

メッセージの発生

メッセージと条件

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

条件のみ

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

アクションのみ

任意のイベントの発生

指定なし

任意のイベントの発生

関連するトピック