【CAN-FD】車両診断通信 その92【python-can⑤】

【CAN-FD】車両診断通信 その92【python-can⑤】 車両診断通信

バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/

はじめに

python-canでCAN-FDのシミュレーション。
今回はCAN-FD用のPythonコードの作成。

登場人物

博識フクロウのフクさん

イラスト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

python-canによる送受信復習

太郎くん
太郎くん

これはCANでやったことのCAN-FD版って感じかな?

フクさん
フクさん

そうだね。
ほとんど変わらないかな。

太郎くん
太郎くん

じゃー、以前のを一回復習してから見た方が良いねー。
ここで復習できるよー。

CAN-FDリクエスト用Pythonコード

フクさん
フクさん

CANの時とほぼ一緒

import can

# バス接続
bus = can.interface.Bus(bustype='vector', channel='0', bitrate=500000, fd=True)

# 送信データ(CANID 0x111、DLC:12、Data:01 02 03 04 05 06 07 08 09)
send_msg = can.Message(arbitration_id=0x111, extended_id=1, bitrate_switch=True, is_fd=True, data=[0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09])
print('Send msg : %s' % send_msg)
# 送信
bus.send( send_msg )

# 受信
recv_msg = bus.recv(timeout=1)
print('Recv msg : %s' % recv_msg)
太郎くん
太郎くん

初期化のところで”fd=True”
メッセージ構築のところで”bitrate_switch=True, is_fd=True”
でCAN-FDになってる感じだねー。

太郎くん
太郎くん

これはcan.logger、can.playerの修正は関係ないの?

フクさん
フクさん

うん。
ここは関係ない。
というかcan.logger、can.playerがこのBus初期化とメッセージ構築を呼び出している感じ。
CAN-FDに対応していなかったのはあくまでcan.loggerとcan.playerだけってことになるね。

CAN-FDレスポンス用Pythonコード

フクさん
フクさん

こっちもCANの時とほぼ一緒だね。

import can

# バス接続
bus = can.interface.Bus(bustype='vector', channel='0', bitrate=500000, fd=True)

# 受信
while True:
	recv_msg = bus.recv(timeout=1)
	if recv_msg != None:
		print('Recv msg : %s' % recv_msg )
		break


# 送信データ(CANID 0x222、DLC:6、Data:0A 0B 0C 0D 0E 0F)
send_msg = can.Message(arbitration_id=0x222, extended_id=1, bitrate_switch=True, is_fd=True, data=[0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F])
print('Send msg : %s' % send_msg)

# 送信
bus.send( send_msg )
太郎くん
太郎くん

こっちも同じ感じだね。
大丈夫そうだ。

まとめ

フクさん
フクさん

まとめだよ。

  • python-canのリクエスト、レスポンスコードの復習。
  • CAN-FDとしてのリクエスト、レスポンスコード作成。
    • Bus初期化時にfd=True。
    • メッセージ作成時にbitrate_switch=True, is_fd=True。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました