本サイトはアフィリエイト広告を利用しています

Raspberry PI 4 Model B(ラズパイ)でCAN定期送信してみる

背景

前回はCAN送受信テストができたので、今回はCAN定期送信してみる。前回の記事はこちら。

ラズパイ内にシェルスクリプトを実装

以下サイトを参考にさせていただき、ラズパイ内にシェルスクリプトを実装。

https://qiita.com/h-kiyo/items/d8583af13768ad67bcd0

/bin $ sudo vi cansend.sh ← VIエディタで”cansend.sh”を作成

/bin $ bash cansend.sh ← シェルスクリプトを実行

CANID=0x100のCANフレームが流れ始めた。受信側を確認。

受信できている!

CANID=0x400に変更し、送信間隔を1秒間隔に変更。左が送信側(ラズパイ)で、右が受信側(USB2CAN)。

CAN定期送信対象を増やす

CAN定期送信対象を1つから2つにしてみた。

CANフレーム①:CANID=100、DATA=11 22 33 44 55 66 77 88

CANフレーム②:CANID=200、DATA=88 77 66 55 44 33 22 11

#!/bin/bash
while true; do
  echo 100"#"1122334455667788
  cansend can0 100"#"1122334455667788
  sleep 0.1
  echo 200"#"8877665544332211
  cansend can0 200"#"8877665544332211
  sleep 1.0
done

CAN定期送信間隔をそれぞれ設定する

CANフレームを2つにできたが、これではCANフレーム単位で送信周期を変更できない。

コードを以下のように修正。

#!/bin/bash

can1 () {
  while true; do
    echo "100#1122334455667788"
    cansend can0 "100#1122334455667788"
    sleep 0.1
    #echo "200#8877665544332211"
    #cansend can0 "200#8877665544332211"
    sleep 1.0
  done
}

can2 () {
  while true; do
    #echo "100#1122334455667788"
    #cansend can0 "100#1122334455667788"
    sleep 0.1
    echo "200#8877665544332211"
    cansend can0 "200#8877665544332211"
    sleep 0.5
  done
}

# can1 をバックグラウンドで実行
can1 &

# can2 をバックグラウンドで実行
can2 &

# バックグラウンドで実行したプロセスの待機
wait

sleepの変数時間を別々にして関数をバックグラウンドで実行する形にしてみた。一応動作している。

CANID=200の送信周期が早い様子がわかる。

2 COMMENTS

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です