博文

OpenPLC 下为什么选用了 SOEM 作为 EtherCAT 主站驱动

OpenPLC V4 新增了原生 EtherCAT master——一个 native 插件 libethercat_plugin.so,底层依托 SOEM 子模块(笔者的 LuckFox 部署已实测 SOEM 编入)。为什么是 SOEM,而不是 IgH 或商业栈?答案不是”哪个许可最漂亮”,而是”哪个和 V4 的架构最同构”。

图:SOEM 与 V4 架构同构

图:V4 是 headless 用户态运行时,SOEM 也是用户态 .so,天然同构;IgH 走内核模块故未选。

一、先定位:SOEM 是什么

  • SOEM(Simple Open EtherCAT Master),仓库 github.com/OpenEtherCATsociety/SOEM,由 rt-labs / OpenEtherCATsociety 维护。
  • 纯用户态 C 库,几千行,靠 raw socket / L2 帧直接收发以太网帧,不走标准 TCP/IP 栈。
  • OSAL(操作系统抽象)/ OSHW(硬件抽象)两层,让它能跑到 Linux / Windows / RTOS / 甚至裸机。

二、架构同构:用户态对用户态(头号原因)

OpenPLC V4 运行时本身是一个 headless 用户态进程(Python/C++,经 plugins.conf 动态加载 .so 插件)。SOEM 作为用户态库,正好以 native .so 加载,不需要内核模块、不需要给网卡打实时补丁。

对照 IgH EtherCAT Master(EtherLab):它是 Linux 内核模块路线——要编 ec_master.ko + 适配网卡驱动(ec_igb 等),且内核部分 GPLv2 与 V4 的 MIT 用户态运行时定位冲突、部署复杂、跨平台差(仅 Linux)。对一个”MIT、headless、多平台”的运行时来说,IgH 的模型是错配。

结论:SOEM 的”用户态 + 插件 .so”与 V4 的架构天然同构,这是选型的头号原因。

三、跨平台:OpenPLC 要跑很多地方

OpenPLC 支持 Windows / macOS / Linux / Raspberry Pi / Arduino。SOEM 是用户态、只要求”能收发以太网帧”,几乎任何平台都能跑;更关键的是——Windows 上 SOEM 是唯一的开放源码 EtherCAT 主站选项(IgH 仅 Linux)。这与 OpenPLC 的多平台诉求一致。

四、与插件模型契合

  • EtherCAT 作为独立 native 插件(libethercat_plugin.so)经 plugins.conf 加载,默认禁用(与系列 协议栈篇 一致)。
  • IEC 地址空间通过 ESI / ENI 映射到 %IX / %QX / %IW / %QW,与 Modbus / OPC UA 插件同构;Editor 的 Bus 标签页扫描从站、匹配 ESI。
  • CoE / SoE / FoE、分布式时钟 DC、线缆冗余 SOEM 都支持。

五、生态与成熟度

SOEM 在机器人、研究领域被广泛验证,rt-labs 持续维护;SOEM 2.0(2025-07)做了现代化、加入 ENI 解析、多平台样例,稳定性与可配置性进一步提升。对一个需要”开箱即用的 EtherCAT 主站”的运行时,生态成熟度是硬指标。

六、许可边界(务必核查,别想当然)

这里最容易写错,单独说清:

  • SOEM v1.x:GPLv2 + 链接例外(明确允许链入专有作品)。
  • SOEM v2.0:改为双许可 GPLv3 或 RT-Labs 商业许可,链接例外已移除。
  • OpenPLC 以独立 native 插件 .so 动态加载 SOEM,把 EtherCAT 功能与 MIT 运行时解耦到不同模块;但是否触发 GPLv3 传染,取决于具体 SOEM 版本与链接方式,商业分发前必须核对所用版本与许可条款。
  • 此外,任何 EtherCAT 主站实现都需签署 ETG 的 EtherCAT Master License(免费兼容性协议,非版税)。
  • 商业替代:acontis EC-Master(native .so/.dll、生产级实时网卡驱动,已在 OpenPLC 上提供)。要确定性极限、或不愿碰 GPL 时可选。

七、确定性的代价(呼应 实时性篇)

用户态 SOEM 的实时性依赖宿主机调度:标准 Linux 下抖动约 ±200–300μs;配 PREEMPT_RT + 隔离核可压到几十 μs。微秒级硬实时 / 多轴伺服闭环,要么把关键回路留在边缘硬实时,要么上商业栈。

八、小结

SOEM 被选中的本质是**“架构契合优先于许可漂亮”**:用户态、跨平台、插件化、生态成熟,让它成为 V4 这种 MIT、headless、多平台运行时的自然搭档。代价是实时性要靠宿主机补(实时性篇),许可边界要商用前自查。

→ 收束到产业视角:Edge Control 下的机遇与挑战。


配套代码与参考仓库

系列导航 · 双向链接(OpenPLC V4 系列 · 共 12 篇)

本系列当前均为草稿(draft: true)。建议发布序:① → ③ → ② → ④ → ⑧ 打头,⑩⑪⑫ 作深度延展按读者反馈穿插。

相关阅读

← 返回博文列表