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

遷移とジャンクションを結合して分岐パスを作成

"コネクティブ ジャンクション" は、遷移パスの判定点を表します。遷移とコネクティブ ジャンクションを結合すると、共通の遷移元から複数の遷移先へのパス、または複数の遷移元から共通の遷移先へのパスを作成できます。分岐パスのセマンティクスの詳細については、コネクティブ ジャンクションを使用した複数パスの表現を参照してください。

コネクティブ ジャンクションの追加

遷移をチャートに追加するときに、Stateflow® エディターはジャンクションまたはステートを追加できるようにするためのグラフィカル キューを提供します。ジャンクションを遷移の末尾に配置するには、円形のジャンクション キューをクリックします。

または、次の手順でチャートに孤立したジャンクションを追加します。

  1. Stateflow エディターを開きます。

  2. オブジェクト パレットで [ジャンクション] アイコン をクリックし、ポインターをチャート キャンバスに移します。コネクティブ ジャンクションが表示されます。

  3. コネクティブ ジャンクションを配置するには、キャンバス上の位置をクリックします。

コネクティブ ジャンクションのプロパティの変更

1 つ以上のコネクティブ ジャンクションのサイズを変更するには、次の手順に従います。

  1. コネクティブ ジャンクションを選択します。

  2. 選択したジャンクションのいずれかを右クリックし、[ジャンクション サイズ] を選択します。

  3. ドロップダウン リストから、ジャンクションのサイズを選択します。

コネクティブ ジャンクションのその他のプロパティを変更するには、コネクティブ ジャンクションを右クリックして [プロパティ] を選択します。[コネクティブ ジャンクション] ダイアログ ボックスに次のプロパティが表示されます。

  • — コネクティブ ジャンクションの親ステート。親を前面に表示するには、ハイパーテキスト リンクをクリックします。このプロパティは読み取り専用です。

  • 説明 — ジャンクションのテキストによる説明。簡単な説明とコメントを入力できます。

  • ドキュメント リンク — 関数のオンライン ドキュメンテーションへのリンク。適切なオンライン形式 (HTML ファイルや MATLAB® コマンド ウィンドウのテキストなど) でドキュメンテーションを表示する、Web の URL アドレスまたは MATLAB コマンドを入力できます。[ドキュメント リンク] ハイパーリンクをクリックすると、Stateflow でリンクが評価され、ドキュメンテーションが表示されます。

コネクティブ ジャンクションがある遷移パスの例

遷移とコネクティブ ジャンクションを結合すると、次のような共通の遷移パターンを作成できます。

  • if-then-else 判定パターン

  • for ループ パターン

  • while ループ パターン

これらのパターンの作成時間を短縮するには、パターン ウィザードを使用します。詳細については、パターン ウィザードを使用したフロー チャートの作成を参照してください。

すべての条件が指定された If-then-else パターン

この例では、ステート Checked_in はデフォルト遷移パスをもち、3 つのコネクティブ ジャンクションがあります。パスの各分岐は条件によりガードされています。

ステート Front_desk がアクティブである場合、イベント check_inChecked_in のデフォルト遷移の実行をトリガーします。デフォルト遷移の結果は、room_type の値によって異なります。

  • room_type が 1 の場合、サブステート Executive_suite がアクティブになります。

  • room_type が 2 の場合、サブステート Family_suite がアクティブになります。

  • room_type が 3 の場合、サブステート Single_room がアクティブになります。

  • どの条件も真でない場合、デフォルト遷移パスは無効となり、Front_desk はアクティブのままとなります。

このチャートの詳細については、実行時の Stateflow オブジェクトの相互作用を参照してください。

無条件遷移がある If-then-else パターン

この例では、ステート Start からの遷移に 3 つのコネクティブ ジャンクションがあります。パスの分岐のうち最初の 2 つは、条件によりガードされています。パスの最後の分岐には条件がありません。

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

  • u が時間 $t=2$ より前に 1 に等しくなる場合、ステート Fast がアクティブになります。

  • u$t=2$$t=5$ の間で 1 に等しくなる場合、ステート Good がアクティブになります。

  • u$t=5$ より後で 1 に等しくなる場合、ステート Slow がアクティブになります。

このチャートの詳細については、経過時間の検出を参照してください。

For ループ パターン

この例では、フロー チャートで遷移とコネクティブ ジャンクションの結合が使用され、for ループが作成されています。

カウンター i の値が 1 から 10 まで増加すると、それに伴いフロー チャートは配列 output の要素を定義します。このフロー チャートのループは、次の MATLAB コードのスニペットと等価です。

for i = 1:10
    output(i) = 2*i;
end

While ループ パターン

この例では、フロー チャートで遷移とコネクティブ ジャンクションを結合し、入力の最大公約数を計算する while ループを作成しています。

このフロー チャートのループは、次の C コードのスニペットと等価です。

while(q > 0) {
    r = fmod(p,q);
    p = q;
    q = r;
}

関連するトピック