目次

EtherCAT

フィールドバスの規格. EThernetを物理層に用い,同期性を極限まで高めたような規格.
産業用ネットワークとして覇権を取りそうな予感,少なくとも日本ではTOYOTAが採用したので…
通信速度は100Mbps,最短送り出し時間は125μsなので設定次第でデータの更新レートを8kHzまで上げることが可能.
(Ethernetフレームは64~1522byte,1522byteを100Mbpsで転送すると122μs)
Ethernetのデータフレーム内部にEtherCATのフレームを乗せるという構成.

EtherCATでは,やり取りするデータのことをデータオブジェクトと読んでいる.
サイクリック通信で転送するデータオブジェクトのことをPDO(Process Data Object)
メールボックス通信で転送するデータオブジェクトのことをSDO(Service Data Object)という.

EtherCATステートマシン(ESM)

スレーブの動作モード

EtherCATは電源が入ってからInitからOperationalに向かって1つずつ遷移する.
障害が発生した場合には,運転を停止する.エラーの内容によってInit, PreO, SafeOpどれにでも遷移する.
それぞれの動作モートによってRUN LEDの点灯タイミングが変化する.
スレーブによってはError LEDを備えているものもある.Error状態によってもLEDの点灯タイミングが変化する.
LAN9252はError LEDを制御するピンは生えていない.LAN9253,LAN9254は生えている.

EtherCATステートマシン

FMMU

フィールドバスメモリ管理ユニット:マスタの(論理)プロセスデータイメージからスレーブデバイスへの物理(内部)メモリへの割付に使用.
どのスレーブがどういった順番で接続されていて,どこからどこまでがそれぞれのスレーブのやり取りするデータなのか,という情報を管理する.
この情報は,マスタがすべてのスレーブから情報を吸い上げてその後に各スレーブに伝える,なのでマスタが起動してからこのFMMUは割当が行われるという認識でいいのだろうか?
なお,割当はビット単位で行われるため,効率的にデータを詰め込むことができる.
この記事の図がわかりやすい.元資料どこだろう.
Understanding of FMMU addressing of EtherCAT study notes
FMMUのセットアップ

下の表のようなFMMUの設定のとき,論理アドレス0x000147113bit目から0x000147120bit目までの6bitを物理アドレス0x0F011bit目から6bit目ままでマッピングする.
データ量としては6bitだが,論理アドレスをまたいでいるため,データは2となる.ここはまたいでいる論理アドレスの数といった表現のほうが個人的にはしっくりくる.
論理スタートアドレスはEtherCATフレーム上のデータと同じ認識でいいのだろうか.

FMMU設定レジスタ(slaveinfoでの表記) FMMUレジスタオフセット
論理スタートアドレス(Ls) 0x0 : 0x3 0x00014711
データ(byte単位)(Ll) 0x4 : 0x5 0x0002
論理スタートビット(Lsb) 0x6 0x03
論理ストップビット(Leb) 0x7 0x00
物理スタートアドレス(Ps) 0x8 : 0x9 0x0F01
物理スタートビット(Psb) 0xA 0x01
データ・タイプ(Ty) 0xB read and/or write
有効(Act) 0xC 1(enabled)

データ・タイプ(Ty)には1byteが割り当てられているが,使用するは下位2bitのみ

となっており,この下位2bitの組み合わせで書き込み,読み出しアクセスのand/orを割り当てる.

SyncManager

マスタとスレーブ間のデータ交換及びメールボックス通信の整合性を維持する.
SyncManagerには動作モードが2種類存在する.

バッファモードで実行されているSyncManagerには,DPRAMで割り当てられているプロセスデータサイズの3倍必要
スレーブによってはSMウォッチドッグが実装されている.
一定時間の間にプロセスデータが正しく正確に通信できているかチェックする.

と割り当てる.
SyncManagerのレジスタは0x800~で割り当てられている.これはEtherCATのスレーブでは共通ということか?
LAN9252も0x800から8byteずつSyncManager用レジスタが割り当てられている.

