Main Content

サブシステムの内容の展開

サブシステムを展開して、サブシステムの内容をそれを含んでいるシステムに移動できます。

たとえば、sldemo_enginewc モデルには Combustion サブシステムが含まれています。

Combustion サブシステムを展開すると、sldemo_enginewc モデルの最上位には、Combustion サブシステムのブロックと信号が含まれています。この展開によって Subsystem ブロックと、Inport ブロックおよび Outport ブロックが削除されます。

サブシステムを展開する理由

サブシステムの内容を 1 レベル上げてモデルの階層構造をフラットにする場合にサブシステムを展開します。

サブシステムの展開はモデルのリファクタリングを行う際に便利です。モデルの階層構造のフラット化は、リファクタリングの最終結果になることも単なる 1 ステップになることもあります。たとえば、サブシステムを展開することによって一連のブロックを親システムまで引き上げて、親システムに残しておくブロックの選択を解除し、残りの選択されたブロックからサブシステムを作成することができます。

展開できるサブシステム

展開できるのはマスク、リンク、コメントが設定されていないバーチャル サブシステムです。Simulink® エディターを使用してマスクされたサブシステム、リンクされたサブシステム、またはコメント化されたサブシステムの展開を試みた場合、メッセージが表示され、Simulink がそのサブシステムを変更して展開できるようにするオプションが提供されます。

サブシステムの種類変更

マスク サブシステム

すべてのマスク情報の削除

ライブラリ リンク

リンクの解除

コメントアウトされたサブシステム

サブシステムのコメント解除

次のサブシステムは展開できません。

  • Atomic Subsystem

  • 条件付きサブシステム

  • Configurable Subsystem

  • Variant Subsystem

  • [読み取り/書き込みアクセス許可] パラメーターが [ReadOnly] または [NoReadOrWrite] に設定されているサブシステム

  • InitFcnStartFcnPauseFcnContinueFcn または StopFcn コールバックを含むサブシステム

  • リンクされた要件をもつサブシステム (Requirements Toolbox™ ソフトウェアの使用)

サブシステムの展開

サブシステムを対話形式で展開するには、Subsystem ブロックを右クリックし、コンテキスト メニューから [サブシステムとモデル参照][サブシステムの展開] を選択します。

プログラムによってサブシステムを展開するには、関数 Simulink.BlockDiagram.expandSubsystem を使用します。

ヒント

サブシステムの展開は、現在選択されているサブシステム レベルに適用されます。入れ子にされたサブシステム階層内の他のサブシステムは展開されません。

入れ子になったサブシステムを展開するときの可読性を向上させるために、展開対象の最上位のサブシステムから展開を始めて、階層の下方向に順に展開していきます。

サブシステムの展開結果

サブシステムを展開すると、Simulink によって次の処理が行われます。

  • Subsystem ブロックを削除

  • サブシステムにあったルート Inport ブロック、ルート Outport ブロック、および Simscape™ Connection Port ブロックを削除

  • サブシステムの入出力端子に接続されていた信号線を、サブシステムに接続されていたモデル内のブロックの端子に直接接続

  • 可読性を考慮したブロックの配置と信号の経路選択

ブロック パス

展開したサブシステム内に存在したブロックのパスは変更されます。展開したサブシステム内に存在したブロックへの階層パスに依存するスクリプトおよびテスト ハーネスを、展開後に更新します。

信号名とプロパティ

サブシステムの外部または内部に欠けている接続をもつサブシステムを展開する場合、Simulink はライン ラベルを維持しますが、信号名とプロパティについてはラインの中から 1 つのみを使用します。ラインに応じて次のようになります。

  • サブシステムの入力端子に対応するラインについては、Simulink はサブシステムが存在するシステム内の信号からの信号名とプロパティを使用します。

  • サブシステムの出力端子に対応するラインについては、Simulink はサブシステムからの信号名とプロパティを使用します。

表示レイヤー

ブロックの表示レイヤー (つまり、オーバーラップするブロックについてどのブロックが前に表示され、どのブロックが後ろに表示されるか) は、展開後も変わりません。Subsystem ブロックの前にあったブロックは展開されたコンテンツの前のままであり、Subsystem ブロックの下にあったブロックは展開されたコンテンツの下のままです。

実行順序とブロック優先順位

モデルをコンパイルする際に、Simulink はブロックの実行順序に従ってブロックを並べ替えます。サブシステムの展開によってブロックのパス名が変更された場合、まれにブロックの実行順序に影響することがあります。

サブシステム内でブロックの優先順位を設定することによってブロックの実行順序を明示的に設定していた場合、サブシステムを展開したときに Simulink によってそのようなブロックの優先順位設定は削除されます。

データ ストア

他のサブシステムが読み取りまたは書き込みを行う Data Store Memory ブロックが含まれるサブシステムを展開する場合、必要とされるデータ ストアの書き込みおよび読み取りシーケンスが変更される可能性があります。モデルの再構成が必要な場合があります。詳細については、データ ストア アクセスの順序を参照してください。

関連するトピック