Link
Link は AUTD3 デバイスとの物理的な通信路を抽象化したもの.
Link 一覧
Section titled “Link 一覧”- TwinCAT — Beckhoff TwinCAT 3 を使用する Link
- echocat — AUTD3 専用の EtherCAT Link
- EtherCrab — EtherCrab ベースの Link
- SOEM — SOEM ベースの Link (GPL-3.0-only)
- Remote — リモート接続用の Link
Link は Client::open に Link Option を渡すことで構築する. Option には接続先や
同期パラメータなどを指定する.
Client から見た送受信のインターフェースは Link 実装によらず共通である.
そのため, リンクを差し替えても上位コードを変更する必要はない.
Link と OS の組み合わせごとの大まかな性能の傾向を以下に示す. 値は NIC・カーネル設定・OS チューニングなどに強く依存するため, あくまで目安である.
| 指標 | TwinCAT (Windows) | echocat (mac/Linux) | echocat (Windows) | EtherCrab (mac/Linux) | EtherCrab (Windows) | SOEM (mac/Linux) | SOEM (Windows) |
|---|---|---|---|---|---|---|---|
| スループット | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| レイテンシ | ⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 安定性 | ⭐⭐⭐ | ⭐⭐ | ⭐ | ⭐⭐ | ⭐ | ⭐⭐ | ⭐ |
参考として, 以下に各環境での実測値を載せる.
TwinCAT (Windows)
測定条件
- OS: Windows 11 Pro 25H2
- NIC: Intel I219-LM
- デバイス数: 2
throughput (100000 sends, streaming)
cmd / sec : 815.15byte / sec : 510286.19latency (10000 sends, stop-and-wait)
mean : 9.261 msp50 : 9.009 msp95 : 11.459 msp99 : 12.045 msmin : 7.129 msmax : 17.021 msEtherCrab (Linux)
測定条件
- OS: CachyOS 7.1.3-2
- NIC: Intel 82574L
- デバイス数: 2
throughput (100000 sends, streaming)
cmd / sec : 996.46byte / sec : 623784.98latency (10000 sends, stop-and-wait)
mean : 5.000 msp50 : 4.999 msp95 : 5.006 msp99 : 5.021 msmin : 3.993 msmax : 6.032 msEtherCrab (macOS)
測定条件
- OS: macOS Tahoe 26.5.2
- NIC: Realtek RTL8153 (USB to Ethernet)
- デバイス数: 2
throughput (100000 sends, streaming)
cmd / sec : 993.96byte / sec : 622218.07latency (10000 sends, stop-and-wait)
mean : 4.999 msp50 : 4.999 msp95 : 5.124 msp99 : 5.160 msmin : 3.897 msmax : 6.020 msSOEM (Linux)
測定条件
- OS: CachyOS 7.1.3-2
- NIC: Intel 82574L
- デバイス数: 2
throughput (100000 sends, streaming)
cmd / sec : 999.56byte / sec : 625723.62latency (10000 sends, stop-and-wait)
mean : 5.002 msp50 : 4.999 msp95 : 5.005 msp99 : 5.017 msmin : 3.855 msmax : 6.142 msSOEM (macOS)
測定条件
- OS: macOS Tahoe 26.5.2
- NIC: Realtek RTL8153 (USB to Ethernet)
- デバイス数: 2
throughput (100000 sends, streaming)
cmd / sec : 998.05byte / sec : 624777.32latency (10000 sends, stop-and-wait)
mean : 4.999 msp50 : 4.999 msp95 : 5.037 msp99 : 5.093 msmin : 3.996 msmax : 5.726 ms