モデル参照のコード生成の制限
モデル参照のコード生成に関する制限は、コード生成用にモデル参照階層を適切に設定する方法に影響を与えます。
これらの制限の他に、コード生成で使用されるモデル参照階層は次の要件と制限を満たさなければなりません。
以下にまとめられている Simulink® 要件と制限
コンフィギュレーション パラメーターの要件にまとめられている、コード生成ターゲットに適用される Simulink Coder™ の要件
ストレージ クラスの制限
Embedded Coder® をお持ちの場合は、参照モデル内のグループ化されたストレージ クラスに適用される制限もあります。詳細については、ストレージ クラスの制限を参照してください。
データ ログの制限
To Workspace ブロックと Scope ブロックは、Simulink Coder が参照モデルのコードを生成する場合は無視されます。結果として得られるコードはそのブロックが存在しないときと同じになります。Scope ブロックと MAT ファイルのログが有効化されているモデルについては、コード ジェネレーターによってモデルの DWork 構造体に余分な PWork が生成される場合があります。
参照モデル用に生成されたコードは、ログ データを MAT ファイルに出力しません。参照モデルのデータ ログを有効にする場合、Simulink Coder はコード生成前にオプションを無効化し、後で再度有効にします。
参照モデルを含むモデルの状態をログに記録する場合、出力での状態の順序はブロックの順序によって決定され、シミュレーションの出力と、生成されたコードの MAT ファイル ログ出力ファイルとで一致しないことがあります。
状態の初期化の制限
最上位モデルがモデル コンフィギュレーション パラメーター [初期状態] を使用して初期条件を指定している場合、Simulink Coder はコード生成中に参照モデルの離散状態を初期化しません。
モデルの再利用の制限
コード生成用に使用される参照モデルが次の特性のうち少なくとも 1 つをもつ場合、モデルはモデル コンフィギュレーション パラメーター [最上位モデルごとに可能なインスタンスの総数] を One
に指定しなければなりません。そのモデルの他のインスタンスはその階層に存在できます。パラメーターを [1]
に設定していない場合や、階層内にそのモデルのインスタンスが 1 つを超えて存在する場合、エラーになります。次のような特性があります。
モデルが単一インスタンスを設定した他のモデルを参照する。
モデルがマルチインスタンス モデルでサポートされていないストレージ クラスをもつ内部信号または状態を含む。内部信号と状態については、ストレージ クラスを
Auto
またはModel default
に設定しなければなりません。内部データの既定ストレージ クラスは、マルチインスタンスのストレージ クラスでなければなりません。モデルが、エクスポートされた Stateflow® グラフィカル関数を使用する。
モデルが次の S-Function を含む:
インライン化されているが、オプション
SS_OPTION_WORKS_WITH_CODE_REUSE
を設定していないインライン化されていない
モデルが次の Function-Call Subsystem を含む:
Simulink エンジンによって強制的に関数にされる
幅の広い信号によって呼び出される
S-Function の制限
参照モデルは Simulink Coder によって生成されたインラインでない S-Function を使用できません。
Simulink Coder S-Function ターゲットはモデル参照をサポートしません。
詳細については、参照モデルにおける S-Functionを参照してください。
サブシステムの制限
Atomic サブシステムのコードを再利用可能な関数として生成する場合、サブシステムからの再呼び出し可能なコードの生成に説明されているように、サブシステムと参照モデルを接続する入力や出力がコードの再利用に影響する場合があります。
ターゲットの制限
Simulink Coder S-Function ターゲットはモデル参照をサポートしません。
条件付きモデルの制限
モデルにトリガーまたはイネーブル端子が含まれている場合、スタンドアロンの Simulink Coder コードは生成できません。
ローカル ソルバーの制限
ローカル ソルバーを使用するモデルのコードは生成できません。ローカル ソルバーの詳細については、Use Local Solvers in Referenced Modelsを参照してください。