博文

OpenPLC V4 实操:Docker 拉起 Runtime 并跑通第一个启保停电路

理论说完,动手。本篇目标:在你自己的机器上把 OpenPLC Runtime v4 跑起来,并在仿真器里验证一个经典的电机启保停(seal-in)电路——这是检验你 PLC 环境是否真正可用的”Hello World”。

图:Docker 拉起 Runtime 与启保停电路

图:左为电机启保停(seal-in)梯形图逻辑,右为容器化 Runtime 与桌面 Editor 的连接拓扑。

一、拉起 Runtime(Docker)

docker pull ghcr.io/autonomy-logic/openplc-runtime:latest
docker run -d --name openplc \
  -p 8443:8443 \
  ghcr.io/autonomy-logic/openplc-runtime:latest

V4 运行时监听 8443(HTTPS,自签证书),且没有网页前端——浏览器开 https://localhost:8443 看到 404 是正常的。所有图形化操作都在 Editor 里完成。

没有 Docker 的环境(如笔者的 LuckFox 板,464MB RAM、无 Docker)走原生编译:git clone https://github.com/Autonomy-Logic/openplc-runtime && cd openplc-runtime && ./install.sh --native。低内存 ARM 板务必把 make -j$(nproc) 改成 make -j1 并扩 swap,否则 C++ 编译会 OOM 静默失败。详见笔者另一篇部署记录。

二、安装 OpenPLC Editor v4

按操作系统从官方下载页取对应包:

  • Windows 10/11 x64(Windows on ARM 暂不支持)
  • macOS:Apple Silicon 与 Intel 分发包
  • Linux:x64 AppImage(ARM 暂不支持)

装完启动 Editor,先确认版本号,再用内置 Simulator 跑一个空项目,确认环境正常再接真实目标。

三、第一个程序:启保停电路

需求(自检标准):

  • 按 Start → RunCmd 置位;松开 Start → RunCmd 保持;
  • 按 Stop → RunCmd 复位;Start 与 Stop 同时为真时 Stop 优先;
  • MotorOut 跟随 RunCmd。

变量(仿真阶段用未定位变量,物理地址留给目标配置):

名类型初值角色
StartPBBOOLFALSE启动(常开)
StopPBBOOLFALSE停止(TRUE=停)
RunCmdBOOLFALSE内部保持位
MotorOutBOOLFALSE仿真输出

梯形图(LD):

|----[/ StopPB ]----+----[ StartPB ]--------( RunCmd )----|
|                   |                                    |
|                   +----[ RunCmd ]----------------------|
|----[ RunCmd ]-----------------------------( MotorOut )---|

要点:NOT StopPB 同时包住启动支路与自保持支路,所以 Stop 永远优先。

结构化文本(ST)等价:

RunCmd   := (StartPB OR RunCmd) AND NOT StopPB;
MotorOut := RunCmd;

四、关键陷阱:POU 不挂任务就不会执行

很多新手编译通过、监控却看不到变量变化——根因是 POU 没有挂到循环任务。务必确认:

  1. 存在一个 Cyclic Task;
  2. 主 Program 实例已挂到该任务;
  3. 扫描间隔合理(实验室简单逻辑 10–50ms 即可)。

没有任务调度的 POU 会被编译进镜像,但扫描周期永不调用它。

五、在仿真器里验证

Editor 里选 Simulator 目标 → 编译 → 启动。手动 toggle StartPB / StopPB,观察 RunCmd / MotorOut 是否符合上面的自检标准。全部通过,说明你的 V4 工具链是健康的。

六、下一步

跑通仿真后,下一篇我们接真实硬件:树莓派 GPIO 与 OpenPLC V4,以及把未定位变量映射到物理引脚(注意 3.3V 与 24V 的鸿沟)。


配套代码与参考仓库

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

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

相关阅读

← 返回博文列表