Main Content

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

Subsystem

モデルの階層構造を作成するためのブロックのグループ化

  • Subsystem block

ライブラリ:
Simulink / Commonly Used Blocks
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

説明

Subsystem ブロックには、モデルまたはシステム内のブロックのサブセットが含まれています。Subsystem ブロックは、バーチャル サブシステムを表す場合も非バーチャル サブシステムを表す場合もあります。

  • "バーチャル サブシステム" は、ブロック線図を視覚的に整理するのに役立ちます。シミュレーションにおいて動的な役割を果たさず、シミュレーション結果にも影響しません。バーチャル サブシステムは、条件付きで実行されることも、アトミックに実行されることもありません。バーチャル サブシステムにはチェックサムがありません。

  • "非バーチャル サブシステム" は、システムのシミュレーションにおいて動的な役割を果たします。非バーチャル サブシステムを追加したり削除したりすると、モデルの動作が変わります。非バーチャル サブシステムは "Atomic サブシステム" であり、親モデルの実行時に単一ブロック、つまりアトミック単位として実行されます。

非バーチャル サブシステムのタイプの詳細については、Explore Types of Subsystemsを参照してください。

サブシステムがバーチャルなのか非バーチャルなのかを判断するには、以下のいずれかの方法を使用します。

  • ブロックの境界線を確認する。バーチャル サブシステムを表すブロックの境界線は細くなっています。非バーチャル サブシステムを表すブロックの境界線は太くなっています。

    Virtual and nonvirtual subsystem blocks

  • 関数 get_param を使用して boolean のブロック パラメーター IsSubsystemVirtual をクエリする。

Subsystem ブロック上の端子はサブシステム内のブロックに対応します。詳細については、Connect Subsystemsを参照してください。

Subsystem ブロックは、サブシステムの Inport ブロックと Outport ブロックを通じて信号ラベルの伝播をサポートします。詳細については、信号ラベル伝播を参照してください。

すべて展開する

Subsystem ブロックを追加し、内容をそのサブシステムに追加することで、サブシステムを作成できます。

Subsystem ブロックをモデルに挿入します。

以下に例を示します。

  1. Simulink® キャンバスをダブルクリックしてクイック挿入メニューを開きます。

  2. 検索ボックスに、ブロックの名前を入力していきます。たとえば、「subsystem」と入力します。

  3. 表示されたリストで、モデルで実装するタイプのサブシステムのブロックを選択します。矢印キーを使用して Enter キーを押すか、ブロックをクリックします。

サブシステムの内容を表示または編集するには、Subsystem ブロックをダブルクリックします。サブシステムを出るには、Simulink ツール バーの左端の下にある [戻る] ボタン をクリックします。サブシステムが含まれているモデルの階層を移動する方法の詳細については、Navigate Model Hierarchyを参照してください。

既存のモデルの一部をサブシステムに変換することで、サブシステムを作成できます。

Simulink キャンバスで、サブシステムに含めるモデル要素の上に選択ボックスをドラッグします。省略記号が選択ボックスの横に表示されます。

Model contains a Transfer Fcn block and a Gain block selected, and an ellipsis next to the selection box

省略記号の上にマウスをポイントします。操作バーが展開されます。

Ellipsis replaced by an action bar, with the Create Subsystem option selected

操作バーで、[サブシステムの作成] または別のサブシステム オプションをクリックします。

In the block diagram, the Transfer Fcn block and a Gain block are replaced by a single Subsystem block. The signal line that connected to the input port of the Transfer Fcn block now connects to the input port of the Subsystem block, and the signal line that connected to the output port of the Gain block now connects to the output port of the Subsystem block.

サブシステムに入る信号およびサブシステムから出る信号のインターフェイスを提供するために、Subsystem ブロックには入力端子および出力端子に対応するブロックが含まれています。

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

Subsystem ブロックをその内容に置き換えるには、サブシステムを展開します。

Subsystem ブロックを選択します。次に、Simulink ツールストリップの [Subsystem ブロック] タブで [展開] をクリックします。

サブシステムの内容が、置き換えられたブロックの名前のラベルが付いた領域に表示されます。

The top image show a Sine Wave block connected to a Subsystem block connected to a Scope block. The bottom image show the same block diagram with the Subsystem block replaced by its contents. The contents are in an area labeled Subsystem.

詳細については、サブシステムの内容の展開を参照してください。

サブシステムがバーチャルかどうかを判断するには、boolean のブロック パラメーター IsSubsystemVirtual を指定して関数 get_param を使用します。

例を開きます。次に、SubsystemExecution モデルを開きます。

open_system("SubsystemExecution");

discrete cruise controller という名前の Subsystem ブロックがバーチャルかどうかを確認します。

