JetsonとEtherCATデバイス間の通信を確立する方法
**EtherCAT(Ethernet for Control Automation Technology)**は、IEEE 802.3 Ethernetスタンダードに基づくオープンソースの高性能リアルタイム産業用Ethernetフィールドバスプロトコルです。マスター・スレーブアーキテクチャで動作し、産業オートメーション環境における優れた速度、精度、柔軟性で知られています。
この文書では、recomputer robotics J401をEtherCATマスターとして、MyActuator X4をスレーブとして使用し、JetsonとEtherCATデバイス間の通信を確立する方法を実演します。


1. ハードウェア接続
EtherCATマスターとして、Jetsonは通常そのEthernetインターフェースを使用してEtherCATスレーブデバイスに接続します。

多くのスレーブデバイスは標準的なEthernetポートを提供していないため、Ethernet接続を**4ピンインターフェース(Tx+、Tx–、Rx+、Rx–)**に変換するアダプターが必要になることがよくあります。

物理的なEtherCAT接続を確立した後も、ほとんどのスレーブデバイスは追加の外部電源が必要です。
2. EtherCATドライバーのインストール
このセクションでは、JetPack 6.2 BSPに対応するL4T 36.4.3を例として、JetsonにEtherCATドライバーをインストールする方法を示します。
EtherCATドライバーのビルドに必要な依存関係をインストールします:
sudo apt update
sudo apt install build-essential cmake libtool autoconf automake
EtherCATドライバーのソースコードを取得し、コンパイルしてインストールします:
git clone https://gitlab.com/etherlab.org/ethercat.git
cd ethercat
./bootstrap # to create the configure script, if downloaded from the repo
./configure --sysconfdir=/etc
make all modules
sudo make modules_install install
sudo depmod -a
ドライバーが正常にインストールされたことを確認するには、以下のコマンドを実行します。
2つのカーネルモジュールec_masterとec_genericが表示されるはずです:
sudo lsmod | grep "ec_"

3. EtherCATの設定
EtherCATドライバーをインストールした後、マスターとスレーブデバイス間の通信を有効にするためにいくつかの設定が必要です。
まず、/etc/ethercat.confの設定ファイルを編集します:
sudo vim /etc/ethercat.conf
Jetsonに接続されているEthernetインターフェースの名前に応じて、/etc/ethercat.confの2つのパラメータを変更します:
MASTER0_DEVICE="eno1" # Replace eno1 with the Ethernet interface used for EtherCAT
DEVICE_MODULES="generic"
eno1をEtherCATに使用するEthernetインターフェースに置き換えてください。ifconfigコマンドを使用してインターフェース名を確認できます。
EtherCATサービスを再起動した後、/devディレクトリにEtherCATマスターデバイスが表示されるはずです:
sudo systemctl restart ethercat
ls /de/EtherCAT*

(オプション)/dev/EtherCATが見つからない場合は、カーネルモジュールを手動でロードしてみてください:
sudo modprobe ec_master devices="eno1" # Replace eno1 with the Ethernet interface used for EtherCAT
sudo modprobe ec_generic
sudo systemctl restart ethercat
eno1をEtherCATに使用するEthernetインターフェースに置き換えてください。
(オプション)EtherCATに使用するEthernetインターフェースがNetworkManagerによって占有されている場合があります。以下のコマンドを使用して解放できます:
sudo nmcli dev set eno1 managed no # Replace eno1 with the Ethernet interface used for EtherCAT
sudo nmcli dev set eno1 managed on # Replace eno1 with the Ethernet interface used for EtherCAT
eno1をEtherCATに使用するEthernetインターフェースに置き換えてください。
4. JetsonとEtherCATスレーブ間の通信テスト
JetsonでEtherCATマスターノードが正しく初期化され、ハードウェア接続が適切に確立されていることを確認した後、ターミナルでJetsonとEtherCATデバイス間の通信をテストできます。
EtherCATデバイスをスキャンし、データ送信をテストしてパケット損失率が正常範囲内にあるかを確認します:
sudo ethercat rescan
sudo ethercat master

バス上のすべてのEtherCATデバイスをリストします:
sudo ethercat rescan
sudo ethercat slaves -v

インデックス0のEtherCATデバイスの問題を表示します:
sudo ethercat rescan
sudo ethercat pdos -p 0 #0 to n
-pの後のパラメータは0からnまでの任意の値にできます。

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