Main Content

getFunction

モデル関数に対するコード マッピングからのコード構成の取得

R2020b 以降

    説明

    propertyValue = getFunction(coderMapObj,modelFunc,funcProperty) は指定されたモデル関数に対するプロパティの値を返します。この関数を使用して、モデル関数に対して構成された関数カスタマイズ テンプレートまたはメモリ セクションを返します。以前に引数仕様を設定したシングルタスクの周期関数と 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);
    

    関数名が更新されています。

    入力引数

    すべて折りたたむ

    関数 coder.mapping.api.get の呼び出しによって返されるコード マッピング オブジェクト (モデル コード マッピング)。

    例: myCM

    コード マッピング プロパティ値を返す対象となるモデル関数。下表の値のいずれかとして指定します。モデル コンフィギュレーション パラメーター [1 つの出力/更新関数] がオフの場合、更新されたバージョンの分割関数、周期的なマルチタスク関数、または周期的なシングルタスク関数を指定できます。モデル分割の詳細については、分割の作成を参照してください。

    モデル関数のタイプ
    "Initialize"初期化関数
    "Periodic"周期的なシングルタスク関数
    "PeriodicUpdate"周期的なシングルタスク更新関数
    "Terminate"終了関数
    "Periodic:slIdentifier"。ここで、slIdentifier はマルチタスク モデルの周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈 (D1 など) です。 周期的なマルチタスク関数
    "PeriodicUpdate:slIdentifier"。ここで、slIdentifier はマルチタスク モデルの周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈 (D1 など) です。 周期的なマルチタスク更新関数
    "Reset:slIdentifier"。ここで slIdentifier はモデル内のリセット関数の名前です。 リセット関数
    "SimulinkFunction:slIdentifier"。ここで slIdentifier はモデル内の Simulink 関数の名前です。Simulink® 関数

    例: "Periodic:D1"

    返されるコード マッピング プロパティ値。次の表に示されているいずれかのプロパティ名を指定します。

    返す情報プロパティ名
    指定された関数に対する関数カスタマイズ テンプレート設定FunctionCustomizationTemplate
    指定された関数に関連付けられているメモリ セクションMemorySection
    生成されたコードの関数に対して使用する名前FunctionName
    周期的なシングルタスク関数と Simulink 関数の引数について、生成されたコードに表示される際の名前、型修飾子、および順序を示す string Arguments
    Embedded Coder ディクショナリで定義されているタイマー サービスの名前TimerService

    例: "FunctionCustomizationTemplate"

    出力引数

    すべて折りたたむ

    文字ベクトルまたは string スカラーとして返される関数カスタマイズ テンプレート、メモリ セクション、関数、または引数の仕様の名前。

    データ型: char | string

    バージョン履歴

    R2020b で導入