最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

データ測定およびキャリブレーションのための ASAP2 ファイルのエクスポート

ASAM MCD-2 MC 標準 (ASAP2 とも呼ばれる) は Association for Standardization of Automation and Measuring Systems (ASAM) によって推奨されているデータ定義の標準です。ASAP2 は測定、キャリブレーション、および診断システムで使用されるデータの非オブジェクト指向の説明です。ASAM と ASAM MCD-2 MC (ASAP2) 標準の詳細については、https://www.asam.net の ASAM Web サイトを参照してください。

コード ジェネレーターでは、コード生成プロセス中にモデルに関する情報が含まれる ASAP2 ファイルをエクスポートできます。

対話型の ASAP2 ファイル生成の例を実行できます。例を開くには、MATLAB® コマンド プロンプトに次のコマンドを入力します。

rtwdemo_asap2

メモ

Simulink® ASAP2 ファイル生成の Coder™ サポートはバージョン ニュートラルです。既定の設定でソフトウェアは ASAP2 Version 1.31 形式を生成しますが、生成されたモデル情報はすべての ASAP2 バージョンと通常、互換性があります。ASAP2 ファイル生成も ASAP2 測定とキャリブレーション ツールの特定のニーズに関してニュートラルです。ソフトウェアは ASAP2 ファイル生成をカスタマイズして ASAP2 バージョンを生成し、ASAP2 ツールの特定のニーズを満たすために使用可能なカスタマイズ API を提供します。

前提条件

ASAP2 ファイル生成を使用するには、次のトピックを理解しなければなりません。

ASAP2 をサポートするターゲット

ASAP2 ファイル生成はすべてのコード ジェネレーターのシステム ターゲット ファイル構成で使用できます。次に例を示します。

  • [汎用リアルタイムターゲット] (grt.tlc) ではコード生成とビルド プロセスの一部として ASAP2 ファイルを生成できます。

  • [Embedded Coder] (ert.tlc) のシステム ターゲット ファイルを選択することでも、コード生成とビルド プロセスの一部として ASAP2 ファイルを生成できます。

  • [ASAM-ASAP2 データ定義ターゲットの使用] (asap2.tlc) では実行可能プログラムを作成せずに ASAP2 ファイルのみを生成できます。

これらのターゲット コンフィギュレーションを使用して ASAP2 ファイルを生成する手順については、ASAP2 ファイルの生成を参照してください。

ASAP2 情報の定義

パラメーターと信号の ASAP2 情報の定義

ASAP2 ファイル生成プロセスではモデルのパラメーターと信号に関する情報が必要です。この情報の一部はモデル自体に含まれています。ワークスペースまたはデータ ディクショナリで Simulink データ オブジェクトを使用して他の情報を指定しなければなりません。ワークスペース オブジェクトの使用はオプションである場合があります。

モデル データ エディターと組み込みの Simulink データ オブジェクトを使用して情報を提供できます。たとえば、Simulink.Signal オブジェクトを使用して MEASUREMENT 情報を提供し、Simulink.Parameter オブジェクトを使用して CHARACTERISTIC 情報を提供することができます。また、Simulink.SignalSimulink.Parameter から派生したデータクラスのデータ オブジェクトを使用して情報を提供できます。データ オブジェクトの詳細については、データ オブジェクト (Simulink)を参照してください。モデル データ エディターの詳細については、モデル データ エディターを使用したデータ プロパティの設定 (Simulink)を参照してください。

次の表に ASAP2 ファイル生成に必要な最小限のデータ属性セットを示します。一部のデータ属性はモデルで定義されますが、その他はオブジェクトのプロパティで提供されます。Simulink.Signal または Simulink.Parameter オブジェクトで定義された属性の場合、テーブルは関連付けられたプロパティ名を示します。

データ属性

定義場所

プロパティ名

名前 (シンボル)

モデルおよびデータ オブジェクト

パラメーターまたは信号名が解決するデータ オブジェクトのハンドルから継承

説明

データ オブジェクト

Description

データ型

