Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

モデル要素とコード定義の関連付け

説明

コード マッピング エディターは、モデル内のデータ要素 (参照モデルは除く) をコード生成用に構成できるグラフィカル インターフェイスです。モデル参照階層内の各モデルに独自のコード マッピングがあります。モデルのデータ要素の各カテゴリをモデル全体で特定のストレージ クラスに関連付けます。その後、必要に応じて、特定のデータ要素に対するそれらの設定をオーバーライドします。

ストレージ クラスでは、コード ジェネレーターが関連付けられたデータのコードを生成するときに使用する外観や場所などのプロパティを定義します。

コード生成用にデータ要素や関数を構成するには、コード マッピング エディターに表示されるテーブルを使用します。

  • データの既定の設定

  • 入力端子

  • 出力端子

  • パラメーター

  • データ ストア

  • 信号/状態

モデルの要素に対して構成できる追加のコード マッピング プロパティがある場合、アクティブなテーブルの行を選択して Icon to configure additional code mapping properties アイコンをクリックすることで、それらのプロパティを構成できます。

コード生成用に信号を構成する前に、信号をモデル コード マッピングに追加します。コード マッピングの信号を追加または削除するには、信号線の上または下に表示される省略記号で一時停止してアクション バーを開きます。[信号の追加] ボタンまたは [信号の削除] ボタンをクリックします。これらのボタンは、コード マッピング エディターの [信号/状態] タブでも使用できます。

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

次のいずれかを行います。

  • Simulink® Coder™ アプリを開きます。[C コード] タブで、[コード インターフェイス][既定のコード マッピング] を選択するか、[コード インターフェイス][個々の要素コードのマッピング] を選択します。

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

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

ルートレベルの Inport ブロックと Outport ブロックについてのコード生成の構成

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

例の環境の設定
  1. 外部コード ファイル exDblFloat.h を書き込み可能なフォルダーにコピーします。

    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','exDblFloat.h'));
  2. モデル rtwdemo_configrpinterface を開きます。モデルのコピーをファイル exDblFloat.h と同じ場所に保存します。

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

既定のマッピングの構成

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

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

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

個々の入力端子と出力端子に対する既定の構成の設定
  1. コード マッピング エディターで、[入力端子] タブをクリックします。各 Inport のストレージ クラスは 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. 各入力端子の行を選択します。次に、Icon to configure additional code mapping properties アイコンをクリックします。[識別子] プロパティを次のように設定します。

    • In1input1 に設定します。

    • In2input2 に設定します。

    • In3input3 に設定します。

    • In4input4 に設定します。

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

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

コードの生成と検証

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

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

    /* Exported data declaration */
    
    /* Data with Imported storage */
    extern real_T input1;               /* '<Root>/In1' */
    extern real_T input2;               /* '<Root>/In2' */
    extern real_T input3;               /* '<Root>/In3' */
    extern real_T input4;               /* '<Root>/In4' */
  • rtwdemo_configrpinterface.h に出力構造体 ExtY_rtwdemo_configrpinterfac_T のフィールドとして output がリストされます。

    /* External outputs (root outports fed by signals with default storage) */
    typedef struct {
      real_T output;                   /* '<Root>/Out1' */
    } ExtY_rtwdemo_configrpinterfac_T;
    
  • 次のコード フラグメントは、サンプル レート 1 秒の生成されたエントリポイント ステップ関数で In2 を表す変数 input2 が使用されていることを示しています。

    /* Model step function for TID1 */
    void rtwdemo_configrpinterface_step1(void) /* Sample time: [1.0s, 0.0s] */
    {
       /* Lookup_n-D: '<Root>/Table1D' incorporates:
        * Inport: '<Root>/In2'
        */
       rtwdemo_configrpinterface_B.Table1D = look1_binlcpw(input2,
       rtwdemo_configrpinterfac_ConstP.Table1D_bp01Data,
       rtwdemo_configrpinterfac_ConstP.Table1D_tableData, 10U);
    .
    .
    .
    

関連する例

パラメーター

データの既定の設定

Simulink モデルのデータ要素のカテゴリの名前。カテゴリに対して設定したストレージ クラスは、そのカテゴリの要素にモデル全体で適用されます。

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

それぞれのカテゴリに対して、有効なストレージ クラスのオプションがコード マッピング エディターから提示されます。オプションには以下が含まれます。

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

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

  • ImportFromFile など、利用可能なパッケージ内の関連するストレージ クラス (Embedded Coder® が必要です)

  • Embedded Coder ディクショナリで定義されたストレージ クラス (Embedded Coder が必要です)

コード ジェネレーターがモデルのデータ要素のコードを生成するときに外観や場所などのプロパティを決定するために使用する定義 (仕様)。有効な設定は、[Default][ExportedGlobal][ImportedExtern]、および [ImportedExternPointer] です。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

Inports

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

コード ジェネレーターがルートの入力端子のコードを生成するときに外観や場所などのプロパティを決定するために使用する定義。有効な設定は、[Auto][Model default][ExportedGlobal][ImportedExtern]、および [ImportedExternPointer] です。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

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

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

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

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

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

Outports

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

コード ジェネレーターがルートの出力端子のコードを生成するときに外観や場所などのプロパティを決定するために使用する定義。有効な設定は、[Auto][Model default][ExportedGlobal][ImportedExtern]、および [ImportedExternPointer] です。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

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

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

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

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

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

パラメーター

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

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

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

コード ジェネレーターがパラメーターのコードを生成するときに外観や場所などのプロパティを決定するために使用する定義。外部パラメーターの場合、カテゴリ名の右側にある [Refresh] リンクをクリックすると、コンパイルされたストレージ クラス (外部パラメーター用に構成されたストレージ クラスなど) が [ストレージ クラス] 列の右側に表示されます。有効な設定は、[Auto][Model default][ExportedGlobal][ImportedExtern]、および [ImportedExternPointer] です。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

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

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

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

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

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

データ ストア

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

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

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

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

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

コード ジェネレーターがデータ ストアのコードを生成するときに外観や場所などのプロパティを決定するために使用する定義。グローバル データ ストアの場合、カテゴリ名の右側にある [Refresh] リンクをクリックすると、コンパイルされたストレージ クラス (グローバル データ ストア用に構成されたストレージ クラスなど) が [ストレージ クラス] 列の右側に表示されます。有効な設定は、[Auto][Model default][ExportedGlobal][ImportedExtern]、および [ImportedExternPointer] です。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

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

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

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

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

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

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

信号/状態

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

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

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

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

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

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

コード ジェネレーターが信号線または状態のコードを生成するときに外観や場所などのプロパティを決定するために使用する定義。有効な設定は、[Auto][Model default][ExportedGlobal][ImportedExtern]、および [ImportedExternPointer] です。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

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

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

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

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

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

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

バージョン履歴

R2020b で導入