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,};echocat.EchocatLinkOption( iface, sync0_period, pdu_timeout, state_transition_timeout, dc_static_sync_iterations, dc_start_delay, sync_tolerance, sync_timeout, process_data_watchdog, spin_margin,)new EchocatLinkOption( iface, sync0Period, pduTimeout, stateTransitionTimeout, dcStaticSyncIterations, dcStartDelay, syncTolerance, syncTimeout, processDataWatchdog, spinMargin);| フィールド | 型 | 説明 |
|---|---|---|
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.
SleepStrategy
Section titled “SleepStrategy”RT スレッドが次のサイクルまで待つ方法を選ぶ.
SleepStrategy::Sleep;SleepStrategy::Spin { margin: Duration::from_micros(100),};| バリアント | 説明 |
|---|---|
Sleep |
std::thread::sleep で待つ. |
Spin { margin } |
デッドラインの margin 手前まで sleep し, そこからスピンする |
デフォルトはSleep.