【上流検証】最小構成のモデルベース開発事例 その38【Bypass④】

事例

バックナンバーはこちら

スポンサーリンク

はじめに

今回はASAM XCPのDTOパケットの話。

登場人物

博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

DTOパケット構成のバリエーション?

フクさん
フクさん

DTOパケット構成なんだけど、地味にバリエーションが多い

太郎くん
太郎くん

コマンドの種類が多いってイメージ?

フクさん
フクさん

うんにゃ。構成が多い

太郎くん
太郎くん

構成が多い?
構成なんだから共通なんじゃないの?

フクさん
フクさん

そこが共通じゃないんで厄介。
XCPの仕様で最初につまづくのかここら辺なんじゃないかなって思ってる。

太郎くん
太郎くん

なんか嫌な予感しかしない。

フクさん
フクさん

とりあえず、どういったバリエーションがあるか言ってくよ。

太郎くん
太郎くん

うん。

フクさん
フクさん

DTOパケットは大きく4パターン。
①絶対PID (1byte構成)
②相対PID_BYTE (2byte構成)
③相対PID_WORD (3byte構成)
④相対PID_WORD_ALIGNED (4byte構成)

太郎くん
太郎くん

名前から何かを全くイメージできないんですけど。

フクさん
フクさん

ここはDAQ、ODT(Object Descriptor Table)とODT entryの概念を把握しないと理解できないと思う。
とりあえず、たぶん今回はこれだろうと思われる④のパターンを張っておく。

太郎くん
太郎くん

なんかとんでもない前提知識が要るような気がする。。。

フクさん
フクさん

今回はXCPの実装をするわけではなく、

ツールに設定するのに必要な知識を得るのが目的なので、
まずは4パターンあるよってだけ覚えておいて。

太郎くん
太郎くん

そういうことならばOK!

4パターンTimeStampフィールド

フクさん
フクさん

そして、

TimeStampフィールドも4種類あって、

前述の4パターンとは非依存に定義されている。

太郎くん
太郎くん

え?

ってことは4×4の16パターンあるってこと?

フクさん
フクさん

仕様上はそうなるね。
実際は2パターンくらい収まるとは思うけど。

フクさん
フクさん

TimeStampフィールドのパターンは至ってシンプルで以下。

  • なし
  • BYTE
  • WORD
  • DWORD
太郎くん
太郎くん

「なし」ってパターンもあるのか。。。
そもそもTimeStampフィールドの役割ってなに?

フクさん
フクさん

DAQリストが複数のフレームに分かれることが、あり得るんだけど、
複数のフレームに分かれたとしても、ECU内のデータ取得タイミングは同一なんだ。
ツール側はこのTimeStampフィールドを見て、前回取得したデータの時間差や周期の判定に使う。

太郎くん
太郎くん

「なし」の場合だと、どうなるの?

フクさん
フクさん

ツールの仕様依存ではあるが、
たぶん、DAQリストの先頭フレームを受信したタイミングを起点にするんじゃないかな。

パターンが多い理由は?

太郎くん
太郎くん

そもそも、なんでこんな種類がいっぱいあるの?

フクさん
フクさん

使用する回線依存だったり、

ECUの実装難度を下げる目的だったりするかな。

フクさん
フクさん

たとえば、CANの場合、1フレームのデータフィールドが8byteしかない。
8byteしかない中で、データと関係ない情報が4byte以上あったらどうなる?

太郎くん
太郎くん

あー、ものすごく非効率になるのか!?

フクさん
フクさん

そういうこと。
Ethernetの場合は1フレームが1500byteくらいあるので、4byteや8byte使ってもそれほど影響はない。
よって、全部ありありな仕様を選択することが多い。

太郎くん
太郎くん

あー、それで2パターンに集約されるって言っていたのか。
余裕が無ければ、思いっきり削減するし、余裕があれば、全部盛り込むし。

フクさん
フクさん

ただ、昨今だと、CANの上位仕様のCAN-FDっての出てきて、

これがデータフィールドが最大で64byteなんだ。
64byteだとどう転ぶかはちょっと予測できなくて、

結構使われて無かった微妙なパターンが出てくるかも。

太郎くん
太郎くん

それは・・・面倒だな・・・。

フクさん
フクさん

まぁ今回はEthernetってことで全部ありありパターンと予測している。

太郎くん
太郎くん

ここらへんは早々に仕様をもらっておいた方がよいかな?

フクさん
フクさん

そうだね。
TCPとUDPのどちらを使うのかってものあるし。

太郎くん
太郎くん

ん?TCPとUDPだと何か変わるの?

フクさん
フクさん

大きく変わる部分としてはセッションの確立のさせかたが変るかな。
UDPだと、明示的にCONNECT、DISCONNECTというコマンドでセッション制御するが、
TCPの場合はTCPとしてのセッションを確立する。という違いがある。
まぁ絶対とは言えないけど、UDPであることの方が多いかな?
他の物理層があまりTCPっぽいのが無いし、実装形態を合わせようと思うとUDPになり易い。

太郎くん
太郎くん

ものすごく重要なことをサラッと言っているような。。。
とりあえず、即行で仕様書をもらってくるよ。

まとめ

フクさん
フクさん

まとめだよ。

  • DTOパケットのパターンは4パターン。
  • TimeStampフィールドのパターンも4パターン。
  • 使用する物理層で使用できるデータ領域に依存しておおよそ2パターンに集約される。
    • 最小構成版と最大構成版の2パターン。
    • しかし、CAN-FDの台頭に伴い、中間のパターンが乱立する可能性あり。

バックナンバーはこちら

コメント

タイトルとURLをコピーしました