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

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

バックナンバーはこちら
https://www.simulationroom999.com/blog/model-based-of-minimum-backnumber/

はじめに

今回はASAM XCPのフレーム構成やパケット構成の話。

XCPonEthernetのヘッダ、パケット、テイルの話。
CTOパケット構成の話。
CTOパケットの種類の話。

などなど。

登場人物

博識フクロウのフクさん

イラスト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

XCPonEthernet

フクさん
フクさん

じゃ、XCPの詳細に入るね。

太郎くん
太郎くん

うん。
ちなみに今回の物理層はEthernetらしいけど、それで変わる部分ってあるの?

フクさん
フクさん

あるよ。
実際のパケットの中身は物理層が変っても変化しないけど、
パケットの外側のフレーム構成が変わることがある。
今回はXCPonEthernetのフレームを説明しよう。

太郎くん
太郎くん

うん。

フクさん
フクさん

絵で描くとこんな感じ。
たぶん、ASAMのXCP仕様のトランスポート層の仕様に書かれている絵と一緒だと思う。

XCP on Ethernet(TCP/IP and UDP/IP)Message (Frame)、XCP Header、XCP Packet、XCP tail、Control Field for Ethernet、Length(LEN)、LEN、CTR、PID,FILL、DAQ、TIMESTAMP、DATA、FILL
太郎くん
太郎くん

あれ?パクってきた?
ASAMに加盟してないとだめなんじゃないの?

フクさん
フクさん

記憶を頼りに書いたんだよ!!

太郎くん
太郎くん

じゃ、大丈夫なのかな?

フクさん
フクさん

大きく以下の構成に分かれる。

  • XCPヘッダ
    • LENgth(LEN)とCounTeR(CTR)で構成される。
    • エンディアンは必ずリトルエンディアン。
    • LENGTHはXCPパケット長[byte]を指定。
    • COUNTERはパケット欠落検出用で、送信毎にインクリメントされる。
  • XCPパケット
    • ここにCTOパケットかDTOパケットが乗る
  • XCPテイル
    • 0~3[byte]のFill byte。
    • アライメント調整用。
    • 無くても良い。
太郎くん
太郎くん

XCPパケットの中もいろいろありそうだね。

パケット構成

フクさん
フクさん

パケット構成だけ抜き出すと以下。

XCP Packet、Identification Field、PID、FILL、DAQ、TIMESTAMP、DATA
フクさん
フクさん

XCPパケットは、
CTODTOかでやや構成が変ってくるよ。

太郎くん
太郎くん

どっちが簡単そう?

フクさん
フクさん

まぁ構成の話としてはCTOかな?

太郎くん
太郎くん

じゃ、CTOからの説明でよろしく。

CTO

フクさん
フクさん

CTOパケットはこんな構成

XCP CTO Packet、PID、DATA,Identification Field、Data Field
太郎くん
太郎くん

あれ?
さっきのXCPパケットのFILL、DAQ、TIMESTAMPってのが居なくなったよ?

フクさん
フクさん

うん。
CTOパケットではその3つは使わない。

太郎くん
太郎くん

それでCTOの方が簡単だと。

フクさん
フクさん

そうなんだけど、CTOもさらに細分化される。

太郎くん
太郎くん

え?

フクさん
フクさん

CTOパケットは以下に分かれる。

  • CMD (Command Packet)
  • RES (Response Packet)
  • ERR (Error Packet)
  • EV (Event Packet)
  • SERV (Service Request Packet)
太郎くん
太郎くん

お、おう。

フクさん
フクさん

とりあえず、表にまとめた。

CMD (Command Packet)マスターからスレーブへの指示。PIDで指示内容を指定。
RES (Response Packet)PIDは0xFF固定。CMDに対する応答で、内容はCMDに依存。
ERR (Error Packet)PIDは0xFE固定。CMDに対するエラー応答で、内容はCMDに依存。
EV (Event Packet)PIDは0xFD固定。スレーブ側のイベント発行に利用。(Overloadとか)
SERV (Service Request Packet)PIDは0xFC固定。
太郎くん
太郎くん

EVのところのOverloadってなに?

フクさん
フクさん

DAQリストってのが、

とあるイベントに連動してスレーブ(ECU)から送信されるんだけど、
次のイベントまで間に合わないことがあるんだ。
その可能性が出てきた問に高負荷(Overload)であることを通知してくるようなしてこないような。

太郎くん
太郎くん

なんかあやふやだな。

フクさん
フクさん

オプショナルな仕様なんで、実装されていないことが多いんだよ。

太郎くん
太郎くん

オプショナル?やってもやらなくて良いってこと?
なんかビシっと「やれ!」って方がスッキリするのに。

フクさん
フクさん

ECUの検証用機能だからね。
検証用機能にコストを掛けられないことを想定して、
結構いろいろな仕様がオプショナルになってるんだよ。

太郎くん
太郎くん

まぁ確かにECUの主目的からは外れている機能だし、

そう言われればそんな気がする。

太郎くん
太郎くん

SERVのところの説明が説明になってないんだけど。

フクさん
フクさん

忘れた。

太郎くん
太郎くん

書き忘れたの?

フクさん
フクさん

何だったかを忘れた。
どっちにしてもそうそう出てくる機能じゃないんで見なかったことにしよう。

太郎くん
太郎くん

フクさんまであやふやに・・・。

フクさん
フクさん

次回はDTOの話をするよ。

まとめ

フクさん
フクさん

まとめだよ。

  • XCPonEthernetはヘッダ、パケット、テイルの三つ組み構成。
  • CTOパケットはPIDとDATAだけの構成。
  • CTOパケットはCMD、RES、ERR、EV、SERVの5種類。
    • 基本的にはCMD、RES、ERRだけ知っておけば良い。

バックナンバーはこちら

コメント

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