【PyFMI】最小構成のMBD事例 第2章 その139【CAN連携③】

【PyFMI】最小構成のMBD事例 第2章 その139【CAN連携③】 事例
【PyFMI】最小構成のMBD事例 第2章 その139【CAN連携③】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

HILSもどきのインターフェースをCANにしたところで
本来であればCANインターフェース装置の手配が必要になる。
しかし、今回はVector社のXL Driver Library付属のVirtual CAN Bus(無償)を使用することでさらりと回避する。

具体的にどのような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

CAN経由で渡したい情報

太郎くん
太郎くん

CAN経由で指令値を渡すってのは決まったけど、
どんなデータを渡す予定?

フクさん
フクさん

まぁどんなデータでも良いのだけど、
一応決めておいた方が良いかもね。

フクさん
フクさん

一応以下の指令値を渡すとしよう。

100[ms]周期で上記指令値をCANで入力、Ramp Up、Ramp Down、Step、CAN
太郎くん
太郎くん

Ramp UpとRamp Down。
そしてステップ信号だね。
割とお試しとしては良く使われるパターンだ。

PythonでCANの送信方法

フクさん
フクさん

実は、PythonでCAN送受信をする話は
以前、診断通信周りでしたことはある。

フクさん
フクさん

一応ここでやった。

太郎くん
太郎くん

うーん、だいぶ前な気がする・・・。

フクさん
フクさん

(まぁ一年以上はたってるかな)

フクさん
フクさん

基本的にはやることは一緒だが、
送信するデータのパターンをある程度用意しておく必要はあるな。

太郎くん
太郎くん

送信パターンはどういう形で持っておくの?

フクさん
フクさん

ファイルから読み込むとかだと汎用性があるが、
今回は普通にPythonのリストとして持っておこう。

sndparam = [
  0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,
  100,100,
  100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,5,0,
  0,0,0,0,0,0,0,0,0,0,
  80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,
  50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,
  20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
]
太郎くん
太郎くん

まぁ送りたいデータを変えたかったら
このリスト編集すればいいだけだしね。

PythonでCANを使用するには。

フクさん
フクさん

過去の記事にも書いてあることだが、
PythonでCANを使用するにはPython-CANが必要。
Python-CANのインストールはpipを使用すればOKだ。

pip install python-can
太郎くん
太郎くん

python-canの存在を知ってさえいれば、
ここはそんなに悩まないよね。

Python-CANを使用するには

フクさん
フクさん

Python-CANを使用するには当然ライブラリのimportが必要。
まぁこれもシンプルな話で以下をimportすればOKだ。

import can
太郎くん
太郎くん

(ここまではなんとなく覚えてるぞ!)

フクさん
フクさん

あとはバス初期化とか実際の送信の話にちょっと触れて
実際使用する実験コードを見せる動作させてみるって流れかな。

太郎くん
太郎くん

まぁいつも通りの流れだね。

まとめ

フクさん
フクさん

まとめだよ。

  • CAN経由で渡したい情報として指令値を仮定義。
    • Ramp Up、Ramp Down、Stepなどの組み合わせ
  • Python-CANの復習。
    • インストールの話。
      • pip使えばOK。
    • importの話。
      • canをimportすればOK。
  • 以降はバス初期化、送受信などの話が続く予定。

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

コメント

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