get_param("SubsystemExecution/discrete cruise controller",...
    "IsSubsystemVirtual")
ans = 
'off'

このサブシステムは非バーチャルです。ブロック アイコンの太い境界線により、このサブシステムが非バーチャルであることが示されています。

car dynamics という名前の Subsystem ブロックがバーチャルかどうかを確認します。

get_param("SubsystemExecution/car dynamics","IsSubsystemVirtual")
ans = 
'on'

このサブシステムはバーチャルです。

端子

入力

すべて展開する

Inport ブロックや In Bus Element ブロックなどのブロックをサブシステム内に配置することで、Subsystem ブロックへの外部入力端子が追加されます。

ローカル環境から信号を取得するには、Inport ブロックまたは In Bus Element ブロックを使用します。

詳細については、Connect Subsystemsを参照してください。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image
複素数のサポート: あり

再初期化イベント端子は、サブシステムの再初期化イベントをトリガーする関数呼び出し制御信号を提供します。これにより、サブシステムの状態がリセットされます。

サブシステムには、各サブシステムの再初期化イベントに対応する Reinitialize Function ブロックが含まれていなければなりません。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。

端子名を指定するには、Reinitialize Function ブロック内の Event Listener ブロックの [イベント名] パラメーターを使用します。

依存関係

このタイプの端子を有効にするには、[サブシステム再初期化端子の表示] を選択します。

出力

すべて展開する

Outport ブロックや Out Bus Element ブロックなどのブロックをサブシステム内に配置することで、Subsystem ブロックからの外部出力端子が追加されます。

信号をローカル環境に送信するには、Outport ブロックまたは Out Bus Element ブロックを使用します。

詳細については、Connect Subsystemsを参照してください。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image
複素数のサポート: あり

パラメーター

すべて展開する

