メインコンテンツ

コード マッピング エディター – C

モデル要素とコード インターフェイス定義の関連付け

説明

コード マッピング エディターは、モデル要素をコード インターフェイス定義に関連付けるグラフィカル インターフェイスです。モデルからコードを生成すると、コード ジェネレーターは、指定された定義を、関連付けられたモデル要素から生成するコードに適用します。モデル参照階層内の各モデルに独自のコード マッピングがあります。

定義には以下を含めることができます。

  • ストレージ クラス - ストレージ クラスはモデル データ要素からコードを生成するための一連の仕様です。外観やデータ型などのプロパティを定義します。

  • 関数カスタマイズ テンプレート - 関数カスタマイズ テンプレートはエントリポイント関数を生成するための一連の仕様です。関数名と引数関連の識別子の命名規則などのプロパティを定義します。

  • メモリ セクション - メモリ セクションは、特定のコード要素を格納するように指定された、コンピューター メモリ内の場所のことです。

  • サービス インターフェイス - サービス インターフェイスは、関数プロトタイプと通信方法を定義する一連の仕様です。定義されたそれぞれのインターフェイスは、生成されたモデル コードによってターゲット プラットフォームで呼び出すことができる関数に対応します。生成されたモデル コードによって調整サービスおよび測定サービスが使用され、それぞれモデル要素を調整および測定します。モデル要素の通信のために、送信側、受信側、データ転送の各サービスが使用されます。ターゲット プラットフォームのクロックに関するリアルタイム情報を取得するためにタイマー サービスが使用されます。サービス インターフェイスの詳細については、Service Interfacesを参照してください。

モデルに対して指定するシステム ターゲット ファイルおよびその他の設定により、構成で使用可能なコード インターフェイス定義のタイプが決まります。残りはコード ジェネレーターによって自動的に決定されます。

GRT システム ターゲット ファイルを使用するように構成されたモデルでは、ストレージ クラスの定義のみを構成できます。各データ要素カテゴリについて、モデル全体を通じて使用する既定のストレージ クラスを関連付けます。次に、必要に応じて、個別のデータ要素についてストレージ クラスを指定することで既定値をオーバーライドします。

ERT システム ターゲット ファイルを使用するように構成されたモデルは、データ インターフェイス構成またはサービス インターフェイス構成のいずれかを使用して構成することができます。

データ インターフェイス構成を使用して構成された ERT モデルでは、データ要素の各カテゴリをモデル全体で使用する既定のストレージ クラスに関連付け、エントリポイント関数の各カテゴリをモデル全体で使用する既定の関数カスタマイズ テンプレートに関連付けます。次に、必要に応じて、個別のデータ要素についてストレージ クラスを指定し、個別のエントリポイント関数について関数カスタマイズ テンプレートを指定することで既定の定義をオーバーライドします。構成によっては、指定されたストレージ クラスまたは関数カスタマイズ テンプレートに加えてメモリ セクションを明示的に指定することができます。これが可能なのは、指定されたストレージ クラスまたは関数カスタマイズ テンプレートの定義にメモリ セクションが含まれていない場合です。たとえば、次のスクリーンショットに示すように、モデルの [Inports] カテゴリの既定ストレージ クラスとして [Default] を指定するときです。

Code Mappings editor is open with the Data Defaults tab selected. The mouse cursor is clicking on the pencil icon to the right of the top entry in the table, under the table subsection "Inports and Outports". The specified storage class for the entry is "Default". A dialog box is open above the pencil icon, with a drop-down list for the parameter "Memory Section". The two available options in the list are "MemSect1" and "MemSect2", and the second option is selected.

サービス インターフェイス ディクショナリは、タイプでソートされたサービス インターフェイス定義を含む Embedded Coder® ディクショナリです。サービス タイプごとに、ディクショナリ内の定義の 1 つがそのタイプの既定サービスとして選択されています。さらに、ディクショナリにはストレージ クラス、メモリ セクション、関数カスタマイズ テンプレートの定義が含まれています。ディクショナリは、エントリポイント関数の各カテゴリの既定の関数カスタマイズ テンプレートを指定します。

ERT モデルがサービス コード インターフェイスを定義する共有 Embedded Coder ディクショナリにリンクされている場合、これはそのモデルがサービス インターフェイス構成を使用して構成されていることを意味します。既定では、このようなモデルから生成されるコードは、ディクショナリに指定された既定の定義に従っています。ただし、コード マッピング エディターを使用して既定のコード インターフェイス定義をオーバーライドできます。そのためには、個別のエントリポイント関数をディクショナリの関数カスタマイズ テンプレートに関連付け、個別のモデル要素をディクショナリのサービスに関連付けます。

コード生成用にデータ要素を構成するには、以下のコード マッピング エディターのタブを使用します。

  • データの既定の設定 (データ インターフェイス構成を使用する GRT モデルおよび ERT モデルのみに適用可能)

  • 関数の既定の設定 (データ インターフェイス構成を使用する ERT モデルのみに適用可能)

  • 関数 (ERT モデルのみに適用可能)

  • 入力端子

  • 出力端子

  • データ転送 (サービス インターフェイス構成を使用する ERT モデルのみに適用可能)

  • パラメーター

  • データ ストア

  • 信号/状態

要素の型と指定した値によっては、設定できる追加の構成可能コード マッピング プロパティがある場合があります。追加プロパティを構成するには、行の末尾にある鉛筆アイコン を選択して、ダイアログ ボックスを開きます。たとえば、このスクリーンショットは、[Auto] ストレージ クラスが設定されたルートレベルの入力端子の鉛筆アイコンをクリックしたときに開くダイアログ ボックスを示しています。

