CANでCONEXIOBlackBearとセンサをつないでみる
コネクシオのテックブログをご覧いただきありがとうございます。
テックブログでは、ちょっと役立つ技術情報やコネクシオの製品を使ってできることを紹介しています。
今回は、当社IoTゲートウェイ「CONEXIOBlackBear」に標準搭載されている
CAN(Controller Area Network)インターフェースにつなぐ方法と、
それに付随するサンプルプログラムをご紹介致します。
目次[非表示]
▼おすすめの関連記事
「IoTによる車両管理とは? できることや事例について紹介」
「CONEXIOBlackBearで利用できるプログラミング言語 」
「生産現場の見える化とは? 目的や実施のステップを解説 」
CAN(Controller Area Network)とは
CANは耐ノイズ性、高信頼性が特徴のシリアル通信プロトコルで、主に車載ネットワーク
において「電子制御ユニット(ECU:Electronic Control Unit)」間の通信で利用されてい
ます。ネットワークトポロジー(接続の構成)は「バス型(1つの共通の通信路を持ちます)」
で、バスが空いている時に、どのノード(バスに接続された機器)でもマスターになって通
信を開始することができる「マルチマスター方式」が特徴です。
高速通信が可能なバスとして車載以外でも利用されており、例えば当社が展開する
「ソリューションセット」の1つである「ポンプ設備の安心パック」でもCAN接続の振動
センサーをラインナップの1つとしてご用意しております。
標準装備で、しかも2系統!!
CONEXIOBlackBearには「CAN Version 2.0B active」規格に準拠した2系統のCANイ
ンターフェースを搭載しています。2系統分の信号を1つのコネクタに集約した専用のCAN
コネクタ(本体の下図赤枠部分)に接続してご利用いただけます。
▼CAN接続の振動センサを使うソリューション「ポンプ設備の安心パック」はこちら
肝心のソフトウェアは?
CANプロトコルを制御するソフトウェアとしては「SocketCAN」フレームワークを利用できます。そのためLinuxのネットワークプログラミングでよく利用するソケットAPIの感覚でCANフレームの送受信制御を実現できます。(慣れているエンジニアさんは、たくさんいらっしゃいますよね!)
CとPythonのサンプルプログラムを紹介します
使用するプログラミング言語には好みがあると思いますが、今回はC言語とPython言語のサンプルコードの勘所をご紹介します!せっかくなので「ポンプ設備の安心パック」で使用しているCAN接続の振動センサー「LPMS-IG1 CAN」のCANフレーム受信をやってみます!実はこのセンサーは、CANフレームのデータフォーマットをカスタマイズすることが可能であり、今回は下記のように設定しました。
【振動センサーの設定内容】
ポートレート |
250kbps |
---|---|
CAN ID |
0x181 |
データ (合計8Byte) |
X軸加速度(2Byte) Y軸加速度(2Byte) Z軸加速度(2Byte) 湿度(2Byte) |
LPMS-IG1 CAN(LP-RESEARCH社)
https://lp-research.com/9-axis-imu-with-gps-receiver-series/
CONEXIOBlackBearのCANインターフェースを使用する場合、プログラミング言語を問わず、まず下記のコマンドでCANインターフェースを有効化する必要があります。
(can0ポートをボーレート250kbpsで有効にする場合)。
C言語のサンプル
まずSocketCANを初期化します(「linux/can.h」をIncludeしてください)。
ソケットAPIを使用して、対象のCANポート用のソケットを作成します。
あとはread()するだけでCANフレームを受信できます。
受信したCANフレーム内の各フィールドの内容は、「linux/can.h」で定義された「struct
can_frame」構造体のメンバーー(can_id、can_dlc、data[ ]など)で参照が可能です。
では、コンパイルして実行してみましょう。CANフレームを受信しました!!
Python言語のサンプル
SocketCANが利用可能な「python-can」ライブラリをインストールしてみましょう!
CANフレームのダンプ(受信CANフレームの内容表示)なら数行で実現できますよ。
実行してみましょう。受信したCANフレームの内容が表示されました!!
以上のように、CONEXIOBlackBearを介して簡単にCANにつなぐことができました。
車載システム導入をご検討のお客様、または車載システムをお持ちのお客様へご提案される方々、
ぜひお試しでも構いませんのでお気軽に当社までお問い合わせください。
▼おすすめの関連記事
「IoTによる車両管理とは? できることや事例について紹介」
「CONEXIOBlackBearで利用できるプログラミング言語 」
「生産現場の見える化とは? 目的や実施のステップを解説 」
▼CONEXIOBlackBearの詳細はこちら