モデルまたはデータ オブジェクト

DataType

スケーリング
(固定小数点データ型の場合)

モデルまたはデータ オブジェクト

DataType

許容される最小値

モデルまたはデータ オブジェクト

Min

許容される最大値

モデルまたはデータ オブジェクト

Max

単位

モデルまたはデータ オブジェクト

Unit

メモリ アドレス (オプション)

モデルまたはデータ オブジェクト

MemoryAddress_ASAP2 (オプション、メモリ アドレス属性を参照)

メモリ アドレス属性

コード生成前にメモリ アドレス属性が不明の場合は、コード ジェネレーターは生成された ASAP2 ファイルに ECU Address プレースホルダーテキストを挿入します。生成されたファイルを後処理することにより、プレースホルダーの代わりに実際のアドレスを使用することができます。例については、matlabroot/toolbox/rtw/targets/asap2/asap2/asap2post.m ファイルを参照してください。asap2post.m は提供されたリンカー マップ ファイルを解析し、ASAP2 ファイル内の ECU Address プレースホルダーを実際のメモリ アドレスで置き換えます。リンカー マップ ファイルはコンパイラごとに異なるので、asap2post.m の正規表現コードを変更して実際に使用するリンカー マップの形式に合わせなければならないことがあります。

メモ

Embedded Coder がライセンスされシステムにインストールされており、かつ組み込みターゲット用の Executable and Linkable Format (ELF) ファイルまたはプログラム データベース (PDB) ファイルを生成している場合、関数 rtw.asap2SetAddress を使用して ECU アドレス置き換えを自動化することができます。詳細は、ASAP2 ファイルの自動的な ECU アドレス置き換え (Embedded Coder)を参照してください。

コード生成前にメモリ アドレス属性がわかっている場合、データ項目またはデータ オブジェクトで定義することができます。既定の設定では、MemoryAddress_ASAP2 プロパティは Simulink.SignalSimulink.Parameter のいずれのデータ オブジェクト クラスにも存在しません。この属性を追加するには、MemoryAddress_ASAP2 という名前のプロパティを Simulink クラスまたは ASAP2 クラスのサブクラスであるカスタム クラスに追加します。Simulink データ クラスをサブクラス化する方法の詳細については、データ クラスの定義 (Simulink)を参照してください。

メモ:

以前のリリースでは、ASAP2 ファイルを生成するためにオブジェクトを ASAP2.Signal および ASAP2.Parameter として明示的に定義しなければなりませんでした。現在は、このような制限はありません。上で説明したとおり、組み込み Simulink オブジェクトを使用して ASAP2 ファイルを作成することができます。以前のリリースを使い続けてきた場合、引き続き ASAP2 オブジェクトを使用することができます。それらの ASAP2 オブジェクトのいずれか 1 つが以前のリリースで作成され、かつ今回のリリースでも使用される場合、それらのオブジェクトがはじめて読み込まれるときに MATLAB コマンド ウィンドウに警告が表示されます。

次の表に以前のリリースの ASAP2 オブジェクト プロパティに代わって新たに使用されることになった Simulink オブジェクト プロパティを示します。

ASAP2 と Simulink のパラメーターおよび信号オブジェクト プロパティの相違点

ASAP2 オブジェクト プロパティ (以前)

Simulink オブジェクト プロパティ (現在)

LONGID_ASAP2

Description

PhysicalMin_ASAP2

Min

PhysicalMax_ASAP2

Max

Units_ASAP2

Unit

ASAP2 ファイルの自動的な ECU アドレス置き換え (Embedded Coder)

Embedded Coder がライセンスされシステムにインストールされており、かつ組み込みターゲット用の Executable and Linkable Format (ELF) ファイルまたはプログラム データベース (PDB) ファイルを生成している場合、関数 rtw.asap2SetAddress を使用して生成された ASAP2 ファイル内の ECU Address プレースホルダー メモリ アドレス値を実際のアドレスで置き換える処理を自動化することができます。

