Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

STF 関連のコード生成パラメーターの構成

多くのコード生成用モデル コンフィギュレーション パラメーターは、GRT、ERT または ERT ベースのシステム ターゲット ファイルに固有です。

生成されたコードのインターフェイスの指定

インターフェイス モデル コンフィギュレーション パラメーターを使用して、コードを生成するときに使用するライブラリ、生成コードに API のサポートを含めるかどうかなどのインターフェイス オプションを制御します。

目的選択/入力...
コードを生成するときにコード ジェネレーターが使用する言語標準を指定する。

[言語標準] パラメーターで、[C89/C90 (ANSI)][C99 (ISO)] または [C++03 (ISO)] を選択します。

[C89/C90 (ANSI)] を選択すると、ライブラリ関数の ANSI®a C セットが提供されます。たとえば、[C89/C90 (ANSI)] を選択すると、入力引数が倍精度か単精度かに関わりなく生成コードは sin() を呼び出します。[C99 (ISO)] を選択した場合は、入力引数が単精度のときに生成コードは関数 sinf() を呼び出します。コンパイラが ISO®b C 数値演算拡張機能をサポートしている場合、ISO C ライブラリを選択するとより効率的なコードを生成できます。

詳細については、言語標準を参照してください。

このパラメーターのオプションには依存関係があります。インターフェイスの依存関係を参照してください。

コードを生成するときにコード ジェネレーターが使用するアプリケーション固有のライブラリを指定する。

数学関数と数学演算用にアプリケーション固有の C または C++ コードを生成する場合、[コード置換ライブラリ] で値を選択します。それ以外の場合は [なし] を指定します。

コード置換ライブラリの詳細については、コード置換ライブラリの選択およびコード置換ライブラリを参照してください。

このパラメーターのオプションには依存関係があります。インターフェイスの依存関係を参照してください。

コード ジェネレーターが固定小数点およびその他のユーティリティ コードを配置する場所を指示する。

[共有コードの配置][自動] または [共有場所] を選択します。共有場所を選択すると、ユーティリティのコードが作業フォルダーの slprj フォルダー内に配置されるように指示されます。このフォルダーは参照モデルの作成に使用されます。[自動] を選択した場合、次の操作が行われます。

  • モデルに Model ブロックが含まれる場合、ユーティリティ コードは slprj/target/_sharedutils フォルダー内に配置されます。

  • モデルに Model ブロックが含まれない場合、ユーティリティ コードはビルド フォルダー内に配置されます (通常の場所は model.c または model.cpp)。

テキストの追加先に変数名を指定し、MAT ファイルにデータを記録する場合に、コード生成アプリケーションとシミュレーション アプリケーションのログ データの区別に使用する。

[MAT ファイルの変数名の修飾子] パラメーターに rt__rt などの接頭辞または接尾辞を入力します。コード ジェネレーターは、[データのインポート/エクスポート] ペインで指定したシステム出力、状態およびシミュレーション時間の変数名の前または後にこのテキストを追加します。MAT ファイルのデータのロギングについては、プログラム実行結果のログを作成するを参照してください。

生成コードに含めるデータ交換 API を指定する。

[C API] オプション、[ASAP2 インターフェイス] オプションまたは [エクスターナル モード] オプションを 1 つ以上選択します。[エクスターナル モード] を選択すると、他のオプションが表示されます。データ交換 API は独立しており、これらの API を組み合わせて選択できます。たとえば、C API とエクスターナル モードを選択できます。

これらのインターフェイスの使用方法の詳細については、C API を使用した生成コードと外部コードの間のデータ交換データ測定およびキャリブレーションのための ASAP2 ファイルのエクスポートおよびエクスターナル モード シミュレーションによるパラメーター調整、信号監視、コード実行プロファイリングを参照してください。

このパラメーターのオプションには依存関係があります。インターフェイスの依存関係を参照してください。

a ANSI is a registered trademark of the American National Standards Institute, Inc.

b ISO is a registered trademark of the International Organization for Standardization.

メモ

[言語標準] または [コード置換ライブラリ] を設定する前に、使用するライブラリがコンパイラでサポートされていることを確認してください。ツールチェーンがサポートしていないパラメーター値を選択した場合、コンパイラ エラーが発生する場合があります。たとえば、言語標準 [C99 (ISO)] を選択したときにコンパイラで ISO C 数値演算拡張機能がサポートされていない場合、コンパイル時エラーが発生する場合があります。

