interface:ethercat:soem

EtherCAT

SOEM

Simple Open EtherCAT Master

RT-LABS
OpenEtherCATsociety/SOEM

オープンソースのEtherCATマスタースタック
同様にスレーブにはSOESが存在,LAN9252とマイコンでスレーブ作るならSOESを移植すればいいのだろうか.
GPL2ライセンス(一部を除く)で公開されている.

  • Visual Studio環境(開発者コマンドプロンプト for VS 20XX とか)
  • CMake 2.8.0 later
  • Npcapライブラリ

を用意しておく.
開発者コマンドプロンプトもしくはx64 Native Tools Command Prompt for VS 2019からSOEMのディレクトリを開き,下記コマンドを順番に実行.
といってもclcmakeのパスが通っていればどのコマンドラインソフトウェアでも良さそう.

mkdir build
cd build
cmake .. -G "NMake Makefiles"
nmake

ビルドが成功するとSOEM/build/test/linuxフォルダ内部に

  • eepromtool
  • simple_test
  • slaveinfo

のフォルダが生成され,それぞれの中に実行ファイルがあるはず.

とはいってもWindows用のC(C++)コンパイラ(MSVC)さえあればいい.なのでVisualStudio全部でなくBuildToolsのみインストールすればよい.
コマンド ラインから Microsoft C++ ツールセットを使用する
ダウンロードページ(https://visualstudio.microsoft.com/ja/downloads/)下部の「Visual Studio 2019のツール」から「Build Tools for Visual Studio 2019」をダウンロード,実行する.
インストールするワークロードから「C++ Build Tools」を選択する.このとき,オプションで

  • MSVC v142
  • Windows 10 SDK
  • WIndows用C++ CMakeツール
  • ツールのコア機能のテスト ビルドツール

にチェックが入ってることを確認する.
SOEMをビルドするためだけに上記全部入らないだろうけど,MSVS v142だけではcmake実行時にエラーが出た.一つずつインストールする項目する増やして検証しても良かったけど面倒なのでまとめてインストールしておく.
Visual C++ ビルドツール 2019 (Build Tools for Visual Studio 2019) のインストール(Windows 上)

SOEMなどフリーのEtherCATのマスターソフトウェアはネットワークの下のレイヤーにアクセスするためのソフトウェアが必要.
https://nmap.org/
WindwosではNpcapをインストールしないとEtherCAT Explorerや Easy Configuratorが利用できない.

Win PcapはWindows10では安定しないらしいので大体としてNpcapをインストールする.
インストール時のオプションで
Install Npcap in WinPcap API-compatible Mode
へのチェックを入れておくこと.

WindowsでSOEMのアプリケーションを走らせるときはPowershellではくコマンドプロンプトがいい.アプリケーションを動かすときNICのIDを引数に渡すが,バックスラッシュと円マークの違いで正しく認識されない.
ESIファイルの書き込み.はeepromtoolでできる.引数にNICEのID,つながってる接続されているスレーブの番号,オプション,ファイル名を渡す.
以下はコマンドプロンプトでのログ.

F:\ws_ecat\SOEM\build\test\linux\eepromtool>eepromtool.exe \Device\NPF_{9DD75716-8432-4044-83D0-7E8B95869425} 1 -w slave.bin
SOEM (Simple Open EtherCAT Master)
EEPROM tool
ec_init on \Device\NPF_{9DD75716-8432-4044-83D0-7E8B95869425} succeeded.
1 slaves found.
Slave 1
 Vendor ID        : 00001337
 Product Code     : 000004D2
 Revision Number  : 00000000
 Serial Number    : 00000000
Busy.
Total EEPROM write time :642ms
End, close socket
End program
 
F:\ws_ecat\SOEM\build\test\linux\eepromtool>

ここでは

  • NICのID \Device\NPF_{9DD75716-8432-4044-83D0-7E8B95869425} (\になっているが,コマンドプロンプト上ではで表示される.)
  • 書き込むESIファイル slave.bin

参考文献

  • interface/ethercat/soem.txt
  • 最終更新: 2021/04/25
  • by yuqlid