【Vector Virtual CAN BUS & Python-can】CAN通信のシミュレーション環境構築

みなさん、お疲れ様です。最近私が絶賛悩み中のCAN通信に関する記事です。

私の悩みの吐露

あー!!!!CAN通信がわからねぇ!!!

何がわからないかわからない!!

でもわかってない感じはわかる!

こういうときはですね。とりあえず動きを見てみるのが一番ではないかと思います。そしたら何がわかってないか、わかるかもしれん。ってことで、本記事はとりあえずCAN通信のシミュレーション環境を用意してみました。という記事です。

色々書いたCAN関連記事は以下です。気になったら読んで頂ければと思います。

この記事でやっていることは以下の通りです。

この記事でやってること(わかること)

VectorのVirtual CAN BUSのインストールと初期動作確認

python-canをインストールしてVirtual CAN BUSに接続

pythonでとりあえず信号を送ってみて、モニターしてみる

参考資料

↓こちらの記事がとても参考になります。

【CanTp】車両診断通信 その18【シミュレーション⑤】
ISO-TPのシミュレーションをしよう。のシリーズ。 pyton-canのcan.playerによるCANログ再生。 python-canのインストールをした。 python-canの動作確認をした。 can.playerで送信してBusMasterで収録。 python-canの動作性能...
スポンサーリンク

やりたいことの確認

やりたいことは以下です。

Vector Virtual CAN BUSという仮想CAN BUSにPython(python-canライブラリを使って)でCANを送信してみる!

Virtual CAN BUSとはVectorが無償提供している仮想のCAN BUSです。python-canはpythonでCAN通信を簡単にやってくれるライブラリです。python-canのドキュメントは以下にあります。

404 Not Found | Read the Docs

このドキュメントの”Installation”に移動してVectorの項目を読むと

Vector

To install python-can using the XL Driver Library as the backend:

1.Install the latest drivers for your Vector hardware interface.

2.Install the XL Driver Library or copy the vxlapi.dll and/or vxlapi64.dll into your working directory.

3.Use Vector Hardware Configuration to assign a channel to your application.

https://python-can.readthedocs.io/en/master/installation.htmlのVectorの項目より引用

1.最新のドライバをインストールしろ!2.XL Driver Libraryをインストールしろ!3.Vector Hardware Configurationを使ってお前のアプリ(python-can)をアサインしろ!!

と書いてあるので、それを順番にやっていきます。

ひとまずpython-canをインストールしておく

以下のコマンドでインストールです。

$ pip install python-can

succesfullyって出たらOKです。念のため確認したい人は$pip listで見たらpython-canと表示されるのでそれで確認できます。次。

最新のドライバをインストールする

latest drivers←こちらへ飛びます。

私のOSがwindows10なので下の方をクリックします↓。

1.43GBです。あけておきましょう。Download nowをクリックします↓。

ダウンロードファイルを解凍して”setup”を実行します↓。

すると「どのドライバをインストールする?」と聞かれます。Vector製品なぞ触ったことない人間からしたら「そんなこと言われても。。。」状態です。適当にVN1610を選んどきます。んで、”install”をクリックします↓。

あー完了しました↓。

次。

XL Driver Libraryをインストールする

XL Driver Library こちらへ飛びます。

↓XL Driver Libraryをクリックします。

↓同じように解凍してSetupを実行します。

特に何も考えずにnextを押していたらインストールが終わりました↓。

はい、次。

Vector Hardware Configurationを使ってpython-canをアサインする

XL driver libraryをインストールしたら”Vector Hardware Configurator”というものが一緒にインストールされてます↓。これを起動します。

Application->addをクリックします↓。

Application nameに”python-can”と入力してOKをクリックします↓。

そしたら左の欄のApplicationにpython-canが加わります。CAN1とCAN2のところで右クリックして、Virtual CAN BUSのChannel1とChannel2を選択します↓。

こんな感じになりました↓。

これで準備完了です。次。

モニター用にBUSMasterをインストール

CAN BUSをモニターするためにBUSMasterというソフトをインストールします。

ここ↓からインストールします。大して詰まらないので、説明は割愛します。

BUSMASTER
BUSMASTER is an Open Source Software tool to simulate, analyze and test data bus systems such as CAN.

Virtual CAN BUSにつなぐ方法は

起動後にDriver Selection->Vector XLを選択->モニターしたいchannelを選択してConnectをクリックします。

はい、次。

pythonで動かしてみる

channel1にメッセージを送信して、Busmasterでモニターしてみます。

pythonのコードは以下の通りです↓。

>>> import can
>>> bus = can.interface.Bus(bustype='vector', channel=0, bitrate=500000, app_name='python-can')
>>> msg = can.Message(arbitration_id = 0xa1, data = [1,2,3,4,5,6,7,8])
>>> bus.send(msg)

コードの意味を書いておくと、、、

・python-canをインポートして
・Busを「vectorのchannel0でbitrateをapp_nameをpython-canです。」と初期化をして
・送信内容「1,2,3,4,5,6,7,8」をmsgに定義して
・送る。

って意味です。

上記のコードをBUSmasterをconnectした状態で実行します。

BUSmasterでの受信値は以下の通りです↓。

ちゃんと送信IDとmessageが受信できています。

ん?channelが0指定したのに1になってる。違くない?と思いましたが、python上でchannel0はVector hardware config上のchannel1のようです。

んーまぁとりあえず送信できたので、良しとします。

終わりに

お試しに信号を送信してみるだけで一苦労でした。この記事でCANを勉強してみようと思う方がささっと環境構築出来て、勉強に進めれば幸いです。

以上です。最後までお読みいただきありがとうございました!