Main Content

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

サブチャートを使用したモーダル ロジックのカプセル化

"サブチャート" とは、最上位のチャートが (他のサブチャートも含めて) すべてのものを含むことができるグラフィカル オブジェクトです。サブチャート、またはサブチャート化されたステートは、それ自体に含まれるステートのスーパーステートです。チャートの設計では、任意のレベルにサブチャートを入れ子にできます。

サブチャートを使用すると、複雑なチャートを一連のシンプルな階層構造のチャートに変更できます。これにより、チャートの動作を変更することなく、チャートの理解と管理が容易になります。サブチャートの境界は、シミュレーション時とコード生成時には適用されません。

サブチャートはブロックとして表示され、中央に名前が示されます。しかしながら、スーパーステートに対してと同様に、サブチャートに対してアクションやデフォルト遷移を定義することができます。また、スーパーステートへの、およびスーパーステートからの遷移を作成するのと同様に、サブチャートへの、およびサブチャートからの遷移を作成することができます。サブチャート外にあるステートと、サブチャート内にあるステートとの間で遷移を作成することができます。スーパートランジションという用語は、上記の要領でサブチャートの境界を交差する遷移を指しています。詳細については、スーパートランジションを使用した階層レベル間の移動を参照してください。

サブチャートは、最上位のチャート内に包含階層を定義します。サブチャート (最上位のチャート) は最初のレベルに含まれるチャートの "親" で、子や下位レベルの子孫に含まれるすべてのサブチャートの "先祖" です。

一部のサブチャートは、特定のモデリング要件を満たしていれば "アトミック" にすることができます。詳細については、Atomic サブチャートに変換する際の制限を参照してください。

サブチャートの作成

既存のステートやボックス、グラフィカル関数をサブチャートに変換することで、サブチャートを作成します。変換されるオブジェクトは、サブチャートを作成することを目的として作成したオブジェクト、または、内容をサブチャートに変換する既存のオブジェクトです。

新規や既存のステート、ボックス、グラフィカル関数をサブチャートに変換するには、次のようにします。

  1. オブジェクトを右クリックし、[グループとサブチャート][サブチャート] を選択します。

  2. オブジェクトがサブチャートとして表示されるようになったことを確認します。

サブチャートを元の形式に戻すためには、サブチャートを右クリックします。コンテキスト メニューで、[グループとサブチャート][サブチャート] を選択します。

サブチャート変換規則

ボックスをサブチャートに変換すると、サブチャートは、ボックスの属性を継承します。たとえば、暗黙的な順序付けが有効になっている場合は、変換後のサブチャートの位置に応じて、チャート内におけるそのサブチャートのアクティブ化の順序が決まります (詳細は、ボックスを使用したチャート オブジェクトのグループ化 を参照)。

サブチャートを元の形態に変換する操作は、取り消しできません。この操作の実行により、操作を元に戻すボタンとやり直しボタンは無効になり、操作を元に戻す/やり直すことはできません。

ステートのサブチャートへの変換

次のチャートがあるとします。

Stateflow chart with two states, On and Off. The On state contains two substates, Lo and High.

  1. On ステートをサブチャートに変換するには、ステートを右クリックして [グループとサブチャート][サブチャート] を選択します。

  2. On ステートがサブチャートとして表示されるようになったことを確認します。

    Stateflow chart that contains a subchart called On and a state called Off.

サブチャートをオブジェクトとして操作

サブチャートも、個別のオブジェクトとして動作します。サブチャートは、ステートやボックスと同様に、移動、コピー、切り取り、貼り付け、ラベル付けの遣り直し、サイズ変更ができます。また、あるサブチャートと、同一チャート階層あるいは別のチャート階層にある任意の他のステートやサブチャートとの遷移を描画することもできます (スーパートランジションを使用した階層レベル間の移動 を参照)。

サブチャートを開く

サブチャートを開くと、そのコンテンツの表示や編集が可能になります。サブチャートを開くには、以下のいずれかを実行します。

  • サブチャートを表わすボックス内の任意の場所をダブルクリックします。

  • サブチャートを表すボックスをクリックし、Enter キーを押します。

サブチャートの編集

サブチャートを開くと (サブチャートを開くを参照)、最上位のチャートに対して実行できる編集操作をコンテンツに対して実行できます。これは、サブチャート内のステート、遷移、サブチャートなどを、作成、コピー、貼り付け、切り取り、ラベル付け、サイズ変更ができることを意味します。また、サブチャート内部でステート、ボックス、グラフィカル関数をグループ化することもできます。

チャート内の異なる階層間で、オブジェクトの切り取りと貼り付けも可能です。たとえば、最上位の階層のチャートからそのサブチャートの 1 つにオブジェクトをコピーするには、まず最上位の階層のチャートを開き、オブジェクトをコピーします。次にサブチャートを開いて、オブジェクトをサブチャートに貼り付けます。

サブチャート外からサブチャート内のステートまたはジャンクションへの遷移は、スーパートランジションと呼ばれます。スーパートランジションの作成法は、通常の遷移とは異なります。スーパートランジションの作成の詳細は、スーパートランジションを使用した階層レベル間の移動 を参照してください。

サブチャートの操作

Stateflow® エディター ツール バーには、チャートのサブチャート階層を操作するためのボタンが含まれています。

ツール

説明

Up arrow.

Stateflow エディターにサブチャートが表示されている場合、このボタンをクリックすると、サブチャートが Stateflow エディター内でそのサブチャートの親に置き換えられます。Stateflow エディターに最上位のチャートが表示されている場合、このボタンをクリックすると、そのチャートは、それを含んでいる Simulink® モデル ウィンドウに置換されます。

Left arrow.

このボタンをクリックすると、現在のチャートの前に開いていたチャートが表示され、階層を上に移動することができます。

Right arrow.

このボタンをクリックすると、現在のチャートの後に開いていたチャートが表示され、階層を下に移動することができます。

メモ

Escape キーを使用して、サブチャート化されたステート、ボックスまたは関数の親オブジェクトに移動することもできます。