メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

A2L ファイル入門

この例では、A2L ファイルに保存されている情報にアクセスして表示する方法を示します。

XCP (Universal Measurement and Calibration Protocol) は、自動車業界でキャリブレーション システムを電子制御ユニット (ECU) に接続するために一般的に使用されているネットワーク プロトコルです。一般的に、キャリブレーション システムはクライアント、ECU はサーバーと呼ばれます。XCP は、実行時に変数とメモリの内容への読み取りおよび書き込みアクセスを可能にします。

タイマーや動作条件によってトリガーされるイベントに同期して、データセット全体を取得または刺激することができます。XCP プロトコル仕様は ASAM (Association for Standardization of Automation and Measuring Systems) によって定義されており、XCP over CAN や Ethernet などのさまざまなトランスポート層を可能にします。

A2L ファイルは、XCP でデータの取得と刺激に使用される測定、キャリブレーション、およびイベント定義が含まれる構造化 ASCII テキスト ファイルです。この例では、XCP over Ethernet 用に構成された A2L ファイルを使用します。A2L ファイルは、測定とキャリブレーションで使用される内部サーバー変数の記述形式を定義する ASAM MCD-2 MC 標準 (ASAP2) に準拠しています。.a2l ファイル拡張子は、「ASAM MCD-2 MC Language」の略語です。

A2Lファイルを開く

A2L ファイルには、1 つ以上の ECU の測定、キャリブレーション、およびイベント定義が含まれています。XCP サーバーのメモリから直接データを読み取ったり、メモリにデータを書き込んだりする場合、最初に必要な手順は、そのシステムを表す A2L ファイルを開くことです。A2L ファイルにアクセスするには、xcpA2L 関数を使用して MATLAB ® セッションでファイル オブジェクトを作成します。

a2lfile = xcpA2L("XCPServerSineWaveGenerator.a2l")
a2lfile = 
  A2L with properties:

   File Details
                 FileName: 'XCPServerSineWaveGenerator.a2l'
                 FilePath: '/tmp/Bdoc25a_2864802_1971459/tpcbc94420/vnt-ex00266724/XCPServerSineWaveGenerator.a2l'
               ServerName: 'ModuleName'
                 Warnings: [0×0 string]

   Parameter Details
                   Events: {'100 ms'}
                EventInfo: [1×1 xcp.a2l.Event]
             Measurements: {'Sine'  'SineAfterGain'  'SineAfterTable'  'XCPServer_DW.lastCos'  'XCPServer_DW.lastSin'  'XCPServer_DW.systemEnable'}
          MeasurementInfo: [6×1 containers.Map]
          Characteristics: {'Gain'  'ydata'}
       CharacteristicInfo: [2×1 containers.Map]
                 AxisInfo: [1×1 containers.Map]
            RecordLayouts: [4×1 containers.Map]
             CompuMethods: [3×1 containers.Map]
                CompuTabs: [0×1 containers.Map]
               CompuVTabs: [0×1 containers.Map]

   XCP Protocol Details
        ProtocolLayerInfo: [1×1 xcp.a2l.ProtocolLayer]
                  DAQInfo: [1×1 xcp.a2l.DAQ]
    TransportLayerCANInfo: [0×0 xcp.a2l.XCPonCAN]
    TransportLayerUDPInfo: [0×0 xcp.a2l.XCPonIP]
    TransportLayerTCPInfo: [1×1 xcp.a2l.XCPonIP]

測定情報にアクセスする

測定は、記録可能なサーバー内部変数のプロパティを記述します。この変数はスカラーまたは配列にすることができます。測定にはビットマスクとビット操作を適用できます。アドレス、バイト順序、計算方法、上限と下限、その他のプロパティについて説明します。この標準では、実行時にサーバーを刺激するために測定オブジェクトに書き込むこともできます。

A2L ファイル オブジェクトの Measurements プロパティを介して利用可能なすべての測定値を表示します。

a2lfile.Measurements
ans = 1×6 cell
    {'Sine'}    {'SineAfterGain'}    {'SineAfterTable'}    {'XCPServer_DW.lastCos'}    {'XCPServer_DW.lastSin'}    {'XCPServer_DW.systemEnable'}

