このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
サブシステムへのブロックのグループ化
モデル サイズが大きくなり、複雑さが増しても、複数のブロックをサブシステムとしてグループ化することでモデルを読みやすくすることができます。Subsystem ブロックは、モデルのサブセットを含むブロックです。1 つのモデルに複数のサブシステムを含めることができます。また、サブシステムを他のサブシステムの中に含めることができます。
サブシステムを使用すると、次のことができます。
階層を作成し、サブシステムを構成するブロックを Subsystem ブロックの層とは別の層に配置する。各サブシステムに入るごとに階層内の 1 レベル下に移動します。
機能的に関連したブロックを 1 つに集約する。
モデル ウィンドウに表示されるブロック数の削減に利用する。
入力と出力を使用してインターフェイスを作成する。
サブシステムのコピーを作成すると、そのコピーは元のサブシステムには依存しません。1 つのモデル全体で、またはモデル間でサブシステムのコンテンツを再利用するには、参照サブシステム、参照モデル、またはカスタム ライブラリのブロックにリンクされているサブシステムを検討してください。詳細については、モデル コンポーネントのタイプの検討を参照してください。
実行が他のコンポーネントに依存するサブシステムを作成するには、条件付き実行サブシステムを使用します。詳細については、サブシステムのタイプの検討を参照してください。
サブシステムの作成
サブシステムを作成するには、既存のモデルの一部をサブシステムに変換するか、Subsystem ブロックをモデルに追加して設定します。
ブロック線図の一部をサブシステムに変換するには、以下のようにします。
Simulink® キャンバスで、サブシステムに含めるモデル要素の上に選択ボックスをドラッグします。省略記号が選択ボックスの横に表示されます。
省略記号の上にマウスをポイントします。操作バーが展開されます。
操作バーで、[サブシステムの作成] または別のサブシステム オプションをクリックします。
入力端子および出力端子に対応するブロックが選択に含まれている場合、新しいサブシステムにはそれらのブロックのコピーが含まれます。新しいサブシステムには、制御端子に対応するブロックのコピーが含まれません。
ボトムアップでサブシステムを作成するには、以下を行います。
作成するサブシステムのタイプを決定します。サブシステムのタイプの詳細については、サブシステムのタイプの検討を参照してください。
ヒント
コントローラーおよびその他のスタンドアロン コンポーネントに対して、非バーチャル サブシステムまたは参照モデルを使用して、関連するブロックを囲むハード境界を定義します。ハード境界を事前に定義することで、コンポーネント用のコードを生成するときに、コストのかかるリファクタリングを行わずに済みます。
Simulink キャンバスをダブルクリックしてクイック挿入メニューを開きます。
検索ボックスに、モデルで実装するタイプのサブシステムに対応したブロックの名前を入力していきます。
表示されたリストでブロック名を選択します。矢印キーを使用して Enter キーを押すか、ブロックをクリックします。
サブシステムの内容を表示または編集するには、対応するブロックをダブルクリックします。サブシステムを出るには、Simulink ツールバーの左端の下にある をクリックします。サブシステムが含まれているモデルの階層を移動する方法の詳細については、Navigate Model Hierarchyを参照してください。
ヒント
Subsystem ブロックの内容はモデルとともに保存されます。内容を別のファイルに保存する場合は、Subsystem ブロックを Subsystem Reference ブロックに変換します。詳細については、Create and Use Referenced Subsystems in Modelsを参照してください。
サブシステムの内容でのサブシステムの置き換え
Subsystem ブロックをその内容に置き換えるには、Subsystem ブロックを選択します。次に、Simulink ツールストリップの [Subsystem ブロック] タブで [展開] をクリックします。
サブシステムの内容が、置き換えられたブロックの名前のラベルが付いた領域に表示されます。
詳細については、サブシステムの内容の展開を参照してください。
サブシステムが Atomic かどうかの指定
Subsystem ブロックをモデルに追加すると、そのブロックによって "バーチャル サブシステム" が作成されます。バーチャル サブシステムは、ブロック線図を視覚的に整理するのに役立ちます。バーチャル サブシステムでブロックをグループ化したりバーチャル サブシステムを展開したりすると、ブロックのパスが変わることによってブロックの実行順序に影響が及ぶことがあります。
対照的に、"Atomic サブシステム" は、ブロック線図を機能的に整理するのに役立ちます。Atomic サブシステムでブロックをグループ化したり Atomic サブシステムを展開したりすると、モデルの動作が変わります。Atomic サブシステムは、親モデルの実行時に、それぞれ単一ブロックまたはアトミック単位として実行されます。Atomic サブシステム内のブロックは連続的に実行されます。Atomic サブシステムは "非バーチャル サブシステム" とも呼ばれます。
メモ
条件付き実行サブシステムは、本質的に Atomic かつ非バーチャルです。サブシステムのタイプの詳細については、サブシステムのタイプの検討を参照してください。
サブシステムが大きくなることが予期される場合は、サブシステムがブロックを機能的にグループ化するように、サブシステムを Atomic にします。サブシステムが Atomic であると事前に指定することで、後でコンポーネント用のコードを生成するときに、コストのかかるリファクタリングを行わずに済みます。サブシステムをモデル参照に変換するには、Atomic な動作が必要です。
サブシステムを Atomic にするには、キャンバスで Subsystem ブロックを選択します。次に、Simulink ツールストリップの [Subsystem ブロック] タブで [アトミックにする] をクリックします。
サブシステムを Atomic にした結果を示すために、次のブロック線図では、2 つの Subsystem ブロックなどのブロックの実行順序が表示されています。
Discrete Cruise Controller
という名前の Subsystem ブロックの場合、ブロック線図で実行順序 4
が表示されています。このサブシステムは非バーチャルであり、Atomic な動作を示します。このサブシステム内のブロックは、現在のブロック線図の実行順序の一部ではありません。そうではなく、サブシステム内の各ブロックには相互に相対的な実行順序があります。
Car Dynamics
という名前の Subsystem ブロックの場合、ブロック線図で実行順序 {1,5,6,...}
が表示されています。このサブシステムはバーチャルであり、Atomic な動作を示しません。表示されている実行順序はサブシステム内のブロックに関するものであり、各ブロックには親ブロック線図を基準とした相対的な実行順序があります。
詳細については、実行順序の制御と表示を参照してください。
サブシステムの読み取り/書き込み許可の指定
サブシステムに対して以下の読み取り/書き込み許可を指定できます。
ReadWrite
— サブシステムの内容を開き、修正することができます。ReadOnly
— サブシステムを開くことはできますが、修正することはできません。NotReadorWrite
— サブシステムを開くことも修正することもできません。
サブシステムに対して許可されるアクセス レベルを制御するには、Subsystem ブロックの [読み取り/書き込みアクセス許可] パラメーターを設定します。
メモ
読み取りまたは書き込みアクセスを制限しても、アクセス制限の変更を防ぐことはできません。独自情報を非表示にするには、保護モデルの使用を検討してください。詳細については、保護モデルの機能の確認を参照してください。
サブシステムがカスタム ライブラリに格納されている場合、親ライブラリ ブロックで [読み取り/書き込みアクセス許可] パラメーターを使用して、ブロックのリンクされたインスタンスのアクセスを制御することができます。ライブラリ リンクがそのまま保持されている限り、モデル内でのサブシステムの使用を引き続き許可しながら、アクセス制限によってユーザーによるサブシステム コンテンツの表示または変更を防ぐことができます。詳細については、リンク付きブロックを参照してください。
サブシステムのカスタマイズ
他のすべてのブロックと同じ方法で Subsystem ブロックの名前の変更やブロックの変更を行うことができます。
以下に例を示します。
ブロック マスクを適用してサブシステムの内容を非表示にし、独自のアイコンとパラメーター ダイアログ ボックスをもつ Atomic ブロックの外観にします。詳細については、マスクの基礎を参照してください。
ブロックのコールバックを使用して、エラーの処理、サブシステム内のブロックまたは線の削除、サブシステムを閉じるなど、サブシステムのモデリング アクションに応じてアクションを実行します。コールバックなどのブロック プロパティの詳細については、ブロック プロパティの指定を参照してください。