このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Embedded Coder ディクショナリ
モデル データおよび関数のコード生成を制御するためのコード定義を作成します。
Embedded Coder ディクショナリ を開く
Embedded Coder ディクショナリを開くには、モデル ウィンドウの [C コード] タブで [コード インターフェイス]、[Embedded Coder ディクショナリ] を選択します。
[Embedded Coder ディクショナリ] ウィンドウには、モデル ファイルに保存されているコード生成定義が表示されます。モデルがデータ ディクショナリにリンクされている場合は、そのデータ ディクショナリ、または参照ディクショナリ (該当する場合) に保存されている定義もウィンドウに表示されます。[ソース] 列には、各定義の保存場所が示されます。
Simulink® データ ディクショナリで Embedded Coder ディクショナリを開くには、モデル エクスプローラーの [モデルの階層構造] ペインで、次の操作を行います。
ディクショナリ ノードの下で、[Embedded Coder] ノードを選択します。
ノードが表示されない場合は、ディクショナリ ノードを右クリックして [空のセクションを表示] を選択します。
[ダイアログ] ペイン (右側のペイン) で、[Embedded Coder ディクショナリを開く] をクリックします。
例
ストレージ クラスの作成および検証
モデルで、ブロックの状態を含む内部モデル データを、制御できる特性をもつ構造体に集約するストレージ クラスを作成します。その後に、モデルからコードを生成してストレージ クラスを検証します。
モデル例
rtwdemo_roll
を開きます。rtwdemo_roll
モデルが Embedded Coder アプリで開かない場合は、アプリを開いて、[C コード] タブをクリックします。
[C コード] タブで [コード インターフェイス]、[Embedded Coder ディクショナリ] を選択します。[Embedded Coder ディクショナリ] ウィンドウには、モデル ファイルに保存されているコード生成定義が表示されます。
左側のペインで、[ストレージ クラス] をクリックします。[ストレージ クラス] セクションで、[作成] をクリックします。
リストの末尾に表示されている新しいストレージ クラス
StorageClass1
を選択します。右側のペインで、次の表にリストされているプロパティ値を設定します。プロパティ 値 名前 InternalStruct
ヘッダー ファイル internalData_$R.h
定義ファイル internalData_$R.c
ストレージ タイプ Structured
[構造体のプロパティ] 、 [タイプ名] internalData_T_$M
[構造体のプロパティ] 、 [インスタンス名] internalData_$M
変更後、下部のペインで、疑似コードのプレビューに想定どおりの内容が反映されているか確認します。
モデル エディターに戻ります。インターフェイス エディターを開くには、キャンバスの下で、[コード マッピング] をダブルクリックします。[データの既定の設定] タブで、[信号] セクションを展開します。[Signals, states, and internal data] 行を選択し、[ストレージ クラス] を
[InternalStruct]
に設定します。[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[コード配置] ペインで、[ファイル パッケージ化形式] を
[モジュラー]
に設定します。コードを生成します。
Simulink エディターのコード ビューで、
internalData_rtwdemo_roll.h
ファイルを開いて検証します。このファイルでは、構造体型internalData_T_
を定義しています。そのフィールドはモデル内のブロックの状態を表します。/* Storage class 'InternalStruct', for system '<Root>' */ typedef struct { real32_T FixPtUnitDelay1_DSTATE; /* '<S7>/FixPt Unit Delay1' */ real32_T Integrator_DSTATE; /* '<S1>/Integrator' */ int8_T Integrator_PrevResetState; /* '<S1>/Integrator' */ } internalData_T_;
また、このファイルでは
internalData_
という名前のグローバル構造体変数も宣言しています。/* Storage class 'InternalStruct' */ extern internalData_T_ internalData_;
ファイル
internalData_rtwdemo_roll.c
を開いて検証します。このファイルでは、internalData_
にメモリを割り当てています。/* Storage class 'InternalStruct' */ internalData_T_ internalData_;
関数カスタマイズ テンプレートの作成
関数テンプレートを使用して、生成されたエントリポイント関数の名前を制御する規則を指定できます。この手法を使うと、エクスポート関数モデルやマルチレートでマルチタスクのモデルなど、多くのエントリポイント関数があるモデルで時間を節約し、保守作業を削減できます。
この例は、命名規則 func_$N_$R
を指定する関数テンプレートを作成する方法を示しています。$N
は生成される各関数のベース名で、$R
は Simulink モデルの名前です。
モデル例
rtwdemo_mrmtbb
を開きます。ブロック線図を更新します。このマルチタスク モデルには 2 つの実行レートがあるため、生成されるコードには対応する 2 つのエントリポイント関数が含まれます。
モデルで、モデル コンフィギュレーション パラメーター [システム ターゲット ファイル] を
ert.tlc
に設定します。関数カスタマイズ テンプレートを使用するには、ERT ベースのシステム ターゲット ファイルを使用する必要があります。Simulink エディターで、Embedded Coder アプリを開いて、Embedded Coder ディクショナリを開きます。
Embedded Coder ディクショナリの [関数カスタマイズ テンプレート] タブで [作成] をクリックします。
新しい関数テンプレートに対して、次のプロパティを設定します。
[名前] を
myFunctions
にします。[関数名] を
func_$N_$R
にします。
変更後、疑似コードのプレビューに想定どおりの内容が反映されているか確認します。
モデル ウィンドウで、コード マッピング エディターを開きます。[関数の既定の設定] タブの [初期化/終了] 行と [実行] 行で、
[関数カスタマイズ テンプレート]
を [myFunctions] に設定します。コードを生成します。
コード ビューで、
rtwdemo_mrmtbb.c
ファイルを開いて検証します。このファイルでは、2 つの実行関数func_step0_rtwdemo_mrmtbb
とfunc_step1_rtwdemo_mrmtbb
を定義しています。その名前は、関数テンプレートで指定した規則に準拠しています。
メモリ セクションの作成方法を示す例については、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。
静的および動的に初期化されたデータで使用するストレージ クラスの作成
この例では、名前がモデル名に依存しているファイルにグローバル変数の定義と宣言を保存するストレージ クラスを作成する方法を示します。ストレージ クラスのコピーを 2 つ作成して、1 つのコピーをパラメーター データ (データ カテゴリ [モデル パラメーター]) で使用し、もう 1 つのコピーを他のデータで使用できるようにします。
通常、生成されたコードは、パラメーター データを関数外で静的に初期化し、他のデータをモデル初期化関数で動的に初期化します。カスタム ストレージ クラス デザイナーまたは Embedded Coder ディクショナリを使用してストレージ クラスを作成する場合は、[データの初期化] プロパティを設定して初期化メカニズムを指定します。
Embedded Coder ディクショナリでは、ストレージ クラスごとに、[静的]
または [動的]
の初期化を選択しなければなりません。ストレージ クラスはパラメーター データ用 ([静的]
) と他のデータ用 ([動的]
) に 1 つずつコピーを作成することを検討してください。
モデル例
rtwdemo_roll
を開きます。[C コード] タブが開いていない場合は、Embedded Coder アプリを開いて、[C コード] タブをクリックします。
[コード インターフェイス] 、 [Embedded Coder ディクショナリ]を選択します。
左側のペインで、[ストレージ クラス] をクリックします。[ストレージ クラス] セクションで、[作成] をクリックします。
新しいストレージ クラスの場合は、次のプロパティを設定します。
[名前] を
SigsStates
にします。[ヘッダー ファイル] を
$R_my_data.h
にします。[定義ファイル] を
$R_my_data.c
にします。[データの初期化] を
[動的]
にします。
変更後、疑似コードのプレビューに想定どおりの内容が反映されているか確認します。
[複製] をクリックします。新しいストレージ クラス
SigsStates_copy
が表示されます。新しいストレージ クラスの場合は、次のプロパティを設定します。
[名前] を
Params
にします。[データの初期化] を
[静的]
にします。
疑似コードのプレビューに想定どおりの内容が反映されているか確認します。
モデルで、コード マッピング エディターを開きます。モデル キャンバスの下で、[コード マッピング - コンポーネント インターフェイス] をダブルクリックします。
[データの既定の設定] タブで、[パラメーター] 、 [モデル パラメーター] 行の [ストレージ クラス] 列にある
[Params]
を選択します。[信号] 、 [Signals, states, and internal data] の行で、[ストレージ クラス] を
[SigsStates]
に設定します。モデルでいくつかのパラメーター データ要素を構成して、最適化によってこれらの要素が生成されたコードから除去されないようにします。[モデル化] タブで、[設計] 、 [モデル ワークスペース] をクリックします。
モデル エクスプローラーの中央のペインで、モデル ワークスペースの変数
dispGain
、intGain
、rateGain
に対応する 3 つの行を選択します。行の 1 つを右クリックして、
[パラメーター オブジェクトに変換]
をクリックします。モデル データ エディターにより、ワークスペース変数がSimulink.Parameter
オブジェクトに変換されます。dispGain
パラメーター行の [ストレージ クラス] 列で、[構成] をクリックします。モデル ウィンドウのコード マッピング エディターにdispGain
パラメーターの行が強調表示されます。変数ごとに、[ストレージ クラス] 列で、
[Model default:Params]
を選択します。これは、[モデル パラメーター] で指定した既定のストレージ クラスを取得することを表します。[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[コード配置] ペインで、[ファイル パッケージ化形式] を
[モジュラー]
に設定します。コードを生成します。
コード ビューで、
rtwdemo_roll_my_data.c
ファイルとrtwdemo_roll_my_data.h
ファイルを開いて検証します。これらのファイルでは、パラメーター オブジェクトおよび一部のブロックの状態 (BasicRollMode
サブシステム内の Integrator ブロックの状態など) に対応するグローバル変数を定義して宣言します。/* Storage class 'SigsStates' */ real32_T rtFixPtUnitDelay1_DSTATE; real32_T rtIntegrator_DSTATE; int8_T rtIntegrator_PrevResetState; /* Storage class 'Params' */ real32_T dispGain = 0.75F; real32_T intGain = 0.5F; real32_T rateGain = 2.0F;
パッケージ内のコード生成定義の参照
パッケージに保存されているコード生成定義を参照するように Embedded Coder ディクショナリを構成できます (Create Code Definitions for External Data Objectsを参照)。これらの定義は、コード マッピング エディターに選択できる状態で表示されます。この例では、組み込みのパッケージ例 ECoderDemos
内に保存されている定義を参照するように rtwdemo_roll
で Embedded Coder ディクショナリを構成します。
rtwdemo_roll
の Embedded Coder ディクショナリを開きます。手順については、ストレージ クラスの作成および検証を参照してください。[Embedded Coder ディクショナリ] ウィンドウで、[パッケージの管理] をクリックします。
[パッケージの管理] ダイアログ ボックスで、[更新] をクリックします。追加オプションが [パッケージの選択] ドロップダウン リストに表示されるまで待ちます。
[パッケージの選択] を
[ECoderDemos]
に設定し、[読み込み] をクリックします。[Embedded Coder ディクショナリ] ウィンドウの [ストレージ クラス] タブのテーブルに、
ECoderDemos
パッケージで定義されたストレージ クラスが表示されます。次に、rtwdemo_roll
では、コード マッピング エディターの [データの既定の設定] タブでこれらのストレージ クラスを選択できます。パッケージをアンロードするには、[パッケージの管理] ダイアログ ボックスの [パッケージの選択] ドロップダウン リストでパッケージを選択し、[アンロード] をクリックします。
データ ディクショナリを使用してモデル間でコード生成定義を共有する方法を示す例については、Share Code Interface Configuration Between Modelsを参照してください。
共有 Embedded Coder ディクショナリで既定のコード マッピングを構成する方法を示す例については、Configure Default Code Mapping in a Shared Dictionaryを参照してください。
関連する例
- Define Service Interfaces, Storage Classes, Memory Sections, and Function Templates for Software Architecture
- Deploy Code Generation Definitions
- Generate Code to Conform to Software Architecture by Sharing and Copying Default Settings Between Models
- モデルの階層構造の異なるコンテキストに対応する柔軟なストレージ クラス
パラメーター
これらのプロパティは、Embedded Coder ディクショナリ ウィンドウの [プロパティ インスペクター] ペインに表示されます。テーブルには、いくつかプロパティが列として表示され、バッチ編集を容易に行うことができます。
ストレージ クラス名前
— ストレージ クラスの名前
StorageClass1
(既定値) | テキスト
ストレージ クラスの名前。名前はディクショナリ内のストレージ クラスで一意である必要があります。
Simulink で提供される組み込みストレージ クラスとストレージ クラスの例のリストについては、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。
説明
— ストレージ クラスの目的および機能
テキスト
ストレージ クラスの目的および機能を記述するために使用できるカスタム テキスト。
ソース
— ストレージ クラス定義の場所
テキスト
このプロパティは読み取り専用です。
ストレージ クラス定義の場所。
Built-in
— Simulink で提供されます。モデル名 — Simulink モデルで定義されます。
ディクショナリ名 — Simulink データ ディクショナリで定義されます (データ ディクショナリとはを参照)。
パッケージ名 — Simulink パッケージまたはカスタム パッケージで定義されます (Create Storage Classes by Using the Custom Storage Class Designerを参照)。
データ アクセス
— データにアクセスするための指定
Direct
(既定値) | Function
| Pointer
モデルと関連付けられているデータにアクセスするための指定。データに直接 ([Direct]
)、あるいはカスタマイズ可能な関数 get
および set
を通じて ([Function]
)、またはポインターを使用して ([Pointer]
) アクセスします。詳細については、Access Data Through Functions by Using Storage Classes in Embedded Coder Dictionaryを参照してください。
依存関係
このプロパティを
Function
またはPointer
に設定すると、次のようになります。DataScope
がImported
に設定されます。マルチインスタンス プロパティを指定できないことを意味します。
PreserveDimensions
プロパティがfalse
に設定されます。生成コードで多次元配列の次元を保持するには、DataAccess
をDirect
に設定します。
また、このプロパティを Function
に設定すると、次のプロパティが有効になります。
AccessMode
AllowedAccess
GetFunctionName
SetFunctionName
データ スコープ
— データ定義を生成するための指定
Exported
(既定値) | Imported
生成されたコードでデータを定義するか ([Exported]
) または外部コードからデータ定義をインポートするか ([Imported]
) の指定。組み込みストレージ クラスおよび Simulink などのパッケージ内のストレージ クラスは File
などの他のスコープ オプションを使用できます。
依存関係
このプロパティを
[インポート]
に設定した場合:[定義ファイル] が無効になります。ビルド プロセスに外部ソース コード ファイルを含めるには、モデル コンフィギュレーション パラメーターを使用します。例については、データ インターフェイスの構成を参照してください。
$N
トークンは使用できても、[ヘッダー ファイル] を$N.h
に設定できないことを意味します。
このプロパティを
[エクスポート]
に設定するには、[ヘッダー ファイル] の値でトークン$N
または$R
のいずれかを使用しなければなりません。
ヘッダー ファイル
— データを宣言するヘッダー ファイルの名前
$N.h
(既定値) | テキスト
データを宣言するヘッダー ファイルの名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | 関連付けられたデータ要素の名前 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。 |
依存関係
[データ スコープ] を
[エクスポート]
に設定する場合は、このプロパティの値にトークン$R
または$N
のいずれかを使用しなければなりません。[データ スコープ] を
[インポート]
に設定する場合は、このプロパティの値をトークン$N.h
に設定できませんが、$N
は使用できます。
定義ファイル
— データを定義するソース ファイルの名前
$N.c
(既定値) | テキスト
データを定義するソース ファイルの名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | 関連付けられたデータ要素の名前 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。 |
依存関係
[データ スコープ] を [インポート]
に設定すると、[定義ファイル] が無効になります。ビルド プロセスに外部ソース コード ファイルを含めるには、モデル コンフィギュレーション パラメーターを使用します。例については、データ インターフェイスの構成を参照してください。
アクセス モード
— 関数を通じてデータにアクセスするための指定
Value
(既定値) | Pointer
[値]
または [ポインター]
を使用して、関数を通じてモデルと関連付けられているデータにアクセスするためのストレージ クラスの指定。詳細については、Access Data Through Functions by Using Storage Classes in Embedded Coder Dictionaryを参照してください。
依存関係
このプロパティは、[データ アクセス] が [関数]
に設定されている場合にのみ有効です。
許可するアクセス
— 関数を通じてデータへのアクセスを許可するための指定
Read/Write
(既定値) | Read Only
| Write Only
データに対する読み取りと書き込み ([Read/Write]
)、読み取り専用 ([Read Only]
)、または書き込み専用 ([Write Only]
) のアクセスを許可するためのストレージ クラスの指定。
依存関係
このプロパティは、[データ アクセス] が [関数]
に設定されている場合にのみ有効です。
getter の名前
— 関連付けられたデータを取得する関数 get
の名前
get_$N$M
(既定値) | テキスト
関連付けられたデータを取得する関数 get
の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$N | 関連付けられたデータ要素の名前 (必須) |
$R | ルート モデルの名前 |
$M | 一意性を確保するマングル テキスト |
$U | ユーザー トークン テキスト。Identifier Format Controlを参照してください。 |
依存関係
このプロパティは、[データ アクセス] が [関数]
に設定されている場合にのみ有効です。
setter の名前
— 関連付けられたデータを変更する関数 set
の名前
set_$N$M
(既定値) | テキスト
変更するデータを取得する関数 set
の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$N | 関連付けられたデータ要素の名前 (必須) |
$R | ルート モデルの名前 |
$M | 一意性を確保するマングル テキスト |
$U | ユーザー トークン テキスト。Identifier Format Controlを参照してください。 |
依存関係
このプロパティは、[データ アクセス] が [関数]
に設定されている場合にのみ有効です。
単一インスタンス データとマルチインスタンス データに異なるプロパティ設定を使用
— 個別のストレージ設定を割り当てるための指定
off
(既定値) | on
[単一インスタンス ストレージ] セクションで指定したストレージ設定または [マルチインスタンス ストレージ] セクションで指定したストレージ設定のいずれかを使用するためのストレージ クラスの指定。ストレージ クラスをデータ項目に適用すると、Embedded Coder ディクショナリは、データのタイプとモデル参照階層におけるモデルのコンテキストに応じて、単一インスタンス ストレージ クラスまたはマルチインスタンス ストレージ クラスのどちらであるか判断します。
依存関係
このプロパティを選択すると、[単一インスタンス ストレージ] セクションと [マルチインスタンス ストレージ] セクションが有効になります。プロパティ [ストレージ タイプ]、[タイプ名]、および [インスタンス名] は、[単一インスタンス ストレージ] と [マルチインスタンス ストレージ] の両方のセクションに表示されます。
ストレージ タイプ
— データを構造体に集約するための指定
Unstructured
(既定値) | Structured
ストレージ クラスを使用するデータを生成されたコード内の構造体に集約するための指定。各データ要素は、構造体のフィールドとしてコードに表示されます。構造体を作成するには、[Structured]
を使用します。
依存関係
このプロパティを [Structured]
に設定すると、[タイプ名] と [インスタンス名] が有効になります。
タイプ名
— 構造体型の名前
$R$N$G$M
(既定値) | テキスト
生成コード内の構造体型の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | step など、関連付けられた関数のベース名 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。 |
$M | 名前の競合を回避するために、必要に応じて挿入される名前マングリング テキスト |
依存関係
[ストレージ タイプ] を [Structured]
に設定すると、このプロパティが有効になります。
インスタンス名
— 構造体変数の名前
$N$G$M
(既定値) | テキスト
生成コード内の構造体変数の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | step など、関連付けられた関数のベース名 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。 |
$M | 名前の競合を回避するために、必要に応じて挿入される名前マングリング テキスト |
依存関係
[ストレージ タイプ] を [Structured]
に設定すると、このプロパティが有効になります。
データの初期化
— データの初期化方法
自動
(既定) | 動的
| 静的
| なし
生成コードでデータを初期化することの指定。
Auto
— 生成されたコードは、パラメーター データを静的に初期化し、信号および状態データを動的に初期化します。Dynamic
— 生成されたコードは、データをモデルの初期化エントリポイント関数の一部として初期化します。Static
— 生成されたコードは、データに対してメモリを定義して割り当てる同じステートメントでデータを初期化します。代入ステートメントは、.c
または.cpp
ソース ファイルの上部の関数の外側に表示されます。None
— 生成されたコードはデータを初期化しません。
依存関係
[Const] を選択した場合、このプロパティは
[動的]
に設定できません。このプロパティを
[動的]
に設定すると、[Const] は無効になります。
メモリ セクション
— データを割り当てるメモリ内の場所
None
(既定値) | 既存のメモリ セクション
データを割り当てるメモリ内の場所。[メモリ セクション] タブで Embedded Coder ディクショナリに存在するメモリ セクションとして指定します。メモリ セクションについては、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。
配列の次元を保持
— 多次元配列の次元を保持するための指定
off
(既定値) | on
生成コードで多次元配列の次元を保持するためのストレージ クラスの指定。詳細については、Preserve Dimensions of Multidimensional Arrays in Generated Codeを参照してください。
Const
— const
修飾子を適用するための指定
off
(既定値) | on
const
修飾子をデータに適用するための指定。
依存関係
このプロパティを選択する場合は、[データの初期化] を
[動的]
に設定できません。[データの初期化] を
[動的]
に設定すると、このプロパティは無効になります。
volatile
— volatile
修飾子を適用するための指定
off
(既定値) | on
volatile
修飾子をデータに適用するための指定。
その他の修飾子
— カスタム修飾子を適用するための指定
テキスト
カスタム修飾子をデータに適用するための指定。たとえば、一部のメモリ アーキテクチャでは、修飾子 far
および huge
がサポートされます。
このプロパティを使用してキーワード static
を適用しないでください。代わりに、組み込みストレージ クラス FileScope
を使用します。これはコード マッピング エディターでは適用できません。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。
パラメーター
— モデル パラメーターでの使用を許可するかどうか
off
(既定値) | on
モデル パラメーターでのストレージ クラスの使用を許可するかどうかを示す指定。
依存関係
[データの初期化] を
[静的]
に設定すると、このプロパティが有効になります。[データの初期化] を
[動的]
に設定すると、このプロパティは無効になります。このプロパティの値を設定するには、[データの初期化] を
[なし]
に設定します。
信号
— モデル信号での使用を許可するかどうか
on
(既定値) | off
モデル信号でのストレージ クラスの使用を許可するかどうかを示す指定。
依存関係
[データの初期化] を
[動的]
に設定すると、このプロパティは有効になります。[データの初期化] を
[静的]
に設定すると、このプロパティは無効になります。このプロパティの値を設定するには、[データの初期化] を
[なし]
に設定します。
名前
— 関数テンプレートの名前
FunctionTemplate1
(既定値) | テキスト
テンプレートの名前。名前はディクショナリ内の関数テンプレートで一意である必要があります。Embedded Coder は、次の表に示される組み込みテンプレートを提供します。
テンプレート | 説明 |
---|---|
ModelFunction | コード マッピング エディターで、初期化、実行、終了、およびリセットのエントリポイント関数に使用します (Configure Default Code Generation for Functionsを参照)。 |
UtilityFunction | コード マッピング エディターで、共有ユーティリティ関数に使用します (Configure Default Code Generation for Functionsを参照)。 |
説明
— 関数テンプレートの目的と機能
テキスト
関数テンプレートの目的と機能を記述するために使用できるカスタム テキスト。
ソース
— 関数テンプレート定義の場所
テキスト
このプロパティは読み取り専用です。
関数テンプレート定義の場所。
モデル名 — Simulink モデルで定義されます。
ディクショナリ名 — Simulink データ ディクショナリで定義されます (データ ディクショナリとはを参照)。
関数名
— 生成される関数の名前
$R$N
(既定値) | テキスト
生成コード内の関数の名前。命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | step など、関連付けられた関数のベース名 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。 |
$C | 共有ユーティリティ関数。名前の競合を回避するためにチェックサムが挿入されます |
$M | 名前の競合を回避するために、必要に応じて挿入される名前マングリング テキスト |
メモリ セクション
— 関数を割り当てるメモリ内の場所
None
(既定値) | 既存のメモリ セクション
関数を割り当てるメモリ内の場所。[メモリ セクション] タブで Embedded Coder ディクショナリに存在するメモリ セクションとして指定します。メモリ セクションについては、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。
名前
— メモリ セクションの名前
テキスト
メモリ セクションの名前。名前はディクショナリ内のメモリ セクションで一意である必要があります。Embedded Coder は、次の表に示される組み込みメモリ セクションを提供します。
メモリ セクション | 説明 |
---|---|
MemConst | ストレージ型修飾子 const をデータに適用します。 |
MemVolatile | ストレージ型修飾子 volatile をデータに適用します。 |
MemConstVolatile | ストレージ型修飾子 const および volatile をデータに適用します。 |
説明
— メモリ セクションの目的と機能
テキスト
メモリ セクションの目的と機能を記述するために使用できるカスタム テキスト。
ソース
— メモリ セクションの定義の場所
テキスト
このプロパティは読み取り専用です。
メモリ セクションの定義の場所。
モデル名 — Simulink モデルで定義されます。
ディクショナリ名 — Simulink データ ディクショナリで定義されます (データ ディクショナリとはを参照)。
パッケージ名 — Simulink パッケージまたはカスタム パッケージで定義されます (Create Code Definitions for External Data Objectsを参照)。
コメント
— 生成コードに挿入されるコメント
テキスト
[ステートメントの前] および [ステートメントの後] で指定したプラグマまたはその他の装飾とともにコード ジェネレーターに含まれるコード コメント。
ステートメントの前
— データまたは関数コードの前に挿入されるコード
テキスト
メモリ セクション内にあるデータまたは関数の定義および宣言の前に挿入される、プラグマなどのコード。
トークン $R
を使用して、メモリ セクションを使用するモデルの名前を表すことができます。
[ステートメントを囲む文字] を [各変数]
に設定する場合は、トークン $N
を使用して、メモリ セクションを使用する各変数または関数の名前を表すことができます。
ステートメントの後
— データまたは関数コードの後に挿入されるコード
テキスト
メモリ セクション内にあるデータまたは関数の定義および宣言の後に挿入される、プラグマなどのコード。
トークン $R
を使用して、メモリ セクションを使用するモデルの名前を表すことができます。
[ステートメントを囲む文字] を [各変数]
に設定する場合は、トークン $N
を使用して、メモリ セクションを使用する各変数または関数の名前を表すことができます。
ステートメントを囲む文字
— データと関数を個別またはグループにラップするための指定
各変数
(既定値) | 変数のグループ
コード ステートメントを挿入する ([ステートメントの前] および [ステートメントの後]) ための指定:
メモリ セクションを使用する各変数および関数を囲む形。
[各変数]
を選択します。1 回のみ、メモリ セクション全体を囲む形。生成されたコードでは、変数および関数定義を連続するコード ブロックに集約し、ブロックをステートメントで囲みます。
[変数のグループ]
を選択します。
制限
Embedded Coder ディクショナリで作成するストレージ クラスまたは関数カスタマイズ テンプレートでは、パッケージから読み込むメモリ セクションを使用できません (パッケージ内のコード生成定義の参照を参照)。Embedded Coder ディクショナリで定義されたメモリ セクションを使用します。
[関数]
データ アクセスが設定された Embedded Coder ディクショナリで作成するストレージ クラスは、データ ストアのストレージ クラスでサポートされません。.mdl
モデル ファイルでコード生成定義を作成できません。
データ ディクショナリ (.sldd
ファイル) の Embedded Coder ディクショナリ内のコード生成定義に関する追加の制限については、Deploy Code Generation Definitionsを参照してください。
バージョン履歴
R2018a で導入