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 次下载
300KB
4.5K SLoC
Etherage
此 crate 旨在提供另一个 Ethercat 主设备的实现。EtherCAT 通信协议是一种在以太网层上工作的网络协议,专为实时工业应用(如机器人)设计。它由 ETG (EtherCAT Technology Group) 标准化。
目标
-
功能完整
此库旨在允许在 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