コンテンツにスキップ

echocat

EchocatLink は AUTD3 のために書かれた EtherCAT Link.

Ethernet の raw socket を扱うため, Linux/macOS では実行に root 権限 (または CAP_NET_RAW) が必要. Windows では, npcap を「WinPcap API-compatible mode」でインストールする必要がある.

EchocatLinkOption {
iface,
sync0_period,
pdu_timeout,
state_transition_timeout,
dc_static_sync_iterations,
dc_start_delay,
sync_tolerance,
sync_timeout,
process_data_watchdog,
sleep_strategy,
};
フィールド 説明
iface Interface 使用するネットワークインターフェース. Interface::Auto で自動選択, Interface::Name(..) で名前指定
sync0_period Duration SYNC0 信号の周期 (= フレームの送出周期)
pdu_timeout Duration 1 つの PDU の応答を待つタイムアウト
state_transition_timeout Duration EtherCAT 状態遷移 (INIT → PRE-OP → SAFE-OP → OP) を待つタイムアウト
dc_static_sync_iterations u32 DC の静的ドリフト補正で回すフレーム数
dc_start_delay Duration SYNC0 の開始時刻を現在のバス時刻からどれだけ先に置くか
sync_tolerance Duration 同期完了とみなす許容誤差
sync_timeout Duration 同期完了を待つタイムアウト
process_data_watchdog Duration サブデバイスがプロセスデータの途絶を検出するまでの時間
sleep_strategy SleepStrategy 次のサイクルまでの待ち方

sync0_period の既定値は Windows で 2 ms, それ以外で 1 ms.

RT スレッドが次のサイクルまで待つ方法を選ぶ.

SleepStrategy::Sleep;
SleepStrategy::Spin {
margin: Duration::from_micros(100),
};
バリアント 説明
Sleep std::thread::sleep で待つ.
Spin { margin } デッドラインの margin 手前まで sleep し, そこからスピンする

デフォルトはSleep.