バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回は仮想HILSのCAN-FD対応方針整理し、まずは以下を実施。
- importしているxcp_canをxcp_canfdに変更。
- 上記のクラス変更に伴い、XCPインスタンスの生成部分変更。
今回は引き続き仮想HILSの修正でCANバス初期化部やXCP関連の部分。
登場人物
博識フクロウのフクさん
イラスト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
指令値受取用バスの初期化変更
引き続き、仮想HILSのCAN-FD対応だね。
今回は「指令値受取用バスの初期化変更」からだな。
まぁこれはホントにバス初期化をCANからCAN-FDに変えるだけ。
指令値の時にバス初期化の仕方を変えたと思うけど、あれといっしょ。
ここでやったやつだねー。
ってことはこんな感じの修正になるのか。
# 指令値受取用バス接続
self.bus = can.interface.Bus(bustype='vector', channel='0')
↓
# 指令値受取用バス接続
self.bus = can.interface.Bus(bustype='vector', channel='0', bitrate=500000, fd=True, data_bitrate=2000000)
正解だ。
XCP DAQ受信部のレイアウト変更対応とLSB変更対応
次は「XCP DAQ受信部のレイアウト変更対応とLSB変更対応」だが、
これも近いことを最近やってる。
もしかしてxcp_canfdクラスを作った時かな?
ここらへんの話。
正解。
とすると、なんとなくわかるぞ。
こんな修正でOKなはずだ。
# XCP DAQ受信
daq = self.xcp.recv_daq()
if len(daq) > 0:
self._voltage = float(int.from_bytes(daq['0'][0][5:7], byteorder='little', signed=True))/0x100
↓
# XCP DAQ受信
daq = self.xcp.recv_daq()
if len(daq) > 0:
self._voltage = float(int.from_bytes(daq['0'][0][9:13], byteorder='little', signed=True))/0x10000
int.from_bytesの参照範囲とLSB変換するための値を返るだけでOKなはず。
うん。大丈夫そうだね。
XCP STIM送信部のレイアウト変更対応とLSB変更対応
とすると、最後は「XCP STIM送信部のレイアウト変更対応とLSB変更対応」かな。
そうだね。
まぁ仮想HILSとしてはレイアウトについては弄る必要ないけどね。
STIMに載せるレイアウトについてはxcp_canfdクラス側で決めてるから仮想HILS側では考えなくてOKなのか。
となると、LSB変更対応だけだから以下の修正になるね。
# XCP STIM送信
self.xcp.stim(int(self.deque_target[-1])*0x100, int(self.deque_speed[-1])*0x100)
↓
# XCP STIM送信
self.xcp.stim(int(self.deque_target[-1]*0x10000), int(self.deque_speed[-1]*0x10000))
修正箇所は0x100を0x10000にしただけ。
修正としてはOKかな?
次回、一旦全体のコードを確認しよう。
まとめ
まとめだよ。
- 指令値受取用バスの初期化変更。
- バス初期化の引数をFD用に変更するのみ。
- XCP DAQ受信部のレイアウト変更対応とLSB変更対応
- xcp_canfdクラス作成時のテストコードと同じ対応。
- XCP STIM送信部のレイアウト変更対応とLSB変更対応
- レイアウトはxcp_canfdクラス内で決めているのでLSB対応のみ。
バックナンバーはこちら。
コメント