コード生成前にメモリ アドレス属性が不明の場合は、次の例に示すとおり、コード ジェネレーターは生成された ASAP2 ファイルに ECU Address プレースホルダー テキストを挿入します。

/begin CHARACTERISTIC
  /* Name            */ Ki
  /* Long Identifier */ ""
  /* Type            */ VALUE
  /* ECU Address     */ 0x0000 /* @ECU_Address@Ki@ */

ECU Address プレースホルダーの代わりに実際のアドレスを使用するには、生成された ASAP2 ファイルを関数 rtw.asap2SetAddress を使用して処理します。一般的な構文は次のとおりです。

rtw.asap2SetAddress(ASAP2File,InfoFile)

引数は生成された ASAP2 ファイルの名前およびモデル用に生成された実行可能 ELF ファイル、Microsoft ツールチェーンの PDB ファイル、または DWARF デバッグ情報ファイルの名前を指定する文字列ベクトルです。関数 rtw.asap2SetAddress は呼び出されると、指定された ELF ファイル、PDB ファイルまたは DWARF ファイルから実際の ECU アドレスを抽出し、ASAP2 ファイル内のプレースホルダーを実際のアドレスで置き換えます。次に例を示します。

/begin CHARACTERISTIC
  /* Name            */ Ki
  /* Long Identifier */ ""
  /* Type            */ VALUE
  /* ECU Address     */ 0x40009E60

ルックアップ テーブル向け ASAP2 情報の定義

Simulink Coder ソフトウェアは、ルックアップ テーブル データとそのブレークポイント向けに ASAP2 の説明を生成します。本ソフトウェアでは、1 次元テーブル データを CURVE 情報、2 次元テーブル データを MAP 情報、およびブレーク ポイントを AXIS_DESCR 情報と AXIS_PTS 情報として表現します。次の Simulink Lookup Table ブロックの 1 つを使用して、ルックアップ テーブルのモデルを作成することができます。

  • Direct Lookup Table (n-D) — 1 次元と 2 次元

  • Interpolation Using Prelookup — 1 次元と 2 次元

  • 1–D Lookup Table

  • 2–D Lookup Table

  • n-D Lookup Table — 1 次元と 2 次元

本ソフトウェアでは、次の種類のルックアップ テーブル ブレーク ポイント (軸ポイント) をサポートします。

ブレークポイントの種類生成物
調整可能で複数のテーブル軸間で共有 (共通軸)

COM_AXIS

固定で調整不可 (固定軸)

FIX_AXIS の次のバリアントのいずれか

  • FIX_AXIS_PAR - ブレークポイントが等間隔配置の整数で、等間隔配置が 2 のべき乗の場合

  • FIX_AXIS_PAR_DIST - ブレークポイントが等間隔配置の整数の場合

  • FIX_AXIS_PAR_LIST - ブレークポイントが非等間隔配置の整数の場合

調整可能だが複数のテーブル軸間で共有されない (標準軸)

STD_AXIS

ASAP2 コード生成のためにブロックを設定するときは、次のようにします。

  • テーブル データの場合、非 Auto ストレージ クラスをもつ Simulink.Parameter データ オブジェクトを使用します。

  • 複数のテーブル軸間 (COM_AXIS) で共有される調整可能なブレークポイント データの場合、Simulink.Parameter データ オブジェクトを非 Auto ストレージ クラスと共に使用します。

  • 固定の調整できないブレークポイント データ (FIX_AXIS) の場合、ブロック パラメーター ダイアログ ボックスで指定されたワークスペースの変数または配列を使用します。ブレークポイントはコードに整数として格納する必要があります。したがって、データ型は組み込み整数型 (int8int16int32uint8uint16、または uint32)、固定小数点データ型、または同等のエイリアス型でなければなりません。

  • 複数テーブル間 (STD_AXIS) で共有されない調整可能なブレークポイント データの場合

    1. Simulink.Bus オブジェクトを作成して、struct パッケージング (フィールドの名前と順序) を定義します。パラメーター構造体のフィールドは、ルックアップ テーブル データおよびルックアップ テーブル ブロックの各軸に対応していなければなりません。たとえば、次元数が 2 の n-D Lookup Table ブロックでは、構造体に存在するフィールド数は 3 でなければなりません。このバス オブジェクトは、ルックアップ特性のレコード レイアウトを記述します。

    2. Simulink.Parameter オブジェクトを作成して、調整可能なパラメーターを表現します。

    3. テーブル値と軸値を作成します。

    4. オプションとして、パラメーター オブジェクトの [単位][最小値]、および [最大値] の各プロパティを指定します。これらのプロパティは、テーブル データのみに適用されます。

