メインコンテンツ

getFunction

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

    説明

    propertyValue = getFunction(coderMapObj,funcID,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

    コード マッピング プロパティ値を取得するモデル関数の識別子。下表の値のいずれかとして指定されます。

    モデル関数のタイプ関数識別子
    初期化関数

    "Initialize"

    終了関数

    "Terminate"

    リセット関数

    "Reset:slIdentifier"。ここで slIdentifier はモデル内のリセット関数の名前です。

    周期関数

    "Periodic:slIdentifier"。ここで、slIdentifier は周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈です。

    例: "Periodic:D1"

    ヒント

    シングルタスクの周期関数の場合は、:slIdentifier を指定せずに "Periodic" を使用できます。

    周期更新関数

    "PeriodicUpdate:slIdentifier"。ここで、slIdentifier は周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈です。

    例: "PeriodicUpdate:D1"

    ヒント

    シングルタスクの周期更新関数の場合は、:slIdentifier を指定せずに "PeriodicUpdate" を使用できます。

    分割関数

    "Partition:slIdentifier"。ここで、 slIdentifier はモデル内のブロックから明示的に作成され、Simulink® スケジュール エディターに表示される分割です。

    例: "Partition:P1"

    分割更新関数

    "PartitionUpdate:slIdentifier"。ここで、slIdentifier はモデル内のブロックから明示的に作成され、Simulink スケジュール エディターに表示される分割です。

    例: "PartitionUpdate:P1"

    Simulink 関数

    "SimulinkFunction:slIdentifier"。ここで、 slIdentifier はモデル内の Simulink 関数の名前です。

    エクスポート関数

    "ExportedFunction:slIdentifier"。ここで、slIdentifier は Function-Call Subsystem の制御端子を駆動する Inport ブロックの名前、または "端子" の名前 (In Bus Element ブロックによって駆動される場合) です。

    ヒント

    コンフィギュレーション パラメーター [1 つの出力/更新関数] がオフの場合、分割関数、周期的なマルチタスク関数、または周期的なシングルタスク関数に対応した更新関数を指定できます。更新と出力の両方に単一の関数を使用してコードを生成する方法の詳細については、1 つの出力/更新関数を参照してください。

    モデル分割の詳細については、分割の作成を参照してください。注釈とサンプル時間情報の詳細については、サンプル時間の指定を参照してください。プログラムでサンプル時間情報を取得する方法については、simulink.schedule.OrderedSchedule を参照してください。

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

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

    例: "FunctionCustomizationTemplate"

    出力引数

    すべて折りたたむ

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

    データ型: char | string

    バージョン履歴

    R2020b で導入