Embedded Coder® 製品がシステムにインストールされている場合、[コード生成][インターフェイス] ペインを拡張して複数の追加オプションを含めることができます。[コード生成][インターフェイス] ペインのパラメーターの説明については、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。

いくつかのインターフェイス パラメーターは他のパラメーターの設定に依存します。以下の表に、依存関係をまとめます。

インターフェイスの依存関係

パラメーター依存関係依存関係の詳細
言語標準あり使用可能な値は [言語] の選択に応じて異なります。
コード置換ライブラリあり使用可能な値は製品ライセンスとその他のパラメーターに応じて異なります。詳細については、コード置換ライブラリを参照してください。
共有コードの配置なし 
サポート: 浮動小数点数 (ERT システム ターゲット ファイルのみ)なし 
サポート: 非有限数あり (ERT)
なし (GRT)
ERT システム ターゲット ファイルの場合、[サポート: 浮動小数点数] で有効になります。
サポート: 複素数 (ERT システム ターゲット ファイルのみ)なし 
サポート: 絶対時間 (ERT システム ターゲット ファイルのみ)なし 
サポート: 連続時間 (ERT システム ターゲット ファイルのみ)あり[リアルタイム モデル データ構造のエラー ステータス フィールドを削除] を無効にする必要があります。
サポート: インラインでない S-Functions (ERT システム ターゲット ファイルのみ)あり[サポート: 浮動小数点数][サポート: 非有限数] を有効にする必要があります
クラシック コール インターフェイスあり[1 つの出力/更新関数] を無効にする必要があります。ERT システム ターゲット ファイルでは、[サポート: 浮動小数点数] を有効にする必要があります。
1 つの出力/更新関数あり[クラシック コール インターフェイス] を無効にします
終了関数が必要 (ERT システム ターゲット ファイルのみ)あり 
コード インターフェイスのパッケージ化あり使用可能な値は [言語] の選択に応じて異なります。
マルチインスタンス コードのエラーの診断あり[コード インターフェイスのパッケージ化][再利用可能な関数] または [C++ クラス]に設定します
ルートレベル I/O を以下として渡す (ERT システム ターゲット ファイルのみ)あり[コード インターフェイスのパッケージ化][再利用可能な関数] に設定します。
モデルの初期化に動的メモリ割り当てを使用 (ERT システム ターゲット ファイルのみ)あり[コード インターフェイスのパッケージ化][再利用可能な関数] に設定します。
MAT ファイルのログ ありGRT システム ターゲット ファイルの場合、[サポート: 非有限数] を有効にする必要があります。ERT システム ターゲット ファイルの場合、[サポート: 浮動小数点数][サポート: 非有限数] および [終了関数が必要] を有効にする必要があります
MAT ファイルの変数名の修飾子あり[MAT ファイルのログ] で有効になります
リアルタイム モデル データ構造のエラー ステータス フィールドを削除 (ERT システム ターゲット ファイルのみ)あり[サポート: 連続時間] を無効にする必要があります。
C API の生成:信号なし 
C API の生成: パラメーターなし 
C API の生成: 状態なし 
C API の生成: ルートレベル I/Oなし 
ASAP2 インターフェイスなし 
エクスターナル モードなし 
トランスポート層 あり[エクスターナル モード] を有効にします。
MEX ファイルの引数あり[エクスターナル モード] を有効にします。
静的なメモリ割り当てあり[エクスターナル モード] を有効にします。
静的なメモリ バッファー サイズあり[静的なメモリ割り当て] を有効にします

数値データ サポートの設定

既定では、ERT システム ターゲット ファイルは整数、浮動小数点数、非有限数、複素数のコード生成をサポートします。

コード生成のサポート対象実行内容
整数データのみ[サポート: 浮動小数点数] をオフにします。コード生成中に非整数データまたは式が発生すると、エラー メッセージに問題のブロックおよびパラメーターが示されます。
浮動小数点データ

[サポート: 浮動小数点数] を選択します。

非有限値 (NaNInf など)

[サポート: 浮動小数点数][サポート: 非有限数] を選択します。

複素数データ

[サポート: 複素数] を選択します。

詳細については、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。

時間値のサポートの設定

