このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
モデル コンポーネントのタイプの検討
便利なモデル コンポーネントは範囲が適切に定義されており、要件によって定義された機能を実行し、大規模なシステムの一部を構成しています。
コンポーネントを定義するときは、以下の潜在的な要件について検討します。
ファイルの競合 — 各コンポーネントの作業を行うのが 1 人だけである場合はコンポーネントを大きくすることができます。複数の人がコンポーネントを共有する必要がある場合は、設計を小さい論理的な単位に分割しなければなりません。複数の人が同じファイルを編集しなければならない場合は、比較レポートからの Simulink モデルのマージを参照してください。
再利用性 — モデル内でブロックのグループを複数回使用する予定がある場合は、そのブロックのグループを再利用可能なコンポーネントに定義します。重複を防ぐことで、モデルをより簡単に保守できます。重複のある既存のモデルをリファクタリングするには、モデルのリファクタリングによるコンポーネントの再利用の向上 (Simulink Check)を参照してください。
コード生成 — 物理コンポーネント (デジタル コントローラーなど) 用のスタンドアロン コードを生成しなければならない場合は、物理コンポーネントを表し、適切に定義されたインターフェイスをもつ 1 つのコンポーネントが必要です。
検証コスト — モデルのある部分が頻繁に変更され、多額のテスト費用がかかる場合、モデルのこの部分をコンポーネントとして別のファイルで管理しなければなりません。コンポーネントが別々のファイルで定義されている場合、プロジェクトのソース管理を使用して変更を管理および追跡できます。ソース管理の詳細については、構成管理を参照してください。
シミュレーション速度 — 数値特性の異なるコンポーネントに異なるソルバーを使用すると、シミュレーション速度が高速化する可能性があります。同様に、サンプルレートに基づいてブロックをグループ化することでシミュレーション速度が高速化する可能性があります。詳細については、ソルバー プロファイラーおよびパフォーマンス アドバイザーを使用したシミュレーション パフォーマンスの改善を参照してください。
モデル化要件はコンポーネントのサイズに影響します。たとえば、ブロック数が 500 未満のモデルは、それよりも大きいモデルよりも簡単にテストできます。ただし、参照モデルに 500 を超えるブロックが含まれている場合、モデルの階層構造に対するシミュレーションは高速になる可能性があります。
Simulink コンポーネント
Simulink® コンポーネントのさまざまなタイプが、多様なモデル化要件に対応します。
コンポーネントのタイプ | 定義 | コンテンツのソース | モデルでの実装 | 詳細 |
---|---|---|---|---|
サブシステム | "サブシステム" はその入力と出力のプロパティを継承できるダイナミックなインターフェイスを備えたブロックの一意のグループです。 | なし — コンテンツを各サブシステムに手動で追加しなければなりません。 | Subsystem ブロック | サブシステムへのブロックのグループ化 |
リンクされたサブシステム | "リンクされたサブシステム" はライブラリに格納されている Subsystem ブロックのリンクされたインスタンスです。ライブラリ リンクを無効にすると、リンク付きブロックの各インスタンスが一意になります。 | 親ライブラリ ブロックまたはプロトタイプ ブロックが含まれるライブラリ ファイル ( | ライブラリ リンクをもつ Subsystem ブロック | リンク付きブロック |
サブシステム参照 | "サブシステム参照" はその入力と出力のプロパティを継承できるダイナミックなインターフェイスを備えたブロックの再利用可能なグループへの参照です。 | 参照サブシステムが含まれるサブシステム ファイル ( | Subsystem Reference ブロック | サブシステム参照 |
モデル参照 | "モデル参照" はその入力と出力のプロパティを指定する定義済みのインターフェイスを備えたモデルへの参照です。 | 保護モデルとなる場合もある参照モデルが含まれるモデル ファイル ( | Model ブロック | モデル参照の基礎 |
Simulink モデルでは、次のコンポーネントを組み合わせて使用できます。たとえば、大きなモデルのファイル競合を最小限に抑える場合は、サブシステムを参照サブシステムと参照モデルに変換することで、どちらも別のファイルに保存されます。
サブシステム参照またはモデル参照をライブラリからモデルにドラッグすると、モデルはコンテンツを定義するサブシステム ファイルまたはモデル ファイルを直接参照します。親ライブラリ ブロックに直接適用されたマスクがある場合にのみ、モデルはライブラリ リンクをもちます。通常は、参照ファイルに保存され、ライブラリ リンクを必要としないモデル マスクを使用しなければなりません。
高水準のコンポーネント選択ガイドライン
モデル コンポーネントのタイプごとに最適な使用例があります。
サブシステム — その他のコンポーネントのブロック線図の単純化に最適
リンクされたサブシステム — ユーティリティとブロックセットに最適
サブシステム参照 — ファイル競合とマージの問題の削減に最適
モデル参照 — コードの再利用、単体テスト、並列ビルド、大きなコンポーネントに最適
最適な使用例は、コンポーネントの各タイプで可能な使用例のサブセットです。たとえば、モデル参照でファイル競合とマージの問題を削減することも、サブシステムを単体テストすることもできます。
ヒント
サブシステムが大きくなることが予期される場合は、ブロックを機能的にグループ化するように、サブシステムを Atomic にします。Atomic サブシステムは、親モデルの実行時に単一ブロックまたはアトミック単位のように動作します。サブシステムをモデル参照に変換するには、Atomic な動作が必要です。
各種コンポーネント化手法を使用するタイミングの概要については、Component-Based Modeling in Simulink (4 分 28 秒) を参照してください。
このフロー チャートは、コンポーネント タイプを選択するにあたっての開始点を提供します。
この表では、フロー チャートからの情報を提供するとともに、コンポーネントのタイプを選択することで、階層で複数回再利用され、多くのブロックを含んでいるコンポーネントでパフォーマンスを向上させる方法について詳しく説明します。
コンポーネントの用途 | コンポーネントのタイプ |
---|---|
コンポーネントに定義済みのインターフェイスまたはスタンドアロンの動作は必要である。 | モデル参照を検討します。 |
コンポーネントに十分なブロックが含まれ、参照モデルのアクセラレータ モード シミュレーションからメリットが得られるほど十分に再利用される。 モデルの階層構造が参照モデルのアクセラレータ モード シミュレーションからメリットが得られるかどうかは、多くの要素によって異なります。アクセラレータ モードでシミュレーションを実行する参照モデルごとに、Simulink でシミュレーション ターゲットをビルドしコンパイルする必要があります。これらのターゲットは参照モデルの追加のインスタンスで再利用され、それにより、モデルの階層構造に参照モデルのさまざまなインスタンスが含まれる場合に、シミュレーションが高速化されます。参照モデルが変更されない場合、Simulink キャッシュ ファイル ( | モデル参照を検討します。 |
コンポーネントはパブリッシュされたユーティリティであり、ほとんど変化がない。 | リンクされたサブシステムを検討します。 |
コンポーネントは再利用されるかソース管理システムで管理されており、定義されているインターフェイスが必要なく、モデル参照シミュレーション ターゲットを活用せず、パブリッシュされたユーティリティにしない。 | サブシステム参照を検討します。 |
コンポーネントは再利用されず、ソース管理システムで管理されていない。 | サブシステムを検討します。 |
モデル化要件の考慮事項
高水準のガイドラインに基づいてコンポーネントを実装する前に、追加のモデル化要件について検討してください。たとえば、コンポーネント インターフェイスで物理的接続が必要な場合、サブシステム、リンクされたサブシステム、または参照サブシステムを使用する必要があります。知的所有権保護が必要な場合、参照可能な保護モデルを作成する必要があります。
コンポーネントがモデル化要件を満たすかどうかを判断するには、モデル コンポーネントの機能の比較を参照してください。