ブロック パラメーターを対話形式で編集するには、プロパティ インスペクターを使用します。Simulink ツールストリップから、[シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。

メイン

Subsystem ブロック アイコンに端子ラベルを表示する方法を選択します。

  • なし — 端子ラベルを表示しません。

  • FromPortIcon — 対応する端子アイコン上に信号名が表示される場合、Subsystem ブロック上に信号名を表示します。それ以外の場合は、端子のブロック名、またはブロック名が既定の名前の場合は端子番号を表示します。

  • FromPortBlockNameSubsystem ブロック上に対応する端子のブロック名を表示します。

  • SignalName — 端子に接続されている信号に名前が付いている場合、Subsystem ブロック上の信号の名前を表示します。それ以外の場合は、対応する端子のブロック名を表示します。

Subsystem ブロックでの端子ラベルの編集については、Edit Port Labels on Subsystem Blocksを参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ShowPortLabels
値: 'FromPortIcon' (既定値) | 'FromPortBlockName' | 'SignalName'

サブシステムの内容へのユーザー アクセスを制御します。

  • ReadWrite — サブシステムの内容を開き、修正することができます。

  • ReadOnly — サブシステムを開くことはできますが、修正することはできません。サブシステムがブロック ライブラリに存在する場合、サブシステムへのリンクを作成して開くことができます。また、サブシステムのローカル コピーを作成して変更することはできますが、アクセス許可や元のライブラリ インスタンスの内容を変更することはできません。

  • NoReadOrWrite — サブシステムを開くことも修正することもできません。サブシステムがライブラリに存在する場合、モデルにあるサブシステムのリンクを作成することはできますが、サブシステムを開いたり、アクセス許可を変更したり、サブシステムのローカル コピーを作成したりすることはできません。

[読み取り/書き込みアクセス許可] パラメーターが [NoReadOrWrite] に設定されているサブシステムの内容を表示しようとしても、応答はありません。たとえば、そのようなサブシステムをダブルクリックしても、サブシステムは開かれず、メッセージも表示されません。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: Permissions
値: 'ReadWrite' (既定値) | 'ReadOnly' | 'NoReadOrWrite'

サブシステムの実行中にエラーが発生した場合に呼び出される関数名を入力します。

2 つの引数が関数に渡されます。その引数は、サブシステムのハンドルと、エラー タイプを指定する文字ベクトルです。関数が指定されていない場合、サブシステムの実行によってエラーが発生すると、一般的なエラー メッセージが表示されます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ErrorFcn
値: '' (既定値) | function name in quotes
データ型: char | string

このサブシステムによって参照されるワークスペース変数名を解決するかどうかを選択します。

詳細については、記号の解釈および記号関連付けプロセスを参照してください。

  • すべて — ブロック パラメーター値と Simulink データ オブジェクト (Simulink.Signal オブジェクトなど) の指定に使用されるワークスペース変数など、このサブシステムが使用するワークスペース変数のすべての名前を解決します。

  • ExplicitOnly — ブロックのパラメーター値、データ ストア メモリ (ここにはブロックは存在しません)、信号、"must resolve" というマークの付いた状態を指定するために使用されるワークスペース変数名だけを解決します。

  • なし — ワークスペース変数名を解決しません。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: PermitHierarchicalResolution
値: 'All' (既定値) | 'ExplicitOnly' | 'None'

ブロック メソッドの実行順序を決定するときに、サブシステムがユニットとして扱われます。

  • off — ブロック メソッドの実行順序を決定するときに、サブシステム内のすべてのブロックを、モデルの階層構造内でサブシステムと同じ階層にあるものとして取り扱います。これは、サブシステム内のブロックのメソッドの実行が、サブシステム外のブロックのメソッドの実行にインターリーブする原因となります。

  • on — ブロック メソッドの実行順序を決定するときに、サブシステムをユニットとして扱います。たとえば、サブシステムの出力を計算する必要がある場合、Subsystem ブロックと同じ階層の他のブロックの出力メソッドを呼び出す前に、サブシステムのすべてのブロックの出力メソッドが呼び出されます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: TreatAsAtomicUnit
値: 'off' (既定値) | 'on'

再初期化イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。

依存関係

このパラメーターを有効にするには、[Atomic サブシステムとして扱う] をオンにします。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ShowSubsystemReinitializePorts
値: 'off' (既定値) | 'on'

Atomic Subsystem を含むすべての人為的な代数ループを解消しようとします。

  • off — Atomic Subsystem を含むすべての人為的な代数ループを解消しません。

  • on — Atomic Subsystem を含むすべての人為的な代数ループを解消しようとします。

依存関係

このパラメーターを有効にするには、[Atomic サブシステムとして扱う] をオンにします。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: MinAlgLoopOccurrences
値: 'off' (既定値) | 'on'

サブシステムをスケジューリングする方法を指定します。

  • サンプル時間 — このサブシステムのすべてのブロックを同じレートで実行する必要があるか、異なるレートで実行できるかを指定します。

  • 周期的分割 — サブシステムを周期的分割としてスケジューリングします。分割の名前と、分割を実行するレートに対応するサンプル時間を指定します。

  • 非周期的分割 — サブシステムを非周期的分割としてスケジューリングします。分割の名前を指定します。

依存関係

このパラメーターを有効にするには、[Atomic サブシステムとして扱う] をオンにします。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ScheduleAs
値: 'Sample time' (既定値) | 'Periodic partition' | 'Aperiodic partition'

サブシステムの分割の名前を指定します。

依存関係

このパラメーターを有効にするには、[Atomic サブシステムとして扱う] を選択し、[名前を付けてスケジュール][周期的分割] または [非周期的分割] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: PartitionName
値: '' (既定値) | partition name in quotes
データ型: char | string

このサブシステムのすべてのブロックを同じレートで実行すべきか、異なるレートで実行できるかどうかを指定します。

  • -1 — 継承サンプル時間。

  • [Ts 0] — 周期的なサンプル時間。

サブシステム内のブロックが異なるレートで実行できる場合、サブシステムのサンプル時間を継承 (-1) に指定します。

すべてのブロックを同じレートで実行しなければならない場合、[サンプル時間] パラメーターの値として、このレートに相当するサンプル時間を指定します。

サブシステム内の任意のブロックで異なるサンプル時間 (-1 または inf 以外) が指定されている場合、モデルを更新またはシミュレートすると、エラー メッセージが表示されます。たとえば、サブシステム内のすべてのブロックが 1 秒につき 5 回実行する必要があるとします。このレートを確保するには、サブシステムのサンプル時間を 0.2 に指定します。この例では、サブシステム内の任意のブロックで 0.2-1 または inf 以外のサンプル時間が指定されている場合、モデルを更新またはシミュレートすると、エラーが表示されます。

依存関係

このパラメーターを有効にするには、[Atomic サブシステムとして扱う] をオンにします。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: SystemSampleTime
値: '-1' (既定値) | '[Ts 0]'

式が true と評価された場合にバリアント Simulink Function ブロックを実行するバリアント制御 (条件) 式を指定します。

  • Variant — 論理 (boolean) 式の既定の名前。

  • 論理式 — 論理式を表す論理 (boolean) 式または Simulink.VariantExpression オブジェクト。関数は、式が true に評価される場合に有効になります。モデルのコードを生成する場合、式の変数を Simulink.Parameter オブジェクトとして定義します。

依存関係

このパラメーターを有効にするには、Subsystem ブロックを Variant Subsystem ブロック内に追加します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: VariantControl
値: 'Variant' (既定値) | logical expression in quotes
データ型: char | string

バリアント条件を Variant Source ブロックからまたは Variant Sink ブロックに伝播するときにサブシステムがユニットとして扱われるようにするかどうかを指定します。

  • on — バリアント条件を Variant Source ブロックからまたは Variant Sink ブロックに伝播するときにサブシステムがユニットとして扱われます。たとえば、サブシステムのバリアント条件が計算されると、その条件がサブシステム内のすべてのブロックに伝播されます。

  • off — バリアント条件を決める際に、サブシステム内のすべてのブロックが、モデルの階層構造内でサブシステム自体と同じ階層にあるものとして扱われます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: TreatAsGroupedWhenPropagatingVariantConditions
値: 'on' (既定値) | 'off'

コード生成

[コード生成] タブのパラメーターには、Simulink Coder™ または Embedded Coder® のライセンスが必要です。

atomic (非バーチャル) サブシステムに対して生成されるコード形式を選択します。

  • 自動 — モデル内に存在するサブシステムのインスタンスのタイプと数に基づいて、最適な形式が選択されます。

  • インライン — 無条件にサブシステムがインライン化されます。

  • 再利用できない関数[ファイル名オプション][自動] に設定されている場合、個々の関数がモデル ファイル内にパッケージ化されます。[ファイル名オプション] が別のファイル名を使用する [サブシステム名を使用][関数名を使用]、または [ユーザー指定] に設定されている場合、個々の関数が別々のファイルにパッケージ化されます。

    このように設定されたサブシステムは、関数インターフェイスパラメーターの設定に基づく引数をもつ関数を生成します。生成された関数とファイルには、それぞれ関数名およびファイル名 (拡張子なし)パラメーターを使用して名前を付けることができます。これらの関数は再呼び出し可能ではありません。

  • 再利用可能な関数 — モデルが複数のサブシステムのインスタンスを含む場合、サブシステムのコードの再利用を可能にする引数をもつ関数が生成されます。

    このオプションは、参照モデル全体にわたりサブシステムの複数のインスタンスを含むモデル参照階層の生成コードで、サブシステム コードの再利用を可能とする引数をもつ関数も生成します。この場合、サブシステムはライブラリに含まれていなければなりません。

詳細については、以下を参照してください。

ヒント

  • サブシステムの複数のインスタンスを 1 つの再利用が可能な関数として表す場合、それぞれ 自動 または [再利用可能な関数] として指定できます。それらのどちらか一方を使用するのが最適です。両方を使用すると、各指定につき 1 つずつ、2 つの再利用可能な関数が作成されます。これらの選択の結果は、再利用が不可能な場合にのみ異なります。[自動] を選択しても、サブシステム コードの関数やファイル名は制御できません。

  • [再利用可能な関数]自動 のオプションは両方とも、サブシステムのインスタンスが複数存在するかどうかと、コードが再利用可能かどうかを判定しようとします。再利用が不可能な場合、以下のように各オプションの動作はそれぞれ異なります。

    • [自動] はインライン化されたコードを生成し、インライン化が禁止されている場合は、サブシステムのインスタンスごとに別の関数を生成します。

    • [再利用可能な関数] はモデル内のサブシステムのインスタンスごとに、引数をもつ別の関数を生成します。

  • 生成コードがソース管理下にある場合に [再利用可能な関数] を選択する場合は、[ファイル名オプション][サブシステム名を使用][関数名を使用][ユーザー指定] のいずれかに設定してください。この設定を行わないと、モデルを変更するたびにコード ファイルの名前が変更され、ファイルのソース管理ができません。

  • [自動] または [インライン] 以外のオプションとモデル コンフィギュレーション パラメーター [状態] を選択した場合、コード ジェネレーターは出力メソッドと更新メソッドを別々に生成します。コード ジェネレーターでは、[コード生成およびシミュレーション用に出力メソッドと更新メソッドを結合] の指定は考慮されません。

依存関係

  • このパラメーターではコード生成のために Simulink Coder のライセンスが必要です。

  • このパラメーターを有効にするには、[Atomic サブシステムとして扱う] をオンにします。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWSystemCode
値: 'Auto' (既定値) | 'Inline' | 'Nonreusable function' | 'Reusable function'

サブシステム用に生成される関数に名前を付ける方法を選択します。

Embedded Coder ライセンスをお持ちの場合、コンフィギュレーション パラメーターの [コード生成][識別子] ペインのオプションで関数名を制御できます。

  • 自動 — 既定の名前付けの規則、model_subsystem() を使用して一意の関数名を割り当てます。ここで model はモデルの名前であり、subsystem はサブシステムの名前、または、コードが再使用される場合に同一のものの名前です。

    [関数のパッケージ化] パラメーターに [再利用可能な関数] を選択し、モデル参照階層に再利用可能なサブシステムのインスタンスが複数含まれている場合に、サブシステムで再利用可能なコードを生成するには、[関数名オプション][自動] に設定しなければなりません。

  • サブシステム名を使用 — 関数名にサブシステム名を使用します。既定では、関数名は命名規則 model_subsystem を使用します。

    サブシステムがライブラリ ブロックにあり、そのサブシステムのパラメーター関数のパッケージ化[再利用可能な関数] に設定されている場合、[サブシステム名を使用] オプションを設定すると、コード ジェネレーターはそのサブシステムの関数名とファイル名に対してライブラリ ブロックの名前を使用します。

  • ユーザー指定[関数名] フィールドが有効になります。有効な C または C++ 関数名 (固有でなければならない) を入力します。

詳細については、サブシステム コードを別々の関数およびファイルとして生成 (Simulink Coder)を参照してください。

依存関係

  • このパラメーターには Simulink Coder のライセンスが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] または [再利用可能な関数] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWFcnNameOpts
値: 'Auto' (既定値) | 'Use subsystem name' | 'User specified'

サブシステム コードに対して、一意で有効な C または C++ 関数名を指定します。

Simulink Coder コード ジェネレーターで自動生成された名前を割り当てたり、サブシステム名を使用したりする代わりに、関数に特定の名前を割り当てるには、このパラメーターを使用します。詳細については、サブシステム コードを別々の関数およびファイルとして生成 (Simulink Coder)を参照してください。

依存関係

  • このパラメーターには Simulink Coder のライセンスが必要です。

  • このパラメーターを有効にするには、[関数名オプション][ユーザー指定] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWFcnName
値: '' (既定値) | function name in quotes
データ型: char | string

サブシステムに対して生成される関数の個々のファイルに名前を付ける方法を選択します。

  • 自動 — サブシステムの構成およびモデルにあるインスタンスの数によって、[自動] は異なる結果を返します。

    • コード ジェネレーターがサブシステムに個別のファイルを "生成しない" 場合、サブシステムの親システムから生成されたコード モジュール内で、サブシステム コードが生成されます。サブシステムの親がモデル自体の場合、サブシステム コードは model.c または model.cpp 内で生成されます。

    • [関数のパッケージ化] パラメーターに [再利用可能な関数] を選択し、生成コードがソース管理下にある場合、[ファイル名オプション][自動] 以外の値を指定することを検討してください。これにより、関係のないモデル変更によって生成されたファイル名が変更されるのを防止できます。これは、ソース管理を使用して構成を管理する場合に問題となる点です。

    • [関数のパッケージ化] パラメーターに [再利用可能な関数] を選択し、モデル参照階層に再利用可能なサブシステムのインスタンスが複数含まれている場合に、サブシステムで再利用可能なコードを生成するには、[ファイル名オプション][自動] に設定しなければなりません。

  • サブシステム名を使用 — コード ジェネレーターは、サブシステム (またはライブラリ ブロック) 名をファイル名として使用して、別のファイルを生成します。

    [ファイル名オプション][サブシステム名を使用] に設定すると、モデルに Model ブロックが含まれている場合、またはモデルのモデル参照ターゲットが生成されている場合に、サブシステムのファイル名はマングルされます。これらの状況で、サブシステムのファイル名はモデル名を前置したサブシステムの名前で構成されます。

  • 関数名を使用 — コード ジェネレーターは [関数名オプション] により指定される関数名をファイル名として使用します。

  • ユーザー指定 — このオプションは [ファイル名 (拡張子なし)] テキスト入力フィールドを有効にします。コード ジェネレーターは入力された名前をファイル名として使用します。任意のファイル名を入力しますが、.c.cpp (などの) 拡張子は含めないでください。このファイル名は一意である必要はありません。

    サブシステムのソース ファイル名は一意である必要はありませんが、循環的な依存状態になるような一意でない名前を付けることは避けなければなりません。たとえば、sys_a.h には sys_b.h が含まれ、sys_b.h には sys_c.h が含まれ、sys_c.h には sys_a.h が含まれます。