getMeasurementInfo 関数を使用して Sine 測定に関する情報を取得します。この関数は、指定された A2L ファイルから指定された測定に関する情報を返します。

measInfo = getMeasurementInfo(a2lfile,"Sine")
measInfo = 
  Measurement with properties:
                   Name: 'Sine'
         LongIdentifier: 'Sine wave signal'
            LocDataType: FLOAT64_IEEE
             Conversion: [1×1 xcp.a2l.CompuMethod]
             Resolution: 0
               Accuracy: 0
             LowerLimit: -3.0000
             UpperLimit: 3.0000
              Dimension: 1
              ArraySize: []
                BitMask: []
           BitOperation: [1×0 xcp.a2l.BitOperation]
              ByteOrder: MSB_LAST
               Discrete: []
             ECUAddress: 1586712
    ECUAddressExtension: 0
                 Format: ''
                 Layout: ROW_DIR
               PhysUnit: ''
              ReadWrite: []

xcpChannel を使用すると、それぞれ readMeasurement および writeMeasurement 関数を使用して、測定データを XCP サーバーのメモリに直接読み書きすることができます。readMeasurement 関数は、XCP チャネル オブジェクトを通じて指定された measurement の値を読み取り、スケーリングします。このアクションは、サーバーのメモリから直接読み取りを実行します。writeMeasurement 関数は、指定された measurement の値を XCP チャネル オブジェクトを通じてスケーリングして書き込みます。このアクションは、サーバーのメモリへの直接書き込みを実行します。

アクセス特性情報

特性は、調整可能なパラメータ (キャリブレーション) のプロパティを記述します。調整可能なパラメータの種類としては、スカラー、文字列、ルックアップ テーブルなどがあります。アドレス、レコードレイアウト、計算方法、上限および下限のキャリブレーション限界が定義されます。

A2L ファイル オブジェクトの Characteristics プロパティを使用して、使用可能なすべての特性を名前で表示します。

a2lfile.Characteristics
ans = 1×2 cell
    {'Gain'}    {'ydata'}

getCharacteristicInfo 関数を使用して Gain 特性に関する情報を取得します。この関数は、指定された A2L ファイルから指定された特性に関する情報を返します。

charInfo = getCharacteristicInfo(a2lfile,"Gain")
charInfo = 
  Characteristic with properties:
                   Name: 'Gain'
         LongIdentifier: ''
     CharacteristicType: VALUE
             ECUAddress: 549960
                Deposit: [1×1 xcp.a2l.RecordLayout]
                MaxDiff: 0
             Conversion: [1×1 xcp.a2l.CompuMethod]
             LowerLimit: -5.0000
             UpperLimit: 5.0000
              Dimension: 1
         AxisConversion: {1×0 cell}
                BitMask: []
              ByteOrder: MSB_LAST
               Discrete: []
    ECUAddressExtension: 0
                 Format: ''
                 Number: []
               PhysUnit: ''

xcpChannel を使用すると、それぞれ readCharacteristic 関数と writeCharacteristic 関数を使用して、特性データを XCP サーバーのメモリに直接読み書きすることができます。readCharacteristic 関数は、XCP チャネルを介して指定された characteristic の値を読み取り、スケーリングします。このアクションは、サーバーのメモリから直接読み取りを実行します。writeCharacteristic 関数は、指定された characteristic の値を XCP チャネル オブジェクトを通じてスケーリングして書き込みます。このアクションは、サーバーのメモリへの直接書き込みを実行します。

イベント情報にアクセスする

データは、タイマーまたは動作条件によってトリガーされるイベントと同期して取得または刺激できます。

A2L ファイル オブジェクトの Events プロパティを介して利用可能なすべてのイベントを表示します。

a2lfile.Events
ans = 1×1 cell array
    {'100 ms'}

getEventInfo 関数を使用して 100 ms イベントに関する情報を取得します。この関数は、指定された A2L ファイルから指定されたイベントに関する情報を返します。