Code Mappings editor is open with the Inports tab selected. The mouse cursor is clicking on the pencil icon to the right of the single entry in the Inports table. A dialog box with title Measurements is open above the pencil icon. The dialog box has four labels with User Input controls next to each of the labels. The labels are "Calibration Access" with a drop list showing NoCalibration next to it, "Display Identifier" with an empty text box next to it, "Format" with an empty text box next to it, and "Compu Method" with an empty text box next to it. In the bottom of the dialog box there is a push button labeled "Open in Property Inspector".

既定では、信号はモデルのコード マッピングには追加されません。コード生成用に信号を構成するには、信号をモデル コード マッピングに追加します。信号追加の詳細については、信号をモデル コード マッピングに追加を参照してください。信号削除の詳細については、信号をモデル コード マッピングから削除を参照してください。

Simulink model with the Code Mappings editor open.

コード マッピング エディター – C を開く

エディターを開くには、次のいずれかを行います。

  • Simulink® エディターのモデル キャンバスで、右下隅にあるパースペクティブ コントロールをクリックし、[コード] を選択します。次に、[コード マッピング] タブをクリックします。

  • Simulink Coder™ アプリまたは Embedded Coder アプリを開きます。次に、Simulink エディター ウィンドウの左下隅にある [コード マッピング] タブをクリックします。

  • Simulink Coder アプリまたは Embedded Coder アプリを開きます。次に、Simulink ツールストリップの [C コード] タブにある [準備] セクションで、[コード インターフェイス][個々の要素コードのマッピング] を選択します。

Simulink Coder を使用してルートレベルの Inport と Outport のコード生成を構成する

ルートレベルの Inport ブロックと Outport ブロックについてのモデル全体のコード生成を構成します。大量のデータを使用する大規模なモデルの場合は特に、既定の構成を適用すると時間を節約できます。既定のマッピングを適用した後、個々のデータ要素のマッピングを調整できます。ルートレベルの In Bus Element ブロックと Out Bus Element ブロックについてコード生成を構成するには、例と同じワークフローを使用します。

例の環境の設定
  1. MATLAB® コマンド ウィンドウで次のコマンドを入力して、モデル ConfigurationRapidPrototypingInterface を開きます。

    openExample("ConfigurationRapidPrototypingInterface")

  2. Simulink Coder アプリを開きます。[C コード] タブにコード マッピング エディターも表示されます。

既定のマッピングの構成

生成ファイル ConfigurationRapidPrototypingInterface.h および ConfigurationRapidPrototypingInterface.c で入力端子と出力端子のグローバル変数を宣言および定義するようにコード ジェネレーターを構成します。

  1. [C コード] タブで、[コード インターフェイス][既定のコード マッピング] を選択します。

  2. [データの既定の設定] タブで、[Inports and Outports] の下にある [入力端子] の行を選択します。次に、ストレージ クラスを [ImportedExternPointer] に設定します。[出力端子] のストレージ クラスを [ExportedGlobal] に設定します。選択した 2 つのデータ要素のカテゴリについて、エディターで既定のストレージ クラス設定が更新されます。

個々の入力端子と出力端子に対する既定の構成の設定
  1. コード マッピング エディターで、[入力端子] タブをクリックします。ストレージ クラスが Auto に設定されている場合、コード ジェネレーターは最適化を目的として関連するコードの表現を削除または変更する可能性があります。最適化が不可能な場合、コード ジェネレーターはモデルの既定の構成を適用します。

  2. 入力端子に対して既定の構成であるストレージ クラス ImportedExternPointer を強制的に使用するようにコード ジェネレーターを構成します。Ctrl キーを押しながら入力端子を選択します。選択したいずれかの入力端子に対して、ストレージ クラスを [Model default: ImportedExternPointer] に設定します。選択した入力端子について、エディターでストレージ クラス設定が更新されます。

  3. モデルのルートレベルの出力端子に対してストレージ クラス ExportedGlobal を強制的に使用するようにコード ジェネレーターを構成します。[出力端子] タブをクリックします。Out2 の行を選択します。次に、ストレージ クラスを [Model default: ExportedGlobal] に設定します。

個々のデータ要素の構成

既定の構成の設定をオーバーライドする必要がある場合など、個々のデータ要素のプロパティを構成するには、それぞれのデータ要素のタイプに対応するタブを使用します。この例では、Inport ブロック In1 の既定のストレージ クラス設定をオーバーライドします。

既定では、入力端子と出力端子の変数に対して、コード ジェネレーターはモデルの Inport ブロックまたは Outport ブロックの名前に基づいて名前を付けます。ストレージ クラス設定が Auto 以外のデータ要素を構成する場合、ストレージ クラス プロパティ [識別子] を設定することで、個々の要素に対するその既定の設定をオーバーライドできます。このプロパティを使用すると、モデルの設計を変更することなくコードの識別子を指定できます。

この例では、Inport ブロックと Outport ブロックの [識別子] を設定します。

  1. コード マッピング エディターで、[入力端子] タブをクリックします。

  2. In1 について、ストレージ クラスを [ImportedExtern] に設定します。

  3. 各入力端子の行を選択します。次に、鉛筆アイコン をクリックして、[識別子] プロパティを以下のように設定します。

    • In1input1 に設定します。

    • In2input2 に設定します。

    • In3input3 に設定します。

    • In4input4 に設定します。

  4. [出力端子] をクリックします。

  5. 出力端子 Out1 を選択します。鉛筆アイコン をクリックして、[識別子] プロパティを output に設定します。