依存関係

  • このパラメーターには Simulink Coder のライセンスが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] または [再利用可能な関数] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWFileNameOpts
値: 'Auto' (既定値) | 'Use subsystem name' | 'Use function name' | 'User specified'

指定するファイル名は、一意である必要はありません。ただし、循環的な依存状態になるような一意でない名前を付けることは避けてください。たとえば、sys_a.h には sys_b.h が含まれ、sys_b.h には sys_c.h が含まれ、sys_c.h には sys_a.h が含まれます。

詳細については、サブシステム コードを別々の関数およびファイルとして生成 (Simulink Coder)を参照してください。

依存関係

  • このパラメーターには Simulink Coder のライセンスが必要です。

  • このパラメーターを有効にするには、[ファイル名オプション][ユーザー指定] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWFileName
値: '' (既定値) | filename in quotes
データ型: char | string

生成される関数で引数を使用する方法を選択します。

  • void_void — 引数をもたない関数を生成し、グローバル変数でデータを渡します。以下に例を示します。

    void subsystem_function(void)

  • 引数を許可 (最適化) — グローバル変数でデータを渡さずに引数を使用する関数を生成します。これを指定すると、グローバル RAM が節約されます。このオプションにより、コード サイズが削減され、実行速度が改善されます。また、コード ジェネレーターによりさらなる最適化が有効になります。以下に例を示します。

    void subsystem_function(real_T rtu_In1, real_T rtu_In2, 
                            real_T *rty_Out1)

    場合によっては、最適化されたコードの生成時に、コード ジェネレーターが引数をもつ関数を生成しない可能性があります。

  • 引数を許可 (グラフィカル インターフェイスとの一致)Subsystem グラフィカル ブロック インターフェイスに一致する引数を使用する関数インターフェイスを生成します。生成される関数インターフェイスは予測可能であり変更されません。予測可能なインターフェイスは、デバッグやコードのテスト、外部アプリケーションとの統合において有用である可能性があります。たとえば、モデルに 2 つの Inport ブロックと 2 つの Outport ブロックがある場合、生成される関数インターフェイスは次のようになります。

    void subsystem_function(real_T rtu_In1, real_T rtu_In2, 
                            real_T *rty_Out1, real_T *rty_Out2)