Object Dictionary

CANOpenで定義されている各変数を全部まとめておく変数テーブルという認識
16bitのindexとその中に8bitのsubindexが存在する.

Index Object
0x1000-0x1FFF 通信エリア
0x1600-0x17FF RxPDO Mapping 入力変数エリアからアプリケーションオブジェクトを組み合わせて登録
0x1A00-0x1BFF TxPDO Mapping 出力変数エリアからアプリケーションオブジェクトを組み合わせて登録
0x1C12 RxPDO Assignment RxPDO MappingからSM2に登録するマッピングオブジェクトを選択
0x1C13 TxPDO Assignment TxPDO MappingからSM3に登録するマッピングオブジェクトを選択
0x6000-0xAFFF モジュールエリア
0x6000 - 0x6FFF 入力変数エリア マスタから受信する変数の実体を割り当てる
0x7000-0x7FFF 出力変数エリア マスタへ受信する変数の実体を割り当てる
0xF000-0xFFFF デバイスエリア

Object Dictionaryの0x6000~から定義されている標準化されたデバイス(インターフェース)プロファイル領域という部分にCiA4xxで定められた割当がされるということのようだ.

アプリケーションオブジェクト:A,B,C,D,E,F,Gという変数があるとする.
マッピングオブジェクト : マッピング1(A,B,D), マッピング2(F,A) マッピング3(A,B,D,C,F,G)とアプリケーションオブジェクトを組み合わせて1,2,3の組み合わせを作る.
アサインオブジェクト : SyncManagerに登録するオブジェクトをマッピング1,2,3から選ぶ.

CoE

AN application protocol over EtherCAT:非周期データへアクセスするサメの最も一般的なEhterCATプロトコル.
CoEは周期データ交換で使用するPDOを設定するためのメカニズムでもある.
EtherCATのデータの中に,CanopenのCiA402プロファイルを割り当てることで,モータ制御での各変数の割当を設定している.

データフレーム

Ethernetフレームのデータ部分にEtherCATのフレームを乗せる.フレーム長は64~1518byte
Ethernet HeaderのEtherTypeは0x88A4

ESI

EtherCAT Slave Information:ESI
スレーブの情報がまとまっているファイル.拡張子は.xml,マスタはこのESIファイルを元にスレーブの情報を取得する.
このファイルが無くても,動的に構築はできるが,一分機能に制限がかかるので,やはりこのファイルが有る越したことはない.

ソフトウェア

TwinCAT3

BECKHOFFのソフトウェア
試用ライセンスがあるが更新し続けられるらしいので個人でも使えそう
しかし,わりとハイリスクなインストールなので実験用にEthernetコネクタの付いたノートPCが一台用意したほうが吉,WindowsとUbuntuのデュアルブートが理想
TwinCAT 3 操作方法解説

CODESYS

CODESYS
PLCとかがメイン?みたいだけどEtherCAT周りも開発可能.
Soft-PLCは2時間,フィールドバスは30分までという動作時間に制限があるが無料で試せる.
個人で試す分なら十分.
RaspberryPiをEtherCAT Masterとして動かせる.
CODESYS Control for Raspberry Pi SL
CODESYS Control for Raspberry Pi MC SL← マルチコア対応なので新しいRaspberryPiを使う場合はこちらがいいだろう.

WifiでRaspberryPiに接続し,RJ45コネクタをEtherCATのスレーブに接続するようにする.
CODESYSからはNICのアドレスとして「eth0」を選択する.
SSHで接続したりネットワーク環境が頻繁に変わらない環境であればIPは固定しておくほうが良い.

EtherCAT Explorer

https://sourceforge.net/projects/ethercat-explorer/
シンプルなマスターソフトウェア,SOEMが使われている.
ネットワークアクセスのために,Npcapをインストールする必要がある.npcapのインストールを参照.