コードの生成と検証

コードを生成し、Inport ブロックと Outport ブロックについての生成されたコードが想定どおりであることを確認します。以下に例を示します。

  • ConfigurationRapidPrototypingInterface_private.h に次の宣言が含まれます。

    /* Imported (extern) block signals */
    extern real_T input1;                  /* '<Root>/In1' */
    
    /* Exported data declaration */
    
    /* Data with Imported storage (pointer) */
    extern real_T *input2;                 /* '<Root>/In2' */
    extern real_T *input3;                 /* '<Root>/In3' */
    extern real_T *input4;                 /* '<Root>/In4' */
  • ConfigurationRapidPrototypingInterface.h に次の宣言が含まれます。

    /* Data with Exported storage */
    extern real_T output;                  /* '<Root>/Out1' */
    
  • 次のコード フラグメントは、生成されたエントリポイント ステップ関数で In1 を表す変数 input1 が使用されていることを示しています。

    /* Model step function */
    void ConfigurationRapidPrototypingInterface_step(void)
    {
      /* DataStoreWrite: '<Root>/Data Store Write' incorporates:
       *  Constant: '<Root>/Constant1'
       *  Constant: '<Root>/Constant2'
       *  Inport: '<Root>/In1'
       *  Logic: '<Root>/LogOp'
       *  RelationalOperator: '<Root>/RelOp1'
       *  RelationalOperator: '<Root>/RelOp2'
       */
      mode = ((input1 > 10.0) || (input1 < -10.0));
    .
    .
    .
    

データ コード インターフェイスを使用して Embedded Coder によりルートレベルの Inport と Outport のコード生成を構成する

ルートレベルの Inport ブロックと Outport ブロックについてのモデル全体のコード生成を構成します。大量のデータを使用する大規模なモデルの場合は特に、既定の構成を適用すると時間を節約できます。既定のマッピングを適用した後、個々のデータ要素のマッピングを調整できます。ルートレベルの In Bus Element ブロックと Out Bus Element ブロックについてコード生成を構成するには、例と同じワークフローを使用します。

例の環境の設定
  1. MATLAB コマンド ウィンドウで次のコマンドを入力して、モデル RollAxisAutopilot を開きます。

    openExample("RollAxisAutopilot")
    現在の作業ディレクトリに含まれる外部コード ファイルは次のとおりです。

    • roll_input_data.c

    • roll_input_data.h

    • roll_heading_mode.c

    • roll_heading_mode.h

  2. Embedded Coder アプリを開きます。

既定のマッピングの構成

コード ジェネレーターの処理を次のように構成します。

  • ヘッダー ファイル roll_input_data.h を使用して、モデルの Inport ブロックを表す変数を宣言する。

  • モデルの Outport ブロックの変数を別個のグローバル変数として表す。

  • 出力変数を roll_output_data.c で定義し、それらを roll_output_data.h で宣言する。

  • Inport ブロックのコードでコード ジェネレーターが生成する変数に使用する名前を構成する。

  1. [C コード] タブで、[コード インターフェイス][既定のコード マッピング] を選択します。

  2. [データの既定の設定] タブで、[Inports and Outports] の下にある [入力端子] の行を選択します。次に、ストレージ クラスを [ImportFromFile] に設定します。

  3. 鉛筆アイコン をクリックし、[ヘッダー ファイル]roll_input_data.h に設定します。

  4. モデル要素カテゴリ [出力端子] のストレージ クラスを [ExportToFile] に設定します。

  5. [ヘッダー ファイル]roll_output_data.h[定義ファイル]roll_output_data.c に設定します。

個々の入力端子に対する既定の構成の設定
  1. コード マッピング エディターで、[入力端子] タブをクリックします。各 Inport のストレージ クラスは Auto に設定されています。これは、コード ジェネレーターが最適化を目的として関連するコードの表現を削除または変更する可能性があることを意味しています。最適化が不可能な場合、コード ジェネレーターは入力端子に対して既定の構成を適用します。

  2. 入力端子に対して既定の構成であるストレージ クラス ImportFromFile を強制的に適用して、外部ヘッダー ファイル roll_input_data.h を使用するようにコード ジェネレーターを構成します。Ctrl キーを押しながら入力端子を選択します。選択したいずれかの入力端子に対して、ストレージ クラスを [Model default: ImportFromFile] に設定します。選択した入力端子について、エディターでストレージ クラス設定が更新されます。

既定のマッピングのオーバーライド

入力端子の変数 HDG_Mode について、既定のソースの場所をオーバーライドします。その変数は外部ファイル roll_heading_mode.h で宣言されています。

  1. コード マッピング エディターで、[入力端子] タブをクリックします。

  2. HDG_Mode の行を選択します。

  3. [ストレージ クラス]ImportFromFile に設定します。

  4. 鉛筆アイコン をクリックし、[ヘッダー ファイル]roll_heading_mode.h に設定します。

  5. Inport ブロックのコードで外部ファイル roll_input_data.h および roll_heading_mode.h の変数名と一致する変数名を生成するようにコード ジェネレーターを構成します。[入力端子] タブで、各 Inport ブロックを選択し、鉛筆アイコン をクリックして [識別子] をブロック名に設定します。ストレージ クラスが [自動] 以外の値に設定されている場合、[識別子] ストレージ クラス プロパティの値を指定できます。[識別子] プロパティを空のままにすると、コード ジェネレーターはモデリング要素に関連付けられているブロックまたは信号の名前を使用します。

コード生成およびビルド プロセスに外部ソース ファイルを含める

コード生成およびビルド プロセスに外部ソース ファイルの roll_input_data.croll_heading_mode.c を含めます。モデル コンフィギュレーション パラメーター [ソース ファイル]roll_input_data.c roll_heading_mode.c に設定します。

モデルを保存します。

コードの生成と検証

コードを生成し、Inport ブロックと Outport ブロックについての生成されたコードが想定どおりであることを確認します。

  • ストレージ クラスに関連付けられた次のヘッダー ファイルが RollAxisAutopilot.h に含まれている。

    #include "roll_output_data.h"
    #include "roll_input_data.h"
    #include "roll_heading_mode.h"
    
  • roll_heading_mode.croll_heading_mode.h が含まれ、変数 HDG_Mode が定義されている。

    #include "roll_heading_mode.h"
    
    boolean_T HDG_Mode;
  • roll_input_data.h で宣言された変数が roll_input_data.c で定義されている。

    #include "roll_input_data.h"
    
    boolean_T AP_Eng;
    real32_T HDG_Ref;
    real32_T Rate_FB;
    real32_T Phi;
    real32_T Psi;
    real32_T TAS;
    real32_T Turn_Knob;
  • 次のエクスポートされたデータの定義が roll_output_data.c に含まれている。

    real32_T Ail_Cmd;
  • 次のエクスポートされたデータの宣言が roll_output_data.h に含まれている。

    extern real32_T Ail_Cmd;

データ コード インターフェイスを使用して Embedded Coder によりエントリポイント関数に対する既定の関数名を構成する

既定では、コード ジェネレーターは識別子の命名規則 $R$N を使用してエントリポイント関数に名前を付けます。$R は最上位モデルの名前です。$N は関数の名前 (initializestepterminate など) です。生成されたコードを既存の外部コードと統合するか、命名規約またはガイドラインに準拠するには、既定の命名規則を調整できます。この例では、$R$ にテキスト文字列 myproj_ を接頭辞として追加する方法を示します。既定の命名規則を調整すると、特にコード ジェネレーターによって各レートに固有の関数 step が生成されるマルチレート モデルの場合は時間を節約できます。

例の環境の設定
  1. MATLAB コマンド ウィンドウで次のコマンドを入力して、モデル MultirateMultitasking を開きます。

    openExample("MultirateMultitasking")

  2. Embedded Coder アプリを開きます。Simulink ツールストリップで [C コード] タブが開きます。ステータス バーの近くにある [コード マッピング - コンポーネント インターフェイス] を選択して、[コード マッピング エディター] ペインを開くことができます。

関数の命名規則の定義

命名規則 myproj_$R$N を定義する関数カスタマイズ テンプレートを作成します。

  1. Embedded Coder ディクショナリを開きます。[C コード] タブで、[コード インターフェイス][Embedded Coder ディクショナリ (モデル)] を選択します。

  2. [データ インターフェイス] ペインで [関数カスタマイズ テンプレート] を選択します。

  3. 中央のペインで [作成] をクリックします。

  4. 右側のペインで [名前]myproj_FunctionTemplate を指定します。

  5. [関数の命名規則]myproj_$R$N として指定します。

  6. Embedded Coder ディクショナリを閉じます。

既定のマッピングの構成
  1. [C コード] タブで、[コード インターフェイス][既定のコード マッピング] を選択します。

  2. [関数の既定の設定] タブをクリックします。

  3. [初期化/終了][実行] の関数カテゴリについて、既定の関数カスタマイズ テンプレートを Default から myproj_FunctionTemplate に変更します。

  4. モデルを保存します。

コードの生成とレビュー

コードを生成し、エントリポイント関数の名前を確認します。

void myproj_MultirateMultitasking_step0(void) /* Sample time: [1.0s, 0.0s] */
{
  (rtM->Timing.RateInteraction.TID0_1)++;
  if ((rtM->Timing.RateInteraction.TID0_1) > 1) {
       rtM->Timing.RateInteraction.TID0_1 = 0;
  }

  if (rtM->Timing.RateInteraction.TID0_1 == 1) {
      rtDW.RateTransition = rtDW.RateTransition_Buffer0;
  }
      rtY.Out2 = 2.0 * rtDW.RateTransition + rtU.In1_1s;
      rtY.Out1 = (3.0 * rtDW.RateTransition + rtU.In1_1s) * 5.0 + rtY.Out2;
}

/* Model step function for TID1 */
void myproj_MultirateMultitasking_step1(void) /* Sample time: [2.0s, 0.0s] */
{
  rtDW.RateTransition_Buffer0 = rtDW.Integrator_DSTATE;
  rtDW.Integrator_DSTATE += 2.0 * rtU.In2_2s;
}

void myproj_MultirateMultitasking_initialize(void)
{
  /* (no initialization code required) */
}

void myproj_MultirateMultitasking_terminate(void)
{
  /* (no terminate code required) */
}

データ コード インターフェイスを使用して Embedded Coder により個別のエントリポイント関数をカスタマイズする

モデルについて、ステップ関数や Simulink 関数など、ほとんどのエントリポイント関数の名前と実行関数の引数をカスタマイズできます。この例では、モデル RollAxisAutopilot のエントリポイント関数をカスタマイズする方法を示します。

環境の設定
  1. MATLAB コマンド ウィンドウで次のコマンドを入力して、モデル RollAxisAutopilot を開きます。

    openExample("RollAxisAutopilot")
    現在の作業ディレクトリに含まれる外部コード ファイルは次のとおりです。

    • roll_input_data.c

    • roll_input_data.h

    • roll_heading_mode.c

    • roll_heading_mode.h

  2. Embedded Coder アプリを開きます。Simulink ツールストリップで [C コード] タブが開きます。ステータス バーの近くにある [コード マッピング - コンポーネント インターフェイス] を選択して、[コード マッピング エディター] ペインを開くことができます。

エントリポイント関数のカスタマイズ
  1. [C コード] タブで、[コード インターフェイス][個々の要素コードのマッピング] を選択します。[Functions] タブが選択された状態のコード マッピング エディターが開きます。

  2. [ソース] Periodic:D1 で、ステップ (実行) 関数の名前をカスタマイズします。[関数名] 列で、名前 roll_run を入力します。

  3. step 関数の引数をカスタマイズします。[関数プレビュー] 列でプロトタイプのハイパーリンクをクリックして、step 関数の構成ダイアログ ボックスを開きます。

  4. [ステップ関数プロトタイプの引数を設定] を選択します。

  5. 引数の既定の構成を表示するテーブルを開くには、[既定値を取得] をクリックします。

  6. 引数をカスタマイズします。

    • [C 戻り引数] ドロップダウン リストから [Ail_Cmd] を選択します。

    • それぞれの端子の [C 識別子名] フィールドで、それらの既定の名前から接頭辞 arg_ を削除します。

    • HDG_Mode 入力端子の [C 型修飾子] ドロップダウン リストから [ポインター] を選択します。[C 識別子名] フィールドで、名前を HDG_Mode_Ptr に変更します。

  7. [適用] をクリックし、関数のプロトタイプに変更が反映されることを確認します。

  8. [検証] をクリックして変更を検証します。

  9. [OK] をクリックします。

コードの生成と検証
  1. コードを生成します。

  2. 生成された C ファイル RollAxisAutopilot.c で更新内容を確認します。更新された step 関数 (roll_run) を探すには、[検索] フィールドを使用します。

  3. step 関数を選択して、そのプロトタイプを確認します。

    real32_T roll_run(real32_T Phi, real32_T Psi, real32_T Rate_FB, real32_T TAS,
                      boolean_T AP_Eng, boolean_T *HDG_Mode_Ptr, real32_T HDG_Ref,
                      real32_T Turn_Knob)

関連する例

パラメーター

すべて展開する

データの既定の設定 (データ インターフェイス構成を使用する GRT モデルおよび ERT モデルのみに適用可能)

コード インターフェイス定義を適用するモデル データ要素のカテゴリ。以下の表に、モデル要素のカテゴリを要約します。

モデル要素のカテゴリ説明プログラムでのカテゴリ識別子
InportsInport ブロックや In Bus Element ブロックなど、モデルのルートレベルの入力端子。Inports
OutportsOutport ブロックや Out Bus Element ブロックなど、モデルのルートレベルの出力端子。 Outports
Signals, states, and internal dataブロックの出力信号、ブロックの離散状態、データ ストア、ゼロクロッシング信号など、モデル内部のデータ要素。InternalData
Shared local data storesブロック パラメーター [モデル インスタンス間で共有する] が設定されている Data Store Memory ブロック。これらのデータ ストアは、それらが定義されているモデルでのみアクセスできます。データ ストア値は、モデルのインスタンス間で共有されます。SharedLocalDataStores
Global data storesベース ワークスペースまたはデータ ディクショナリの信号オブジェクトで定義されるデータ ストア。アプリケーション内の複数のモデルがこれらのデータ ストアを使用できます。コード マッピング エディターでこれらのデータ ストアを表示および構成するには、カテゴリ名の右側にある [Refresh] リンクをクリックします。このリンクをクリックすると、モデル線図が更新されます。GlobalDataStores
Model parametersモデル ワークスペース内のパラメーターなど、モデル内で定義されるパラメーター。モデルの引数は除きます。ModelParameters
External parametersベース ワークスペースまたはデータ ディクショナリ内でオブジェクトとして定義するパラメーター。アプリケーションの複数のモデルがこれらのパラメーターを使用できます。コード マッピング エディターでこれらのパラメーターを表示および構成するには、カテゴリ名の右側にある [Refresh] リンクをクリックします。このリンクをクリックすると、モデル線図が更新されます。ExternalParameters
Model parameter arguments (ERT モデルにのみ適用可能)モデルの引数として設定するモデル ワークスペースのパラメーター。これらのパラメーターは Model ブロックで公開され、各モデル インスタンスは独自の値を提供できます。モデルの引数としてパラメーターを指定するには、[モデル データ エディター][Parameters][Argument] チェック ボックスをオンにします。ModelParameterArguments
Constants (ERT モデルのみに適用可能)

インライン化できなかった定数値のブロック出力とパラメーター。これらの値は、次のいずれかの理由で変数に格納されます。

  • 値がループ展開のしきい値よりも大きい配列である。

  • 値のアドレスがコードに必要である。

Constants

データ要素カテゴリの既定値にプログラムでアクセスするには、関数 getDataDefault および setDataDefault をモデルのコード マッピング オブジェクトおよびプログラムでのカテゴリ識別子と共に使用します。たとえば、モデル入力端子の既定ストレージ クラスを ExportedGlobal としてプログラムで指定するには、入力端子のプログラムでの識別子 Inports を使用します。

codeMapObj = coder.mapping.api.get(simulinkModel);
setDataDefault(codeMapObj,"Inports",StorageClass="ExportedGlobal");
それぞれのカテゴリに対して、有効なストレージ クラスのオプションがコード マッピング エディターから提示されます。オプションには以下が含まれます。

  • 指定なしのストレージ クラス ([Default])。コード ジェネレーターは、データ要素のカテゴリのコードを B_ExtY_ExtU_DW_P_ などの標準の構造体に配置します。生成されたコードにおけるデータ構造体を参照してください。

  • ExportedGlobal など、関連する事前定義のストレージ クラス。

  • ストレージ クラス ImportFromFile など、利用可能なパッケージ内の関連するストレージ クラス (ERT モデルにのみ適用可能)。

  • Embedded Coder ディクショナリで定義されたストレージ クラス (ERT モデルにのみ適用可能)。

カテゴリのモデル要素からコードを生成するために使用する既定ストレージ クラス定義。詳細については、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

指定されたストレージ クラス定義にメモリ セクションが含まれていない場合、ドロップダウン リストを使用して、生成されたコードを配置するメモリ セクションを選択します。

関数の既定の設定 (データ インターフェイス構成を使用する ERT モデルのみに適用可能)

コード インターフェイス定義を適用するエントリポイント関数のカテゴリ。以下の表に、エントリポイント関数のカテゴリを要約します。

モデル関数のカテゴリ説明プログラムでのカテゴリ識別子
初期化/終了初期化と終了のエントリポイント関数InitializeTerminate
実行実行とリセットを開始するためのエントリポイント関数Execution
共有ユーティリティ共有されたユーティリティ関数SharedUtility

関数カテゴリの既定値にプログラムでアクセスするには、関数 getFunctionDefault および setFunctionDefault をモデルのコード マッピング オブジェクトおよびプログラムでのカテゴリ識別子と共に使用します。たとえば、モデルの Embedded Coder ディクショナリ内に関数カスタマイズ テンプレート FT_01 を定義したとします。初期化および終了の関数カテゴリの既定の関数カスタマイズ テンプレートを FT_01 としてプログラムで指定するには、初期化および終了関数のプログラムでの識別子である InitializeTerminate を使用します。

codeMapObj = coder.mapping.api.get(simulinkModel);
setFunctionDefault(codeMapObj,"InitializeTerminate",FunctionCustomizationTemplate="FT_01")

カテゴリのエントリポイント関数を生成するために使用する既定の関数カスタマイズ テンプレート定義。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

カテゴリの関数カスタマイズ テンプレートとして [既定] を指定すると、カテゴリの生成されたエントリポイント関数を配置する既定のメモリ セクションをディクショナリで定義されたセクションの中から選択できます。

関数 (ERT モデルのみに適用可能)

エントリポイント関数の識別子。詳細については、生成されたエントリポイント関数のタイプを参照してください。

エントリポイント関数コードを生成するために使用する関数カスタマイズ テンプレート。

生成されるエントリポイント関数の名前。

生成されるエントリ ポイント関数のプロトタイプのプレビュー。プロトタイプを検証するには、プロトタイプのプレビューを確認します。プロトタイプをカスタマイズできるダイアログ ボックスを開くには、プレビューのハイパーリンクをクリックします。詳細については、Configure Default Settings for Functionsを参照してください。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

ドロップダウン リストを使用して、生成されるエントリポイント関数用のメモリ セクションを選択します。

R2022b 以降

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

ドロップダウン リストを使用して、生成されるエントリポイント関数で使用するタイマー サービスを、ディクショナリに定義されたサービスの中から選択します。詳細については、Configure Timer Service Interfacesを参照してください。

Inports

モデル内のルートレベルの Inport ブロックまたは In Bus Element ブロック (InBus1.signal1 など) を識別します。要素がデータ オブジェクトに関連付けられる場合、コード マッピング エディターで信号オブジェクトへの関連付けアイコンがソース名の右側に表示され、要素のストレージ クラス設定が Auto であるかどうかに基づいて構成が関連付けられます。ストレージ クラスが Auto の場合、データ オブジェクトで指定されるコード構成がデータ要素で想定されます。エディターの [ストレージ クラス] 列の表示テキストが、From signal object: の後にデータ オブジェクトのストレージ クラスの名前が続くテキストに変更されます。ストレージ クラスが Auto でない場合、コード マッピング エディターで指定した構成がデータ要素で想定されます。

Inport からコードを生成するために使用するストレージ クラス定義。詳細については、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

生成されたコード内で Inport を表す変数の名前。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーションを有効にするには Inport で Calibration を選択し、Inport の値を表示してキャリブレーションを無効にするには NoCalibration を選択します。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールで測定の目的に使用される入力端子のオプションの表示名。Simulink モデルの入力端子名とは異なります。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールの測定に指定される特殊な表示形式。この形式の指定は Inport の Compu Method で指定される表示形式よりも優先されます。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

読みやすくするために ECU 内部値を物理値に変換するメソッド名。

R2022b 以降

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

ドロップダウン リストを使用して、Inport から生成されるコードで使用する受信側サービスを、ディクショナリに定義されたサービスの中から選択します。詳細については、Configure Sender and Receiver Service Interfaces for Model Inports and Outportsを参照してください。

Outports

モデル内のルートレベルの Outport ブロックまたは Out Bus Element ブロック (OutBus1.signal1 など) を識別します。要素がデータ オブジェクトに関連付けられる場合、コード マッピング エディターで信号オブジェクトへの関連付けアイコンがソース名の右側に表示され、要素のストレージ クラス設定が Auto であるかどうかに基づいて構成が関連付けられます。ストレージ クラスが Auto の場合、データ オブジェクトで指定されるコード構成がデータ要素で想定されます。エディターの [ストレージ クラス] 列の表示テキストが、From signal object: の後にデータ オブジェクトのストレージ クラスの名前が続くテキストに変更されます。ストレージ クラスが Auto でない場合、コード マッピング エディターで指定した構成がデータ要素で想定されます。

Outport からコードを生成するために使用するストレージ クラス定義。詳細については、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

生成されたコード内で Outport を表す変数の名前。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーションを有効にするには Outport で Calibration を選択し、Outport の値を表示してキャリブレーションを無効にするには NoCalibration を選択します。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールで測定の目的に使用される出力端子のオプションの表示名。Simulink モデルの出力端子名とは異なります。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールの測定に指定される特殊な表示形式。この形式の指定は Outport の Compu Method で指定される表示形式よりも優先されます。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

読みやすくするために ECU 内部値を物理値に変換するメソッド名。

R2022b 以降

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

ドロップダウン リストを使用して、Outport から生成されるコードで使用する送信側サービスを、ディクショナリに定義されたサービスの中から選択します。詳細については、Configure Sender and Receiver Service Interfaces for Model Inports and Outportsを参照してください。

データ転送 (サービス インターフェイス構成を使用する ERT モデルのみに適用可能)

R2022b 以降

生成されたコードの呼び出し可能なエントリポイント関数となる 2 つのブロックを接続する信号線を識別します。呼び出し可能なエントリポイント関数の詳細については、モデル コード インターフェイスを参照してください。

コード生成に使用するデータ転送サービス インターフェイス。モデルの Embedded Coder ディクショナリで定義されるサービス インターフェイスの 1 つとして指定されます。ターゲット環境内では、ターゲット プラットフォームの指定したデータ転送サービスを呼び出すことで、呼び出し可能なエントリポイント関数がそれらの間でデータを転送します。ディクショナリの既定のデータ転送サービスを使用するには、Dictionary default を指定します。データ転送サービス インターフェイスを構成するには、サービス インターフェイス構成を定義する Embedded Coder ディクショナリをモデルに接続しなければなりません。詳細については、Configure Data Transfer Service Interfaces for Data Transfer Signalsを参照してください。

パラメーター

モデル内のパラメーターを識別します。要素がデータ オブジェクトに関連付けられる場合、コード マッピング エディターでパラメーター オブジェクトへの関連付けアイコンがソース名の右側に表示され、要素のストレージ クラス設定が Auto であるかどうかに基づいて構成が関連付けられます。ストレージ クラスが Auto の場合、データ オブジェクトで指定されるコード構成がデータ要素で想定されます。エディターの [ストレージ クラス] 列の表示テキストが、From parameter object: の後にデータ オブジェクトのストレージ クラスの名前が続くテキストに変更されます。ストレージ クラスが Auto でない場合、コード マッピングで指定した構成がデータ要素で想定されます。

パラメーター要素のタイプを次の表に示します。

パラメーター要素のタイプ説明
モデル パラメーター引数 (ERT モデルにのみ適用可能)モデル引数として構成するモデル ワークスペース内のブロック パラメーター。このパラメーターは Model ブロックで公開され、各モデル インスタンスは独自の値を提供できます。モデルの引数としてパラメーターを指定するには、[モデル データ エディター][Parameters][Argument] チェック ボックスをオンにします。
モデル パラメーターモデル ワークスペース内のパラメーターなど、モデル内で定義されるパラメーター。モデルの引数は除きます。
外部パラメーターベース ワークスペースまたはデータ ディクショナリ内でオブジェクトとして定義するパラメーター。アプリケーションの複数のモデルがこれらのパラメーターを使用できます。このグループのパラメーターは、そのような要素をモデルで使用している場合にのみエディターに表示されます。コード マッピング エディターでこれらのパラメーターを表示および構成するには、カテゴリ名の右側にある [Refresh] リンクをクリックします。このリンクをクリックすると、モデル線図が更新されます。

パラメーターからコードを生成するために使用するストレージ クラス定義。詳細については、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

生成されたコード内でモデル パラメーターまたはモデル パラメーター引数を表す変数の名前。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーションを有効にするにはパラメーターで Calibration を選択し、パラメーターの値を表示してキャリブレーションを無効にするには NoCalibration を選択します。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールで測定の目的に使用されるパラメーターのオプションの表示名。Simulink モデルのパラメーター名とは異なります。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールの測定に指定される特殊な表示形式。この形式の指定はパラメーターの Compu Method で指定される表示形式よりも優先されます。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

読みやすくするために ECU 内部値を物理値に変換するメソッド名。

R2022b 以降

Embedded Coder ディクショナリで定義されているパラメーター調整サービス インターフェイスの名前。ディクショナリの既定値を使用するには、Dictionary default を指定します。

パラメーター調整サービス インターフェイスを構成するには、サービス インターフェイス構成を定義する Embedded Coder ディクショナリをモデルに接続しなければなりません。詳細については、Configure Parameter and Parameter Argument Tuning Service Interfaces for Model Parameters and Model Parameter Argumentsを参照してください。

データ ストア

モデル内のデータ ストアを識別します。要素がデータ オブジェクトに関連付けられる場合、コード マッピング エディターで信号オブジェクトへの関連付けアイコンがソース名の右側に表示され、要素のストレージ クラス設定が Auto であるかどうかに基づいて構成が関連付けられます。ストレージ クラスが Auto の場合、データ オブジェクトで指定されるコード構成がデータ要素で想定されます。エディターの [ストレージ クラス] 列の表示テキストが、From signal object: の後にデータ オブジェクトのストレージ クラスの名前が続くテキストに変更されます。ストレージ クラスが Auto でない場合、コード マッピングで指定した構成がデータ要素で想定されます。

データ ストア要素のタイプを次の表に示します。

データ ストア要素のタイプ説明
ローカル データ ストアモデルの階層構造において、そのデータ ストアが定義されているレベル以下の任意の場所からアクセスできるデータ ストア。ローカル データ ストアは、Data Store Memory ブロックを含めるか、モデル ワークスペースで信号オブジェクト (合成されたデータ ストア) を作成することにより、モデル内でグラフィカルに定義できます。
共有ローカル データ ストアブロック パラメーター [モデル インスタンス間で共有する] が設定された Data Store Memory ブロック。これらのデータ ストアは、それらが定義されているモデルでのみアクセスできます。データ ストア値は、モデルのインスタンス間で共有されます。このグループのデータ ストアは、そのような要素がモデル内に存在する場合にのみエディターに表示されます。
グローバル データ ストアベース ワークスペースまたはデータ ディクショナリの信号オブジェクトで定義されるデータ ストア。アプリケーション内の複数のモデルがこれらのデータ ストアを使用できます。これらのデータ ストアはコード マッピングでは構成できません。[リフレッシュ] ボタンをクリックすると、確認目的の読み取り専用の状態でコード マッピング エディターに表示されます。このグループのデータ ストアは、そのような要素をモデルで使用している場合にのみエディターに表示されます。コード マッピング エディターでこれらのデータ ストアを表示および構成するには、カテゴリ名の右側にある [Refresh] リンクをクリックします。このリンクをクリックすると、モデル線図が更新されます。

ローカル データ ストアおよび共有ローカル データ ストアの名前は、block-name: data-store-name の形式で表示されます。

ローカル データ ストアおよび共有ローカル データ ストアは、データ ストア要素がモデル内でどのように表現および構成されているかに応じて、モデル ワークスペース、ベース ワークスペース、またはデータ ディクショナリのいずれかの信号オブジェクトに関連付けられます。グローバル データ ストアは、ベース ワークスペースまたはデータ ディクショナリの信号オブジェクトに関連付けられます。

データ ストアからコードを生成するために使用するストレージ クラス定義。詳細については、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

クリックするとモデル ブロック線図でデータ ストアを強調表示できるリンク。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

生成されたコード内でデータ ストアを表す変数の名前。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーションを有効にするにはデータ ストアで Calibration を選択し、データ ストアの値を表示してキャリブレーションを無効にするには NoCalibration を選択します。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールで測定する目的のデータ ストアのオプションの表示名。Simulink モデルのデータ ストア名とは異なります。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールの測定に指定される特殊な表示形式。この形式の指定はデータ ストアの Compu Method で指定される表示形式よりも優先されます。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

読みやすくするために ECU 内部値を物理値に変換するメソッド名。

R2022b 以降

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

ドロップダウン リストを使用して、信号または状態を測定してはならないことを指定するか、データ ストアを測定するために使用する測定サービスを、ディクショナリに定義されたサービスの中から選択します。詳細については、Configure Measurement Service Interfaces for Signals, States, and Data Storesを参照してください。

信号/状態

モデル内の信号線または状態を識別します。要素がデータ オブジェクトに関連付けられる場合、コード マッピング エディターで信号オブジェクトへの関連付けアイコンがソース名の右側に表示され、要素のストレージ クラス設定が Auto であるかどうかに基づいて構成が関連付けられます。ストレージ クラスが Auto の場合、データ オブジェクトで指定されるコード構成がデータ要素で想定されます。エディターの [ストレージ クラス] 列の表示テキストが、From signal object: の後にデータ オブジェクトのストレージ クラスの名前が続くテキストに変更されます。ストレージ クラスが Auto でない場合、コード マッピング エディターで指定した構成がデータ要素で想定されます。

コード マッピング エディターには以下がリストされます。

  • データ要素の名前を使用した名前付きの信号と状態

  • source-block: port-number の形式を使用した名前のない信号

  • block-name: state-name の形式を使用した複数のブロックで使用される状態

コード マッピング エディターでモデルの個々の信号線を構成するには、先に信号をマッピングに追加する必要があります。C コード生成のための信号データの構成を参照してください。

信号または状態からコードを生成するために使用するストレージ クラス定義。詳細については、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

クリックするとモデル ブロック線図で信号線や状態を使用するブロックを強調表示できるリンク。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

生成されたコード内で信号または状態を表す変数の名前。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーションを有効にするには信号または状態で Calibration を選択し、信号または状態の値を表示してキャリブレーションを無効にするには NoCalibration を選択します。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールで測定の目的に使用される信号または状態のオプションの表示名。Simulink モデルの信号または状態の名前とは異なります。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

キャリブレーション ツールの測定に指定される特殊な表示形式。この形式の指定は信号または状態の Compu Method で指定される表示形式よりも優先されます。

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

読みやすくするために ECU 内部値を物理値に変換するメソッド名。

R2022b 以降

このプロパティの値を指定するには、テーブル エントリの末尾にある鉛筆アイコン をクリックして、このプロパティを含むダイアログ ボックスを開きます。

ドロップダウン リストを使用して、信号または状態を測定してはならないことを指定するか、信号または状態を測定するために使用する測定サービスを、ディクショナリに定義されたサービスの中から選択します。詳細については、Configure Measurement Service Interfaces for Signals, States, and Data Storesを参照してください。

バージョン履歴

R2018a で導入