【XCP】最小構成のMBD事例 第2章 その170【XCP Basic㉔】

【XCP】最小構成のMBD事例 第2章 その169【XCP Basic㉓】 事例
【XCP】最小構成のMBD事例 第2章 その169【XCP Basic㉓】

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

はじめに

前回からDAQ listの中の要素であるODT_ENTRYの更新をし始めた。
SET_DAQ_PTRで参照するODT_ENTRYを指定し、
WRITE_DAQで更新する。
更新後は自動的に後方のODT_ENTRYへ参照が移動するのでSET_DAQ_PTRの投げ直しが最小限に留めることができる。

DAQ listの構造的準備、内部データ的準備が終わると次は実際にDAQ listの送信時の詳細設定の話になる。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

DAQ list送信時の詳細設定

太郎くん
太郎くん

もうほぼDAQ関連の準備って終わったんじゃない?

フクさん
フクさん

いんや。
設定と言う意味ではもう一個重要なものがある。

太郎くん
太郎くん

というと?

フクさん
フクさん

DAQ listにそってECUが計測データを送信する際に送信方法を設定する必要がある。

太郎くん
太郎くん

送信方法?

DAQの送信方法

フクさん
フクさん

まぁ送信方法と言ってもパラメータとしては限られていて、
以下のそれになる。

  • MODE
    • PID_OFF
    • TIMESTAMP
    • DIRECTION
    • DAQ or STIM
  • EventChannel number
  • prescaler
太郎くん
太郎くん

なんかいろいろあるねー。

フクさん
フクさん

今回はTIMESTAMPを有効にして、DIRECTIONをDAQ
EventChannelは1で10ms周期を指定しよう。
prescalerはこの10msをさらに分周するときに使うが、
今回は10ms周期のままでOKなので、1を入れておけば良いだろう。

太郎くん
太郎くん

EventChannelは1を指定すると常に10ms周期って意味になるの?

フクさん
フクさん

いんや。
ECUの実装依存だ。
今回のXCP Basicの実装だと以下になる。
EventChannel = 1 だと10ms
EventChannel = 2 だと100ms
EventChannel = 3 だと1ms
XCP Basic側ののXcpEvent関数の呼ばれる周期で上記の仕様が確定する。

太郎くん
太郎くん

あー、本当にECU依存の話なのね。

SET_DAQ_LIST_MODE

フクさん
フクさん

というわけで、上記の条件にあったSET_DAQ_LIST_MODEの電文はこれになる。
0xE0, 0x10, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00
2byte目がMode。
3~4byte目がDAQ_LIST_NUMBER。
5~6byte目がEvent channel number
7byte目がprescaler

太郎くん
太郎くん

じゃー、投げて見るねー。

xcp_sendrecv([0xE0, 0x10, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, ]);
Send msg : Timestamp:        0.000000   ID: 0001 S DLC: 8 e0 10 00 00 01 00 01 00
Recv msg : Timestamp: 1635852341.864478 ID: 0002 S DLC: 1 ff Channel: 1

XCP Basicのコンソール画面

-> SET_DAQ_LIST_MODE daq=0, mode=10h, prescaler=1, eventchannel=1
<- 0xFF
DAQ 0:
 eventchannel=0001h, prescaler=1, firstOdt=0, lastOdt=0, flags=11h
 firstPid=00h
  ODT 0 (0):
   pid=0:
   firstOdtEntry=0,lastOdtEntry=0:
   [00000004h,4]
太郎くん
太郎くん

うまく行ったみたいだね。
DAQ list 0番に何かしら設定されたっぽい。

フクさん
フクさん

まぁたぶんOKだろう。

まとめ

フクさん
フクさん

まとめだよ。

  • SET_DAQ_LIST_MODEコマンドでDAQの計測データ送信ポリシーを設定できる。
    • TIMESTAMP有無、使用するEvent channel、分周比など。
  • Event channelと実際の周期はECU側の実装依存。
    • 今回は1:10ms、2:100ms、3:1msとなっている。

バックナンバーはこちら。

コメント

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