次の例は、標準軸形式で生成され ASAP2 ファイルに埋め込まれる n-D Lookup Table レコードを示したものです。

/begin CHARACTERISTIC
  /* Name */  STDAxisParam
  ...
  /* Record Layout */   Lookup1D_X_WORD_Y_FLOAT32_IEEE
  ...
  begin AXIS_DESCR
    /* Description of X-Axis Points */
    /* Axis Type */      STD_AXIS
    ...
  /end AXIS_DESCR
/end CHARACTERISTIC

/begin RECORD_LAYOUT Lookup1D_X_WORD_Y_FLOAT32_IEEE
  AXIS_PTS_X 1 WORD INDEX_INCR DIRECT
  FNC_VALUES 2 FLOAT32_IEEE COLUMN_DIR DIRECT
/end   RECORD_LAYOUT

メモ

モデル例 rtwdemo_asap2 は、調整可能 (COM_AXIS) と固定 (FIX_AXIS) の両方のルックアップ テーブルのブレークポイントも含めた、Lookup Table ブロック用に ASAP2 ファイルを生成する方法を示します。

ASAP2 ファイルの生成

ASAP2 ファイルの生成について

次のうちいずれかの方法でモデルから ASAP2 ファイルを生成することができます。

  • 汎用リアルタイム ターゲットまたは Embedded Coder ターゲットを使用して、ASAP2 ファイルをコードの生成とビルドのプロセスの一環として生成します。

  • ASAM-ASAP2 データ定義ターゲットを使用して ASAP2 ファイルだけを生成し、実行可能ファイルのビルドは行いません。

この節では、組み込み ASAP2 をサポートするターゲットを使用して ASAP2 ファイルを生成する方法について説明します。例については、ASAP2 のモデル例 rtwdemo_asap2 を参照してください。

GRT または ERT システム ターゲット ファイルの使用

汎用リアルタイム ターゲットまたは Embedded Coder システム ターゲット ファイルを使用してモデルの ASAP2 データ定義を生成する手順は、次のとおりです。

  1. 個別の信号、状態、およびパラメーター データ要素へのストレージ クラスの適用の説明に従って、モデル データ エディター ([ツール表示][モデル データ エディター]) を使用してストレージ クラスを信号、ブロックの状態、ブロック パラメーターに適用します。信号名と状態名を使用して対応する MEASUREMENT レコードを参照し、パラメーター オブジェクト名を使用して CHARACTERISTIC レコードを参照します。

    [Auto][FileScope] 以外のストレージ クラスまたはカスタム ストレージ クラスを使用するか、コード マッピング エディターで対応するデータ カテゴリの既定のストレージ クラスを [Default] に設定する (既定の設定) 場合は [モデルの既定の設定] を使用します。たとえば、[ExportedGlobal] を使用すると、データ項目は生成コードの構造化されていないグローバル変数として設定されます。

    メモ

    次のうち 1 つ以上の条件に該当する場合、ASAP2 ファイル内でデータ項目は表現されません。

    • ストレージ クラス [Auto][FileScope]、または [Default] のいずれかを ([Model default] を使用して) 適用している。

    • コード ジェネレーターでマクロ変数またはアドレス指定不可能変数が生成されるカスタム ストレージ クラスを適用している。

  2. モデル データ エディターを使用して、必要に応じて各データ項目の他のプロパティを設定します。

  3. [コード生成] ペインの [参照] をクリックして、システム ターゲット ファイル ブラウザーを開きます。ブラウザーで、[grt.tlc] または ERT ベースのターゲット ファイルを選択し、[OK] をクリックします。

  4. [コード生成][インターフェイス] ペインの [データ交換インターフェイス] サブグループで、[ASAP2 インターフェイス] を選択します。

  5. [コード生成] ペインの [コード生成のみ] チェック ボックスをオンにします。

  6. [適用] をクリックします。

  7. モデルを作成します。

    コード ジェネレーターが、ASAP2 ファイルをビルド フォルダーに書き込みます。既定の設定では、ファイルは model と命名されます。ここで model.a2l はモデル名です。ASAP2 セットアップ ファイルによって ASAP2 のファイル名が制御されます。詳細については、生成された ASAP2 ファイルのカスタマイズを参照してください。

