ボックスを使用したチャート オブジェクトのグループ化
"ボックス" は、ステート、関数、データなど、チャート内のオブジェクトの整理に使用できる名前空間を定義するグラフィカル オブジェクトです。ボックスを使用すると、チャートを即座に見て、特定のタスクをともに実行するステートまたは関数を認識できます。
角の丸いステートと区別するために、ボックスの角は四角になっています。ボックスは、MATLAB® 内のスタンドアロンの Stateflow® チャートではサポートされません。
メモ
Stateflow チャートにメモを追加するには、ボックスではなく注釈を使用します。詳細については、チャート内への説明コメントの追加を参照してください。
次のチャートのボックス Heater は、関連性のあるステート Off と On をグループ化しています。

この例の詳細については、バンバン温度制御システムのモデル化を参照してください。
Stateflow ボックスのセマンティクス
ボックス内のグラフィカル オブジェクトの階層構造
ボックスにより、階層レベルが Stateflow チャートに追加されます。ボックス外からボックスペアレントの関数またはステートを参照する場合は、パスにボックス名を含める必要があります。ボックスを使用した関数のグループ化を参照してください。
ボックスの使用に関するガイドライン
ボックスの使用時には、以下が適用されます。
ボックス外の場所からドット表記を使って、ボックスペアレントの関数またはステートを参照する場合は、パスにボックス名を含めます。
ボックスにデータを追加し、ボックス内のすべての要素が同じデータを共有できるようにします。
ボックスとそのコンテンツを単一のグラフィカル要素にグループ化できます。ステートのグループ化を参照してください。
ボックスをサブチャート化して、その要素を非表示にすることができます。サブチャートを使用したモーダル ロジックのカプセル化を参照してください。
entry、during、exitアクションなど、ボックスに対してアクション ステートメントを定義することはできません。ボックス間の遷移を定義することはできません。ただし、ボックス内のステート間の遷移を定義することは可能です。
ボックスの描画と編集
ボックスの作成
チャート内にボックスを作成するには、オブジェクト パレットのボックス アイコンを使用します。
オブジェクト パレットで、ボックス ツール
をクリックします。チャート キャンバスで、新しいボックスの位置をクリックします。新しいボックスが表示され、名前を追加する位置にカーソルが表示されます。
ボックスの名前を入力してから、ボックスの外部をクリックします。
ボックスの削除
ボックスを削除するには、そのボックスをクリックして "Delete" キーを押します。
ボックスの使用例
ボックスを使用した関数のグループ化
以下のチャートは、2 つの MATLAB 関数をグループ化した Status という名前のボックスを示しています。

このチャートは次の順序で実行されます。
ステート
Coldが最初にアクティブになります。入力後、ステート
Coldによって関数Status.msgColdが呼び出されます。この関数は、温度が低いことを示すステータス メッセージを表示します。
メモ
MATLAB 関数はボックス内に配置されているので、関数呼び出しのパスにはボックス名
Statusを含めなければなりません。この接頭辞を省略した場合は、エラー メッセージが表示されます。入力データ
tempの値が 80 を上回った場合は、ステートWarmへの遷移が発生します。入力後、ステート
Warmによって関数Status.msgWarmが呼び出されます。この関数は、温度が高いことを示すステータス メッセージを表示します。
入力データ
tempの値が 60 を下回った場合は、ステートColdへの遷移が発生します。シミュレーションが終了するまで、手順 2 から 5 が繰り返されます。
ボックスを使用したステートのグループ化
以下のチャートは、関連するステートをグループ化した Status という名前のボックスを示しています。

このチャートでは、次のように動作します。
ステート
Tempが最初にアクティブになり、続いてステートWind_Chillがアクティブになります。次に、ステートMonitorがアクティブになります。このアクティブ化の順序は、
TempとWind_Chillが優先順位 1 のボックス内にあることに起因します。ボックスを削除した場合、アクティブ化は、Temp、Monitor、Wind_Chillの順序に変更されます。これは、ステートがこの順序で作成されたためです。詳細については、パラレル ステートの順序の維持を参照してください。
入力データ
tempに基づいて、サブステート間の遷移がパラレル ステートStatus.TempとStatus.Wind_Chillで発生します。Status.Temp.ColdからStatus.Temp.Warmへの遷移が発生した場合は、遷移条件in(Status.Temp.Warm)が真になります。Status.Temp.WarmからStatus.Temp.Coldへの遷移が発生した場合は、遷移条件in(Status.Temp.Cold)が真になります。サブステート
Status.Temp.ColdとStatus.Temp.Warmがボックス内にあるため、in演算子の引数にボックス名Statusを含めなければなりません。この接頭辞を省略した場合は、エラー メッセージが表示されます。in演算子の詳細は、in 演算子を使用したステート アクティビティのチェック を参照してください。