从 MatIEC 到 STruC++:OpenPLC V4 编译器管线的质变
约 3 分钟
#openplc
#工控
#编译器
#ST
#IEC61131-3
如果你只把 OpenPLC 当”能跑梯形图的工具”,可能不会注意编译器换了。但 V4 把 V3 沿用的 MatIEC 换成了自研的 STruC++ 管线,这是一次影响性能、可维护性与扩展方式的底层质变。
图:V3 走 ST→MatIEC→C→GCC,V4 走 ST→STruC++→C++→CMake,与 C/C++ 插件同语境。
一、V3 的做法:MatIEC
V3 用 MatIEC 把 ST 先翻译成 C,再交给 GCC 编译。MatIEC 是 Beremiz 时代的遗产,成熟但古老,扩展和调试都不轻松,且整体受 GPL 约束。
二、V4 的做法:STruC++
V4 用自研 STruC++ 直接把 IEC 61131-3 的 ST 编译为 C++,再走现代 C++ 工具链(CMake ≥ 3.28、原生构建)。带来的变化:
| 维度 | V3(MatIEC→C) | V4(STruC++→C++) |
|---|---|---|
| 目标语言 | C | C++ |
| 构建系统 | Make 为主 | CMake(≥3.28) |
| 可调试性 | 中间代码晦涩 | C++ 栈trace、类型更清晰 |
| 扩展自定义 FB | 受限 | 与 C/C++ 插件模型统一 |
| 许可影响 | 受 GPL 遗产约束 | Runtime 侧可走 MIT |
笔者的 LuckFox 部署实测:V4 原生编译要求 CMake ≥ 3.28,Debian 12 自带 3.25 不达标,安装脚本会自动拉 armv7l 预编译 wheel 补齐;最终 C++ 核心 100% 通过。说明这套 C++ 管线在真实嵌入式上已跑通。
三、为什么这件事重要
- 性能与实时性:C++ 原生对象 +
SCHED_FIFO调度,确定性扫描周期更稳,复杂逻辑的单位扫描开销更低。 - 混合语言执行:V4 同时支持 LD/ST/FBD/IL/SFC 与 Python / C / C++。STruC++ 让”ST 逻辑”和”宿主语言插件”处在同一套编译/链接语境里,自定义功能块(FB)能直接用 C++ 写并被 IEC 程序调用。
- 可维护性:自研管线意味着 Autonomy-Logic 能独立演进语法支持、报错信息和优化,不必追 MatIEC 的上游。
- 许可解耦:Runtime 走 MIT 的关键前提之一,就是摆脱旧 GPL 编译链的依赖。
四、对开发者意味着什么
- 想写高频、重计算的 FB,现在用 C++ 插件写比在 ST 里绕更顺,且能被 IEC 程序直接实例化。
- 调试时可以拿到 C++ 层的堆栈与类型信息,定位”为什么这个 FB 不按预期跑”更快。
- 但要注意:构建门槛提高了(CMake 版本、C++ 工具链),低资源板必须按笔者部署记录里的”扩 swap +
-j1”策略来。
五、小结
STruC++ 不是营销话术里的”重写”,而是 OpenPLC 从”教学玩具”走向”可嵌入工业产品的运行时”的地基性改动:它让 V4 的 MIT 许可、C++ 插件模型和确定性实时执行成为可能。
→ 下一篇:Secure by Design,看 V4 怎么把安全做进底座。
配套代码与参考仓库
- 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
- STruC++ 源码位于 Runtime 仓库
src/,详见上方 Runtime 仓库
系列导航 · 双向链接(OpenPLC V4 系列 · 共 12 篇)
- ① 定位:从教学玩具到工业级 vPLC
- ② 协议栈变迁
- ③ 实战入门:Docker + 启保停
- ④ 树莓派 GPIO 与隔离
- ⑤ 编译器管线:MatIEC → STruC++
- ⑥ 安全设计:TLS/JWT/8443
- ⑦ 插件系统实战
- ⑧ AI 增强 PLC(预测性维护)
- ⑨ vPLC 与 Autonomy Edge
- ⑩ 实时性 vPLC:实验室→车间
- ⑪ 为什么选 SOEM(EtherCAT 主站)
- ⑫ Edge Control 机遇与挑战
本系列当前均为草稿(
draft: true)。建议发布序:① → ③ → ② → ④ → ⑧ 打头,⑩⑪⑫ 作深度延展按读者反馈穿插。