背景

EtherCAT 是德国倍福(Beckhoff)推出的实时工业以太网协议,核心特点是"飞读飞写"——主站发出一个数据帧,依次穿过所有从站,每个从站在帧经过的瞬间就地提取自己的指令、塞入自己的反馈,单节点处理 < 1μs,连100个伺服轴也只需约100μs刷新一轮。

主站 = 运行在控制器上的软件,负责发起所有通信。开源世界里最成熟的两条路线就是 SOEM 和 IgH。


一、SOEM(Simple Open EtherCAT Master)

一句话定位:轻量、纯用户态、极易移植的 C 语言 EtherCAT 主站库

出身: 最初由瑞典 rt-labs 维护,现由 OpenEtherCATsociety 在 GitHub 托管

核心特征:

  • 纯用户态库(User-space Library),用 纯 C 编写,代码量约几千行,非常易读

  • 通过 raw socket / L2 帧(如 AF_PACKET)直接收发以太网帧,不走标准 TCP/IP 栈

  • 分层架构清晰:

    • OSAL(操作系统抽象层)→ 屏蔽 OS 差异

    • OSHW(硬件抽象层)→ 屏蔽网卡驱动差异

    • 只需重新实现这两个抽象层,就能移植到新平台

  • 官方支持的功能:PDO 周期性通信、SDO 读写、从站状态机管理(Init→PreOp→SafeOp→Op)、CoE/SoE/FoE、分布式时钟 DC、双网口线缆冗余

许可证: Modified BSD(非常宽松,可闭源商用)

优势:

  • ✅ 移植性极强——Linux / Windows / RTOS(FreeRTOS、Zephyr)/ 甚至裸机都能跑

  • ✅ 集成简单——就像链接一个普通 .a/.so 库,不需要碰内核

  • ✅ 上手快——API 简洁,适合快速原型、学术研究、中小型设备

局限:

  • ⚠️ 运行在用户态,实时性受制于 OS 调度。在标准 Linux(无实时补丁)下 1ms 周期抖动可能达 ±200~300μs

  • ⚠️ 高级功能(复杂 DC 主站管理、热插拔拓扑变更等)要么不支持要么需要自己扩展

  • ⚠️ 社区相对小,文档偏精简


二、IgH EtherCAT Master(EtherLab)

一句话定位:Linux 内核态的工业级"重型"开源主站,硬实时标杆

出身: 来自德国 TU Darmstadt / EtherLab 项目,IgH 公司维护,历史超过 15 年,是 Linux 平台上最成熟的开源 EtherCAT 主站实现

核心架构(三层):

层级 角色
Master Module(内核模块) "大脑"——管理总线、状态机、DC 同步、域/Domain 的 PDO 过程数据交换
Device Modules(优化网卡驱动) 实时网卡驱动层(如 ec_igbec_e1000e),直接操作 DMA/寄存器收发 EtherCAT 帧,绕过内核网络栈
Application / 用户态工具 业务逻辑通过 libethercat 库或 ioctl 字符设备 /dev/EtherCATx 与内核主站通信;自带 ethercat CLI 命令行工具

核心特征:

  • 内核模块架构 → 最高权限、最短路径、最低延迟

  • 支持 RTAI / Xenomai / PREEMPT_RT 等实时环境

  • 功能极为完整:CoE(含 CiA402)、SoE、FoE、EoE(虚拟网卡)、SDO 信息服务、动态 PDO 配置、DC 分布式时钟(精度可达 ±25ns 级配 PTP 网卡)、热插拔/拓扑变更自动重配、多域不同采样率、总线监控

  • ethercat 命令行的完整诊断能力(ethercat slavesethercat domainsethercat cstruct …)

许可证: GPL v2(内核部分)——意味着如果你的产品静态链接/集成方式触发 GPL 传染条款,需要注意合规(很多公司通过用户态 API 间接调用规避)

优势:

  • 硬实时标杆——最小稳定周期可做到 62.5μs(Xenomai + igb 优化),抖动可压到 2~3μs 级别

  • ✅ 工业级稳定性,广泛用于机器人、CNC、多轴伺服产线

  • ✅ 对 Beckhoff/Kollmorgen/汇川等主流从站的兼容性最好

局限:

  • ⚠️ 部署复杂——需要编译内核模块 + 适配网卡驱动,对内核版本有依赖

  • ⚠️ 跨平台差——绑死 Linux,不便于迁移到裸机或纯 RTOS

  • ⚠️ 调试门槛高(内核态 oops 比用户态 crash 难受得多)


三、核心对比一览

维度 SOEM IgH EtherCAT Master
运行层级 用户态库 内核模块 + 用户态工具
实时性 中~高(取决于 RT 补丁 + busy poll) 极高(内核直操网卡 DMA)
典型抖动 标准 Linux: ±200~300μs;RT-Patch: 可改善 可压到 个位数 μs
移植性 ⭐⭐⭐⭐⭐ 裸机/RTOS/Win/Linux 通吃 ⭐⭐ Linux only,依赖特定网卡驱动
功能完整度 基础 PDO/SDO/CoE + 简单 DC 全功能:DC、热插拔、多域、EoE、FoE、SoE…
部署难度 很低(链接库即可) 高(内核模块 + 驱动 + 实时内核)
许可证 BSD(商用友好) GPL v2(需注意传染性)
生态工具 基本靠自己写 / 看源码 自带 ethercat CLI + 文档体系完善
最适合 嵌入式、IO 采集、快速验证、成本敏感、多平台 工业机器人、多轴伺服、高速包装机、硬实时产线

四、怎么选?

选 SOEM 当:

  • 你在做 MCU/嵌入式裸机或轻量 RTOS 方案(IgH 根本跑不了)

  • 控制周期在 ≥2ms 够用(如分布式 IO、简单阀组、传感器采集)

  • 团队不想碰内核,想 快速出活、降低维护成本

  • 商业授权敏感——BSD 许可省心

选 IgH 当:

  • 你是 多轴伺服 / 机器人关节 控制,要求 1ms 甚至 sub-ms 周期 + 极低抖动

  • 跑在 Linux + PREEMPT_RT(或 Xenomai) 上,可以接受内核模块部署流程

  • 你需要 DC 同步精度 + 热插拔 + 完善的从站生态兼容

  • 产品的长期稳定性和诊断工具体系是硬要求

实际工业项目中还有一种组合思路:早期原型用 SOEM 快速打通通信,量产阶段切到 IgH(或商业方案如 acontis EC-Master)满足硬实时和认证需求。

如果你告诉我:你的平台(树莓派/x86/某款 ARM?)、目标周期(1ms / 500μs / 2ms?)、从站类型(伺服还是 IO?多少个轴?)、是否需要 DC 同步——我可以帮你更精确地给选型结论和大致的搭建路径。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