4 个版本 (2 个破坏性)

0.4.1 2024 年 2 月 3 日
0.4.0 2024 年 2 月 3 日
0.2.0 2023 年 8 月 22 日
0.1.0 2023 年 6 月 24 日

#151 in 机器人学

每月 25 次下载

MIT/Apache

300KB
4.5K SLoC

Etherage

此 crate 旨在提供另一个 Ethercat 主设备的实现。EtherCAT 通信协议是一种在以太网层上工作的网络协议,专为实时工业应用(如机器人)设计。它由 ETG (EtherCAT Technology Group) 标准化。

Crates.io Docs.rs

目标

  • 功能完整

    此库旨在允许在 ethercat 规范 中所述的所有可能功能。此实现不应添加任何限制。

  • 模块化

    用户可以决定在主设备和每个从设备上初始化什么,并且可以在执行高级操作的同时深入了解通信细节。

  • 接近 ethercat 内部函数

    我们认为产生冗余代码的最佳方式是试图让圆形适应正方形,因此此库应透明地展示 Ethercat 协议的实际工作方式。毕竟,Ethercat 是一个标准。

  • 通用主设备实现

    此实现应适用于任何目的。

  • 最高性能、可靠性、灵活性

    此主设备实现应足够快,即使在性能较差的硬件上也能进行实时操作,并且应适用于工业使用。最好还能快速初始化。

  • 协议安全性

    rust 内存安全性 通过建议的工具防止由于内存使用不当而产生的任何意外错误。在这里,我们定义 协议安全性 以防止由于此库使用不当而导致的意外通信错误。这意味着此处提出的 API 使主设备无法在不写入 不安全 代码的情况下中断通信。

  • 易于使用

    当然,这个 crate 必须易于使用

非目标

  • 无 std (目前)
  • 适应特定供应商的 EtherCAT 实现,或适应特定供应商的设备
  • 抽象 EtherCAT 协议实际上做什么
  • 符合 OSI 模型

当前完整功能列表

  • 管理不同套接字
    • 原始以太网
    • UDP
  • 最小化特性
    • PDU 命令
    • 访问逻辑和物理内存
    • 从站信息访问
  • 邮箱
    • 通用消息
    • 转发
    • COE
      • SDO 读写
      • PDO 读写
      • 信息
      • 映射工具
    • EOE
    • FOE
  • 分布式时钟
    • 静态漂移
    • 动态漂移
  • 方便
    • 逻辑内存和从站组管理工具
    • 映射工具
  • 优化特性
    • 每个 EtherCAT 帧中可以有多个 PDU(加速和压缩传输)
    • 尽可能并行化不同从站或同一从站的任务
    • 传输和实时函数中没有动态分配
    • 异步 API 和实现以避免线程上下文切换

入门

要求

  • 如果您要通过直接以太网连接连接到 EtherCAT 段(常见做法),则需要权限来打开原始套接字(通常是 root 权限)
  • 如果您要通过 UDP 套接字连接到 EtherCAT 段,任何普通用户都可以继续。
  • 不需要特殊的操作系统依赖或配置,只需要 Cargo.toml 中的内容

路径

了解 etherage 可以做什么的最佳方式是查看 示例

首先:检查示例是否在所需示例的 main 中使用了正确的网络接口(默认为 eno1

然后编译并运行一个示例,例如列出连接的从站

cargo build --example slaves_discovery
sudo target/debug/examples/slaves_discovery

具有 8 个欧姆龙伺服驱动器的典型输出

  slave 7: "R88D-1SN01H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.00" software "V1.02.00"
  slave 0: "R88D-1SN02H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.00" software "V1.02.00"
  slave 6: "R88D-1SN02H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.01" software "V1.04.00"
  slave 3: "R88D-1SN02H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.00" software "V1.02.00"
  slave 5: "R88D-1SN02H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.00" software "V1.02.00"
  slave 4: "R88D-1SN02H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.00" software "V1.02.00"
  slave 1: "R88D-1SN02H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.00" software "V1.02.00"
  slave 2: "R88D-1SN04H-ECT" - ecat type 17 rev 0 build 3 - hardware "V1.01" software "V1.04.00"

依赖关系

~9–20MB
~291K SLoC