ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

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

ボックスを使用する場合

Stateflow ボックスを使用して、チャート内のグラフィカル オブジェクトを整理します。

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

ボックス内のグラフィカル オブジェクトの可視性

ボックスにより、階層レベルが Stateflow® チャートに追加されます。このプロパティは、ボックス外のオブジェクトに対するボックス内の関数とステートの可視性に影響を及ぼします。ボックス外の場所からボックスを親とする関数またはステートを参照する場合は、パスにボックス名を含める必要があります。ボックスを使用した関数のグループ化 を参照してください。

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

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

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

ボックス使用時のルール

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

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

  • 関数やステートなど、ボックス内のグラフィカル オブジェクトを移動または描画できます。

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

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

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

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

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

ボックスの描画と編集

ボックスの作成

以下に示すボックス ツールを使用して、チャートにボックスを作成します。

  1. ボックス ツールをクリックします。

  2. ポインターを描画領域に移動します。

  3. 任意の場所をクリックし、ボックスを作成します。

    新しいボックスは、左上隅に名前が疑問符 (?) のステートで表示されます。

  4. 疑問符のラベルをクリックします。

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

ボックスの削除

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

ボックスの使用例

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

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

以下の要領でチャートが実行されます。

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

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

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

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

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

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

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

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

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

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

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

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

このチャートの主旨は、以下のとおりです。

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

      メモ:   この暗黙的なアクティブ化の順序は、TempWind_Chill がボックス内に配置されていることに起因します。ボックスを削除した場合は、暗黙的なアクティブ化の順序は、次のように変更されます。 Temp, Monitor, Wind_Chill.

  • 入力データ 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 演算子の詳細は、ステート アクティビティのチェック を参照してください。

この情報は役に立ちましたか?