SOEM (Simple Open EtherCAT Master)

SOEM

ethercatcpp

The ethercatcpp framework
SOEMを元にC++で書かれたEtherCATフレームワークっぽいけど,ドキュメントが未整備感ある.

ハードウェア

スレーブコントローラ(ESC)

https://www.ethercat.org/download/documents/ESC_Overview.pdf
BGAばっかり,QFPとかQFNとかはんだ付けできそうなものは実質以下の2つ

LAN9252

LAN9252

AX58100

AX58100 -- 2/3-Port EtherCAT Slave Controller (ESC) with 2 Embedded PHYs

自作スレーブ基板

Nucleo-F446REに接続できるような基板を作った.
EtherCAT始めました
だがESIの仕様が分からずにESIファイルの作成は断念.LAN9252のGPIOだけ試すまでにとどまる.
EtherCATは「産業用オープンネットワーク(※ただし法人に限る)」なのである.
まぁ趣旨は分かる.これらEtherCATの仕様書を読むにはEtherCAT Technology Groupへの加盟が必要.これの加盟は個人では不可能…

既製品

AB&T

http://www.bausano.net/en/
EtherCATの基板やソフトウェアを販売している,ここからいくつか買ってもいいかも

Esmacat

https://www.esmacat.com/
ROS対応って書いてあるけどどの程度なのか,どれくらい使えるのかは未調査

Maxon

EPOS4はSPIでEhterCATのスレーブICと通信している様子.
MaxonのEtherCATはIRQは出てるけどSYNCはなさそう。そもそもスレーブICがET1100という可能性。 EPOS4 Hardware Reference

配線

100BASE-TXが基本.最大伝送速度は100MBps,100BASE-TXなので通信に必要な配線は実質4本.

EtherCAT P

EtherCAT P のコネクタはM8という名前で存在する。M8というのはネジコネクタ、M8ネジということの様。
中のピンの配置はCODINGというもので規定されていて、EtherCAT PはP-codingというものらしい。
取り扱っているのが、CONTECかHARTINGくらいしかなさそう。
超高速 Ethercat に 24V 電源供給が追加された M8x1 Ethercat P コネクタ

参考文献

EtherCAT イーサネットフィールドバス
いまさら聞けない EtherCAT入門:産業用ネットワーク技術解説(1/4 ページ) - MONOist
江端さんのDIY奮闘記 EtherCATでホームセキュリティシステムを作る
産業向けIoTのためのMCUとEtherCATの推進
EtherCATスレーブ開発
EtherCATスレーブ実装ガイド
TMS320F28335 - W5300 MACRAW를 이용한 EtherCat Test
Home of SOEM and SOES
Simple Robot ...build yourself robot simply with realtime EtherCAT Master and Raspberry pi
EtherCAT用語説明
Multi-Axis Position Control by EtherCAT Real-Time Networking
EtherCAT introduction IOC Robotics lab
An EtherCAT-Based Real-Time Control System Architecture for Humanoid Robots

SOEM

Open-Source Real-Time Robot Operation and Control System for Highly Dynamic, Modular Machines
Controllo di robot omnidirezionale tramite Ethercat
EL6751 Configuration Using SOEM under Ubuntu Linux
EtherCAT Tutorial: An Introduction for Real-Time Hardware Communication on Windows [Tutorial]
Real-time Servo Control using EtherCAT Master on Real-time Embedded Linux Extensions
PORTING OPEN SOURCE ETHERCAT MASTER SOFTWARE STACK TO ZEDBOARD RUNNING FREERTOS

CODESYS

EtherCATのマスターの作り方 市販のスレーブ機器と接続を想定
ソフトウェアPLC「CODESYS」の使い方まとめ

EtherCAT P

EtherCAT P ワンケーブルオートメーション
EtherCAT P®(1 本のケーブルで給電と EtherCAT®通信に対応)のリファレンス・デザイン TIDA-01461