setFunction
説明
setFunction(
は、指定されたモデル関数のコード マッピング情報を設定します。この関数を使用して、モデル関数の関数カスタマイズ テンプレート、メモリ セクション、または関数名を設定します。シングルタスクの周期関数および Simulink® 関数については、この関数を使用して引数名、型修飾子、引数の順序などの引数仕様を設定できます。 coderMapObj
,modelFunc
,Name=Value
)
例
Simulink モデルのコード マッピングの関数プロパティのプログラムによる取得および設定
プログラム インターフェイスを使用して、Simulink モデルのコード マッピング内の関数のプロパティを取得および構成します。
コマンドが [コード マッピング] エディターにどのように反映されるかを対話的に確認するには、[Functions] タブが選択された状態で [コード マッピング] エディターが開いていることを確認してください。[コード マッピング] エディターを開く方法については、コード マッピング エディター – C を開くを参照してください。
モデル ECoderMapAPI
を開きます。
simulinkModel = "ECoderMapAPI";
open_system(simulinkModel);
モデルのコード マッピング オブジェクトを取得します。
codeMapObj = coder.mapping.api.get(simulinkModel);
周期関数と初期化関数の FunctionName
プロパティを取得します。
periodicFcnName = getFunction(codeMapObj,"Periodic:D1","FunctionName")
periodicFcnName = 'myPeriodicFcn'
InitFcnName = getFunction(codeMapObj,"Initialize","FunctionName")
InitFcnName = 'myInitFcn'
モデルからコードを生成します。
evalc("slbuild(simulinkModel)");
エントリポイント関数はモデル ヘッダー ファイルで宣言されます。ヘッダー ファイル名を変数 model_h_file
に格納します。
model_h_file = fullfile(simulinkModel+"_ert_rtw",simulinkModel+".h")
model_h_file = "ECoderMapAPI_ert_rtw/ECoderMapAPI.h"
以下に、ヘッダー ファイル内のエントリポイント関数の宣言を示します。
/* Model entry point functions */ extern void myInitFcn(void); extern void myPeriodicFcn(void);
関数名は periodicFcnName
および InitFcnName
に格納されている名前です。
ヘッダー ファイルを開くには、MATLAB コマンド ウィンドウに次のコマンドを入力します。
edit(model_h_file)
周期関数の名前を変更します。
if(startsWith(periodicFcnName,"my")) setFunction(codeMapObj,"Periodic:D1",FunctionName="yourPeriodicFcn"); else setFunction(codeMapObj,"Periodic:D1",FunctionName="myPeriodicFcn"); end if(startsWith(InitFcnName,"my")) setFunction(codeMapObj,"Initialize",FunctionName="yourInitFcn"); else setFunction(codeMapObj,"Initialize",FunctionName="myInitFcn"); end
新しいエントリポイント関数名を使用して、モデルからコードを再度生成します。
evalc("slbuild(simulinkModel)");
以下に、ヘッダー ファイル内のエントリポイント関数の更新された宣言を示します。
/* Model entry point functions */ extern void yourInitFcn(void); extern void yourPeriodicFcn(void);
関数名が更新されています。
入力引数
coderMapObj
— コーダー マッピング オブジェクト
CodeMapping
オブジェクト
関数を設定するモデルのコーダー マッピング オブジェクト。coder.mapping.api.CodeMapping
オブジェクトとして指定します。
例: myCM
modelFunc
— モデル関数
string スカラー | 文字ベクトル
コード マッピング プロパティ値を返す対象となるモデル関数。次の値のいずれかとして指定します。
指定値 | モデル関数のタイプ |
---|---|
"ExportedFunction: 。ここで、 はモデル内の関数呼び出し Inport ブロックの名前です。 | エクスポート関数 |
"Initialize" | 初期化関数 |
"Partition: 。ここで、 はモデル内のブロックから明示的に作成され、Simulink スケジュール エディターに表示される分割 (P1 など)、または [同時実行] ダイアログ ボックスのタスク名です。 | 分割関数 |
"PartitionUpdate: 。ここで、slIdentifier はモデル内のブロックから明示的に作成され、Simulink スケジュール エディターに表示される分割 (P1 など)、または [同時実行] ダイアログ ボックスのタスク名です。 | 分割更新関数 |
"Periodic: 。ここで、 はマルチタスク モデルの周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈 (D1 など) です。 | 周期的なマルチタスク関数 |
"PeriodicUpdate: 。ここで、 はマルチタスク モデルの周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈 (D1 など) です。 | 周期的なマルチタスク更新関数 |
"Periodic" | 周期的なシングルタスク関数 |
"PeriodicUpdate" | 周期的なシングルタスク更新関数 |
"Reset: 。ここで はモデル内のリセット関数の名前です。 | リセット関数 |
"SimulinkFunction: 。ここで はモデル内の Simulink 関数の名前です。 | Simulink 関数 |
"Terminate" | 終了関数 |
モデル コンフィギュレーション パラメーター [1 つの出力/更新関数] がオフの場合、更新されたバージョンの分割関数、周期的なマルチタスク関数、または周期的なシングルタスク関数を指定できます。モデル分割の詳細については、分割の作成を参照してください。
例: "Periodic:D1"
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に配置しなければなりませんが、ペアの順序は重要ではありません。
例: FunctionCustomizationTemplate="exFastFunction"
FunctionCustomizationTemplate
— 関数カスタマイズ テンプレートの名前
文字ベクトル | string スカラー
モデルに関連付けられた Embedded Coder ディクショナリで定義されている関数カスタマイズ テンプレートの名前。文字ベクトルまたは string スカラーとして指定します。関数のあるカテゴリの既定の関数カスタマイズ テンプレートを Default
に設定した場合、そのカテゴリの関数のメモリ セクションを指定することができます。
データ型: char
| string
MemorySection
— メモリ セクションの名前
文字ベクトル | string スカラー
モデルに関連付けられた Embedded Coder ディクショナリで定義されているメモリ セクションの名前。文字ベクトルまたは string スカラーとして指定します。
データ型: char
| string
FunctionName
— 関数の名前
文字ベクトル | string スカラー
生成された C コードのエントリポイント関数の名前。文字ベクトルまたは string スカラーとして指定します。
データ型: char
| string
Arguments
— 引数仕様
文字ベクトル | string スカラー
生成された C コードのエントリポイント関数の引数仕様。文字ベクトルまたは string スカラーとして指定します。仕様は、引数名、型修飾子、および引数の順序を示す関数プロトタイプです (例: y=(u1, const *u2)
)。
データ型: char
| string
TimerService
— タイマー サービス インターフェイスの名前
Dictionary default
(既定値) | 文字ベクトル | string スカラー
Embedded Coder ディクショナリで定義されているタイマー サービス インターフェイスの名前を含む string または文字ベクトル。ディクショナリの既定値を使用するには、"Dictionary default"
を指定します。
このプロパティは、エクスポートされた関数とサービス インターフェイス マッピングにのみ適用できます。詳細については、Configure Timer Service Interfacesを参照してください。
データ型: 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)