詳細については、以下を参照してください。

依存関係

  • このパラメーターには Embedded Coder のライセンスと ERT ベースのシステム ターゲット ファイルが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: FunctionInterfaceSpec
値: 'void_void' (既定値) | 'Allow arguments (Optimized)' | 'Allow arguments (Match graphical interface)'

Atomic Subsystem 用の内部データが親モデルから分離され、サブシステムに所有されているサブシステムの関数コードを生成します。

  • off — Atomic Subsystem 用の内部データが親モデルから分離され、サブシステムに所有されているサブシステムの関数コードを生成しません。

  • on — Atomic Subsystem 用の内部データが親モデルから分離され、サブシステムに所有されているサブシステムの関数コードを生成します。サブシステムのデータ構造は、親モデルのデータ構造とは別に宣言されます。個別のデータをもつサブシステムは、独自のブロック I/O と DWork データ構造対をもちます。結果として、サブシステムに対して生成されたコードの方が、追跡とテストが容易になります。また、データを分離すると、データが複数のデータ構造に分割されるため、モデル全体のデータ構造の最大サイズが小さくなる傾向があります。

Atomic Subsystem の modular function コードを生成する方法の詳細は、非バーチャル サブシステムのモジュラー関数コードの生成 (Embedded Coder)を参照してください。

Atomic Subsystem にメモリ セクションを適用する方法の詳細は、Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)を参照してください。

依存関係

  • このパラメーターには Embedded Coder のライセンスと ERT ベースのシステム ターゲット ファイルが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: FunctionWithSeparateData
値: 'off' (既定値) | 'on'

サブシステムの初期化および終了関数へのメモリ セクションの適用方法を選択します。

  • モデルから継承 — ルート モデルのメモリ セクションをサブシステムの関数コードに適用します。

  • 既定の設定 — 任意のモデルレベルの仕様を無効にして、サブシステムのシステム コードにメモリ セクションを適用しません。

  • 目的のメモリ セクション — モデルのメモリ セクションの 1 つをサブシステムに適用します。

ヒント

  • 入力可能な値は、モデル コンフィギュレーションに対してメモリ セクションのどのようなパッケージを設定しているのかによって異なります。Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)およびモデル コンフィギュレーション パラメーター: コード生成 (Simulink Coder)を参照してください。

  • パッケージを使用してモデルを構成していない場合、使用可能な値は [モデルから継承] のみです。そうでない場合、このリストには [既定の設定] と、モデルのパッケージに含まれているすべてのメモリ セクションが表示されます。

  • これらのオプションは、指定されたサブシステム モデルのメモリ セクションの設定を無効にする場合に利用できます。Atomic Subsystem にメモリ セクションを適用する方法の詳細は、Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)を参照してください。

依存関係

  • このパラメーターには Embedded Coder のライセンスと ERT ベースのシステム ターゲット ファイルが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] または [再利用可能な関数] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWMemSecFuncInitTerm
値: 'Inherit from model' (既定値) | 'Default' | 'The memory section of interest'

