バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はついにDAQを起動した。
そしてDAQパケットの回線モニタもしてみた。
タイムスタンプを有効にしているので、
それの確認は取れたが、計測しているRAMが0値固定なのであまり面白みはない。
今回は外部から計測RAMを書き換え方法や方針を確認する。
登場人物
博識フクロウのフクさん
イラスト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
計測RAM値の変更方法
前回はついにDAQパケットを確認できたわけだけど、
計測RAM値が0値のままだったんだよねー。
まぁ特に何かを更新してるわけじゃないからね。
前回の最後の方に
「外部から書き込みをして更新状態を見てみよう(キリッ)」
みたいなこと言ってたけど、
あれってやっぱりDOWNLOADコマンドを使う感じ?
(「キリッ」とはやってなかったはずだが・・・。)
そうだね。
厳密にはSET_MTAとDOWNLOADのコマンドを使う。
SET_MTAとDOWNLOADの電文
となると、SET_MTAとDOWNLOADの電文を叩き込むことになるのか。
それぞれのコマンドは以前やったね。
SET_MTA
DOWNLOAD
そうそう。
そして電文はこれになる。
SET_MTAは
0xF6, 0x00, 0x00, 0xFF, 0x04, 0x00, 0x00, 0x00
DOWNLOADは
0xF0, 0x04, 0x44, 0x55, 0x66, 0x77
とりあえず、その電文を投げればOKだと思うけど、
折角だから連続で投げてみるか。
うん。
いいね。
ただ、値を変更した後にDAQパケットが送出されないといけないから
sleepをちょっと挟んだ方が良いかな。
sleep?
ちょっとプログラムを待たせるヤツ?
そうそう。
今回はtimeモジュールのspeep関数を使う。
とりあえず0.01秒を指定してみるか。
となると
コード的にはこんな感じになるのかな?
import time
for i in range(4):
xcp_sendrecv([0xF6, 0x00, 0x00, 0xFF, 0x04, 0x00, 0x00, 0x00, ]);
xcp_sendrecv([0xF0, 0x04, 0x11*i, 0x22*i, 0x33*i, 0x44*i, ]);
time.sleep(0.01)
一応、書き込むデータは毎回変わるようにiを掛けるようにしてみた。
そうだね。
同じ値を書き込んだら変化がわからないから、変化は持たせた方が良いね。
じゃー、あとはこれを実行してみるのみ!
まとめ
まとめだよ。
- 計測RAM値の変更方法はSET_MTAとDOWNLAOD。
- SET_MTAとDOWNLOADの電文確認。
- 折角なので連続で投げて見る。
- ただ、同じ値だと変化が分からない無いのでちょっと書き込みデータを変える。
- さらにDAQパケット送出前に書き換えてしまう可能性もあるのでsleep関数を挟む。
- 折角なので連続で投げて見る。
バックナンバーはこちら。
コメント