生成されたコードのパラメーター引数のパッケージ化の設定
再利用可能なコンポーネントを参照モデルとして作成する場合、コンポーネントのインスタンスに同じ値を使用するか、インスタンスごとに異なる値を使用するように、ブロック パラメーターを設定します。
生成されたコードのパラメーター引数の実装をカスタマイズするために、これらのパラメーターのパッケージ化をこれらが定義されるモデルで設定できます。
次のストレージ クラスのいずれかを使用して、モデル パラメーター引数の既定のマッピングを設定します。
Default
— パラメーターの各インスタンスに、属性が識別子の命名規則で定義されるエクスポートされた構造体でメモリの一部が割り当てられます。構造体化されたストレージ クラス — パラメーターの各インスタンスに、そのストレージ クラスのコード定義により定義されるようにメモリの一部が割り当てられます。
以下のストレージ クラスのいずれかを使用して、モデル パラメーター引数のストレージ クラスを個別に指定します。
Auto
— パラメーターが生成されたコードの個々のモデル関数の引数として表示されます。このパラメーターがモデルのブロックによって参照されていない場合、コード ジェネレーターによる最適化によって除去される可能性があります。Model default
— パラメーターの各インスタンスに、既定のストレージ クラスのコード定義により定義されるようにメモリの一部が割り当てられます。この既定のストレージ クラスをモデルの既定マッピングを介して指定します。
コード生成の編集時のチェックを使用する場合、無効なストレージ クラスのエラーとなります。
Auto
以外のストレージ クラスをもつパラメーター引数の場合、次のようになります。
Model ブロックで、インスタンスごとの値をリテラル、数値 MATLAB® 変数または
Simulink.Parameter
オブジェクトとして指定できます。インスタンスごとの値が
Simulink.Parameter
オブジェクトである場合、オブジェクトにはストレージ クラスAuto
が指定されていなければなりません。インスタンスごとの値が値の式である場合、パラメーターを静的に初期化するために式の評価値が使用されます。
パラメーター引数の既定または個々のストレージ クラスを指定しない場合、コード ジェネレーターにより内部ストレージ クラス InstP
がそのパラメーターに割り当てられます。Instp
ストレージ クラスには次のプロパティがあります。
Exported スコープ
型の命名規則は
$R_InstP$M
インスタンス名は
InstP$R$M
コード生成の動作
単一インスタンスの参照モデルの場合、パラメーター引数はスタンドアロンのグローバル構造体内に存在します。最上位モデルがこの構造体を定義します。参照モデルが構造体を宣言して使用します。
マルチインスタンスの参照モデルの場合、パラメーター引数は、最上位モデルが宣言して定義する階層的に入れ子にされた構造体の一部です。参照モデルが自身のパラメーター値にアクセスするときには、自己構造体のポインターを使用します。自己構造体は、最上位モデルが定義する構造体のサブ構造体を指します。
最上位モデルで定義されるパラメーター引数については、引数にストレージ クラスがない場合にインライン化されます。ストレージ クラスがある場合、結果のコードは、次の [コード インターフェイスのパッケージ化] パラメーターの値によって異なります。
再利用できない関数
— パラメーターは最上位モデルで定義される構造体で生成されます。再利用可能な関数
— パラメーターは関数の最初の引数の一部として渡される構造体で生成されます。
生成されたコード内のインスタンス固有パラメーターの動作を理解するには、2 つのパラメーター引数 gainArg
および coeffArg
を定義するこの参照モデルについて検討します。
まず、このモデルが単一インスタンスのみをサポートするように構成されており、モデル パラメーター引数の既定のマッピングにストレージ クラスがない場合を考えてみましょう。ex_arg_code_ref.h
ファイルには、インスタンス固有パラメーターの型定義と宣言があります。
上位モデルがこのモデルを参照し、インスタンス固有パラメーターの値を提供する場合、最上位モデルのコードは、最上位モデルによって提供される値を使用してインスタンス固有パラメーターを定義します。
次に、参照モデルが複数のインスタンスをサポートするように設定されているかどうかを検討します。ex_arg_code_ref.h
には単一インスタンスと同じ型定義が含まれますが、モデル自体にもそのデータ構造体のインスタンスへのポインターが含まれます。その構造体のスタンドアロンのグローバル変数に対するポインター定義はありません。
最上位モデルは、このサブ構造体のインスタンスを含む親構造体を宣言し、参照モデルの自己構造体内のポインターを初期化します。
制限
コード生成用のインスタンス固有パラメーターを設定する場合、以下の制限が適用されます。
モデル パラメーター引数の既定のマッピングは、モデル パラメーターまたは外部パラメーター オブジェクトで再利用できません。
インスタンス固有パラメーターの値は有限でなければなりません。
Auto
以外のストレージ クラスをもつパラメーター引数は、C++ クラス コード インターフェイスを使用した C++ コード生成ではサポートされません。