SemaPLC: A Project-Grounded, Verification-Gated Agent Harness for PLC Code Generation
Yanlun Tu, Huacan Wang, Ziyue Zhou, Jie Zhou, Ningyan Zhu, Ge Chen, Wangyi Chen, Tengfei Zhou, Yifan Zhou, Dasheng Yang, Xiaofeng Mou, Hui Zhang, Yi Xu
cs.SE
2026-08-19
美的等提出验证门控的PLC代码生成套件,完成必须以外部检查日志为准。117项函数任务均分72.6%,项目轨动态分52.2,高于基线最高的31.4。
PLC 跑产线、电厂、水处理,编程主要用 IEC 61131-3 的 Structured Text。大模型已经能生成独立的程序组织单元(POU),也有编译器进环、形式化验证、多 agent 迭代。产线上的逻辑却很少是孤立模块:新代码必须嵌进已有工程,复用功能块、变量和安全约定,并且运行时行为正确。编得过、静态检查过,仍可能把定时器配错、状态跳错、联锁漏掉。
已有系统会跑一下生成代码,用来证明「能跑」,不是用来在基准规模上量「跑得多稳」。SemaPLC 把项目锚定和运行时行为拆开测,并用一条硬完成规则管 agent:模型自己觉得够好不能停,必须等记入日志的外部检查过关。
套件搭在通用 tool-use 核心上,PLC 细节全走一层 MCP 工具:语法检查、编译、部署、强制变量、采轨迹。三条设计一起工作。
项目锚定在已有工程里检索结构,复用接口和功能块,只改有界范围,不整工程重写。多源验证覆盖规格条款审计、编译诊断、在真实运行时上打场景并比轨迹。验证门控规定每项检查最多修 2 轮;改一个字节就作废全部旧裁决;声称的 pass 必须能对上工具日志,对不上降成 unchecked。
评测两条轨。函数轨 117 个独立 POU,来自 Agents4PLC,工程师修过 43 个有缺陷的 oracle 任务;隐藏的形式化裁判要求至少 80% 性质被判定满足,不确定或超时算失败。项目轨 65 个任务,覆盖 Spec2Control 的 10 座工业装置,生成逻辑必须编进整个 ST 工程再跑。动态分把候选和隐藏参考部署到同一运行时,最多 6 个场景,比较核心输出端口轨迹。
骨干是同一组 7 个模型,从 MiniMax、Qwen、DeepSeek、GLM 到 GPT-5.5。基线是 LLM4PLC、AutoPLC、Agents4PLC,外加剥掉技能和工具的 bare 对照。
函数轨上 SemaPLC 在全部 7 个模型拿最高严格通过率,均分 72.6%,比最强基线 Agents4PLC 的 63.9% 高 8.8 点。最强骨干 GPT-5.5 上是 82.1% 对 79.5%。最弱的 SemaPLC 模型仍有 67.5%,高于所有基线均分。相对 bare,每个模型涨 8.5 到 33.3 点,弱模型涨得最多,跨模型分差从 37.6 收到 14.6,编译率均分从 85.5% 到 99.2%。
| 设置 | 函数轨严格通过 | 项目编译 | 静态行为 | 动态行为 |
| 最强基线 | 63.9 (Agents4PLC) | 58.7–81.5 | 71.7–75.7 | ≤31.4 |
| SemaPLC | 72.6 | 89.4 | 81.6 | 52.2 |
项目轨上静态分大家挤在约 10 点以内,动态分直接重排方法。GPT-5.5 上动态优势只剩 1.8 点(65.4 对 63.6),静态甚至落后。DeepSeek-V4-Flash 上的层消融:只生成动态 23.1,加规格 30.3,加编译 43.7,加运行时 54.1。代价从每任务 34k token、8.9 次请求涨到 129k、47.8 次。形式化管线对带 TON 定时器的 32 个程序、174 条性质,结论性裁决是 0%,这正是运行时验证要补的洞。
项目轨请求均分 34.1 次,Agents4PLC 只有 6.9 次;函数轨请求接近(6.5 对 6.3),墙钟反而更短(71 秒对 454 秒),因为基线每轮都跑模型检测。
给工业代码生成的教训很具体:停在编译和静态断言上看不出方法好坏,必须上运行时。套件本身不新造工具,新的是完成纪律。对弱模型增益更大,更像一层与模型无关的可靠性外壳。代码开源。产线集成场景如果只看静态分数,会高估现有 copilot。
动态分只覆盖隐藏参考给出的有界场景,没见过的工况没有测量。优势在最强模型上明显收窄,静态分在 GPT-5.5 上还落后,说明门控补的是模型够不着的可靠性,不是一条固定领先。函数轨 oracle 修了 117 里的 43 个,修过的基准和原 Agents4PLC 论文不可直接横比。agent 自己从规格推导注入场景,评分场景来自隐藏参考,两者只通过共享需求对齐,仍可能间接泄漏模式。墙钟在项目轨上并不便宜,可靠性是用请求次数买的。