AI 增强 PLC:OpenPLC V4 + 本地 LLM 做预测性维护
“AI 取代 PLC”是外行的想象,“AI 监督 PLC”才是工程上站得住的方向。OpenPLC V4 自带的 REST API、Modbus 与 WebSocket 恰好给了 LLM 一个干净的观察/建议接口。本篇是 jianstudio.cn「AI+工控」定位的拳头选题。
图:PLC 层跑确定性扫描、LLM 监督层只读过程数据并给建议,两层不共享进程。
一、架构原则:确定性与智能分层
- PLC 层(OpenPLC V4):跑确定性扫描周期——读输入、执行逻辑、更新输出,典型 10–100ms。负责”现在必须立刻做的动作”(启停、过流跳闸)。
- AI 监督层(本地 LLM,如 OpenClaw 式 agent):不进入、不中断扫描周期。它通过 Modbus TCP / REST API 读过程数据,做小时级/天级趋势分析,输出”建议维护”等 supervisory 动作。
两者不共享进程:一个管确定控制,一个管智能判断。PLC 永远保活,agent 挂了也不会让产线停。
二、在树莓派上搭(参考拓扑)
- Pi 上装 OpenPLC Runtime v4(见 实战入门),GPIO 接现场 I/O,注意 3.3V/24V 隔离;
- 同一台 Pi 上跑 LLM agent 守护进程(4GB 以下内存先扩 swap);
- agent 通过 Modbus TCP(
127.0.0.1:502)或 REST/WebSocket 读 OpenPLC 的标签。
from pymodbus.client import ModbusTcpClient
client = ModbusTcpClient('127.0.0.1', port=502)
# 读模拟量(如电机电流 %IW)做趋势分析
三、预测性维护示例
假设电机电流接在模拟输入:
- PLC 程序管即时控制:Run 信号到就转、Stop 到就停、过流立刻跳闸——确定性、毫秒级;
- LLM 监督层读数天电流曲线,发现缓慢上漂提示轴承磨损,在真的故障前发”建议维护”告警。
价值:PLC 保证过程不崩,agent 把”突发停机”变成”计划停机”。
四、为什么强调”本地”LLM
- 工厂数据不出厂,满足隔离与合规;
- 不依赖云延迟,supervisory 告警本就不要求毫秒级;
- 官方实践也建议 agent 层用云托管模型做推理、但不要把本地 LLM 硬塞进树莓派跑大模型——小模型在 Pi 上太慢,响应跟不上监督节奏。
五、边界与风险
- agent 只有建议权,执行权留在 PLC/人工确认,避免 LLM 误动作直接驱动物理设备;
- 强制写入(force)通道要鉴权收口(见 安全设计);
- 给 agent 的上下文要限定在过程数据,别把控制权当 prompt 参数暴露。
六、小结
OpenPLC V4 的开放接口让”确定性 PLC + LLM 监督”成为低成本的现实原型。对工控人来说,正确的姿势不是让 AI 写梯形图,而是让 AI 看懂梯形图跑出来的数据,然后告诉你”该保养了”。
→ 收官篇:Autonomy Edge 与 vPLC,看这套思路如何放大到云边编排。
配套代码与参考仓库
- 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
- 本地 LLM 监督 agent(
pymodbus读取 + 趋势告警),见示例库ai-supervision/
系列导航 · 双向链接(OpenPLC V4 系列 · 共 12 篇)
- ① 定位:从教学玩具到工业级 vPLC
- ② 协议栈变迁
- ③ 实战入门:Docker + 启保停
- ④ 树莓派 GPIO 与隔离
- ⑤ 编译器管线:MatIEC → STruC++
- ⑥ 安全设计:TLS/JWT/8443
- ⑦ 插件系统实战
- ⑧ AI 增强 PLC(预测性维护)
- ⑨ vPLC 与 Autonomy Edge
- ⑩ 实时性 vPLC:实验室→车间
- ⑪ 为什么选 SOEM(EtherCAT 主站)
- ⑫ Edge Control 机遇与挑战
本系列当前均为草稿(
draft: true)。建议发布序:① → ③ → ② → ④ → ⑧ 打头,⑩⑪⑫ 作深度延展按读者反馈穿插。