モデル参照の要件と制限
モデルを参照する前に、モデル参照の要件と制限について考慮します。要件と制限を事前に把握することで、モデル参照を適切に行うための準備ができます。
モデルの再利用
参照モデルに以下のいずれかのプロパティがない限り、モデルの階層構造内で 1 つのモデルを複数回参照できます。
単一インスタンスを設定する他のモデルを参照している。
モデルには、To File ブロックが含まれている。
モデルにマルチインスタンス モデルでサポートされていないストレージ クラスを使用する内部信号または状態が含まれている。内部信号と状態には、
Auto
またはModel default
に設定されたストレージ クラスがなければならない。また、内部データの既定のストレージ クラスはマルチインスタンス ストレージ クラスでなければならない。モデルでエクスポートされた Stateflow® グラフィカル関数が使用される。
参照モデルがアクセラレータ モードで実行され、インライン化されていないか、インライン化されているがオプション
SS_OPTION_WORKS_WITH_CODE_REUSE
が設定されていない S-Function を含んでいる。次のような Function-Call Subsystem を含む。
Simulink® ソフトウェアによって強制的に関数にされる
幅の広い信号によって呼び出される
参照モデルに以下のいずれかのプロパティがある場合、モデルの 1 つのインスタンスのみモデルの階層構造に表示できます。モデルの [最上位モデルごとに可能なインスタンスの総数] は [1]
に設定されなければなりません。
モデル マスク
参照モデルでマスク ブロックを使用することができます。また、参照モデルをマスクすることもできます (マスクしたモデルの作成と参照を参照)。
マスクを正常に使用するには、以下の要件と制限について考慮します。
参照モデルの名前をマスクが指定する場合、マスクは参照モデルの名前を直接指定しなければなりません。ワークスペース変数を使用して名前を指定することはできません。
Model ブロックのマスク ワークスペースは参照モデルで利用できません。参照モデルが使用している変数は、次のワークスペースのいずれかに解決されなければなりません。
参照モデルが定義するワークスペース
MATLAB® ベース ワークスペース
マスク コールバックは Model ブロックを追加したり、Model ブロック名を変更したり、Model ブロックのシミュレーション モードを変更することはできません。
参照モデルにおける S-Function
S-Function の種類ごとに、モデル参照の異なるレベルのサポートが提供されます。
S-Function のタイプ | ノーマル モードで参照されるモデル | アクセラレータ モードで参照されるモデルと保護モデル |
---|---|---|
Level-1 MATLAB S-Function | サポートなし | サポートなし |
Level-2 MATLAB S-Function | サポートあり | サポートあり — TLC ファイルが必要 |
手書きの C MEX S-Function | サポートあり — TLC ファイルでインライン化が可能 | サポートあり — TLC ファイルでインライン化が可能 |
S-Function Builder | サポートあり | サポートあり |
レガシ コード ツール | サポートあり | サポートあり |
参照モデルで S-Function を使用する場合、以下の要件と制限を考慮します。
S-Function の考慮事項 | 要件と制限 |
---|---|
サンプル時間の継承 | S-Function が継承されたサンプル時間に依存する場合、S-Function は継承されたサンプル時間への依存関係を明示的に制限しなければなりません。サンプル時間の継承を制御するには、S-Function が継承を許可するかどうかに基づいて、 |
アクセラレータ モードで参照されるモデル | アクセラレータ モードの参照モデルに Target Language Compiler (TLC) ファイルを使用してインライン化する必要がある S-Function が含まれている場合、S-Function はその 参照モデルは、次の場合、インラインでない S-Function を使用できません。
アクセラレータ モードの参照モデルは Simulink Coder™ ソフトウェアによって生成された S-Function を使用できません。 |
ノーマル モードで参照されるモデル | 条件によっては、ノーマル モードで実行される参照モデル内に C S-Function があると、正常な実行が不可能になります。詳細については、S-Functions in Normal Mode Referenced Modelsを参照してください。 ノーマル モードの参照モデル内で S-Function を使用できるかどうかを指定するには、関数 S-Function がノーマル モードで参照モデルの複数のインスタンスを処理するには、複数の |
保護モデル | 保護モデルに Target Language Compiler (TLC) ファイルを使用してインライン化する必要がある S-Function が含まれている場合、S-Function はその |
モデル アーキテクチャの要件と制限
要素 | 要件と制限 |
---|---|
Goto ブロックと From ブロック | Goto ブロックおよび From ブロックはモデル参照の境界を越えることはできません。 |
反復サブシステム | 参照モデルに Assignment ブロックが含まれる場合、Assignment ブロックが反復サブシステムにも含まれる場合に限り、Model ブロックを反復サブシステムに配置できます。 |
InitFcn コールバック | 最上位モデルの |
参照モデルの印刷 | 最上位モデルから参照モデルを印刷できません。 |
信号の要件と制限
信号 | 要件と制限 |
---|---|
0 ベースまたは 1 ベースのインデックス情報の伝播 | 次の 2 つの例では、Simulink はブロックに接続されている参照モデルのルートレベルの端子に 0 ベースまたは 1 ベースのインデックス情報を伝播しません。
Assignment ブロックは、インデックスを受け入れるブロックの例です。インデックスを生成するブロックの例として、For Iterator ブロックがあります。 伝播の欠如が原因となって、互換性のないインデックス接続を Simulink が検出できない場合があります。これらの 2 つの例は次のようになります。
|
非同期レート | 次の 2 つの条件が両方成立するモデルについては、参照モデルは非同期レートのみを使用できます。
|
ユーザー定義のデータ型の入力と出力 | 参照モデルはユーザー定義のデータ型を使用する場合、入力にも出力にも、固定小数点数、 |
バス | 参照モデルの入力または出力としてバーチャル バスを使用する場合、バスに可変サイズの信号要素を含めることはできません。モデル インターフェイスでのバスの使用を参照してください。 |
信号オブジェクト | Model ブロックに接続する信号は、ブロックの外でも中でも機能的には同じ信号です。このため、信号には制限があり、特定の信号は最大 1 つの Signal オブジェクトに関連付けられます。詳細については、 |
シミュレーションの要件と制限
シミュレーションのプロパティ | 要件と制限 |
---|---|
連続サンプル時間の伝播 | 連続サンプル時間は、サンプル時間に依存しない Model ブロックに伝播できません。 |
サンプル時間とソルバー | 最上位モデルのソルバーは、モデルの階層構造内のすべての連続サンプル時間を制御します。たとえば、固定ステップ ソルバーの場合は、参照モデル内のすべての連続レートが最上位モデルの固定ステップ サイズで実行されます。サンプル時間がソルバーに与える影響の詳細については、サンプル時間のタイプを参照してください。 |
状態の初期化 | 状態を含む他のモデルを参照するモデルの状態を初期化するには、初期状態を構造体形式または時間付き構造体形式で指定します。 |
パラメーターの調整可能性 | 他のモデルを参照するモデルのシミュレーションでは、一部の状況でブロック パラメーター (Gain ブロックの [ゲイン] パラメーターなど) を調整できないことがあります。詳細については、その他のモデル化の目的に関する調整可能性の考慮事項と制限を参照してください。 |
コード生成の要件と制限
コード生成の要件と制限を事前に把握すると、コード生成用にモデルの階層構造を正しく設定する準備を適切に行うことができます。モデルの階層構造のコード生成のためのコンフィギュレーション パラメーターの設定 (Simulink Coder)およびモデル参照のコード生成の制限 (Simulink Coder)を参照してください。
関連するトピック
- モデル コンポーネントの機能の比較
- モデル階層のコンフィギュレーション パラメーターの設定
- モデル参照のコード生成の制限 (Simulink Coder)