コンテンツにスキップ

Link

Link は AUTD3 デバイスとの物理的な通信路を抽象化したもの.

  • 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.15
byte / sec : 510286.19

latency (10000 sends, stop-and-wait)

mean : 9.261 ms
p50 : 9.009 ms
p95 : 11.459 ms
p99 : 12.045 ms
min : 7.129 ms
max : 17.021 ms
EtherCrab (Linux)

測定条件

  • OS: CachyOS 7.1.3-2
  • NIC: Intel 82574L
  • デバイス数: 2

throughput (100000 sends, streaming)

cmd / sec : 996.46
byte / sec : 623784.98

latency (10000 sends, stop-and-wait)

mean : 5.000 ms
p50 : 4.999 ms
p95 : 5.006 ms
p99 : 5.021 ms
min : 3.993 ms
max : 6.032 ms
EtherCrab (macOS)

測定条件

  • OS: macOS Tahoe 26.5.2
  • NIC: Realtek RTL8153 (USB to Ethernet)
  • デバイス数: 2

throughput (100000 sends, streaming)

cmd / sec : 993.96
byte / sec : 622218.07

latency (10000 sends, stop-and-wait)

mean : 4.999 ms
p50 : 4.999 ms
p95 : 5.124 ms
p99 : 5.160 ms
min : 3.897 ms
max : 6.020 ms
SOEM (Linux)

測定条件

  • OS: CachyOS 7.1.3-2
  • NIC: Intel 82574L
  • デバイス数: 2

throughput (100000 sends, streaming)

cmd / sec : 999.56
byte / sec : 625723.62

latency (10000 sends, stop-and-wait)

mean : 5.002 ms
p50 : 4.999 ms
p95 : 5.005 ms
p99 : 5.017 ms
min : 3.855 ms
max : 6.142 ms
SOEM (macOS)

測定条件

  • OS: macOS Tahoe 26.5.2
  • NIC: Realtek RTL8153 (USB to Ethernet)
  • デバイス数: 2

throughput (100000 sends, streaming)

cmd / sec : 998.05
byte / sec : 624777.32

latency (10000 sends, stop-and-wait)

mean : 4.999 ms
p50 : 4.999 ms
p95 : 5.037 ms
p99 : 5.093 ms
min : 3.996 ms
max : 5.726 ms