同期測定において、ECUの制御アプリケーションがスレーブに測定タイミングを伝えたとき、どのような処理が行われるのかを以下で説明します。
(1)制御アプリケーションが、スレーブに測定タイミングを通達します。この通達は、通常、スレーブのドライバ処理でイベントチャンネルを引数とする処理を持ち、これを呼び出すことで実現しています。
(2)スレーブには、マスターから指定された測定対象メモリのアドレスをODTエントリとして管理するバッファがあり、このバッファを1番の呼び出し時に確認し、指定アドレスのメモリを読み出します。
(3)読み出したメモリをODTの単位で集めて、DAQリストの分だけのDTOパケットを生成します。
図10が、ElementとODTエントリ、DAQリストとECUの制御アプリケーションの関係を表した例です。制御アプリケーションにVector社のスレーブドライバを組み込んだ場合、「XcpEvent(イベントチャンネル)」というC言語関数を呼び出すことで、ODTエントリのバッファを基に、ECUメモリからElementが読み込まれ、DTOパケットが作られます。
図11は、ECUのメモリ内の測定対象であるElementが、DTOパケットとしてネットワーク上に送信されるまでの関係を示したものです。
図11では、ElementをODTエントリに従って7つ測定した結果、「0x19」「0x6C」「0xF0」「0xBF」「0xC0」「0xA9」「0x02」が取り出され、1つのODTとしてDTOパケットが作られています。そして、このDTOパケットには最初の1バイトにPID、2バイト目以降には測定された時点でのElementの内容が入っています。このようにPIDに「0」〜「0xFB」の値を持つDTOパケットを「DAQ」と呼びます。
このように、測定対象となるECUメモリ、測定対象を管理するODTからDAQリスト、測定タイミングを決める制御アプリケーション、測定タイミングを区別するためのイベントチャンネルを基に、DTOパケットを使って測定データをマスターへ送ることで、同期測定を実現しています。
XCPでの同期測定には、これまで説明したもの以外にも測定規模・用途に応じて、さまざまな利用形態があります。これらの利用形態について、代表的なものを紹介します。
測定対象を管理するDAQリストが持つODTとそのエントリ数が多いほど、測定できる測定点数が増えることになります。また、測定タイミングとなるイベントチャンネルの数だけDAQリストを持つことで、ECUのすべての測定タイミングに対する測定が可能になります。しかし、これらの数を増やすとECU内での管理バッファが増え、結果としてECUのメモリを消費することになります。また、ECUに10[msec]と25[msec]の制御周期があるような場合、ある測定では10[msec]の制御周期での測定点数が多いが、別の測定では25[msec]が多いなど、測定する場面によって測定点数が異なる場合があります。こうした用途向けに、スレーブ側でDAQリスト、ODT、ODTエントリの数を測定ごとにダイナミックに変えられる機能「ダイナミックDAQ」と呼ばれるものがあります。それとは逆に、XCPドライバの組み込み時に、あらかじめ数が固定化されているような場合は「スタティックDAQ」と呼びます。1つのスレーブでスタティック/ダイナミックDAQのどちらかの機能を持つことになります。
マスターとスレーブ間の通信において、ゲートウェイが入ることで時間差が生じるような場合、または無線通信などを使用しているため、通信時間に揺らぎが生じるような場合、同期測定では測定タイミングがマスターから見ると“不明”になります。これを防ぐために、「タイムスタンプ付きDAQ」が用いられます。スレーブ側は、測定時間のタイムスタンプ値を付けたDAQをDTOパケットでマスターへ送信します。そして、これを受け取ったマスター側は、付加されたタイムスタンプ値を読み出すことで、正しい測定タイミングを知ることができます。
キャリブレーションは、ECU内部ソフトウェアにあるパラメータを書き換えるため、マスターからのXCPアドレスの指定コマンド、および書き変えるデータを送信するコマンドを送り、スレーブがそれに応じて該当するパラメータのアドレスを導き出して、書き換えを実行し、レスポンスを返します。
図12は、XCPマスターによってXCPアドレス拡張を「0」、XCPアドレスを「0x0041D5C8」から2バイトのパラメータを「0x0064」で書き換えている様子をトレースした結果です。
XCPには、測定/キャリブレーションだけでも数多くの機能が存在します。今回紹介したもの以外にも、ECU内のフラッシュメモリのような不揮発メモリに対するアクセス機能や、ECUに対するアクセスをプロテクトする機能など、実に多くの機能が盛り込まれています。
以上、今回はXCPプロトコルの通信の仕組みや機能について詳しく説明しました。次回は、「XCPの動向と適用事例」について紹介したいと思います。ご期待ください! (次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.