从自然语言生成到规范检查、编译和浏览器仿真,SemaPLC把“能写代码”推进到“可验证交付”
让AI生成PLC代码并不难,难的是证明它在真实工程里能够编译、按需求运行,并在异常状态下保持安全。SemaPLC的设计重点不是换一个更大的模型,而是把工程工具链放进Agent循环,用验证结果驱动修改。
项目已开源,站内正确入口为 SemaPLC导航页。本文结合论文和项目材料,说明它如何工作、评测结果代表什么,以及工业使用必须保留哪些安全边界。


一、PLC生成为什么必须从“看起来对”走向“运行正确”?
PLC控制产线、阀门、电梯和安全联锁,语法正确只是最低要求。真正的交付还要检查变量、类型、接口和项目依赖,确认控制行为满足需求,并通过异常与边界测试。
普通代码Agent通常把生成文本当作终点;SemaPLC则把规范检查、编译和运行时仿真作为门禁,失败信息重新反馈给模型,直到达到预设验证条件。


二、把工具链搬进浏览器:WASM让验证环境可携带
项目通过WebAssembly在浏览器中运行PLC工程工具,使Agent能够在隔离环境里完成语法检查、编译和动态执行。浏览器化降低了不同开发机环境差异,也便于记录每一步工具输出。
但WASM仿真仍不是物理设备。现场I/O延迟、传感器噪声、执行器故障、总线时序和硬件联锁,需要在更接近真实系统的环境中继续验证。


三、Agent循环:需求、生成、诊断、修复
- 读取自然语言需求、已有项目结构和接口定义;
- 生成或修改PLC功能块;
- 执行规范与静态检查;
- 在项目上下文中编译,收集错误信息;
- 运行测试场景,对照断言和参考行为;
- 把失败定位反馈给模型,继续修复。
这套循环的优势是把模型的自由发挥限制在工程证据内。较小模型即使首次生成较弱,也可能通过工具反馈逐步接近可用结果。


四、评测怎么看:函数级72.6%,动态行为差距更明显
论文使用117个函数级任务和65个真实工业项目任务,并在7个模型上与多种基线比较。公开结果显示,SemaPLC在最严格的函数验证通过率上平均达到72.6%,最强基线为63.9%。
项目级动态行为得分差距更大:SemaPLC均值52.2,最强基线31.4。作者的消融实验还显示,规范、编译和运行时验证逐层加入后,动态行为分从仅生成的23.1提高到54.1。所有数字都应限定在论文基准与版本内。


五、为什么小参数模型也能提高工程通过率?
工具反馈把开放式生成问题转化为更明确的修复任务:编译器告诉模型语法和接口错误,运行时测试指出哪条断言失败。模型不需要仅靠参数记住全部PLC规则,而是可以利用确定性工具补足能力。
这不意味着小模型与大模型完全等价。复杂需求理解、长上下文和跨文件推理仍可能存在差距;闭环的作用是缩小工程质量波动,而不是消除模型能力上限。
六、企业落地建议:自动验证之后仍需人工安全门禁
- 先用历史项目建立企业自己的回归基准;
- 把编码规范、变量命名、硬件映射和异常策略写成机器可执行检查;
- 在沙箱、软件在环和硬件在环环境逐级放行;
- 关键联锁必须由独立安全系统和专业工程师确认;
- 保存提示、代码差异、编译输出、测试记录与批准人,形成审计链。
结论:SemaPLC最值得借鉴的不是某个单一分数,而是“生成必须经过执行验证”的工程原则。这一原则同样适用于其他高风险代码生成场景。