ASAM-ASAP2 データ定義ターゲットの使用

ASAM-ASAP2 データ定義ターゲットを使用するモデルの ASAP2 データ定義を生成する手順は、次のとおりです。

  1. 個別の信号、状態、およびパラメーター データ要素へのストレージ クラスの適用の説明に従って、モデル データ エディター ([ツール表示][モデル データ エディター]) を使用してストレージ クラスを信号、ブロックの状態、ブロック パラメーターに適用します。信号名と状態名を使用して対応する MEASUREMENT レコードを参照し、パラメーター オブジェクト名を使用して CHARACTERISTIC レコードを参照します。

    [Auto][FileScope] 以外のストレージ クラスまたはカスタム ストレージ クラスを使用するか、コード マッピング エディターで対応するデータ カテゴリの既定のストレージ クラスを [Default] に設定する (既定の設定) 場合は [モデルの既定の設定] を使用します。たとえば、[ExportedGlobal] を使用すると、データ項目は生成コードの構造化されていないグローバル変数として設定されます。

    メモ

    次のうち 1 つ以上の条件に該当する場合、ASAP2 ファイル内でデータ項目は表現されません。

    • ストレージ クラス [Auto][FileScope]、または [Default] のいずれかを ([Model default] を使用して) 適用している。

    • コード ジェネレーターでマクロ変数またはアドレス指定不可能変数が生成されるカスタム ストレージ クラスを適用している。

  2. モデル データ エディターを使用して、必要に応じて各データ項目の他のプロパティを設定します。

  3. [コード生成] ペインの [参照] をクリックして、システム ターゲット ファイル ブラウザーを開きます。ブラウザーで [asap2.tlc] を選択し、[OK] をクリックします。

  4. [コード生成] ペインの [コード生成のみ] チェック ボックスをオンにします。

  5. [適用] をクリックします。

  6. モデルを作成します。

    Simulink Coder コード ジェネレーターが、ASAP2 ファイルをビルド フォルダーに書き込みます。既定の設定では、ファイルは model と命名されます。ここで model.a2l はモデル名です。ASAP2 セットアップ ファイルによって ASAP2 のファイル名が制御されます。詳細については、生成された ASAP2 ファイルのカスタマイズを参照してください。

参照モデル用 ASAP2 ファイルの生成

ビルド プロセスにより、モデル参照階層内の各参照モデル用の ASAP2 ファイルを生成することができます。生成された ASAP2 ファイルで、MEASUREMENT レコードは参照モデル内の信号と状態を表します。

参照モデル用の ASAP2 ファイルを生成するには、参照階層内の最上位モデルと各参照モデルの ASAP2 ファイル生成を選択します。たとえば、汎用リアルタイム ターゲットまたは Embedded Coder ターゲットを使用している場合、GRT または ERT システム ターゲット ファイルの使用で説明されている最上位モデルと各参照モデル向けの手順に従います。

最上位のモデルおよび参照モデル用 ASAP2 ファイルのマージ

関数 rtw.asap2MergeMdlRefs を使用して、最上位のモデルおよび参照モデル用に生成された ASAP2 ファイルをマージします。関数は次の構文を使用します。

