setFunctionDefault
説明
setFunctionDefault(
は、モデルのエントリポイント関数の指定されたカテゴリに対して、既定の関数カスタマイズ テンプレートとメモリ セクションを設定します。coderMapObj
,funcCategory
,Name=Value
)
モデルに接続している Embedded Coder ディクショナリがサービス インターフェイス構成を定義している場合、既定の関数インターフェイスを指定することはできません。
例
Simulink モデルのコード マッピングの関数の既定の設定のプログラムによる取得および指定
プログラム インターフェイスを使用して、Simulink モデルのコード マッピングの関数の既定の設定を取得および構成します。
コマンドが [コード マッピング] エディターとモデル ディクショナリにどのように反映されるかを対話的に確認するには、[関数の既定の設定] タブが選択された状態で [コード マッピング] エディターが開いていて、[関数カスタマイズ テンプレート] セクションが選択された状態でモデル ディクショナリが開いていることを確認してください。[コード マッピング] エディターを開く方法については、コード マッピング エディター – C を開くを参照してください。モデル ディクショナリを開く方法については、Embedded Coder ディクショナリ を開くを参照してください。
モデル CoderMapAPI
を開きます。
simulinkModel = "ECoderMapAPI";
open_system(simulinkModel);
このモデルのコード マッピング オブジェクトを取得します。
codeMapObj = coder.mapping.api.get(simulinkModel);
すべてのモデル関数に対して FunctionName
を空の文字列として指定します。これにより、生成されたコード内の関数の名前が、関数の既定の設定に指定した値によって決定されます。
setFunction(codeMapObj,find(codeMapObj,"Functions"),FunctionName=string.empty);
関数 InitializeTerminate
および Execution
の既定のカスタマイズ テンプレートを取得します。
exeFCNsTemplate = getFunctionDefault(codeMapObj,"Execution","FunctionCustomizationTemplate")
exeFCNsTemplate = 'FCN_Template__2'
initTermFCNsTemplate = getFunctionDefault(codeMapObj,"InitializeTerminate","FunctionCustomizationTemplate")
initTermFCNsTemplate = 'FCN_Template__1'
モデルからコードを生成します。
evalc("slbuild(simulinkModel)");
モデルのエントリポイント関数は、モデルの生成されたヘッダー ファイルで宣言されます。ヘッダー ファイル名を格納します。
model_h_file = fullfile(simulinkModel+"_ert_rtw",simulinkModel+".h")
model_h_file = "ECoderMapAPI_ert_rtw/ECoderMapAPI.h"
FCN_Template__1
の [関数の命名規則] は Template_1
で始まり、FCN_Template__2 の [関数の命名規則] は Template_2
で始まります。以下に、生成されたヘッダー ファイルのエントリポイント関数宣言セクションを示します。
/* Model entry point functions */ extern void Template_1_FCN_ECoderMapAPI_initialize(void); extern void Template_2_FCN_ECoderMapAPI_step(void); extern void Template_1_FCN_ECoderMapAPI_terminate(void);
関数名は、その関数に指定された [関数カスタマイズ テンプレート] の値に従って生成されます。
ヘッダー ファイルを開くために、MATLAB コマンド ウィンドウに次のコマンドを入力します。
edit(model_h_file)
2 つの関数カテゴリのテンプレート間で切り替えます。
setFunctionDefault(codeMapObj,"Execution",FunctionCustomizationTemplate=initTermFCNsTemplate); setFunctionDefault(codeMapObj,"InitializeTerminate",FunctionCustomizationTemplate=exeFCNsTemplate);
モデルからコードを再度生成します。
evalc("slbuild(simulinkModel)");
エントリポイント関数名が、更新された [関数カスタマイズ テンプレート] に従って更新されます。
/* Model entry point functions */ extern void Template_2_FCN_ECoderMapAPI_initialize(void); extern void Template_1_FCN_ECoderMapAPI_step(void); extern void Template_2_FCN_ECoderMapAPI_terminate(void);
入力引数
coderMapObj
— コード マッピング オブジェクト
CodeMapping
オブジェクト
関数 coder.mapping.api.get
の呼び出しによって返されるコード マッピング オブジェクト (モデル コード マッピング)。
例: myCM
funcCategory
— モデル関数のカテゴリ
InitializeTerminate
| Execution
| SharedUtility
関数カスタマイズ テンプレートとメモリ セクションを設定するモデルのエントリポイント関数のカテゴリ。
例: "Execution"
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に配置しなければなりませんが、ペアの順序は重要ではありません。
例: FunctionCustomizationTemplate="exFastFunction"
FunctionCustomizationTemplate
— 関数カスタマイズ テンプレートの名前
文字ベクトル | string スカラー
モデルに関連付けられた Embedded Coder ディクショナリで定義されている関数カスタマイズ テンプレートの名前。関数のあるカテゴリの既定の関数カスタマイズ テンプレートを Default
に設定した場合、そのカテゴリの関数のメモリ セクションを指定することができます。
データ型: char
| string
MemorySection
— メモリ セクションの名前
文字ベクトル | string スカラー
モデルに関連付けられた Embedded Coder ディクショナリで定義されているメモリ セクションの名前。
データ型: char
| string
バージョン履歴
R2020b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)