EasyCATのコンフィグ方法

EasyCATとは?

AB&T社が開発・販売しているEtherCATスレーブ基板の製品群。この記事ではおもに EasyCAT Shield for Arduino について述べる。その名の通り、Aruino用のシールドである。

EasyCATのコンフィグとは?

EasyCATは、出荷時には入力32バイト+出力32バイトのPDO構成にコンフィグされている。ソフトウェアからは各々32バイトのバイト列として参照できる。買ってきてすぐに使えるのでこれはこれでお手軽だが、ユーザーが自由にPDO構成を設計してEasyCATをコンフィグすることもできる。その場合、ソフトウェアからはPDOを構造体として参照できる。コンフィグ情報はEasyCATのEEPROMに保存される。

コンフィグのためのツール

EasyCATのコンフィグには、Easy Configuratorというソフトウェアを使用する。このソフトウェアはメーカーの製品ページで配布されている。ユーザーマニュアルも同ページで配布されているので、詳細はそちらを参照のこと。

  • Windows用アプリである。(Mac版やLinux版は存在しない。)
  • Ethernetインターフェース(LANポート)が必要。(EEPROM書き込みに用いる。)
  • Npcapライブラリが必要。 (こちらの記事を参照。)

標準モードとカスタムモード

EasyCATのコンフィグには、入出力が定義ずみの標準モードと、ユーザーが自由に設計できるカスタムモードがある。標準モードには入出力のバイト数が16+16、32+32(出荷時)、64+64、128+128の4種類がある。この記事ではカスタムモードのコンフィグ方法について説明する。

Easy Configuratorの起動

Easy Configuratorはインストール不要のアプリである。zipを適当なフォルダに解凍して使う。Exe/EasyCAT_Config_GUI.exeから起動する。

スレーブ識別情報

「SLAVE IDENTIFICATION」の欄に、スレーブの識別情報を記入する。

f:id:licheng:20191126160339p:plain

  • Vendor Id: ETGが割り当てた32ビットのベンダID。(※)
  • Vendor Name: ベンダIDを保有する会社名
  • Product Code: 32ビットの製品コード
  • Revision: 32ビットのリビジョン番号
  • Name: 製品名

※ 教育および実験の目的以外で使用する場合には必ず取得すること!

入出力PDOの定義

「INPUT PDO ENTRIES」および「OUTPUT PDO ENTRIES」の欄に入出力のPDOの名前と型を記入する。言ってはなんだが非常に編集しづらい。どうしてこんなク●UIになったのだろうか?

f:id:licheng:20191126160406p:plain:w600

プロジェクトの保存とファイル生成

メニューの[Project] > [Save as]でプロジェクトを保存する。そして「Create files」のボタンを押すと、プロジェクトのフォルダに以下の3つのファイルが生成される。

(1) .xmlファイル (ESIファイル)

EtherCAT Slave Information(ESI)仕様書で定義された、XML形式のテキストファイル。EtherCATスレーブの識別情報や入出力PDO構成など種々の情報を記述する。

(2) .binファイル (SIIファイル)

EtherCAT Slave Information Interface(SII)仕様書で定義された、バイナリ形式のファイル。EtherCATスレーブの識別情報や入出力PDO構成など特に重要な情報が格納される。EtherCATスレーブのEEPROMに保存され、デバイスのコンフィグに用いられる。

(3) .hファイル (C言語ヘッダファイル)

Arduinoなどマイコンファームウェアを開発するために必要なヘッダファイル。入出力PDOが構造体として定義される。

EasyCATのEEPROMへ書き込む

EasyCATに電源を入れて、EasyCATとPCをLANケーブルで接続する。EasyCATの「IN」のポートに接続し、「OUT」のポートには何も接続しないこと。ハブなどは使わず必ずケーブル1本で直結すること。

「Write EEPROM」ボタンを押すとファイル選択画面が開くので、生成した.binファイルを選択する。すると.binファイルがEasyCATのEEPROMに書き込まれる。書き込みには30秒くらいかかる。

Arduinoで使う

CUSTOM という名のマクロを定義してから、生成した.hファイルをインクルードし、その後に EasyCAT.h をインクルードする。

#define CUSTOM         // カスタムモード
#include "HogeSlave.h" // 生成したヘッダファイル
#include "EasyCAT.h"   // Arduino用ライブラリ
#include <SPI.h>

EasyCAT EASYCAT;

上記の例のPDO構成の場合、下記のようにしてアクセスできる。ちなみに、ユーザーマニュアルは入力と出力を取り違えていると思われる。PDOの入力/出力というのはマスターから見た表現である。

  // 出力(マスター→スレーブ)
  uint16_t a = EASYCAT.BufferOut.Cust.piyoOutput1;
  int64_t  b = EASYCAT.BufferOut.Cust.piyoOutput2;
  double   c = EASYCAT.BufferOut.Cust.piyoOutput3;
  
  // 入力(スレーブ→マスター)
  EASYCAT.BufferIn.Cust.piyoInput1 = (uint8_t)x;
  EASYCAT.BufferIn.Cust.piyoInput2 = (int32_t)y;
  EASYCAT.BufferIn.Cust.piyoInput3 = (float)  z;