Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

サブシステムの作成

モデル サイズが大きくなり、複雑さが増しても、複数のブロックをサブシステムとしてグループ化することでモデルを読みやすくすることができます。サブシステムは、1 つの Subsystem ブロックにグループ化する一連のブロックです。

サブシステムを使用すると、次のことができます。

  • 階層的なブロック線図を作成し、サブシステムを構成するブロックを Subsystem ブロックの層とは別の層に配置する。

  • 機能的に関連したブロックを 1 つに集約する。

  • モデル ウィンドウに表示されるブロック数の削減に利用する。

  • 入力と出力を使用してインターフェイスを作成する。

サブシステムのコピーを作成すると、そのコピーは元のサブシステムには依存しません。1 つのモデル全体で、またはモデル間でサブシステムのコンテンツを再利用するには、参照サブシステム、参照モデル、またはカスタム ライブラリのブロックにリンクされているサブシステムを検討してください。詳細については、モデル コンポーネントのタイプの選択を参照してください。

サブシステムのタイプ

サブシステムはバーチャルまたは非バーチャルのどちらでも構いません。"バーチャル サブシステム" はモデルにグラフィカルな階層を提供し、モデルの実行には影響しません。"非バーチャル サブシステム" はモデル内の単一ユニットとして実行されます。

ヒント

コントローラーおよびその他のスタンドアロン コンポーネントに対して、非バーチャル サブシステムまたは参照モデルを使用して、関連するブロックを囲むハード境界を定義します。ハード境界を事前に定義することで、コンポーネント用のコードを生成するときに、コストのかかるリファクタリングを行わずに済みます。

Simulink® は非バーチャル サブシステムを次のような種類に分類します。

サブシステムのタイプ説明
Atomic Subsystem

単一ユニットとして実行されるサブシステム。

Enabled Subsystem

外部入力によって実行がイネーブルになるサブシステム。

Triggered Subsystem

外部入力により実行がトリガーされるサブシステム。

Function-Call Subsystem

外部関数呼び出し入力により実行が制御されるサブシステム。

Enabled and Triggered Subsystem

実行が外部入力によって有効化され、トリガーされるサブシステム。

Resettable Subsystem

外部トリガーでブロックの状態がリセットされるサブシステム。

If Action Subsystem

If ブロックで実行が有効化されるサブシステム。

Switch Case Action SubsystemSwitch Case ブロックで実行が制御されるサブシステム。
While Iterator Subsystem

シミュレーション タイム ステップ中に論理条件が true の間、実行を繰り返すサブシステム。

For Iterator Subsystemシミュレーション タイム ステップ中に指定された反復回数だけ実行を繰り返すサブシステム。
For Each Subsystem

入力信号の各要素またはサブ配列で実行を繰り返し、結果を連結するサブシステム。

サブシステムの作成

以下の方法でサブシステムを作成できます。

  • Simulink エディターで、ダブルクリックし、サブシステム タイプの入力を開始する。その後、対応するブロックをメニューから選択する。

  • Simulink エディターで、作成するサブシステムの外枠に選択ボックスをドラッグしてから、サブシステム タイプを選択する。

  • Subsystem ブロックをライブラリ ブラウザーからドラッグする。

  • モデルから Subsystem ブロックをコピーして貼り付ける。

選択ボックスからサブシステムを作成するときに、その選択は空であることも、モデルの 1 つの領域に複数のブロックが含まれていることもあります。

操作バーから、作成するサブシステムのタイプを選択します。

入力端子および出力端子に対応するブロックが選択に含まれている場合、新しいサブシステムにはそれらのブロックのコピーが含まれます。新しいサブシステムには、制御端子に対応するブロックのコピーが含まれません。

サブシステムのタイプは作成後に変更できます。

  • サブシステムを 1 つのユニットとして実行するようにするには、Subsystem ブロックをクリックします。[Subsystem ブロック] タブで [Atomic Subsystem] を選択します。

  • サブシステムを条件付きで実行するようにするには、制御端子に対応するブロックを追加します。

  • サブシステムを無条件で実行するようにするには、制御端子に対応するブロックを削除します。

サブシステムへの端子の追加

Subsystem ブロック上の端子はサブシステム内のブロックに対応します。

たとえば、この Subsystem ブロックには 2 つの入力端子と 1 つの出力端子があります。

サブシステムには 2 つの Inport ブロック (In1 および In2) と 1 つの Outport ブロック (Out1) が含まれています。これらは、Subsystem ブロックの端子に対応します。

サブシステムに端子を追加するには、以下を行います。

  • Subsystem ブロックの端をクリックしてから、作成する端子のタイプを選択します。

  • 線を Subsystem ブロックの端までドラッグします。

  • Subsystem ブロックをダブルクリックしてサブシステムを開き、対応するブロックをサブシステムに追加します。

    端子のタイプ対応するブロック
    信号端子、入力Inport ブロック
    信号端子、出力Outport ブロック
    バス端子、入力In Bus Element ブロック
    バス端子、出力Out Bus Element ブロック
    制御端子、有効Enable ブロック
    制御端子、トリガーTrigger ブロック
    制御端子、関数呼び出し[トリガー タイプ][関数呼び出し] に設定された Trigger ブロック
    制御端子、リセットReset ブロック
    制御端子、アクションAction Port ブロック
    接続端子Connection Port (Simscape) ブロック

Subsystem ブロックでの端子の場所を変更するには、Subsystem ブロックの任意の側にある新しい場所に端子をドラッグします。

A port is dragged from the left side of the block to the top side of the block.

既定では、Simulink は Subsystem ブロックの端子にラベルを付けます。Simulink がサブシステムの端子にラベルを付ける方法を指定するには、以下を行います。

  1. Subsystem ブロックを選択します。

  2. Simulink ツールストリップの [書式設定] タブで、[端子ラベル] メニューからラベル付けオプションを 1 つ選択します。詳細については、端子ラベルを表示を参照してくださ。

サブシステムの設定

他のすべてのブロックと同じ方法で Subsystem ブロックの名前の変更やブロックの変更を行うことができます。たとえば、次のようなことができます。

  • ブロック マスクを適用してサブシステムのコンテンツを非表示にし、独自のアイコンとパラメーター ダイアログ ボックスをもつ Atomic ブロックとして表示されるようにします。詳細については、マスクの基礎を参照してください。

  • ブロックのコールバックを使用して、エラーの処理、サブシステム内のブロックまたは線の削除、サブシステムを閉じるなど、サブシステムのモデリング アクションに応じてアクションを実行します。コールバックなどのブロック プロパティの詳細については、ブロック プロパティの指定を参照してください。

サブシステムのアクセス制限

Subsystem ブロックの [読み取り/書き込みアクセス許可] パラメーターによって、サブシステムに許可されているアクセスのレベルが制御されます。

メモ

読み取りまたは書き込みアクセスを制限しても、アクセス制限の変更を防ぐことはできません。独自情報を非表示にするには、保護モデルの使用を検討してください。詳細については、モデル参照のための保護モデルを参照してください。

サブシステムがカスタム ライブラリに格納されている場合、親ライブラリ ブロックで [読み取り/書き込みアクセス許可] パラメーターを使用して、ブロックのリンクされたインスタンスのアクセスを制御することができます。ライブラリ リンクがそのまま保持されている限り、モデル内での使用を引き続き許可しながら、アクセス制限によってユーザーによるサブシステム コンテンツの表示または変更を防ぐことができます。詳細については、リンク付きブロックを参照してください。

参考

関連するトピック