Skip to main content

reTerminal DM CAN BUS with Node-RED

CAN BUSについての簡単な情報

pir


CAN BUS & Node-RED

CAN bus(Controller Area Network bus)は、車両や産業システム内で複数の電子制御ユニット(ECU)を接続するために使用されるネットワークの一種です。1980年代にBoschによって開発され、車両やその他のアプリケーションにおけるシリアル通信の国際標準(ISO 11898)となっています。

CAN busはECU間での高速データ交換を可能にし、情報を共有して活動を調整することができます。データ送信用とデータ受信用の2線式システムを使用し、複数のノードをサポートするため、多くのデバイスが相互に通信する必要がある複雑なシステムでの使用に理想的です。

CAN bus技術は、エンジン制御、トランスミッション制御、ABS(アンチロックブレーキシステム)、エアバッグ制御など、さまざまなアプリケーションで自動車業界で広く使用されています。また、産業オートメーション、医療機器、航空宇宙など、デバイス間の信頼性が高く効率的な通信が不可欠な他の業界でも使用されています。

CAN busには、高い信頼性、低コスト、過酷な環境での動作能力など、多くの利点があります。設置と保守が簡単で、電磁干渉に対する耐性が非常に高いです。これらの特徴により、信頼性が高く効率的な通信が必要な多くの異なるアプリケーションにとって理想的な選択肢となっています。

reTerminal DMでCAN BUS Nodeを使い始める

Node-REDをCAN busで使用するには、reTerminal DM CAN BUSポートに接続するCAN busインターフェースデバイスと、ネットワーク上でメッセージを送受信できるNode-RED CAN busノードが必要です。この場合、node-red-contrib-socketcanノードを一緒に探索します。Node-REDにCAN busノードをインストールしたら、CAN busネットワークからデータを読み取り、処理し、他のシステムやデバイスに送信するフローの構築を開始できます。例えば、車両のCAN busからエンジンRPMを読み取り、データを処理して燃料消費量を計算し、結果をダッシュボードに送信して表示することができます。

詳細については、node-red-contrib-socketcanページで確認できます。

Senscraft Edge OSを使用している場合は、Socketcanノードのインストール手順をスキップできます。

前提条件

ハードウェア

ハードウェアの準備

以下に示すようにハードウェアを接続してください

ソフトウェア

note

ホストコンピュータは、以下のセットアップ手順を実行するために、reTerminal DMへのインターネット接続が可能である必要があります。

Socketcanノードのインストール

このWikiチュートリアルではnode-red-contrib-socketcanノードを使用するため、ノードのインストールガイドに従ってnode-red-contrib-socketcanをインストールしてください。

reTerminal DMでのCAN BUSの設定
note

reTerminal DMのTerminalアプリに直接アクセスするか、SSH経由でreTerminal DMにアクセスできることを前提としています。そうでない場合は、こちらの最初のステップに従って、その方法に慣れてください。

reTerminal DMのCAN BUSポートでcan0という仮想canデバイスを有効にするために、以下のコマンドを一つずつ入力してください。

sudo apt install can-utils
sudo ip link set can0 up type can bitrate 250000
sudo ifconfig can0 txqueuelen 1000
sudo ip link set can0 up

上記のコマンドを入力した後、以下に示すように ifconfig コマンドで can0 デバイスが表示されるはずです:

ホストコンピュータのusb-canソフトウェアとドライバーの設定
note

同じUSB-CAN Analyzerを使用している場合は、以下の手順に従ってアナライザーを使用するためのソフトウェアドライバーをセットアップできます。

USB-CAN AnalyzerドライバーのgithubリポジトリUSB-CAN Analyzer system driverにアクセスし、Readmeセクションに従ってお使いのオペレーティングシステムに応じてドライバーをインストールしてください。

CANバストラフィックを送受信するためのサンプルコマンド

# dump CAN bus traffic from CAN bus
$ ./canusb -t -d /dev/ttyUSB0 -s 250000 -t

# send the bytes 0x00112233 from ID 005 on at CAN bus
$ ./canusb -d /dev/ttyUSB0 -s 250000 -t -i 5 -j 00112233

reTerminal DM での Socketcan ノード

フローのインポート

note

以下の手順はチュートリアル目的のためのものです。このセクションでは、JSON形式のフローをコピーして、インポートノードのポップアップメニューの入力ボックスに貼り付けることで、フローを素早くインポートする方法を説明します。

ステップ 1: 設定ボタンをクリックし、次にインポートボタンをクリックしてノードのインポートウィンドウを開きます

ステップ 2: 以下のフロー JSON をコピーします


