メインコンテンツ

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

Simulink で XCP データ取得を実行する

この例では、XCP ブロックを使用して、XCP サンプル サーバーから Simulink ® の測定値を取得する方法を示します。XCP サンプル サーバーは、XCP の例のみを対象に特別に設計されています。

Vehicle Network Toolbox ™ は、Controller Area Network (CAN)、Controller Area Network Flexible Data-Rate (CAN FD)、および User Datagram Protocolル (UDP) を含む複数のトランスポート層を介してサーバーとインターフェイスするための XCP ブロックを提供します。この例では、XCP CAN Configuration、XCP CAN Data Acquisition、および XCP CAN Transport Layer ブロックを使用して、CAN プロトコルを介してデータ転送を実行します。

XCP は、モデル、アルゴリズム、または ECU の内部パラメータと変数にアクセスして変更するために使用される高レベル プロトコルです。詳細については、ASAM 規格を参照してください。

A2Lファイルを開く

XCP サーバーへの接続を確立するには、A2L ファイルが必要です。A2L ファイルには、XCP サーバーが提供するすべての機能と性能、およびサーバーに接続する方法の詳細が記述されています。xcpA2L 関数を使用して、サーバー モデルを記述する A2L ファイルを開きます。

a2LInfo = xcpA2L("SampleECU.a2l")
a2LInfo = 
  A2L with properties:

   File Details
                 FileName: 'SampleECU.a2l'
                 FilePath: '/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex11419635/SampleECU.a2l'
               ServerName: 'SampleServer'
                 Warnings: [0×0 string]

   Parameter Details
                   Events: {'Event DAQ 100ms'}
                EventInfo: [1×1 xcp.a2l.Event]
             Measurements: {'Line'  'PWM'  'Sine'}
          MeasurementInfo: [3×1 containers.Map]
          Characteristics: {'Gain'  'yData'}
       CharacteristicInfo: [2×1 containers.Map]
                 AxisInfo: [1×1 containers.Map]
            RecordLayouts: [3×1 containers.Map]
             CompuMethods: [1×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: [1×1 xcp.a2l.XCPonCAN]
    TransportLayerUDPInfo: [0×0 xcp.a2l.XCPonIP]
    TransportLayerTCPInfo: [1×1 xcp.a2l.XCPonIP]

XCPサンプルサーバーを起動する

XCP サンプル サーバーは、実際の XCP サーバーの動作を制御された方法で模倣します。この場合、機能が制限された例にのみ役立ちます。ローカルの Sample ECU クラスを使用して sampleServer オブジェクトを作成します。sampleServer が MATLAB ® ワークスペースに作成されます。

sampleServer = SampleECU(a2LInfo,"CAN","MathWorks","Virtual 1",1);

モデル例を開く

open_system("XCPDataAcquisitionInSimulinkExample.slx")

XCPブロックパラメータの設定

サンプル サーバーからの測定値 PWMSine、および Line の XCP データ取得を設定するためのモデルを作成します。

  • XCP Configuration ブロックを使用し、A2L ファイル SampleECU.a2l を選択します。

  • XCP CAN Transport Layer ブロックを使用して、DeviceMathworks Virtual 1 Channel 2 に設定します。トランスポート層は、指定された仮想チャネルを介して CAN 経由で XCP メッセージを転送するように構成されています。

  • XCP Data Acquisition ブロックを使用して、指定されたイベントで選択した測定値を受信します。この例では、3 つの測定すべてに対して XCP Data Acquisition ブロックを選択しました。

サーバーから受信した測定値を可視化する

モデルを実行して結果をプロットし、サーバーからの PWMSineLine の測定値を確認します。X 軸はシミュレーションのタイムステップに対応します。サンプル サーバーの初期化には時間がかかるため、最初はスコープにデータ出力はありません。

demoVNTSL_XCPCANCommunication_Scope.PNG

モデルを閉じてクリーンアップする

close_system("XCPDataAcquisitionInSimulinkExample.slx")
clear sampleServer a2LInfo