Embedded Coder におけるサブシステムの実行関数へのメモリ セクションの適用方法を選択します。

  • モデルから継承 — ルート モデルのメモリ セクションをサブシステムの関数コードに適用します。

  • 既定の設定 — 任意のモデルレベルの仕様を無効にして、サブシステムのシステム コードにメモリ セクションを適用しません。

  • 目的のメモリ セクション — モデルのメモリ セクションの 1 つをサブシステムに適用します。

ヒント

  • 入力可能な値は、モデル コンフィギュレーションに対してメモリ セクションのどのようなパッケージを設定しているのかによって異なります。Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)およびモデル コンフィギュレーション パラメーター: コード生成 (Simulink Coder)を参照してください。

  • パッケージを使用してモデルを構成していない場合、使用可能な値は [モデルから継承] のみです。そうでない場合、このリストには [既定の設定] と、モデルのパッケージに含まれているすべてのメモリ セクションが表示されます。

  • これらのオプションは、指定されたサブシステム モデルのメモリ セクションの設定を無効にする場合に利用できます。Atomic Subsystem にメモリ セクションを適用する方法の詳細は、Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)を参照してください。

依存関係

  • このパラメーターには Embedded Coder のライセンスと ERT ベースのシステム ターゲット ファイルが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] または [再利用可能な関数] に設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWMemSecFuncExecute
値: 'Inherit from model' (既定値) | 'Default' | 'The memory section of interest'

サブシステムの定数へのメモリ セクションの適用方法を選択します。

  • モデルから継承 — ルート モデルのメモリ セクションをサブシステム データに適用します。

  • 既定の設定 — 任意のモデル レベルの仕様を無効にして、サブシステムのデータにメモリ セクションを適用しません。

  • 目的のメモリ セクション — モデルのメモリ セクションの 1 つをサブシステムに適用します。

ヒント

  • 指定したメモリ セクションが、生成されたコードの対応するグローバル データ構造体に適用されます。Atomic サブシステムに対して生成されるグローバル データ構造体の基本情報については、標準のデータ構造体 (Simulink Coder)を参照してください。

  • 入力可能な値は、モデル コンフィギュレーションに対してメモリ セクションのどのようなパッケージを設定しているのかによって異なります。Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)を参照してください。

  • パッケージを使用してモデルを構成していない場合、使用可能な値は [モデルから継承] のみです。そうでない場合、このリストには [既定の設定] と、モデルのパッケージに含まれているすべてのメモリ セクションが表示されます。

  • これらのオプションは、指定されたサブシステム モデルのメモリ セクションの設定を無効にする場合に利用できます。Atomic Subsystem にメモリ セクションを適用する方法の詳細は、Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)を参照してください。

依存関係

  • このパラメーターには Embedded Coder のライセンスと ERT ベースのシステム ターゲット ファイルが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] に設定し、[別々のデータをもつ関数] パラメーターを選択します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWMemSecDataConstants
値: 'Inherit from model' (既定値) | 'Default' | 'The memory section of interest'

サブシステムの内部データへのメモリ セクションの適用方法を選択します。

  • モデルから継承 — ルート モデルのメモリ セクションをサブシステム データに適用します。

  • 既定の設定 — 任意のモデル レベルの仕様を無効にして、サブシステムのデータにメモリ セクションを適用しません。

  • 目的のメモリ セクション — モデルのメモリ セクションの 1 つをサブシステムに適用します。

ヒント

  • 指定したメモリ セクションが、生成されたコードの対応するグローバル データ構造体に適用されます。Atomic サブシステムに対して生成されるグローバル データ構造体の基本情報については、標準のデータ構造体 (Simulink Coder)を参照してください。

  • 入力可能な値は、モデル コンフィギュレーションに対してメモリ セクションのどのようなパッケージを設定しているのかによって異なります。Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)を参照してください。

  • パッケージを使用してモデルを構成していない場合、使用可能な値は [モデルから継承] のみです。そうでない場合、このリストには [既定の設定] と、モデルのパッケージに含まれているすべてのメモリ セクションが表示されます。

  • これらのオプションは、指定されたサブシステム モデルのメモリ セクションの設定を無効にする場合に利用できます。Atomic Subsystem にメモリ セクションを適用する方法の詳細は、Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)を参照してください。

依存関係

  • このパラメーターには Embedded Coder のライセンスと ERT ベースのシステム ターゲット ファイルが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] に設定し、[別々のデータをもつ関数] パラメーターを選択します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWMemSecDataInternal
値: 'Inherit from model' (既定値) | 'Default' | 'The memory section of interest'

サブシステムのパラメーターへのメモリ セクションの適用方法を選択します。

  • モデルから継承 — ルート モデルのメモリ セクションをサブシステムの関数コードに適用します。

  • 既定の設定 — 任意のモデル レベルの仕様を無効にして、サブシステムのシステム コードにメモリ セクションを適用しません。

  • 目的のメモリ セクション — モデルのメモリ セクションの 1 つをサブシステムに適用します。

