【XCP】最小構成のMBD事例 第2章 その189【PyXCP⑪】

【XCP】最小構成のMBD事例 第2章 その189【PyXCP⑪】 事例
【XCP】最小構成のMBD事例 第2章 その189【PyXCP⑪】

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

はじめに

前回はpythonのnamedtupleを利用してSET_DAQ_PTR、WRITE_DAQのコマンドを投げた。
今回は一個しかないのでほぼ効能はないが、ODT_ENTRYが増えてきた際には大きな効能が見込めそう。

今回からDAQ起動に入る。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

太郎くん
太郎くん

あとはDAQ起動だねー。

フクさん
フクさん

そうだね。
SET_DAQ_LIST_MODE
START_STOP_DAQ_LIST
START_STOP_SYNCH
のコマンドを投げるわけだが、対応したメソッドは以下になる。

SET_DAQ_LIST_MODE → setDaqListMode
START_STOP_DAQ_LIST → startStopDaqList
START_STOP_SYNCH → startStopSynch

太郎くん
太郎くん

SET_DAQ_LIST_MODEでDAQ list毎のパケット構成を調整して、
START_STOP_DAQ_LISTでDAQ起動可能状態にして、
START_STOP_SYNCHで一気にDAQ起動するんだっけか。
とりあえず、以下のコードを実施してみよう。

xm.setDaqListMode(0x10, 0, 1, 1, 0)
res = xm.startStopDaqList(0x02, 0)
print("startStopDaqList #0", res)
xm.startStopSynch(0x01)

結果

startStopDaqList #0 Container: 
    firstPid = 0

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]
-> START_STOP mode=02h, daq=0
<- 0xFF
-> CC_START_STOP_SYNCH mode=01h
<- 0xFF

結果確認

フクさん
フクさん

うん。
DAQが起動されてるようだ。
CAN回線上もDAQパケットが流れまくってる
10[ms]周期だし、CANIDデータフィールドを見てもDAQパケットであることは間違い無いだろう。

 15.754830 1  2               Rx   d 7 00 63 00 00 00 00 00
 15.764824 1  2               Rx   d 7 00 C7 00 00 00 00 00
 15.774941 1  2               Rx   d 7 00 2C 01 00 00 00 00
 15.784837 1  2               Rx   d 7 00 8F 01 00 00 00 00
 15.794717 1  2               Rx   d 7 00 F2 01 00 00 00 00
 15.804809 1  2               Rx   d 7 00 56 02 00 00 00 00
 15.814795 1  2               Rx   d 7 00 BB 02 00 00 00 00
 15.824790 1  2               Rx   d 7 00 1E 03 00 00 00 00
 15.834735 1  2               Rx   d 7 00 82 03 00 00 00 00
 15.844573 1  2               Rx   d 7 00 E4 03 00 00 00 00
太郎くん
太郎くん

おー!
いいね!

太郎くん
太郎くん

ん?
でもDAQパケットがCAN回線上に流れてるのはわかったけど、
PyXCP側は特に該当するデータは拾えて無さそうだな?
なんか拾い方があるのだろうか?

フクさん
フクさん

そうだね。
今までのやり方はあくまでXCPのコマンドパケットに関連した処理で
DAQパケットの取得はやや異なる
次回はそこらへんの説明をしよう。

まとめ

フクさん
フクさん

まとめだよ。

  • DAQ起動すべく以下のコマンドに相当するメソッドを実行。
    • SET_DAQ_LIST_MODE。
    • START_STOP_DAQ_LIST。
    • START_STOP_SYNCH。
  • 狙い通りDAQ起動はした。
    • CAN回線上でDAQパケットが流れていることが確認できた。
    • しかし、PyXCP上でDAQパケットを確認する術が不明。

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

コメント

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