Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ボックスを使用したチャート オブジェクトのグループ化

"ボックス" は、ステート、関数、データなど、チャート内のオブジェクトの整理に使用できる名前空間を定義するグラフィカル オブジェクトです。ボックスを使用すると、チャートを即座に見て、特定のタスクをともに実行するステートまたは関数を認識できます。

角の丸いステートと区別するために、ボックスの角は四角になっています。ボックスは、MATLAB® 内のスタンドアロンの Stateflow® チャートではサポートされません。

メモ

Stateflow チャートにメモを追加するには、ボックスではなく注釈を使用します。詳細については、チャート内への説明コメントの追加を参照してください。

次のチャートのボックス Heater は、関連性のあるステート OffOn をグループ化しています。

Chart modeling a bang-bang controller.

この例の詳細については、バンバン温度制御システムのモデル化を参照してください。

Stateflow ボックスのセマンティクス

ボックス内のグラフィカル オブジェクトの階層構造

ボックスにより、階層レベルが Stateflow チャートに追加されます。ボックス外からボックスを親とする関数またはステートを参照する場合は、パスにボックス名を含める必要があります。ボックスを使用した関数のグループ化 を参照してください。

パラレル ステートのアクティブ化の順序

ボックスは、チャート内のパラレル ステートの暗黙的なアクティブ化の順序に影響を及ぼします。チャートに暗黙的な順序付けが使用されている場合、ボックス内のパラレル ステートは、そのチャートで下位または右側に位置する他のパラレル ステートよりも前に起動されます。ボックス内では、パラレル ステートは上から下、左から右の順序で起動します。ボックスを使用したステートのグループ化 を参照してください。

アクティブ化の順序をステートごとに明示的に指定するには、[チャート] プロパティ ダイアログ ボックスで [ユーザー指定のステート/遷移実行順序] をオンにします。新しいチャートを作成する場合、このオプションは既定でオンになっています。詳細は、パラレル ステートの明示的な順序付け を参照してください。

ボックスの使用に関するガイドライン

ボックスの使用時には、以下が適用されます。

  • ボックス外の場所からドット表記を使って、ボックスを親とする関数またはステートを参照する場合は、パスにボックス名を含めます。

  • ボックスにデータを追加し、ボックス内のすべての要素が同じデータを共有できるようにします。

  • ボックスとそのコンテンツを単一のグラフィカル要素にグループ化できます。ステートのグループ化 を参照してください。

  • ボックスをサブチャート化して、その要素を非表示にすることができます。サブチャートを使用したモーダル ロジックのカプセル化 を参照してください。

  • entryduringexit アクションなど、ボックスに対してアクション ステートメントを定義することはできません。

  • ボックス間の遷移を定義することはできません。ただし、ボックス内のステート間の遷移を定義することは可能です。

ボックスの描画と編集

ボックスの作成

チャート内にボックスを作成するには、オブジェクト パレットのボックス アイコンを使用します。

  1. オブジェクト パレットで、ボックス ツール をクリックします。

  2. チャート キャンバスで、新しいボックスの位置をクリックします。新しいボックスが表示され、名前を追加する位置にカーソルが表示されます。

  3. ボックスの名前を入力してから、ボックスの外部をクリックします。

ボックスの削除

ボックスを削除するには、そのボックスをクリックして "Delete" キーを押します。

ボックスの使用例

ボックスを使用した関数のグループ化

以下のチャートは、2 つの MATLAB 関数をグループ化した Status という名前のボックスを示しています。

Chart that uses a box to group two MATLAB functions.

このチャートは次の順序で実行されます。

  1. ステート Cold が最初にアクティブになります。

  2. 入力後、ステート Cold によって関数 Status.msgCold が呼び出されます。

    この関数は、温度が低いことを示すステータス メッセージを表示します。

    メモ

    MATLAB 関数はボックス内に配置されているので、関数呼び出しのパスにはボックス名 Status を含めなければなりません。この接頭辞を省略した場合は、エラー メッセージが表示されます。

  3. 入力データ temp の値が 80 を上回った場合は、ステート Warm への遷移が発生します。

  4. 入力後、ステート Warm によって関数 Status.msgWarm が呼び出されます。

    この関数は、温度が高いことを示すステータス メッセージを表示します。

  5. 入力データ temp の値が 60 を下回った場合は、ステート Cold への遷移が発生します。

  6. シミュレーションが終了するまで、手順 2 から 5 が繰り返されます。

ボックスを使用したステートのグループ化

以下のチャートは、関連するステートをグループ化した Status という名前のボックスを示しています。このチャートでは、パラレル ステートに暗黙的な順序付けが使用されています。詳細については、パラレル ステートの暗黙的な順序付けを参照してください。

Chart that uses a box to group two parallel substates.

このチャートでは、次のように動作します。

  • ステート Temp が最初にアクティブになり、続いてステート Wind_Chill がアクティブになります。次に、ステート Monitor がアクティブになります。

    この暗黙的なアクティブ化の順序は、TempWind_Chill がボックス内に配置されていることに起因します。ボックスを削除した場合、暗黙的なアクティブ化は、TempMonitorWind_Chill の順序に変更されます。

    Chart that uses implicit activation order of parallel states.

  • 入力データ temp に基づいて、サブステート間の遷移がパラレル ステート Status.TempStatus.Wind_Chill で発生します。

  • Status.Temp.Cold から Status.Temp.Warm への遷移が発生した場合は、遷移条件 in(Status.Temp.Warm) が真になります。

  • Status.Temp.Warm から Status.Temp.Cold への遷移が発生した場合は、遷移条件 in(Status.Temp.Cold) が真になります。

    サブステート Status.Temp.ColdStatus.Temp.Warm がボックス内に配置されているため、in 演算子の引数にボックス名 Status を含めなければなりません。この接頭辞を省略した場合は、エラー メッセージが表示されます。in 演算子の詳細は、in 演算子を使用したステート アクティビティのチェック を参照してください。

参考

関連するトピック