バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はSTART_STOP_DAQ_LISTコマンドでDAQ開始可能状態まで持ってきた。
これであと1コマンド投げればDAQが起動し、
計測データを送信し始めるはず。
というわけで、
今回は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起動直前まで来てるから、
あと1コマンド投げればDAQの振る舞いを見れるね。
そうだね。
コマンドとしてはSTART_STOP_SYNCHコマンドになる。
あと、DAQを起動するとXCPスレーブから能動的にCANフレームが送信されるから、
同時にCAN回線モニタもしておこう。
えーっと、python-canにcan.loggerってのが同梱されてるんだっけか?
そうだね。
以下のコマンドで起動できて、canlog.ascに回線ログが記録される。
python -m can.logger -i vector -c 0 -f canlog.asc
確かここらへんでやったね。
DAQ起動
START_STOP_SYNCHコマンドの電文は以下になる。
0xDD, 0x01
2byte目が開始停止指示で、
0x00:停止
0x01:開始
の意味になってる。
なるほど。
これはシンプルだ。
まずは、事前にcan.loggerを起動しておいて・・・。
それからSTART_STOP_SYNCHコマンドを送信!
xcp_sendrecv([0xDD, 0x00, ]);
Send msg : Timestamp: 0.000000 ID: 0001 S DLC: 2 dd 00
Recv msg : Timestamp: 1636380856.168114 ID: 0002 S DLC: 1 ff Channel: 1
XCP Basicコンソール画面
-> CC_START_STOP_SYNCH mode=01h
<- 0xFF
コマンドとしてはOKっぽい。
CAN回線ログ
CAN回線ログも見てみよう。
こんな感じのが取れてた。
Begin Triggerblock
0.000000 Start of measurement
0.000000 1 1 Rx d 2 DD 01
0.009650 1 2 Rx d 1 FF
0.013541 1 2 Rx d 7 00 00 00 00 00 00 00
0.029491 1 2 Rx d 7 00 9F 00 00 00 00 00
0.044909 1 2 Rx d 7 00 39 01 00 00 00 00
0.060555 1 2 Rx d 7 00 D6 01 00 00 00 00
0.076120 1 2 Rx d 7 00 71 02 00 00 00 00
0.091554 1 2 Rx d 7 00 0C 03 00 00 00 00
0.107241 1 2 Rx d 7 00 A9 03 00 00 00 00
0.122405 1 2 Rx d 7 00 40 04 00 00 00 00
0.138175 1 2 Rx d 7 00 DE 04 00 00 00 00
0.154165 1 2 Rx d 7 00 7E 05 00 00 00 00
0.169099 1 2 Rx d 7 00 13 06 00 00 00 00
0.184148 1 2 Rx d 7 00 AA 06 00 00 00 00
0.199229 1 2 Rx d 7 00 40 07 00 00 00 00
CANIDが2でデータフィールドの先頭が0x00になってるのがDAQパケットかな?
そうだね。
2~3byte目がなんか値が常に動いてるみたいだけど、
なんかそういう変数を計測してたんだっけか?
2~3byte目はタイムスタンプだな。
単位はXCP Basicのデフォルトの実装だと100[us]になってるはずだ。
ちなみにリトルエンディアンで埋まってる。
そういえば、タイムスタンプ有効で設定してたっけ。
そうすると、その後ろの0x00000000が計測値ってことか。
当たり前だけど、何をしていないアドレスだから0値のままってことか。
次回は、ここに外部から書き込みをして更新状態を見てみよう。
まとめ
まとめだよ。
- START_STOP_SYNCHコマンドを投げて見た。
- 並行してcan.loggerでCAN回線モニタを実施。
- DAQパケットの計測ができた。
- タイムスタンプ有効設定をしていたため先頭の方にタイムスタンプが埋まっている。
- タイムスタンプの後ろから計測データが続く。
- 今回は0値が取得されている。
バックナンバーはこちら。
コメント