interface:ethercat

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)という.

スレーブの動作モード

  • Init : 電源投入直後,マスタからスレーブへのレジスタ(スレーブの基本機能や通信設定など)アクセス可能
  • Pre-Operation(PreOp) : 準備状態.マスタはアプリケーション部分のせッ亭項目にアクセス可能
  • Safe-Operation(SafeOp) : 安全運転状態.プロセスデータ通信は実行できるが,スレーブはマスタから受信したデータを処理に反映しない.
  • Operational(Op) : 運転状態,プロセスデータ通信を実施し,スレーブも運転する.
  • Bootstrap(Boot) : スレーブのファームを書き換える特集な状態(対応しているスレーブのみ)

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

EtherCATステートマシン

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

  • マスタが書くスレーブの入出力データ長を含んだハードウェア構成を読み込む.
  • マスタがSDOを使ってプロセスデータのマッピングを整理
  • マスタがプロセスデータのマッピングした情報をスレーブに配布.

下の表のような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のみ

  • 書き込みアクセス割当 : 0x02 (1bit目)
  • 読み出しアクセス割当 : 0x01 (0bit目)

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

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

  • メールボックスモード:データ交換のためのハンドシェイクメカニズムを実装.SDOの通信に使用
  • バッファモード:EtherCATマスタとスレーブがいつでも同時にアクセスできる.古いデータは落ちる.個々のデータは双方が短い周期で常に書き換えている.

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

  • SM0 : 出力 メールボックス
  • SM1 : 入力 メールボックス
  • SM2 : 出力 プロセスデータ
  • SM3 : 入力 プロセスデータ

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

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から選ぶ.

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

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

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

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

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は固定しておくほうが良い.

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

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

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

LAN9252

LAN9252

  • LAN9253
  • LAN9254

AX58100

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

参考文献

  • interface/ethercat.txt
  • 最終更新: 2021/11/12
  • by yuqlid