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)
スレーブの動作モード
- 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は生えている.
FMMU
フィールドバスメモリ管理ユニット:マスタの(論理)プロセスデータイメージからスレーブデバイスへの物理(内部)メモリへの割付に使用.
どのスレーブがどういった順番で接続されていて,どこからどこまでがそれぞれのスレーブのやり取りするデータなのか,という情報を管理する.
この情報は,マスタがすべてのスレーブから情報を吸い上げてその後に各スレーブに伝える,なのでマスタが起動してからこのFMMUは割当が行われるという認識でいいのだろうか?
なお,割当はビット単位で行われるため,効率的にデータを詰め込むことができる.
この記事の図がわかりやすい.元資料どこだろう.
Understanding of FMMU addressing of EtherCAT study notes
FMMUのセットアップ
- マスタが書くスレーブの入出力データ長を含んだハードウェア構成を読み込む.
- マスタがSDOを使ってプロセスデータのマッピングを整理
- マスタがプロセスデータのマッピングした情報をスレーブに配布.
下の表のようなFMMUの設定のとき,論理アドレス0x00014711
の3
bit目から0x00014712
の0
bit目までの6
bitを物理アドレス0x0F01
の1
bit目から6
bit目ままでマッピングする.
データ量としては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 (
1
bit目) - 読み出しアクセス割当 : 0x01 (
0
bit目)
となっており,この下位2bitの組み合わせで書き込み,読み出しアクセスのand/orを割り当てる.
SyncManager
マスタとスレーブ間のデータ交換及びメールボックス通信の整合性を維持する.
SyncManagerには動作モードが2種類存在する.
- メールボックスモード:データ交換のためのハンドシェイクメカニズムを実装.SDOの通信に使用
- バッファモード:EtherCATマスタとスレーブがいつでも同時にアクセスできる.古いデータは落ちる.個々のデータは双方が短い周期で常に書き換えている.
バッファモードで実行されているSyncManagerには,DPRAMで割り当てられているプロセスデータサイズの3倍必要
スレーブによってはSMウォッチドッグが実装されている.
一定時間の間にプロセスデータが正しく正確に通信できているかチェックする.
- SM0 : 出力 メールボックス
- SM1 : 入力 メールボックス
- SM2 : 出力 プロセスデータ
- SM3 : 入力 プロセスデータ
と割り当てる.
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)
ethercatcpp
The ethercatcpp framework
SOEMを元にC++で書かれたEtherCATフレームワークっぽいけど,ドキュメントが未整備感ある.
ハードウェア
スレーブコントローラ(ESC)
https://www.ethercat.org/download/documents/ESC_Overview.pdf
BGAばっかり,QFPとかQFNとかはんだ付けできそうなものは実質以下の2つ
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
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