EtherCrab
NOTE: TwinCATが使用可能な環境では, 基本的にTwinCATを使用することを推奨する.
このリンクはオープンソースのEtherCAT MasterライブラリであるEtherCrabを利用したリンクである.
Windowsの場合は, npcapを「WinPcap API compatible mode」でインストールしておくこと. Linux/macOSの場合は, 特に準備は必要ない.
Install
cargo add autd3-link-ethercrab
target_link_libraries(<TARGET> PRIVATE autd3::link::ethercrab)
メインライブラリに含まれている.
メインライブラリに含まれている.
メインライブラリに含まれている.
APIs
第1引数にはエラーが起きたときのコールバック関数を, 第2引数にはオプションを指定する.
use autd3_link_ethercrab::{EtherCrab, EtherCrabOption};
use std::time::Duration;
fn main() {
let _ =
EtherCrab::new(
|idx, status| {
eprintln!("Device[{}]: {}", idx, status);
},
EtherCrabOption {
ifname: None,
state_check_period: Duration::from_millis(100),
sync0_period: Duration::from_millis(2),
sync_tolerance: Duration::from_micros(1),
sync_timeout: Duration::from_secs(10),
..Default::default()
},
);
}
#include <iostream>
#include <autd3/link/ethercrab.hpp>
int main() {
using namespace autd3;
link::EtherCrab(
[](const uint16_t idx, const link::Status status) {
std::cout << "Device[" << idx << "]: " << status << std::endl;
},
link::EtherCrabOption{
.ifname = std::nullopt,
.state_check_period = std::chrono::milliseconds(100),
.sync0_period = std::chrono::milliseconds(2),
.sync_tolerance = std::chrono::microseconds(1),
.sync_timeout = std::chrono::seconds(10),
});
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Link;
using AUTD3Sharp.Utils;
new EtherCrab(
errHandler: (idx, status) =>
{
Console.Error.WriteLine($"Device[{idx}]: {status}");
},
option: new EtherCrabOption
{
Ifname = null,
StateCheckPeriod = Duration.FromMillis(100),
Sync0Period = Duration.FromMillis(2),
SyncTolerance = Duration.FromMicros(1),
SyncTimeout = Duration.FromSecs(10),
}
);
from pyautd3 import Duration
from pyautd3.link.ethercrab import (
EtherCrab,
EtherCrabOption,
Status,
)
def err_handler(idx: int, status: Status) -> None:
print(f"Device[{idx}]: {status}")
EtherCrab(
err_handler=err_handler,
option=EtherCrabOption(
ifname=None,
state_check_period=Duration.from_millis(100),
sync0_period=Duration.from_millis(2),
sync_tolerance=Duration.from_micros(1),
sync_timeout=Duration.from_secs(10),
),
)
EtherCrab
リンクで指定できるオプションは以下の通りである.
デフォルト値は上記の通り.
ifname
: ネットワークインタフェース名.None
の場合はAUTD3デバイスが接続されているネットワークインタフェースを自動的に選択する.state_check_period
: エラーが出ているかどうかを確認する間隔sync0_period
: 同期信号の周期- 大量のデバイスを接続すると挙動が不安定になる場合がある. このときは,
sync0_period
の値を増やす. これら値はエラーが出ない中で, 可能な限り小さな値が望ましい. どの程度の値にすべきかは接続している台数に依存する.
- 大量のデバイスを接続すると挙動が不安定になる場合がある. このときは,
sync_tolerance
: 同期許容レベル. 初期化時, 各デバイスのシステム時間差がこの値以下になるまで待機する. 以下のタイムアウト時間が経過しても同期が完了しない場合はエラーとなる. この値を変更することは推奨されない.sync_timeout
: 同期タイムアウト. 上記のシステム時間差測定のタイムアウト時間.