OpenPLC 是一套开源的软 PLC:装在普通电脑或树莓派上,它就能按 IEC 61131-3 的规矩跑梯形图、结构化文本和功能块图,对外说 Modbus、EtherCAT、S7 这些协议。
以前想搭一个小的控制验证环境,要么找一台闲置的真 PLC,要么装厂商的仿真软件,两条路都绕不开授权和加密狗。只是想在自己电脑上把一段逻辑跑一遍,代价其实不小。
它的做法不一样
→ 它是运行时,不是仿真器:程序在上面按确定的扫描周期执行,官方明确提到实时调度和确定性执行,不是那种"大概走一遍"的模拟→ 编程环境是配套的:OpenPLC Editor 负责画梯形图、写结构化文本和功能块图,编译之后通过接口下装到运行时→ 协议靠插件挂:Modbus TCP/RTU、EtherCAT、S7comm、OPC UA 都有对应插件,插件系统同时支持 Python 写的和 C/C++ 编译成动态库的两种→ 架构是拆开的两半:一半是 Python 写的 REST 接口(HTTPS,8443 端口),负责收程序、看编译、控制启停;另一半是 C/C++ 的执行内核→ 跑得动 Linux 就跑得动它:x86_64、ARM64、ARM32 三种架构都编了,官方给了 Docker 镜像→ 新版许可证换成了 MIT,比老版本的 GPL-3.0 宽松很多
对做自动化的人来说,它的价值不在"省一台 PLC 的钱"——真上产线,谁也不会为了省几千块去赌。它的价值在验证和教学:想验一段联锁逻辑对不对、想让新人在没有硬件的情况下练梯形图、想搭个测试台去打通上位机和 PLC 的通信,这些场景下有一个能真按扫描周期跑、还能开 Modbus 从站的软件,是很省事的。
要什么配置
→ 最低:官方的说法是"几乎任何能跑 Linux 的设备",x86_64、ARM64、ARM32 都有包。仓库没给具体的内存和 CPU 下限→ 实际体验:这句是我推的——真要拿它验证时序而不是玩,别用带桌面环境的普通发行版,扫描周期的抖动跟系统调度直接相关,这部分得自己拿示波器或者高精度计时实测,不能照抄任何人的结论→ 不用什么:不用买授权、不用加密狗、不用装厂商的开发环境。官方 Docker 镜像自带依赖,装的时候不用自己解
怎么跑起来
官方推荐走 Docker,也可以用仓库里的 install.sh 直接装在 Linux 上。
有件事得说在前面
这一条必须说清楚:大家熟悉的那个 OpenPLC v3 仓库已经在 2026 年 4 月 4 日归档,变成只读了,作者写明由 v4 接替。v4 换了组织、换成 MIT 许可,仓库首页自称已经具备 TLS、JWT 这些生产环境该有的东西,但它目前只有三百多星,而归档的老仓库有一千六百多——社区还没有跟过来。这意味着遇到问题时,网上能搜到的经验大部分是针对老版本的。真要用,别信任何一方的自我描述,自己拿一台机器连着跑几天看扫描周期稳不稳。另外还有一点:这类开源 PLC 长期被安全研究圈拿来当靶标用,接产线之前先把网络怎么隔离想清楚。
仓库地址:https://github.com/Autonomy-Logic/openplc-runtime
夜雨聆风