[status,info] = rtw.asap2MergeMdlRefs(topModelName,asap2FileName)

  • topModelName は、1 つ以上の参照モデルを含むモデルの名前です。

  • asap2FileName はマージされた ASAP2 ファイルに指定する名前です。

  • オプション::status は、マージが完了した場合は false (logical 0)、完了していない場合には true (logical 1) を返します。

  • オプション::info は、status が true の場合に、マージの失敗に関する詳細な情報を返します。それ以外の場合は、空の文字ベクトルを返します。

次の例を考えます。

[status,info] = rtw.asap2MergeMdlRefs('myTopMdl','merged.a2l')
このコマンドは最上位モデル myTopMdl と、その参照モデル用に生成された ASAP2 ファイルを、ファイル merged.a2l にマージします。

モデル例 rtwdemo_asap2 には、ASAP2 ファイルをマージする例が含まれています。

ASAP2 ファイルの構造

次の表は ASAP2 ファイルの基本構造の概要を示し、各部の作成に使用される Target Language Compiler (TLC) の関数とファイルについて説明したものです。

  • ASAP2 ファイルの静的部分は "太字" で示されます。

  • 関数呼び出しは %<FunctionName()> で示されます。

ファイルのセクション

asap2main.tlc の内容

関数定義を格納した TLC ファイル

ファイル ヘッダー

%<ASAP2UserFcnWriteFileHead()>

asap2userlib.tlc

/begin PROJECT ""

/begin PROJECT "%<ASAP2ProjectName>"

asap2setup.tlc

/begin HEADER ""
HEADER の内容

/begin HEADER"%<ASAP2HeaderName>"
%<ASAP2UserFcnWriteHeader()>

asap2setup.tlc
asap2userlib.tlc

/end HEADER

/end HEADER

asap2userlib.tlc

/begin MODULE ""
MODULE の内容:

/begin MODULE "%<ASAP2ModuleName>"}

asap2setup.tlc
asap2userlib.tlc

- A2ML
- MOD_PAR
- MOD_COMMON
...

%<ASAP2UserFcnWriteHardwareInterface()>

asap2userlib.tlc

モデル依存の MODULE の内容:

%<SLibASAP2WriteDynamicContents()>
ユーザー定義関数を呼び出します。

asap2lib.tlc

- RECORD_LAYOUT
- CHARACTERISTIC
- ParameterGroups
- ModelParameters

...WriteRecordLayout_TemplateName()

  ...WriteCharacteristic_TemplateName()
  ...WriteCharacteristic_Scalar()

user/templates/...

- MEASUREMENT
- ExternalInputs
- BlockOutputs

...WriteMeasurement()

asap2userlib.tlc

- COMPU_METHOD

...WriteCompuMethod()

asap2userlib.tlc

/end MODULE

/end MODULE

 

ファイル フッター/テール

%<ASAP2UserFcnWriteFileTail()>

asap2userlib.tlc

データ測定とキャリブレーションのためのホストベースの ASAM-ASAP2 データ定義ファイルの作成

このモデルでは ASAP2 データ エクスポートを説明します。ASAP2 は Association for Standardization of Automation and Measuring Systems (ASAM) によって推奨されているデータ定義の標準です。

モデル例を開く

モデル例 rtwdemo_asap2 を開きます。

open_system('rtwdemo_asap2');

ASAP2 は測定、キャリブレーションおよび診断システムで使用されるデータの非オブジェクト指向の説明です。ASAM および ASAP2 標準の詳細については、ASAM Web サイト http://www.asam.de を参照してください。

ASAP2 データ定義は Simulink® データ オブジェクトとテスト ポイント信号で実現されています。Target Language Compiler (TLC) を使用すると、アプリケーションに対し、高度にカスタマイズされたソリューションを作成できます。ASAP2 ファイル生成の詳細については、Simulink Coder® のドキュメンテーションを参照してください。

ASAP2 ファイル生成は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[インターフェイス] ペインで [ASAP2 インターフェイス] を設定することにより構成できます。

関連するトピック