Stateflow でのフロー チャートの作成
Stateflow®フロー チャートは、決定木や反復ループなどのロジック パターンをモデル化するグラフィカル構造体です。フロー チャートは、特定の結果が前の結果に依存することのない組み合わせ論理を表します。コネクティブ ジャンクションと遷移を組み合わせて、ステートを使わずにフロー チャートを作成します。ジャンクションは、異なる遷移パス間での判定分岐を提供します。フロー チャートの実行は、デフォルト遷移から始まり、終端ジャンクション (有効な出力遷移をもたないジャンクション) で終わります。
ベスト プラクティスの 1 つとして、フロー チャートをグラフィカル関数でカプセル化することで、チャートのどこからでも呼び出せるモジュール式の再利用可能なロジックを作成できます。グラフィカル関数の詳細は、グラフィカル関数の定義によるロジック パターンの再利用を参照してください。
単純なIF-Elseロジックをモデル化するフロー チャートの例を次に示します。
このフロー チャートは次のコードをモデル化しています。
ifu > 0 y = 1;elsey = 0;end
フロー チャートの描画
コネクティブ ジャンクションを複数の遷移パス間の分岐点として使用することにより、フロー チャートを手作業で描画してカスタマイズすることができます。
チャートを開きます。
エディター ツール バーから、コネクティブ ジャンクションツールを使って 1 つ以上のコネクティブ ジャンクションをチャートにドラッグします。
ジャンクション間の遷移パスを追加します。
遷移にラベルを付けます。
フロー チャートの実行が開始されるジャンクションに、デフォルト遷移を追加します。
フロー チャート作成のベスト プラクティス
効率的で精度の高いフロー チャートを作成するには、以下のベスト プラクティスに従います。
デフォルト遷移は 1 つのみ使用する
フロー チャートにはエントリ ポイントが 1 つだけあります。
終端ジャンクションは 1 つのみとする
複数の終端ジャンクションを使用すると、フロー チャートがわかりにくくなります。
すべての遷移パスを終端ジャンクションに収束させる
フロー チャートを実行すると必ず終了点に到達します。
無条件遷移を、終端ジャンクションを除く各ジャンクションから設定する
予期しないバックトラッキングがシミュレーション中に発生すると、警告メッセージが表示されます。
予期しないバックトラッキングに対する診断アクションのレベルを制御するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[診断]、[Stateflow]ペインで,[予期せぬバックトラッキング]パラメーターを[なし]
、[警告]
、または[エラー]
に設定します。既定の設定は[警告]
です。詳細については、予期せぬバックトラッキング(Simulink)を参照してください。
以下のような条件下では、予期しないバックトラッキングがジャンクションで発生するおそれがあります。
そのジャンクションに、ステートまたは終端ジャンクションへの無条件遷移パスがない
複数の遷移パスがそのジャンクションに通じている
更新処理には遷移アクションではなく条件アクションを使用する
フロー チャートでは、遷移はテストされますが実行されません。したがって、フロー チャートで遷移アクションが実行されることはありません。さらに、MATLAB®をアクション言語として使用するチャートでは、グラフィカル関数で遷移アクションを使用するとコンパイル時にエラーが発生します。