eventInfo = getEventInfo(a2lfile, "100 ms")
eventInfo = 
  Event with properties:
                         Name: '100 ms'
                    ShortName: '100 ms'
                ChannelNumber: 0
                    Direction: DAQ
                   MaxDAQList: 255
             ChannelTimeCycle: 1
              ChannelTimeUnit: 8
              ChannelPriority: 0
    ChannelTimeCycleInSeconds: 0.1000

xcpChannel を使用してイベントを指定すると、readDAQList and writeSTIM などの利用可能な XCP 関数を使用して測定値を取得および刺激できます。測定データを取得するためのイベントの使用については、例 ダイナミックDAQリストでXCP測定を読み取る でさらに詳しく説明します。

プロトコル層情報の表示

プロトコル層は、XCP サーバーとクライアント間のメッセージングのコア操作と構成の一部を定義します。これには、XCP コマンドおよび応答メッセージ内のバイトのサイズと構造が含まれます。

A2L ファイル オブジェクトの ProtocolLayerInfo プロパティを介してプロトコル層の詳細を表示します。

a2lfile.ProtocolLayerInfo
ans = 
  ProtocolLayer with properties:
                    T1: 1000
                    T2: 200
                    T3: 0
                    T4: 0
                    T5: 0
                    T6: 0
                    T7: 0
                MaxCTO: 255
                MaxDTO: 65532
             ByteOrder: BYTE_ORDER_MSB_LAST
    AddressGranularity: ADDRESS_GRANULARITY_BYTE

DAQ情報の表示

XCP は、ASAM MDC-2 MC で説明されているように、同期データ取得 (DAQ) モードを提供します。DAQ は、サーバーが提供できる主要な XCP サービスの 1 つです。XCP DAQ イベントは、測定データのサンプリングをトリガーするためにクライアントによって定義できます。サーバー内のアルゴリズムがそのようなサンプリング イベントの場所に到達すると、サーバーは測定パラメータの値を収集し、クライアントに送信します。A2L ファイル オブジェクトの DAQInfo プロパティを介して DAQ の詳細を表示します。

a2lfile.DAQInfo
ans = 
  DAQ with properties:
                    ConfigType: DYNAMIC
                        MaxDAQ: 65535
              MaxEventChannels: 128
                        MinDAQ: 0
              OptimizationType: OPTIMISATION_TYPE_DEFAULT
              AddressExtension: ADDRESS_EXTENSION_FREE
       IdentificationFieldType: IDENTIFICATION_FIELD_TYPE_ABSOLUTE
    GranularityODTEntrySizeDAQ: GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE
            MaxODTEntrySizeDAQ: 255
            OverloadIndication: NO_OVERLOAD_INDICATION
       DAQAlternatingSupported: []
            PrescalerSupported: []
               ResumeSupported: []
                          STIM: [1×0 xcp.a2l.STIM]
                     Timestamp: [1×1 xcp.a2l.TimestampSupported]
                        Events: [1×1 xcp.a2l.Event Map]

トランスポート層情報の表示

XCP パケットは、選択されたトランスポート プロトコルのパケットであるトランスポート層のフレームに埋め込まれます。A2L ファイルは、サポートされているプロトコルのトランスポート層情報を提供します。特定のプロトコルのトランスポート層情報が空の場合、サーバーはそのトランスポートをサポートしていません。XCP プロトコル仕様では、CAN や Ethernet などのさまざまなトランスポート層が許可されます。

この例では、IP アドレスとポートを必要とする XCP over Ethernet 用に構成された A2L ファイルを使用します。これらは A2L ファイルで指定されます。

A2L ファイル オブジェクトの TransportLayerTCPInfo プロパティを介してトランスポート層の詳細を表示します。

a2lfile.TransportLayerTCPInfo
ans = 
  XCPonIP with properties:
          CommonParameters: [1×1 xcp.a2l.CommonParameters]
    TransportLayerInstance: ''
                      Port: 17725
                   Address: 2.1307e+09
             AddressString: '127.0.0.1'

A2Lファイルを閉じる

ワークスペースから変数をクリアして、A2L ファイルへのアクセスを閉じます。

clear a2lfile