バックナンバーはこちら。
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パケットを確認する術が不明。
バックナンバーはこちら。
コメント