STF 関連のコード生成パラメーターの構成
多くのコード生成用モデル コンフィギュレーション パラメーターは、GRT、ERT または ERT ベースのシステム ターゲット ファイルに固有です。
生成されたコードのインターフェイスの指定
インターフェイス モデル コンフィギュレーション パラメーターを使用して、コードを生成するときに使用するライブラリ、生成コードに API のサポートを含めるかどうかなどのインターフェイス オプションを制御します。
目的 | 選択/入力... |
---|---|
コードを生成するときにコード ジェネレーターが使用する言語標準を指定する。 | [言語標準] パラメーターで、
詳細については、言語標準を参照してください。 このパラメーターのオプションには依存関係があります。インターフェイスの依存関係を参照してください。 |
コードを生成するときにコード ジェネレーターが使用するアプリケーション固有のライブラリを指定する。 | 数学関数と数学演算用にアプリケーション固有の C または C++ コードを生成する場合、[コード置換ライブラリ] で値を選択します。それ以外の場合は コード置換ライブラリの詳細については、コード置換ライブラリの選択およびコード置換ライブラリを参照してください。 このパラメーターのオプションには依存関係があります。インターフェイスの依存関係を参照してください。 |
コード ジェネレーターが固定小数点およびその他のユーティリティ コードを配置する場所を指示する。 | [共有コードの配置] で
|
テキストの追加先に変数名を指定し、MAT ファイルにデータを記録する場合に、コード生成アプリケーションとシミュレーション アプリケーションのログ データの区別に使用する。 | [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 システム ターゲット ファイルのみ) | あり | [サポート: 浮動小数点数] と [サポート: 非有限数] を有効にする必要があります |
終了関数が必要 (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 システム ターゲット ファイルは整数、浮動小数点数、非有限数、複素数のコード生成をサポートします。
コード生成のサポート対象 | 実行内容 |
---|---|
整数データのみ | [サポート: 浮動小数点数] をオフにします。コード生成中に非整数データまたは式が発生すると、エラー メッセージに問題のブロックおよびパラメーターが示されます。 |
浮動小数点データ | [サポート: 浮動小数点数] を選択します。 |
非有限値 (NaN 、Inf など) | [サポート: 浮動小数点数] と [サポート: 非有限数] を選択します。 |
複素数データ | [サポート: 複素数] を選択します。 |
詳細については、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。
時間値のサポートの設定
特定のブロックでは絶対時間、経過時間、連続時間の値が必要になります。絶対時間はプログラムの実行開始から現在の時刻までの時間です。経過時間は 2 つのトリガー イベント間で経過した時間です。使用するブロックによっては、サポートされている時間値のコンフィギュレーション設定をモデルで調整しなければならない場合があります。
目的 | 選択 |
---|---|
絶対時間値または経過時間値 (既定) を使用するブロックの整数カウンターを作成して維持するコードを生成する。 | [サポート: 絶対時間]。絶対時間と経過時間のタイマーの割り当てと操作の詳細については、Timer Representation and Computationを参照してください。このパラメーターを選択しないと、モデルに絶対時間値または経過時間値を使用するブロックが含まれる場合にビルド プロセスでエラーが発生します。 |
連続時間に依存するブロックのコードを生成する。 | [サポート: 連続時間]。このパラメーターを選択しないと、モデルに連続時間のブロックが含まれる場合にビルド プロセスでエラーが発生します。 |
詳細については、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。
インラインでない 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 が含まれるモデルにコードを生成すると、次のいずれかに該当する場合に、シミュレーション結果とコード生成結果が一致しない可能性があります。
モデル コンフィギュレーション パラメーターの
GenCodeOnly
をoff
に設定する。モデル コンフィギュレーション パラメーターの
ProdEqTarget
をoff
に設定する。
こうした不一致を回避するために、ProdEqTarget
を on
に設定するか、GenCodeOnly
を on
に設定します。
モデル関数の生成と引数渡しの構成
ERT システム ターゲット ファイルの場合、関数が生成される方法と、その関数に引数が渡される方法についてモデルを構成できます。
目的 | 実行内容 |
---|---|
R2012a より前の GRT システム ターゲット ファイル (grt_main.c または .cpp ) のメイン プログラム モジュールと互換性のあるモデル関数呼び出しを生成する。 | [MAT ファイルのログ] を選択します。[リアルタイム モデル データ構造のエラー ステータス フィールドを削除] をクリアします。 |
1 つの関数 内で出力関数と更新関数を結合することにより、オーバーヘッドを削減し、よりローカルな変数を使用する。 | [1 つの出力/更新関数] を選択します。 Model ブロックがサイクルの一部であり、モデル コンフィギュレーションで1 つの出力/更新関数が有効にされる場合 (既定)、エラーまたは予期しない動作が発生する可能性があります。直達の詳細については、代数ループの概念を参照してください。 |
無期限に実行するように設計されていないモデルに対して関数 | [終了関数が必要] を選択します。詳細については、 |
再利用可能、再呼び出し可能なコードをモデルまたはサブシステムから生成する。 | [再利用可能なコードの生成] を選択します。詳細については、コード再利用のサポートの設定を参照してください。 |
モデル データ構造体を静的に割り当て、モデル コードで直接アクセスする。 | [再利用可能なコードの生成] をオフにします。生成されたコードは再利用可能または再呼び出し可能ではありません。この場合のモデル関数に対して生成される呼び出しインターフェイスの詳細については、生成された C 関数インターフェイスをモデルのエントリポイント関数用に構成を参照してください。 |
エラー メッセージを記録または監視する必要がない場合などに、リアルタイム モデル データ構造体 rtModel でエラー ステータス フィールドの生成を抑制する。 | [リアルタイム モデル データ構造のエラー ステータス フィールドを削除] を選択します。このパラメーターを選択すると、コード ジェネレーターが生成されたコードから 複数の統合モデルにコードを生成する場合、このパラメーターをすべてのモデルで同じように設定します。そうしない場合、統合アプリケーションで予想外の動作が発生する可能性があります。たとえば 1 つのモデルでこのオプションを選択して別のモデルで選択しない場合、統合アプリケーションでエラー ステータスを登録できない可能性があります。 [MAT ファイルのログ] オプションを選択する場合、このパラメーターは選択しないでください。2 つのオプションには互換性がありません。 |
[C Step 関数インターフェイスの設定] ダイアログ ボックスを開いて関数プロトタイプ | コード マッピング エディターの [Entry-Point Functions] タブで、基本レートのステップ関数の [Function Name] 列をクリックします。表示される 3 つの縦向きのドットをクリックします。次に、[プロトタイプの設定] をクリックします。関数プロトタイプが以前に設定されていない限り、ステップ関数インターフェイスのプレビューを表示するダイアログ ボックスが引数なし ( |
詳細については、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。
コード再利用のサポートの設定
GRT、ERT、GRT ベースおよび ERT ベースのシステム ターゲット ファイルでは、[コード インターフェイスのパッケージ化] コンフィギュレーション パラメーター値を [再利用可能な関数]
に設定することによって、モデルがコードを再利用する方法を構成できます。
[ルートレベル I/O を以下として渡す] コンフィギュレーション パラメーターは、モデルのルート レベルのモデル入力および出力を関数
に渡す方法を制御するオプションを提供します。 model
_step
目的 | 選択 |
---|---|
ルートレベルの各モデル入力引数およびモデル出力引数を関数 に個別に渡す (既定の設定) | [コード インターフェイスのパッケージ化]、[再利用可能な関数] および [ルートレベル I/O を以下として渡す]、[Individual arguments] 。 |
ルートレベルの入力引数およびルートレベルの出力引数を個別の構造体にパッケージングしてから関数 に渡す | [コード インターフェイスのパッケージ化]、[再利用可能な関数] および [ルートレベル I/O を以下として渡す]、[Structure reference] 。 |
ルートレベルの入力引数およびルートレベルの出力引数をモデル データ構造体にパッケージングし、ERT システム ターゲット ファイルでモデルからの再呼び出し可能なマルチインスタンス コードをサポートする | [コード インターフェイスのパッケージ化]、[再利用可能な関数] および [ルートレベル I/O を以下として渡す]、[Part of model data structure] 。 |
[コード インターフェイスのパッケージ化]、[再利用可能な関数]
オプションを使用する場合、[モデルの初期化に動的メモリ割り当てを使用] オプションを使用して割り当て関数を生成するかどうかを制御することを検討します。このオプションは ERT システム ターゲット ファイルに適用されます。
[コード インターフェイスのパッケージ化] で [再利用可能な関数]
を選択することによって、コンパイル可能でも再呼び出し可能ではないコードが生成される場合があります。たとえば、信号、DWork
構造体またはパラメーター データが [Auto]
以外のストレージ クラスをもつ場合、グローバル データ構造体が生成されます。このようなケースに対処するには、[マルチインスタンス コードのエラーの診断] パラメーターを使用して診断の重大度レベルを選択します。
コード ジェネレーターが有効なコンパイル可能なコードを生成できない場合があります。たとえば、モデルに次のいずれかが含まれている場合、生成コードは無効になります。
コードの再利用に準拠しない S-Function
複数のソースから呼び出される関数呼び出しトリガーによってトリガーされるサブシステム
これらの場合、問題を報告した後でビルドは終了します。
詳細については、最上位モデルからの再呼び出し可能なコードの生成およびモデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。