モデル コンポーネントの機能の比較
特定のタイプのモデル コンポーネントを使用してシステムの一部を実装する前に、そのタイプのコンポーネントがモデル化要件を満たしているかどうかを検討します。検討するコンポーネント タイプを特定するための大まかなガイドラインと使用例については、モデル コンポーネントのタイプの検討を参照してください。
一般的なモデル化要件は以下のカテゴリにグループ化できます。
コラボレーション
モデル化要件 | サブシステム | リンクされたサブシステム | サブシステム参照 | モデル参照 |
---|---|---|---|---|
独立したファイル | サポートなし サブシステムは親と同じファイルに保存します。 サブシステムを作成または変更するには、親ファイルを編集しなければなりません。そのため、ファイル競合やマージの問題が発生する可能性があります。 | サポートあり リンク付きブロックの親ライブラリ ブロックを独立したファイルに保存します。 独立したファイルを使用すると、ファイル競合を避けることができます。 | サポートあり 参照サブシステムを独立したファイルに保存します。 独立したファイルを使用すると、ファイル競合を避けることができます。 | サポートあり 参照モデルを独立したファイルに保存します。 独立したファイルを使用すると、ファイル競合を避けることができます。 |
スタンドアロンの動作 | サポートなし サブシステムは、実行のコンテキストを提供するためにモデルに依存しています。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり 参照モデルはそれを参照するモデルとは独立して開発できます。 参照モデルをスタンドアロンのモデルとしてシミュレートするには、新しいウィンドウで最上位モデルとして参照モデルを開きます。参照モデルには、スタンドアロンのコンテキストで実行するために必要なデータが含まれている必要があります。たとえば、参照モデルには、パラメーターおよび信号を定義する変数およびデータ型が含まれている必要があります。 |
バージョン管理と構成管理 | サポートなし ソース管理システムにサブシステムを直接配置することはできません。 ファイルの競合を軽減し、サブシステムごとに個別のバージョン管理を使用するには、サブシステム参照を使用します。 | サポートあり ソース管理システムにライブラリ ファイルを配置できます。 ライブラリ ブロックごとに個別のバージョン管理を行うには、ライブラリ内でサブシステム参照とモデル参照を使用します。これらのブロックをライブラリからモデルにドラッグするときに、サブシステム ファイルまたはモデル ファイルが参照されます。 転送テーブルを使用することで、古いライブラリ ブロックを新しいバージョンのブロックにマッピングできます。 | サポートあり ソース管理システムにサブシステム ファイルを配置できます。 | サポートあり ソース管理システムにモデル ファイルを配置できます。 |
知的所有権保護 | サポートなし 代わりにモデル参照を使用します。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり 保護モデルでは、モデルの内容が表示されません。これは、モデルを配布するときに役立ちます。 保護モデルを作成するには、Simulink® Coder™ ライセンスが必要です。詳細については、コンテンツを隠すためのモデルの保護 (Simulink Coder)を参照してください。 保護モデルの使用には Simulink Coder ライセンスは必要 "ありません"。詳細については、サードパーティからの保護モデルの参照を参照してください。 |
再利用
モデル化要件 | サブシステム | リンクされたサブシステム | サブシステム参照 | モデル参照 |
---|---|---|---|---|
コンポーネントの再利用 | サポートなし サブシステムをコピーしてモデル内で再利用できますが、コピーは互いに独立しています。 | サポートあり コピーを作成することなく、複数のモデル内で同じ親ライブラリ ブロックに複数回リンクすることができます。 ライブラリ リンクの管理では、切断されたリンク、無効リンク、パラメーター付きのリンクの管理など、何らかのオーバーヘッドが発生します。 | サポートあり コピーを作成することなく、複数のモデル内で同じサブシステムを複数回参照することができます。 | サポートあり コピーを作成することなく、複数のモデル内で同じモデルを複数回参照することができます。モデルの再利用を参照してください。 |
共有データ | サポートあり コンポーネントの外部でデータを定義することで、インスタンス間でデータを共有できます。たとえば、共通の親サブシステムのデータ ストアを使用します。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり モデル内でデータ ストアを作成することで、参照モデルのインスタンス間でデータを共有できます。参照モデル インスタンス間でのデータの共有を参照してください。 |
インスタンス固有のパラメーター値 | サポートあり サブシステムのコピーは、互いに独立しています。 | サポートあり 親ライブラリ ブロックを編集すると、その変更がライブラリ ファイルに適用され、そのブロックにリンクしているブロックに伝播します。 ブロックのインスタンスを編集するために、ライブラリ リンクを無効にできます。 親ライブラリ ブロックの書き込みアクセス権限が制限されている場合は、ライブラリ リンクを無効にできません。 | サポートなし 参照サブシステムのインスタンスを編集すると、その変更がサブシステム ファイルに適用され、参照サブシステムの他のインスタンスに伝播します。 | サポートあり 参照モデルのインスタンスを編集すると、その変更がモデル ファイルに適用され、参照モデルの他のインスタンスに伝播します。 参照モデルに対してインスタンス固有のパラメーター値を指定するには、再利用可能な参照モデルのインスタンスのパラメーター化を参照してください。 |
バリアント | サポートあり サブシステムのバリアントを Variant Subsystem ブロックまたは Variant Model ブロックに追加します。 詳細については、Implement Variations in Separate Hierarchy Using Variant Subsystemsを参照してください。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり モデルのバリアントを Variant Subsystem ブロックまたは Variant Model ブロックに追加します。 詳細については、Implement Variations in Separate Hierarchy Using Variant Subsystemsを参照してください。 |
パフォーマンス
モデル化要件 | サブシステム | リンクされたサブシステム | サブシステム参照 | モデル参照 |
---|---|---|---|---|
インクリメンタル モデルの読み込み処理 | サポートなし モデルを読み込むと、そのモデルに保存されているサブシステム コンテンツが読み込まれます。 | サポートあり ブロック線図の編集中や更新中、またはモデルのシミュレーション中に必要となった時点で、ライブラリがインクリメンタルに読み込まれます。 | サポートあり ブロック線図の編集中や更新中、またはモデルのシミュレーション中に必要となった時点で、参照サブシステムがインクリメンタルに読み込まれます。 | サポートあり ブロック線図の編集中や更新中、またはモデルのシミュレーション中に必要となった時点で、参照モデルがインクリメンタルに読み込まれます。 |
インクリメンタルなモデルのコンパイル | サポートなし サブシステムは親モデルの一部としてコンパイルされます。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり アクセラレータ モードでシミュレートされる参照モデルは、[リビルド] コンフィギュレーション パラメーターの値に従ってコンパイルされます。 モデルがコンパイルされるかどうかは、他のモデルとは関係ありません。 |
ビルド アーティファクトの再利用 | サポートなし ビルド アーティファクト (シミュレーション ターゲットなど) はサブシステム用に生成されません。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり チームのメンバーおよび継続的インテグレーション (CI) システムは、使用するモデルの Simulink キャッシュ ファイルを生成できます。こうしたファイルにより、シミュレーション ターゲットなどのビルド アーティファクトを再利用でき、シミュレーションとコード生成を高速化できます。詳細については、シミュレーションを高速化するための Simulink キャッシュ ファイルの共有を参照してください。 |
大規模モデルでのメモリ使用量の削減 | サポートなし サブシステムでは、シミュレーションおよびコード生成のメモリ使用量が削減されません。 | サポートなし リンクされたサブシステムでは、シミュレーションおよびコード生成のメモリ使用量が削減されません。 Simulink はブロック更新中にライブラリ ブロック インスタンスを複製します。 | サポートなし サブシステム参照では、シミュレーションおよびコード生成のメモリ使用量が削減されません。 Simulink は、ブロックの更新中にサブシステム参照のインスタンスを複製します。 | サポートあり Simulink はコンパイル済みのモデルをインクリメンタルに読み込むため、アクセラレータ モードで参照されるモデルでは、シミュレーションとコード生成のメモリ使用量が削減されます。 |
疑似代数ループの削除 | サポートあり Atomic でないサブシステムは疑似代数ループを回避します。 サブシステムが Atomic である場合、Subsystem ブロック パラメーターの [代数ループの発生の最小化] を有効にすることで、疑似代数ループの削除を試行できます。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり [コンフィギュレーション パラメーター] 、 [モデル参照] 、 [代数ループの発生の最小化] を有効にすることで、疑似代数ループの削除を試すことができます。 |
ローカル ソルバー | サポートなし サブシステムは親モデルのソルバーを継承します。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり 参照モデルのローカル ソルバーを使用して、モデル参照を別個の微分方程式セットとして解くことができます。ローカル ソルバーでは別の大きいステップ サイズを使用できます。ソルバーとソルバー設定の選択には、シミュレーションの速度と精度とのトレードオフがあります。詳細については、Use Local Solvers in Referenced Modelsを参照してください。 |
並列ビルド | サポートなし サブシステムは親モデルの一部としてビルドされます。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり Parallel Computing Toolbox™ ソフトウェアを使用して、MATLAB® ワーカーの並列プールに参照モデルのコード生成とコンパイルを分散できます。 大きなモデル参照階層では、モデル参照ターゲットを並列でビルドすることにより、ブロック線図の更新とコード生成の速度を上げることができます。詳細については、並列ビルドを使用した参照モデルの更新時間の短縮および並列ビルドを使用した参照モデルのビルド時間の短縮 (Simulink Coder)を参照してください。 |
テストと認定
モデル化要件 | サブシステム | リンクされたサブシステム | サブシステム参照 | モデル参照 |
---|---|---|---|---|
単体テスト | サポートあり サブシステムのコンテキスト (入力信号のデータ型など) が変更された場合、関連するテスト ハーネスを更新しなければなりません。 Atomic でないサブシステムの場合、バーチャルな境界のために、テスト ハーネスは異なるブロック実行順序を使用する可能性があります。 サブシステムに関する体系的でシミュレーションベースのテストの作成、管理、および実行をサポートするツールについては、Create or Import Test Harnesses and Select Properties (Simulink Test)を参照してください。 どの程度までモデル コンポーネントがテストされるかを測定するには、モデル カバレッジ (Simulink Coverage)を参照してください。 | サポートあり "動作はサブシステムと同じです。" | サポートあり 参照サブシステムのテスト ハーネスの動作は、別のファイルに格納されないサブシステムのテスト ハーネスと同じです。 参照サブシステムのテスト ハーネスは作成できますが、参照サブシステム内のブロックのテスト ハーネスは作成できません。 | サポートあり 参照モデルを独立してテストして、それを最上位モデルとしてシミュレーションすることで動作を分離することができます。 データ定義テスト ハーネスを、MATLAB テスト ベクトルとダイレクト カバレッジ集合と共に使用できます。 サブシステムに関する体系的でシミュレーションベースのテストの作成、管理、および実行をサポートするツールについては、Create or Import Test Harnesses and Select Properties (Simulink Test)を参照してください。 どの程度までモデル コンポーネントがテストされるかを測定するには、モデル カバレッジ (Simulink Coverage)を参照してください。 |
SIL/PIL テスト | サポートなし サブシステムを含むモデルで SIL/PIL テストを実行できますが、サブシステムを独立してシミュレートすることはできません。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり モデル参照階層の SIL/PIL テストを実行する場合は、SIL シミュレーションおよび PIL シミュレーション (Embedded Coder)を参照してください。 |
単一ソースのコード | サポートあり 既定では、サブシステム コードは再利用できません。可能な場合、再利用可能なサブシステム コードを生成するには、サブシステム コードを別々の関数およびファイルとして生成 (Simulink Coder)を参照してください。 | サポートあり 既定では、サブシステム コードは再利用できません。可能な場合、再利用可能なサブシステム コードを生成するには、モデル間で共有されるライブラリ サブシステムからの再利用可能なコードの生成 (Simulink Coder)を参照してください。 | サポートあり "動作はサブシステムと同じです。" | サポートあり 各参照モデルには、モデルの階層構造にその参照モデルが含まれている回数に関係なく、1 つのソース コード セットが含まれます。単一ソースのコードを使用すれば、検証にかかるコストを低減できます。 |
生成されたコードのトレーサビリティ | サポートあり サブシステムに対して生成されたコードをトレースできますが、サブシステムのコンテキストが変更されると、生成コードは変更されます。たとえば、入力信号のデータ型の変更はサブシステムのコードに影響します。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり 参照モデルの生成コードを他のモデルに関係なくトレースできます。これにより、検証にかかるコストが低減します。 Simulink Code Inspector™ のライセンスがあれば、各参照モデルのトレーサビリティ マトリクスを作成できます。トレーサビリティ マトリクスは、モデル オブジェクト、生成コード、およびモデル要件間のトレーサビリティを提供します。詳細については、Generate Traceability Matrices (Simulink Code Inspector)を参照してください。 |
インターフェイス設計
モデル化要件 | サブシステム | リンクされたサブシステム | サブシステム参照 | モデル参照 |
---|---|---|---|---|
インターフェイスでの信号プロパティの指定 | サポートあり サブシステムのインターフェイスで信号プロパティを指定できます。 指定していない信号プロパティについては、サブシステムはその信号プロパティをコンテキストに基づいて継承します。信号プロパティの伝播は、Simulink が予測しない信号プロパティを使用することにつながる場合があります。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり 大部分の信号プロパティは参照モデルのインターフェイスで指定しなければなりません。 参照モデルは境界が定義され、コンテキストに依存しないため、大部分の信号プロパティは継承されません。 参照モデルは、サンプル時間に依存しないときに離散サンプル時間を継承できます。 |
インターフェイスでの物理的な接続 | サポートあり サブシステムのインターフェイスで物理的な接続を指定できます。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートなし 物理的な接続は、参照モデル内に完全に含まれていなければなりません。モデル インターフェイスをまたぐことはできません。 |
インターフェイスでのバスの指定 | サポートあり
サブシステムでは、バーチャル バス用にバス オブジェクトを使用する必要はありません。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり
In Bus Element ブロックおよび Out Bus Element ブロックを使用する場合、モデル参照ではバーチャル バス用にバス オブジェクトを使用する必要はありません。 |
カスタムの動作
モデル化要件 | サブシステム | リンクされたサブシステム | サブシステム参照 | モデル参照 |
---|---|---|---|---|
一意のコンフィギュレーション パラメーターの設定 | サポートなし サブシステムは、それらが含まれているモデルのコンフィギュレーション パラメーター設定を使用します。 | サポートなし "動作はサブシステムと同じです。" | サポートなし "動作はサブシステムと同じです。" | サポートあり 通常、コンフィギュレーション パラメーター設定は親モデルと参照モデルで異なる場合があります。互換性の詳細については、モデル階層のコンフィギュレーション パラメーターの設定を参照してください。 |
状態の初期化 | サポートあり サブシステムの状態は初期化できます。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり 構造体形式または時間付き構造体形式のいずれかを使用して、状態を最上位モデルから初期化できます。 |
条件付き実行 | サポートあり サブシステムで条件付き実行がサポートされます。詳細については、条件付き実行サブシステムの概要を参照してください。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり 参照モデルで条件付き実行がサポートされます。詳細については、参照モデルの条件付き実行を参照してください。 |
イベントベースの動作 | サポートあり サブシステムでイベントベースの動作がサポートされます。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり 参照モデルでイベントベースの動作がサポートされます。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。 |
独立した関数 | サポートあり サブシステムで独立した関数を定義できます。詳細については、Simulink 関数の概要を参照してください。 | サポートあり "動作はサブシステムと同じです。" | サポートあり "動作はサブシステムと同じです。" | サポートあり 参照モデルで独立した関数を定義できます。詳細については、エクスポート関数モデルの概要を参照してください。 |
関連するトピック
- モデル参照の要件と制限
- モデルの階層構造内のシミュレーション モードの選択
- サブシステム (Simulink Coder)
- モデル参照階層向けのコードの生成 (Simulink Coder)
- システム アーキテクチャの Simulink モデリング環境へのマッピング (Simulink Coder)
- Map Embedded System Architecture to Simulink Modeling Environment (Embedded Coder)