[
{
"id": "829af3ee.a57c1",
"type": "tab",
"label": "CAN BUS",
"disabled": false,
"info": ""
},
{
"id": "7b24a62e.8f5458",
"type": "debug",
"z": "829af3ee.a57c1",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 350,
"y": 360,
"wires": []
},
{
"id": "5f671b29.cd24bc",
"type": "socketcan-out",
"z": "829af3ee.a57c1",
"name": "socketcan-out",
"config": "d9bf56bb5f3e2f92",
"x": 150,
"y": 360,
"wires": [
[
"7b24a62e.8f5458"
]
]
},
{
"id": "caba412f.047b2",
"type": "socketcan-in",
"z": "829af3ee.a57c1",
"name": "socketcan-in",
"config": "d9bf56bb5f3e2f92",
"x": 350,
"y": 120,
"wires": []
},
{
"id": "a64240cb.3f0788",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send object - std",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"ext\":false,\"canid\":123,\"dlc\":5,\"data\":[1,2,3,4,5]}",
"payloadType": "json",
"x": 160,
"y": 120,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "3ff96369.ef6f5c",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send string - std",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "123#00112233",
"payloadType": "str",
"x": 160,
"y": 200,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "6879c00a.5edb68",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send string - ext",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "1F334455#1122334455667788",
"payloadType": "str",
"x": 160,
"y": 240,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "1ee3b274.4cb8fe",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send object - ext",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"ext\":true,\"canid\":32278,\"dlc\":5,\"data\":[1,2,3,4,5]}",
"payloadType": "json",
"x": 160,
"y": 160,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "391a4c45.7acd8c",
"type": "comment",
"z": "829af3ee.a57c1",
"name": "Send CAN frames in using different payloads on CAN0",
"info": "",
"x": 260,
"y": 80,
"wires": []
},
{
"id": "912f9928.da2758",
"type": "comment",
"z": "829af3ee.a57c1",
"name": "Receiove CAN data from interface CAN0",
"info": "",
"x": 220,
"y": 320,
"wires": []
},
{
"id": "d9bf56bb5f3e2f92",
"type": "socketcan-config",
"interface": "can0"
}
]

ステップ3:Import nodesウィンドウで、Clipboardタブを選択し、上記のjsonフローコードを赤いダイアログボックスに貼り付けて、importボタンをクリックしてください。

ステップ4:上記の手順の後、CAN BUSという新しいフロータブが作成されているはずです。フローが以下に示すものと同じかどうか確認してください。

ステップ5:canインターフェースを設定するには、socketcan-in nodeをダブルクリックしてedit nodeウィンドウを開く必要があります。

note

reTerminal DM上でcan0インターフェースデバイスを作成するために、Configure CAN BUS on reTerminal DM セクションの手順を完了していることを確認してください。

ステップ6:Edit socketcan-in nodeウィンドウで、interfaceオプションの鉛筆アイコンをクリックしてAdd new socketcan-config config nodeウィンドウを開きます。

ステップ7:Add new socketcan-config config nodeウィンドウで、interfaceダイアログボックスにcan0と入力してください。

ステップ8:上記の手順でAddボタンをクリックすると、interfacecan0に設定されているのが確認できるはずです。その後、Doneをクリックして適用します。

ステップ9:socketcan-outのCAN Busインターフェースを設定します。scoketcan-outノードをダブルクリックし、Configとしてcan0を選択して、Doneをクリックするだけです。

ステップ10:Deployをクリックしてください。

最終テストと結果

おめでとうございます。reTerminal DMとnode-REDでCAN Busプロトコルを使用する方法を正常に体験し、学習できました。最終結果は以下に示す画像と同様になるはずです。

ホストコンピューターがCAN Busデータを送信し、reTerminal DMが受信する場合:

  • ホストコンピューターのターミナルウィンドウから./canusb -d /dev/ttyUSB0 -s 250000 -t -i 5 -j 00112233コマンドを実行して00112233(16進数)をreTerminal DMに送信できます。reTerminal DMのデバッグウィンドウでデータが確認できます。
0: 0 
1: 17
2: 34
3: 51

x00 x11 x22 x33 HEXデータセットのバイナリ表現です。

ホストコンピュータがCANバスデータを受信し、reTerminal DMが送信する場合:

  • 下の画像に示すように、reTerminal DM Node-Redのinjectボタンをクリックして、データ01 02 03 04 05をホストコンピュータに送信する必要があります。ホストコンピュータのターミナルウィンドウで受信コマンドは./canusb -t -d /dev/ttyUSB0 -s 250000 -tであり、受信データは先入れ先出し順序のため05 04 03 02 01となります:

Node-REDでreTerminal DMのより多くのノードを探索

技術サポートと製品ディスカッション

弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供いたします。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。

Loading Comments...