一张表看懂 OpenPLC V4 的协议栈变迁:OPC UA / S7 / EtherCAT 上位,DNP3 / EtherNet/IP 退场
一张表看懂 OpenPLC V4 的协议栈变迁
做 SCADA / HMI 集成的人最关心的就是”它跟我的上位机能不能对话”。OpenPLC V4 在协议层做了大手术,方向是更偏真实工业现场,但也砍掉了两个老协议。
图:Modbus 保底、OPC UA / S7 / EtherCAT 新增、DNP3 / EtherNet/IP 退场的协议栈矩阵(插件默认全禁用)。
一、插件清单(以 v4.2.x 为准)
V4 把协议与硬件 I/O 都做成插件,且默认全部禁用——装好运行时若不改 plugins.conf,它不吐任何现场总线。已验证的五个插件如下:
| 插件 | 协议 / 作用 | 语言 | 默认启用 | V 版本变化 |
|---|---|---|---|---|
modbus_slave | Modbus TCP 服务器(SCADA/HMI 读写 PLC) | Python | 否 | V3 即有,V4 保留 |
modbus_master | Modbus 主站(连远程 I/O) | Python | 否 | V3 即有,V4 保留 |
opcua | OPC UA(V4 新增) | Python | 否 | 🆕 新增 |
s7comm | Siemens S7(via snap7,V4 新增) | native | 否 | 🆕 新增 |
ethercat | 原生 EtherCAT master(V4 新增) | native | 否 | 🆕 新增(V3 仅 opt-in 实验) |
经验:启用插件后务必核对
plugins_default.conf与运行容器的实际加载,确认端口与证书符合预期再接产线。
二、退场的协议
| 协议 | V3 | V4 | 影响 |
|---|---|---|---|
| DNP3 | 支持 | ❌ 移除 | 与电力/水务 SCADA 对接需另寻网关 |
| EtherNet/IP | 支持 | ❌ 移除 | Rockwell/AB 系设备需走 OPC UA 或 Modbus 桥接 |
V3 的 webserver/webserver.py 里 start_dnp3、start_enip 在 V4 树中已无任何对应文件——这不是配置没开,是代码层面被删。
三、对 SCADA / HMI 集成的实际含义
- Modbus TCP 仍是万能底座:V4 内置 Modbus TCP 服务器,把 IEC 地址自动映射到标准寄存器,既有 SCADA/HMI 照常能连。这也是笔者 HMI Web Designer 项目(复用 OPC UA / Modbus TCP 架构)能直接对接 OpenPLC 的原因。
- OPC UA 上位打通:V4 新增的
opcua插件让 OpenPLC 能作为 OPC UA 服务器暴露标签,对接 Ignition、KEPServerEX、UA 客户端类 HMI 不再需要 Modbus 中间层。 - S7comm 直连西门子:现场若已有 S7-1200/1500,可用
s7comm插件直接通信,省去协议网关。 - EtherCAT 从站扩展:原生 EtherCAT master 让 V4 能驱伺服、远程 I/O 耦合器,闭环运动控制门槛降低。
- DNP3 / EtherNet/IP 用户:若你的系统依赖这两个协议,V4 不能直接替代 V3,需要保留 V3、或加协议网关(如通过
modbus_master+ 网关设备桥接)。
四、配置要点
- 插件默认关闭:编辑
plugins.conf(或运行容器内的plugins_default.conf副本),把目标插件Enabled改为true并重启运行时。 - OPC UA / S7 走 native 或 Python 实现,注意 snap7 的许可与依赖。
- EtherCAT 依赖 SOEM 子模块,源码编译时需联网拉取(笔者的 LuckFox 部署已验证 SOEM 可编入)。
五、结论
V4 的协议栈是”做减法聚焦核心,做加法补齐工业刚需”:砍掉偏小众的 DNP3 / EtherNet/IP,补上 OPC UA、S7、原生 EtherCAT 三块现代工厂最常被点名的拼图。对接上位机时,Modbus TCP 保底、OPC UA 升级是最稳的组合。
→ 下一篇:实战入门,把运行时跑起来。
配套代码与参考仓库
- OpenPLC Runtime v4(Autonomy-Logic,MIT):https://github.com/Autonomy-Logic/openplc-runtime
- OpenPLC Editor v4(Autonomy-Logic,GPL-3.0):https://github.com/Autonomy-Logic/openplc-editor
- 本系列配套示例(Docker Compose / 启保停 ST / GPIO 接线 / AI agent):https://gitcode.com/linjian19901122/openplc-v4-samples
系列导航 · 双向链接(OpenPLC V4 系列 · 共 12 篇)
- ① 定位:从教学玩具到工业级 vPLC
- ② 协议栈变迁
- ③ 实战入门:Docker + 启保停
- ④ 树莓派 GPIO 与隔离
- ⑤ 编译器管线:MatIEC → STruC++
- ⑥ 安全设计:TLS/JWT/8443
- ⑦ 插件系统实战
- ⑧ AI 增强 PLC(预测性维护)
- ⑨ vPLC 与 Autonomy Edge
- ⑩ 实时性 vPLC:实验室→车间
- ⑪ 为什么选 SOEM(EtherCAT 主站)
- ⑫ Edge Control 机遇与挑战
本系列当前均为草稿(
draft: true)。建议发布序:① → ③ → ② → ④ → ⑧ 打头,⑩⑪⑫ 作深度延展按读者反馈穿插。