宅内EtherCATのすゝめ


この記事は [EtherCATについて語る Advent Calendar 2019](https://adventar.org/calendars/4097) の20日目です。
昨日は@lipoyangさんの [ロボットの体内ネットワークとしてのEtherCAT](https://lipoyang.hatenablog.com/entry/2019/12/19/120332) でした。


#はじめに
さて、いよいよクリスマスまで、後５日！
今回のネタは、宅内EthertCATのススメです。

#宅内でEtherCATを始める方法

宅内でEtherCAT初めたい方が居るかわかりませんが、まとめておきます。

**マスター**　
EtherCATの制御処理を行う親の様な物です。主にPCが多いですが、RaspberryPiやJetson Nanoで動かすことが出来ます。
また、本場のEtherCATではリアルタイムが重要となり、リアルタイムカーネルパッチなどのテクニックを追加することが多いです。宅内では・・・無くても良い気がします。

**スレーブ**
EtherCATで制御される側の子の様な物です。スレーブは何台でも(65536台まで)接続可能です。展示会で見た所、機器にサーボモータを２５機必要な際は、EtherCATスレーブを２５機接続していました。この様に、１機能１スレーブという細かい機能に分解が可能です。
逆に言えば、１スレーブは１機能に集中して専門的処理をするのが良いです。

**その他**
EtherCATは有線LANの規格に成りますので、有線のLANポート（希望は１Gbpsですが100MBpsの規格なので100Mbpsでも問題ないです）が必要に成ります。ノートPCで試す際はUSB−LANポートでも試せます。ただリアルタイムは減りますので目をつぶりましょう。

LANケーブルが何本か必要になります。今どき無線LANの時代に有線LANケーブルを買って親に怒られる方は、隠れながら遊びましょう。

また、電源に関しても必要に成る場合があります。５Vや１２V、２４Vの物が殆どです。産業用は２００VACや三相交流などが家庭には無い電源もあるので、宅内で試す際はDC24V以内の物がオススメです。

#マスターを用意する

まず、マスターと呼ばれる機能を実現するPCを用意します。

- Windows PC 
   WindowsではSOMEがサポートしてます。
　　https://github.com/OpenEtherCATsociety/SOEM

- Linux PC
  SOEMがサポートしてます。
  自分のPyEtherCATもサポートしてます。
  https://github.com/pyEtherCAT

- MacOS
　SOEMがサポートし始めたらしい。

オススメとしては、RaspberryPiやJetsonNanoがオススメです。
EtherCATの仕組みは少し特殊になるため、OSの深層までいじってしまう場合があります。
そのため、手軽に安全にOSを再度インストールが出来るRaspberryPiが実験する上でおすすめです。
たが、PCと比べるとスペックが下がりますので、**開発用LinuxPC**を用意するのが一番面白いです。

#スレーブを用意する
![スクリーンショット_2019-12-19_21-43-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/c3cdca1d-6049-fef8-1a1c-bed8efc0abf3.png)

- [AN-201_EtherCATスレーブ評価基板LAN9252使用](https://www.switch-science.com/catalog/5917/)
- [EasyCAT](https://www.bausano.net/it/hardware/arduino-ethercat/arduino-easycat.html)

早速自分の宣伝をしつつ、同じチップを使ってるEasyCATもオススメです。
これらに関しては、同じチップなので凡そ把握が出来ますが、以下のものに関してはどの様に開発をすればよいかイマイチ分からず、人柱を求めます。

- [TS-RX72M-COM](https://www.chip1stop.com/view/dispDetail/DispDetail?partId=TSRA-0000058&keyword=RX72M)

また、産業用の中でも触りやすい機器もあります。
![スクリーンショット_2019-12-19_21-32-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/f53a7c01-34f9-1be0-961c-de7191284b93.png)
![スクリーンショット_2019-12-19_21-32-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/59b52060-0d2d-17ce-54f8-98271f13dda5.png)

- [OMRON EtherCAT対応 ねじ式端子台タイプ](https://www.fa.omron.co.jp/products/family/2954/lineup.html)

１台実機を持ってますが、使い方が分からず来年の課題としたい所です。

#あ〜あと何だっけ？
宅内EtherCAT、あとなんだっけなぁ。
[EtherCATについて語る Advent Calendar 2019](https://adventar.org/calendars/4097)の過去日にヒントが隠されているかも知れません。

このネタは今後もススメていこうと思います。宅内EthertCAT、面白いよ。

#おわりに

え？おわり？
ハイ、すみません。**宅内EtherCAT**という言葉が使いたかっただけです。

別に宅内ならEtherCATじゃなくて良くね？いやいやいや・・・
皆さん、宅内サーバーラックの方々をご存知ですか？あの方々も仕事で使用する機材で構築する事で現場でのノウハウを高めているのです！！
我々も真似をして、**技術的好奇心**と**現場で使用するかも**という観点から、**自宅でもEtherCATを触っておくとノウハウが貯まる！**という点があります。

# もしもEtherCATをルーターに接続してしまったら・・・

早速、宅内EtherCATの成果を話しましょう。
宅内EtherCATですから、一般の御家庭通り、ルーターとスイッチングハブがありますよね。
そこにEtherCATを接続してしまったらどうなるでしょう！

答えは**直ちに問題はないが、ゆくゆく問題になる**です。

何が**問題ない**のか。EtherCATは**ブロードキャストパケット**になります。ブロードキャストパケットは言わば**全方位発射**みたいなものです。
本来はEtherCATは 1-to-1の接続となるため、ブロードキャストでも問題はありませんが、ルーターやスイッチングハブにブロードキャストが流れると**ご丁寧に全員にパケットを流してくれます**。
そのため、EtherCATパケットは全てのPCへとパケットが流れていきます。

それって害があるんじゃない？難しい話ですが、**見かけ上は問題なく動きます。**
というのも、PC側は受け取ったパケットを判別して、不要なものは破棄します。なので**不明なブロードキャストパケット**はPC側で**破棄**されます。

破棄するなら問題なくない？確かにそうです。では、何が**問題ある**のでしょうか。
それはネットワークの**帯域**です。
EtherCATパケットは物凄く高速にパケットを**流し続けます。**そのため、ルーターやスイッチングハブにアクセスが集中し、他のパケットが入り込む余地が無くなったり、順番待ちを行ったり、負荷が固まればフリーズしてしまうこともあります。
ただ、今のEtherCATでは**100Mbps**が最大帯域で、実際は数十Mbpsしか出ません。そのため、1Gbpsに耐えられるスイッチングハブやルーターですと**問題なく動いてしまいます。**

まぁ、おわかり頂ける等に、**余りやらないほうが良い**と言ったところでしょうか。

この様な**現場でやったら間違いなく怒られる**内容を、先に自宅で試すって言うのも、気軽に出来てとても良かったです。

と、そんな所で、今日の記事を終えたいと思います。
宅内EtherCAT、いい響きですね。今後も使っていきたいと思いました。
ではでは
北神(@nonnoise)