バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回までで、PyXCPにXCPonCANFDの動作確認が完了した。
Bitrate_switchが効かないなどの問題はあるが、
実験をする上では問題にならないだろう。
これらの実験結果を元にxcp_canクラスを改造していく。
登場人物
博識フクロウのフクさん
イラスト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
xcp_canクラス改造箇所
太郎くん
今回はxcp_canクラスを改造するんだっけ?
フクさん
そうだね。
方針は以下だ。
- コンフィグレーションを弄ってCANからCAN-FDに変える。
- DAQ listのODT_ETNRYのデータ長変更(16bit→32bit)
- DAQの受信レイアウト調整
- DAQ受信データの物理値変換(1/65536→浮動小数点)
- STIMの送信レイアウト調整
- STIM送信時のrawデータ変換(浮動小数点→1/65536)
太郎くん
これは・・・。
思ったよりもいろいろあるな・・・。
フクさん
仮想HILSにXCPの都合を見せないようにしている部分だからね。
ここに修正が集中し易い。
って事情はあるね。
太郎くん
逆言うとここがちゃんと動けば、ゴールは見えてくるってことか。
フクさん
その通り。
コンフィグレーションを弄ってCANからCAN-FDに変える
フクさん
まずはコンフィグレーション用のJSON記述の修正だ。
太郎くん
これはPyXCPのCAN-FD実験で大体わかってるところだね。
フクさん
そうそう。
以下に修正すればOKなはずだ。
def __init__ ( self,reqid=1, resid=2, bitrate=500000, fd=True, data_bitrate=2000000, appname="PyXCP-CANFD", serial=0 ):
# コンフィグレーションパラメータ(JSON文字列)の作成と読み込み
JSON = """{
"TRANSPORT": "CAN",
"CAN_DRIVER": "Vector",
"CAN_USE_DEFAULT_LISTENER": true,
"CHANNEL": "0",
"CAN_ID_MASTER":""" + str(resid) + """ ,
"CAN_ID_SLAVE": """ + str(reqid) + """,
"CAN_ID_BROADCAST": 256,
"MAX_DLC_REQUIRED": false,
"CREATE_DAQ_TIMESTAMPS": true,
"BITRATE": """ + str(bitrate) + """,
"FD":""" + str(fd).lower() + """,
"DATA_BITRATE": """ + str(data_bitrate) + """,
"APP_NAME": """ + "\"" + appname + "\"" + """
}"""
CONF_JSON = StringIO(JSON)
CONF_JSON.name = "conf_can_vector.json"
CONFIG = readConfiguration(CONF_JSON)
# コンフィグレーションを元にXCPマスターの生成
self.xm = Master('can',config=CONFIG)
太郎くん
SERIALは消して、
FDとDATA_BITRATEのパラメータが増えただけだね。
フクさん
こんな感じで残りの修正箇所も見て行こう。
まとめ
フクさん
まとめだよ。
- xcp_canクラス改造箇所を整理。
- 予想以上に多いが、仮想HILSにXCPの都合を見せないための部分なので修正内容が集中し易い。
- コンフィグレーション用のJSON記述の修正。
- 事前のPyXCP CAN-FD実験を元に修正。
- SERIALを消して、FDとDATA_BITRATEと追加。
- 事前のPyXCP CAN-FD実験を元に修正。
バックナンバーはこちら。
コメント