XCPプロトコルの通信の仕組みと機能測定/キャリブレーションプロトコルXCP入門(2)(3/3 ページ)

» 2010年05月14日 00時00分 公開
[庄井美章(ベクター・ジャパン),@IT MONOist]
前のページへ 1|2|3       

同期測定時の処理

 同期測定において、ECUの制御アプリケーションがスレーブに測定タイミングを伝えたとき、どのような処理が行われるのかを以下で説明します。

(1)制御アプリケーションが、スレーブに測定タイミングを通達します。この通達は、通常、スレーブのドライバ処理でイベントチャンネルを引数とする処理を持ち、これを呼び出すことで実現しています。

(2)スレーブには、マスターから指定された測定対象メモリのアドレスをODTエントリとして管理するバッファがあり、このバッファを1番の呼び出し時に確認し、指定アドレスのメモリを読み出します。

(3)読み出したメモリをODTの単位で集めて、DAQリストの分だけのDTOパケットを生成します。

 図10が、ElementとODTエントリ、DAQリストとECUの制御アプリケーションの関係を表した例です。制御アプリケーションにVector社のスレーブドライバを組み込んだ場合、「XcpEvent(イベントチャンネル)」というC言語関数を呼び出すことで、ODTエントリのバッファを基に、ECUメモリからElementが読み込まれ、DTOパケットが作られます。

XCPと制御アプリケーションの関係 図10 XCPと制御アプリケーションの関係
※ベクター・ジャパンの資料を基に作成

測定対象とDTOパケット

 図11は、ECUのメモリ内の測定対象であるElementが、DTOパケットとしてネットワーク上に送信されるまでの関係を示したものです。

ElementとDTOパケットの関係 図11 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:

 測定対象を管理する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」が用いられます。スレーブ側は、測定時間のタイムスタンプ値を付けたDAQをDTOパケットでマスターへ送信します。そして、これを受け取ったマスター側は、付加されたタイムスタンプ値を読み出すことで、正しい測定タイミングを知ることができます。

キャリブレーション

 キャリブレーションは、ECU内部ソフトウェアにあるパラメータを書き換えるため、マスターからのXCPアドレスの指定コマンド、および書き変えるデータを送信するコマンドを送り、スレーブがそれに応じて該当するパラメータのアドレスを導き出して、書き換えを実行し、レスポンスを返します。

 図12は、XCPマスターによってXCPアドレス拡張を「0」、XCPアドレスを「0x0041D5C8」から2バイトのパラメータを「0x0064」で書き換えている様子をトレースした結果です。

DOWNLOADコマンドによるキャリブレーション 図12 DOWNLOADコマンドによるキャリブレーション

そのほかのXCP機能

 XCPには、測定/キャリブレーションだけでも数多くの機能が存在します。今回紹介したもの以外にも、ECU内のフラッシュメモリのような不揮発メモリに対するアクセス機能や、ECUに対するアクセスをプロテクトする機能など、実に多くの機能が盛り込まれています。



 以上、今回はXCPプロトコルの通信の仕組みや機能について詳しく説明しました。次回は、「XCPの動向と適用事例」について紹介したいと思います。ご期待ください! (次回に続く)

【 筆者紹介 】
庄井 美章(しょうい よしあき)
ベクター・ジャパン株式会社 適合ツール部 マネージャー

ベクター・ジャパンの適合ツール部にてECUへのキャリブレーション実現にかかわるツール、プロトコル、ハードウェアの提供業務に従事。また、ベクターオンラインセミナーにおいて「モデルベース開発における測定と適合」などのテーマで講師も務めている。

ベクター・ジャパン
http://www.vector-japan.co.jp/
ベクターオンラインセミナー
http://www.vector-japan.co.jp/vj_webinars_jp.html


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.