特定のブロックでは絶対時間、経過時間、連続時間の値が必要になります。絶対時間はプログラムの実行開始から現在の時刻までの時間です。経過時間は 2 つのトリガー イベント間で経過した時間です。使用するブロックによっては、サポートされている時間値のコンフィギュレーション設定をモデルで調整しなければならない場合があります。

目的選択
絶対時間値または経過時間値 (既定) を使用するブロックの整数カウンターを作成して維持するコードを生成する。

[サポート: 絶対時間]。絶対時間と経過時間のタイマーの割り当てと操作の詳細については、絶対時間と経過時間の計算を参照してください。このパラメーターを選択しないと、モデルに絶対時間値または経過時間値を使用するブロックが含まれる場合にビルド プロセスでエラーが発生します。

連続時間に依存するブロックのコードを生成する。

[サポート: 連続時間]。このパラメーターを選択しないと、モデルに連続時間のブロックが含まれる場合にビルド プロセスでエラーが発生します。

詳細については、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。

インラインでない S-Function のサポートの設定

モデルでインラインでない S-Function のコードを生成するには、[インラインでない S-Function のサポート] を選択します。インラインでない S-Function を生成するには、浮動小数点数と非有限数が必要です。したがって、[インラインでない S-Function のサポート] を選択すると、ERT システム ターゲット ファイルは [サポート: 浮動小数点数][サポート: 非有限数] を選択します。

[サポート: 非有限数] を選択すると、モデルに対応する TLC 実装をもたない C MEX S-Function (インライン コード生成用) が含まれている場合にビルド プロセスでエラーが発生します。

S-Function のインライン化は、デバイス ドライバーの実装などの量産コード生成で非常に効果的です。インライン化 S-Function をコード生成で強制的に使用するには、[インラインでない S-Function のサポート] をオフにします。

ERT システム ターゲット ファイルでインラインでない S-Function が含まれるモデルにコードを生成すると、次のいずれかに該当する場合に、シミュレーション結果とコード生成結果が一致しない可能性があります。

  • モデル コンフィギュレーション パラメーターの GenCodeOnlyoff に設定する。

  • モデル コンフィギュレーション パラメーターの ProdEqTargetoff に設定する。

こうした不一致を回避するために、ProdEqTargeton に設定するか、GenCodeOnlyon に設定します。

モデル関数の生成と引数渡しの構成

ERT システム ターゲット ファイルの場合、関数が生成される方法と、その関数に引数が渡される方法についてモデルを構成できます。

目的実行内容
R2012a より前の GRT システム ターゲット ファイル (grt_main.c または .cpp) のメイン プログラム モジュールと互換性のあるモデル関数呼び出しを生成する。

[クラシック コール インターフェイス][MAT ファイルのログ] を選択します。また、[リアルタイム モデル データ構造のエラー ステータス フィールドを削除] をオフにします。[クラシック コール インターフェイス] では、生成されたコードのインターフェイスとなるラッパー関数呼び出しを生成することで、R2012a より前の GRT ベースのカスタムのシステム ターゲット ファイルを使用して R2012a 以降に生成されたコードをすばやく使用できます。

1 つの関数 model_step 内で出力関数と更新関数を結合することにより、オーバーヘッドを削減し、よりローカルな変数を使用する。

[1 つの出力/更新関数] を選択します。

Model ブロックがサイクルの一部であり、モデル コンフィギュレーションで1 つの出力/更新関数が有効にされる場合 (既定)、エラーまたは予期しない動作が発生する可能性があります。直達の詳細については、代数ループの概念を参照してください。

無期限に実行するように設計されていないモデルに対して関数 model_terminate を生成する。

[終了関数が必要] (Embedded Coder) を選択します。詳細については、model_terminate の説明を参照してください。

再利用可能、再呼び出し可能なコードをモデルまたはサブシステムから生成する。

[再利用可能なコードの生成] を選択します。詳細については、コード再利用のサポートの設定を参照してください。

モデル データ構造体を静的に割り当て、モデル コードで直接アクセスする。

[再利用可能なコードの生成] をオフにします。生成されたコードは再利用可能または再呼び出し可能ではありません。この場合のモデル関数に対して生成される呼び出しインターフェイスの詳細については、生成された C 関数インターフェイスをモデルのエントリポイント関数用に構成を参照してください。