ヒント

  • 指定したメモリ セクションが、生成されたコードの対応するグローバル データ構造体に適用されます。Atomic サブシステムに対して生成されるグローバル データ構造体の基本情報については、標準のデータ構造体 (Simulink Coder)を参照してください。

  • 入力可能な値は、モデル コンフィギュレーションに対してメモリ セクションのどのようなパッケージを設定しているのかによって異なります。Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)を参照してください。

  • パッケージを使用してモデルを構成していない場合、使用可能な値は [モデルから継承] のみです。そうでない場合、このリストには [既定の設定] と、モデルのパッケージに含まれているすべてのメモリ セクションが表示されます。

  • これらのオプションは、指定されたサブシステム モデルのメモリ セクションの設定を無効にする場合に利用できます。Atomic Subsystem にメモリ セクションを適用する方法の詳細は、Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)を参照してください。

依存関係

  • このパラメーターには Embedded Coder のライセンスと ERT ベースのシステム ターゲット ファイルが必要です。

  • このパラメーターを有効にするには、[関数のパッケージ化][再利用できない関数] に設定し、[別々のデータをもつ関数] パラメーターを選択します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: RTWMemSecDataParameters
値: 'Inherit from model' (既定値) | 'Default' | 'The memory section of interest'

サブシステム参照

参照するサブシステム ファイルを指定します。サブシステム参照の詳細については、サブシステム参照を参照してください。

依存関係

このパラメーターにアクセスするには、[サブシステム参照] セクションで [変換] をクリックします。

サブシステムを参照サブシステムに変換する方法の詳細については、既存のサブシステムから参照サブシステムへの変換を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ReferencedSubsystem
値: '' (既定値) | subsystem filename in quotes
データ型: char | string

ブロックの特性

データ型

Booleana | busa | doublea | enumerateda | fixed pointa | halfa | integera | singlea | stringa

直達

いいえ

多次元信号

はいa

可変サイズの信号

はいa

ゼロクロッシング検出

いいえ

a 実際のデータ型または機能のサポートは、ブロックの実装に依存します。

代替構成

すべて展開する

Atomic Subsystem ブロックは [Atomic サブシステムとして扱う] パラメーターを選択します。

ライブラリ:
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

R2019b 以降

Subsystem Reference ブロックは、サブシステム ファイル (.slx) に保存されているサブシステムを参照します。詳細については、サブシステム参照を参照してください。

ライブラリ:
Simulink / Ports & Subsystems

Enabled Subsystem は、Enable ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

Triggered Subsystem は、[トリガー タイプ][立ち上がり] に設定されている Trigger ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

Enabled and Triggered Subsystem は、[トリガー タイプ][立ち上がり] に設定されている Enable ブロックおよび Trigger ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems

Resettable Subsystem は、Reset ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems

If Action Subsystem は、実行が If ブロックで制御されるサブシステムを作成するためのテンプレートです。このサブシステムには Action Port ブロックが含まれています。

ライブラリ:
Simulink / Ports & Subsystems

Switch Case Action Subsystem は、実行が Switch Case ブロックで制御されるサブシステムを作成するためのテンプレートです。このサブシステムには Action Port ブロックが含まれています。

ライブラリ:
Simulink / Ports & Subsystems

Function-Call Subsystem は、[トリガー タイプ][関数呼び出し] に設定されている Trigger ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems

For Iterator Subsystem は、For Iterator ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems

While Iterator Subsystem は、While Iterator ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems

For Each Subsystem は、For Each ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

R2022a 以降

Message Polling Subsystem は、[トリガー タイプ][メッセージ][トリガー時間][サンプル時間ヒットの発生時] に設定されている Trigger ブロックが含まれているテンプレートです。Trigger ブロックは Inport ブロックを置き換えるものです。

ライブラリ:
Simulink / Messages & Events

R2022a 以降

Message Triggered Subsystem は、[トリガー タイプ][メッセージ][トリガー時間][メッセージが使用可能な時] に設定されている Trigger ブロックが含まれているテンプレートです。Trigger ブロックは Inport ブロックを置き換えるものです。

ライブラリ:
Simulink / Messages & Events

CodeReuseSubsystem ブロックは [Atomic サブシステムとして扱う] パラメーターを選択し、[関数のパッケージ化][再利用可能な関数] に設定します。

ライブラリ:
Simulink / Ports & Subsystems

R2022b 以降

Neighborhood Processing Subsystem は、Neighborhood ブロックが含まれているテンプレートです。

ライブラリ:
Simulink / Matrix Operations

拡張機能

バージョン履歴

R2007a で導入