バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はDAQ list構築とODT_ENTRYの更新まで実施。
この段階ではまだDAQ listが存在するだけで、DAQかSTIMかの性質の話までは到達していない。
恐らく、今回辺りからSTIMが使えるかどうかの確認に入っていくはず。
登場人物
博識フクロウのフクさん
イラスト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
AUTOSAR-XCPのDAQ listモード設定コマンドの動作確認
DAQ listの構築とODT_ENTRYの更新ができたから、
DAQ listモードを設定する。
ここでそれぞれのDAQ listがDAQかSTIMか切り替わることになる。
もしSTIMが未対応だとここのコマンドでエラーとかでちゃうのか・・・。
そうなるね。
まぁ試してみよう。
DAQ listモード設定
xm.setDaqListMode(0x10, 0, 1, 1, 0) # DAQ,TimeStamp付き,イベントチャンネル1(10ms周期)に設定
xm.setDaqListMode(0x02, 1, 3, 1, 0) # STIM,TimeStamp無し,イベントチャンネル1(1ms周期)に設定
CAN回線ログ
# SET_DAQ_LIST_MODE
0.586187 1 1 Rx d 8 E0 10 00 00 01 00 01 00
0.589431 1 2 Rx d 1 FF
# SET_DAQ_LIST_MODE
0.609550 1 1 Rx d 8 E0 02 01 00 03 00 01 00
0.610795 1 2 Rx d 1 FF
STIMの方はTimeStamp用のフィールドは無しなのか。
まぁマスターから送るから不要で良いのか。
イベントチャンネルが
DAQは10msに対してSTIMは1msになってるね。
なんで?
STIMはイベントチャンネルに同期して実際のRAMに書き込みが実施される。
1ms周期に設定しておけば、ほぼ即時設定することになる。
なるほど。
10ms周期だと、STIMを発行してから実際に更新するまでに少し間が空いちゃうってことか。
それにSTIMの設定でエラーが出てないから、
一応STIMは対応できてるって体にはなってるってことだね。
START_STOP_DAQ_LIST
そのままSTART_STOP_DAQ_LISTでSelectedの状態にしてしまおう。
DAQ開始可能状態ってやつだね。
実際の開始はSTARRT_STOP_SYNCHコマンドだけど、その時に同時に開始させるための仕掛けだったね。
そうそう。
コードとしては以下になる。
res = xm.startStopDaqList(0x02, 0)
print("startStopDaqList #0", res)
res = xm.startStopDaqList(0x02, 1)
print("startStopDaqList #1", res)
結果
startStopDaqList #0 Container:
firstPid = 0
startStopDaqList #1 Container:
firstPid = 1
CAN回線ログ
# START_STOP_DAQ_LIST
0.624222 1 1 Rx d 4 DE 02 00 00
0.625639 1 2 Rx d 2 FF 00
# START_STOP_DAQ_LIST
0.645136 1 1 Rx d 4 DE 02 01 00
0.645587 1 2 Rx d 2 FF 01
これで完全にDAQとSTIMの準備ができたねー。
まとめ
まとめだよ。
- AUTOSAR-XCPのDAQ listモード設定コマンドの動作確認実施。
- SET_DAQ_LIST_MODEを実施。
- STIM側はTimeStampFieldは不要なので削除指定。
- さらにRAM値への更新速度を上げるため1ms周期。
- START_STOP_DAQ_LISTを実施。
- SET_DAQ_LIST_MODEを実施。
バックナンバーはこちら。
コメント