エラー メッセージを記録または監視する必要がない場合などに、リアルタイム モデル データ構造体 rtModel でエラー ステータス フィールドの生成を抑制する。

[リアルタイム モデル データ構造のエラー ステータス フィールドを削除] を選択します。このパラメーターを選択すると、コード ジェネレーターが生成されたコードから rtModel 構造体を省略する場合もあります。

複数の統合モデルにコードを生成する場合、このパラメーターをすべてのモデルで同じように設定します。そうしない場合、統合アプリケーションで予想外の動作が発生する可能性があります。たとえば 1 つのモデルでこのオプションを選択して別のモデルで選択しない場合、統合アプリケーションでエラー ステータスを登録できない可能性があります。

[MAT ファイルのログ] オプションを選択する場合、このパラメーターは選択しないでください。2 つのオプションには互換性がありません。

[C Step 関数インターフェイスの設定] ダイアログ ボックスを開いて関数プロトタイプ model_step を変更。

コード マッピング エディターの [Entry-Point Functions] タブで、基本レートのステップ関数の [Function Name] 列をクリックします。表示される 3 つの縦向きのドットをクリックします。次に、[プロトタイプの設定] をクリックします。関数プロトタイプが以前に設定されていない限り、ステップ関数インターフェイスのプレビューを表示するダイアログ ボックスが引数なし (void-void) で開きます。ダイアログ ボックスには現在の関数名も表示されます。モデルの引数が以前に設定されている場合、ダイアログ ボックスには現在の設定が表示されます。ステップ関数の名前と引数の設定を変更します。詳細については、個々のステップ関数に対する名前と引数の設定 (Embedded Coder)を参照してください。

詳細については、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。

コード再利用のサポートの設定

GRT、ERT、GRT ベースおよび ERT ベースのシステム ターゲット ファイルでは、[コード インターフェイスのパッケージ化] コンフィギュレーション パラメーター値を [再利用可能な関数] に設定することによって、モデルがコードを再利用する方法を構成できます。

[ルートレベル I/O を以下として渡す] コンフィギュレーション パラメーターは、モデルのルート レベルのモデル入力および出力を関数 model_step に渡す方法を制御するオプションを提供します。

目的選択
ルートレベルの各モデル入力引数およびモデル出力引数を関数 model_step に個別に渡す (既定の設定)[コード インターフェイスのパッケージ化][再利用可能な関数] および [ルートレベル I/O を以下として渡す][Individual arguments]
ルートレベルの入力引数およびルートレベルの出力引数を個別の構造体にパッケージングしてから関数 model_step に渡す[コード インターフェイスのパッケージ化][再利用可能な関数] および [ルートレベル I/O を以下として渡す][Structure reference]

ルートレベルの入力引数およびルートレベルの出力引数をモデル データ構造体にパッケージングし、ERT システム ターゲット ファイルでモデルからの再呼び出し可能なマルチインスタンス コードをサポートする

[コード インターフェイスのパッケージ化][再利用可能な関数] および [ルートレベル I/O を以下として渡す][Part of model data structure]

[コード インターフェイスのパッケージ化][再利用可能な関数] オプションを使用する場合、[モデルの初期化に動的メモリ割り当てを使用] オプションを使用して割り当て関数を生成するかどうかを制御することを検討します。このオプションは ERT システム ターゲット ファイルに適用されます。

[コード インターフェイスのパッケージ化][再利用可能な関数] を選択することによって、コンパイル可能でも再呼び出し可能ではないコードが生成される場合があります。たとえば、信号、DWork 構造体またはパラメーター データが [Auto] 以外のストレージ クラスをもつ場合、グローバル データ構造体が生成されます。このようなケースに対処するには、[マルチインスタンス コードのエラーの診断] パラメーターを使用して診断の重大度レベルを選択します。

コード ジェネレーターが有効なコンパイル可能なコードを生成できない場合があります。たとえば、モデルに次のいずれかが含まれている場合、生成コードは無効になります。

  • コードの再利用に準拠しない S-Function

  • 複数のソースから呼び出される関数呼び出しトリガーによってトリガーされるサブシステム

これらの場合、問題を報告した後でビルドは終了します。

詳細については、最上位モデルからの再呼び出し可能なコードの生成 (Embedded Coder)およびモデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。

関連するトピック