> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# AI 写 PLC 代码总差一步：一句"有蓝色盘吗"说清了缺的是什么
- URL: https://www.hubwiz.com/blog/plant-aware-plc-copilot-four-levels/
- Published: 2026-11-04T16:22:44.000Z
- Updated: 2026-11-04T16:23:57.000Z
- Description: 光有 I/O 表和标签不够，物理布局和信号语义得单独讲给它听。论文把"AI 碰 PLC"拆成四级台阶：说、写、编、下，每级都要人点头。
- Author: admin
- Tags: 工业 AI, PLC, 结构化文本, RAG, 人在回路

先看论文里的一段对话（原文的演示实录，我们译成中文）：

**工程师**：有蓝色盘吗？

**AI**：没有。厂区上下文里只定义了铬、红、黑三种盘，不存在蓝色盘的料仓、传感器或分选通道。

**工程师**：生成序列：红 → 红带嵌件 → 铬 → 黑带嵌件 → 铬。

**AI**：（生成结构化文本，用的是这套设备真实的标签，比如黑盘那条支路用 `BLACK_MAG_FUELLSTAND` 和 `INSERT_MAG_FUELLSTAND` 做门控）

**工程师**：编译。 → **编译通过。**

**工程师**：黑盘也能加嵌件吗？

**AI**：可以，嵌件工位逻辑在进入黑盘通道前同样适用。 → **编译通过。**

**工程师**：部署到 PLC，清锁存和变量状态，然后启动。 → **设备开始按新序列跑。**

这段对话里，**最值钱的不是任何一行代码，而是第一句的回答**。

一个通用大模型被问"有蓝色盘吗"，它会顺着你说"有，我这就写"——然后给你一段编译不过、或者编译过了但根本跑不对的代码。这个 AI 说"没有"，因为它手里有一份**这家厂的真实清单**。

这就是这篇论文的全部重点。

本文完整解读 **Joschka Kersting、Gesa Benndorf，2026-10，《From Code Generator to Engineering Companion: A Plant-aware Agent for PLC Programming》（arXiv 2610.28160，IEEE 版权）**。它不是讲"用更强的模型写更好的代码"，而是讲**怎么把"一家具体的厂"喂给模型**，以及**怎么让它在动手之前必须先停下来问你**。

---

## 一、先说清楚它解决的痛点

以前的同类系统是这样工作的（论文自己引用的前作 \[1\]，同样是三菱的 GX Works3 环境）：

> 工程师提交一句任务 → 模型生成代码 → 编译服务器校验 → 返回。

这叫**流水线**。它的三个问题是：

1. **它不认识你的厂。** 每次都是从零开始，不知道你有哪些标签、哪些模块、现场的盘往哪走。
2. **它不能对话。** 只回答一次。你没法问"这里为什么用这个互锁"，也没法说"把黑盘那条改一下"。
3. **它没有从聊天到落地的路径。** 生成完就结束了，编译、部署是另一套流程，中间没有任何约束。

论文管这个差距叫**交互模型**的差距，而不是**代码生成**的差距。这句定性很重要：它意味着你换一个更强的模型，这条路也不会自动变好。

![MELSEC iQ-R 机架](https://www.hubwiz.com/blog/content/images/2026/11/iqr-cover.jpg)

*论文的演示台用的是一台三菱电机 iQ-R 系列 CPU（R04），通过 GX Works3 编程。图为同系列机架（R63P 电源 + R04ENCPU）。（图：Oleg Yunakov，CC BY-SA 4.0，Wikimedia Commons）*

## 二、什么叫"知道这个厂"（plant-aware）

论文给的定义很朴素：**让生成的代码落在目标厂的 I/O 表、标签命名空间、模块配置和物理信号拓扑上。**

翻译成车间语言：**别生成"一个叫 SORT\_RED 的变量"，要生成"你厂里真的存在的那个 `BLACK_MAG_FUELLSTAND`"。**

开工前，工程师要提供四样东西：

| 材料         | 里面装什么                         | 没有它会怎样                   |
| ---------- | ----------------------------- | ------------------------ |
| **I/O 表**  | 所有输入输出的信号名、地址、数据类型、说明         | 生成的代码引用不存在的地址，编译过、跑不对    |
| **标签表**    | GX Works3 里完整的标签（含内部变量与程序间信号） | 变量名靠猜，命名风格和你厂对不上，维护时没人认得 |
| **模块配置**   | 机架布局、CPU 型号、特殊功能模块的分配         | 用到不存在的模块，或把高速计数当普通输入写    |
| **现有程序片段** | 已部署在设备上的 ST 程序和功能块实例          | 重复造轮子，或和现有逻辑打架           |

这四份材料被切块、向量化，**单独建了一个"厂上下文"检索库**，和原有的三个库分开。

### 为什么非要分开建库？

这是全文我最想推荐给同事的一个工程细节。

它的检索是**四个库各查各的**：库函数定义、规格规则（MEC2023/24）、通用上下文（上传文件与聊天记录）、厂专属上下文。

如果把这些混在一个索引里，你问"黑盘怎么分选"，检索可能同时捞回：某本手册里的通用示例、另一家项目的变量名、你厂的真实标签——**三份混在一起，模型就挑一个看起来最顺的说**。分开建库等于**给每类材料一个独立的抽屉**，检索时不会串味。

论文的用词是 "avoid cross-source interference"（避免跨源干扰）。这句话在大模型应用里是通用经验：**上下文里最危险的不是缺信息，是"错的但看起来对的信息"。**

### 一条被埋在演示里的关键发现

论文在描述演示台时写了这么一句（我们翻译）：

> 实际设备的布局必须额外讲给模型听，因为**光有 I/O 表和标签，并不能表达物理布局与信号语义**。

具体缺什么？它举了三件：

- 料仓在什么位置；
- 料仓什么时候算"有料"（对应传感器必须为 TRUE）；
- 盘是被传送带送到右边，执行机构按什么顺序排布。

这句话对做过现场的人几乎是常识，但它是这套系统能不能用的分水岭：

**I/O 表告诉你"有这个信号"，物理说明告诉你"这个信号意味着什么"。** 前者是数据，后者是知识。

## 三、四级台阶：为什么它不许 AI 直接碰设备

论文把"AI 能做的事"拆成四级，每一级都要工程师**显式触发**：

| 级别     | 名字   | AI 能做什么               | 产生什么后果              |
| ------ | ---- | --------------------- | ------------------- |
| **L1** | 咨询   | 只回文本，不调任何工具           | 没有物理后果              |
| **L2** | 生成代码 | 把 ST 代码显示在对话里         | 只是文本，还没进工程          |
| **L3** | 编译   | 调编译服务器，拿回**结构化诊断**    | 工程里多了一个可编译的块，还没下到设备 |
| **L4** | 部署   | 工程师确认后写入 PLC、启动/停止/复位 | **设备真的会动**          |

几个值得注意的设计：

- **L3 的"结构化诊断"很重要。** 不是给一段红字报错，而是能让模型读懂、能自动修的形式；论文写明**最多 3 轮修复**，超过就停——防止它无限套娃地"改到能编译为止"。
- **每一级的触发权在人手里。** 论文的措辞是 "explicit engineer initiation"。AI 不会自己从 L2 跳到 L3，更不会自己跳到 L4。
- **L1 不是摆设。** 上面那段"有蓝色盘吗"就是 L1——它在你动手之前帮你排除掉一个不存在的需求。**这一层不产生任何代码，但它省下的是整轮返工。**

这个设计背后的理由论文写得很直白：在工业环境里，**一个不受控的"模型到硬件"动作可能砸设备、可能停线**。

## 四、演示台：一个分选机，和它为什么够用

演示设备是一台**金属圆盘分选机**：

- 盘有三种颜色：**铬（最反光）、红、黑**；
- 用**气压 + 光电传感器**识别——三种颜色反射率不同，所以阈值要分开配；
- 还有一个**嵌件工位**，可以往盘里塞嵌件；
- 传送带把盘往右送，经过所有料仓后分到**三个盒子**；
- **铬最先走，然后红，最后黑**；铬和红由气缸**主动**推下皮带，黑盘靠**重力被动**落进盒子。

控制器是**三菱电机 iQ-R 系列 R04**，通过原型网页界面 + GX Works3 操作；厂上下文按 I/O 表、标签表、现有 ST 片段导入。

这个台子小得有点好笑，但它把问题暴露得很完整：**颜色阈值、料仓状态、嵌件时序、主动/被动分选**——四件事都要"知道现场"才能写对。论文也说它可作为更复杂产线（比如汽车行业）的示范。

## 五、这篇论文最该被强调的一句话：**还没有量化评测**

论文最后一节写得很诚实（我们翻译）：

> 计划中的工作是：在**匹配的任务集**上，对"厂上下文"与"通用上下文"做结构化的**定量**对比。

也就是说——**截至这篇论文，它还只是一个演示 + 一套设计，没有"用了这套比不用好多少"的数字。**

它的局限清单同样坦白：

- 只在**一个厂、一个品牌生态**（三菱 iQ-R / GX Works3）里演过，**跨厂商不在范围内**；
- 功能正确性需要**硬件在环（HIL）测试或专家评审**，编译通过不算数；
- 人机评估只来自**单一组织背景**。

怎么读这类论文？一句话：**它证明的是"这条路能走通"，不是"这条路比别的路更好"。** 前者已经很有价值（阶梯设计、四库分离、物理知识要单独讲），后者要等它的下一版。

它也给了下一步清单，其中两条特别值得盯：

- **执行反馈**：把 PLC 运行时信号接回 AI 的上下文（现在是单向的：AI 写，人跑）；
- **多 PLC 编排**：一条线上几台控制器时，谁来协调（这正是大批量产线真正难的地方）。

## 六、把它放回已有研究里，才有参照系

论文自己列了一张对比表，我们补上它们各自报出的数字，你就知道"编译通过率"这行数字有多虚：

| 系统           | 厂上下文  | 代码 | 编译 | 部署 | 会话优先 | 报出的成绩                                                    |
| ------------ | ----- | -- | -- | -- | ---- | -------------------------------------------------------- |
| LLM4PLC      | —     | ✓  | ✓  | —  | —    | 编译+语法+形式验证反馈，把生成成功率从 **47% 提到 72%**（制造测试台）               |
| Agents4PLC   | —     | ✓  | ✓  | —  | —    | 23 个任务（16 易 7 中），**易 68% / 中 42.3%** 可验证率（GPT-4o）        |
| AutoPLC      | —     | ✓  | ✓  | —  | —    | 面向两个专有平台的厂商感知流水线                                         |
| Spec2Control | —     | ✓  | —  | ✓  | —    | **65 个用例 / 10 份需求，策略连接 98.6% 正确**，工程工作量降 **94–96%**（ABB） |
| 西门子 Copilot  | —     | ✓  | ✓  | ✓  | ✓    | 商业产品，无公开评测集                                              |
| **本文**       | **✓** | ✓  | ✓  | ✓  | ✓    | **演示 + 设计，无定量评测**                                        |

读这张表的正确姿势：

- **47% → 72%** 说明"让模型看编译错误"这件事本身就值 25 个百分点；
- **98.6%** 是"策略连接"的正确率，不是"程序能跑"，别混；
- **本文是唯一带"厂上下文"的一列**——这是它的位置，也是它的赌注：**先解决"对不对得上你的厂"，再谈准确率。**

## 七、我们的整理：要落地，这几件事得先想明白

论文没给实施清单，我们按工程顺序补一份（**这部分是我们的整理，不是论文内容**）：

### 1）先盘家底：五份材料，缺哪份先补哪份

| 材料         | 判据（合格长什么样）                               | 老厂没有怎么办                     |
| ---------- | ---------------------------------------- | --------------------------- |
| I/O 表      | 一列信号名、一列地址、一列类型、一列含义，**含义要人话**           | 从程序里反推，先做"读"的用途（只解释、不生成）    |
| 标签表        | 命名有统一后缀/前缀（\_MAG\_FUELLSTAND 这类就是"料仓液位"） | 先定命名规范，再谈 AI                |
| 机架/CPU 配置  | CPU 型号、模块槽位、特殊模块型号                       | 拍照 + 订货号，至少让模型知道有哪些模块       |
| 现有程序片段     | 最近一年真正在跑的几个块                             | 在线上载（没有符号也先拿到 STL），当成"当前事实" |
| **物理布局说明** | 料仓在哪、什么算"上料"、盘往哪走、执行机构顺序                 | **请现场的老师傅口述，你录音整理成一页纸**     |

最后一行是全文最容易被忽略、最好用的一条：**这张"一页纸的现场说明"，比再买一套工具更能提升输出质量。**

### 2）四级台阶怎么映射到你现在的流程

| 论文的分级 | 你厂里对应的动作              | 谁签字       |
| ----- | --------------------- | --------- |
| L1 咨询 | 问"这个需求在现有硬件上成立吗"      | 不用签       |
| L2 生成 | 代码贴进评审单，还不进工程         | 写的人       |
| L3 编译 | 进工程、编译、修完再提           | 编译通过 + 评审 |
| L4 部署 | 下载到 CPU、试自动、试 HMI、试安全 | **现场负责人** |

这四级和我们一直说的"预演 → 编译 → 仿真 → 人确认"是同一根轴，只是论文把"咨询"单独拎出来当第 0 级——**这一步其实最省钱，因为它能在你打字之前就否掉一个不存在的需求。**

### 3）三个必须先回答的问题

- **"厂上下文"谁来维护？** 图纸改一次、加一个模块、换一个传感器，语料就过期了。**没有版本管理的厂上下文，比没有更危险**（它会一本正经地引用旧标签）。
- **跨品牌怎么办？** 论文自己说了不在范围内。现实里一条线四种 PLC，别指望一套上下文通吃——先做单台、单品牌，跑通再复制。
- **编译通过算不算过？** 不算。论文明确说功能正确性要 HIL 或专家评审。你们内部的验收单上，编译只是第三级。

### 4）这套思路最值得抄的一句

**不是"让 AI 更聪明"，而是"让 AI 先知道你厂里的三件事：有什么、在哪、什么时候算有"。**

## 八、和我们的工具怎么接

论文用的是三菱的 GX Works3 + MCP；博途这边的对应路径是 **TIA Openness + MCP**。要做同样的事——把工程上下文喂进去、让每一步动作都必须由人发起并留下记录——走 [TiaLink（博途 MCP 网关）](https://tia.hubwiz.com/tia-link?utm%5Fsource=blog&utm%5Fmedium=article&utm%5Fcampaign=plant-aware-plc-copilot-four-levels&utm%5Fcontent=levels)这条路：它的设计前提就是"预演 → 编译 → 仿真 → 人确认"，和你在这篇论文里看到的四级台阶是同构的，只是平台从 iQ-R 换成 S7-1200/1500。

要先把"厂上下文"这一层做起来（读工程、导标签、抽块依赖），从 [TIA Forge 总入口](https://tia.hubwiz.com/tia-forge?utm%5Fsource=blog&utm%5Fmedium=article&utm%5Fcampaign=plant-aware-plc-copilot-four-levels&utm%5Fcontent=cta)进。

## 边界

- **这是一篇演示型论文，不是评测报告**：稿中唯一的"结果"是一段交互实录和一台分选试验台，**没有任何定量指标**（没有编译通过率、没有任务完成率、没有工时对比）。论文自己写明定量评测是"计划中的工作"。
- **版权**：论文标注 © 2026 IEEE，允许个人使用；**我们未转载论文的图 3/图 1（演示台照片与界面截图）**，正文配图改用 Wikimedia 的 iQ-R 机架照片（CC BY-SA 4.0，非论文作者提供，仅型号同系列）。
- **我们未复现**：没有三菱 iQ-R、没有 GX Works3、没有跑它的原型系统。文中所有系统行为、界面元素、对话实录均译自论文。
- 演示台细节（铬/红/黑盘、气压+光电、嵌件工位、三个盒子、主动/被动分选）来自论文第 IV-A 节；数字（47%/72%、68%/42.3%、98.6%、94–96%）来自论文第 II 节转述的他人工作，**我们未核这些原始论文**。
- "四条材料清单""四级到流程的映射""三个必须先回答的问题""五份材料判据"是我们补的工程整理，**不是论文内容**。
- 论文为预印本（arXiv 2610.28160），正式发表版本可能修改。

## 来源

- 主源文：Joschka Kersting、Gesa Benndorf《From Code Generator to Engineering Companion: A Plant-aware Agent for PLC Programming》，arXiv 2610.28160，2026-10。[https://arxiv.org/abs/2610.28160](https://arxiv.org/abs/2610.28160?ref=hubwiz.com)
- 前作（本文基础）：Kersting、Rummel、Benndorf《Vendor-aware industrial agents: RAG-enhanced LLMs for secure on-premise PLC code generation》，IEEE ICIT 2026
- 对照工作：LLM4PLC（ICSE-SEIP 2024）、Agents4PLC（arXiv 2410.14209）、AutoPLC（arXiv 2412.02410）、Spec2Control（arXiv 2510.04519）
- 配图：Wikimedia Commons，Oleg Yunakov，CC BY-SA 4.0

## 同主题阅读

- [AI PLC 编程：99% 成功率在这个行业算灾难](https://www.hubwiz.com/blog/ai-plc-programming-tia-portal-what-works/)
- [LLM 写 PLC 程序有多靠谱？PLCWorld 闭环基准实测](https://www.hubwiz.com/blog/plcworld-llm-plc-benchmark/)
- [代码锁在二进制里：AI 改 PLC 工程的四个台阶](https://www.hubwiz.com/blog/ai-operate-codesys-project-four-steps/)
- [12 个最受欢迎的 PLC AI 工具：能写代码的多，能进工程的少](https://www.hubwiz.com/blog/best-plc-ai-tools-four-layers/)

本文由汇智网编译整理，转载请注明出处。文中的"我们的整理"与"边界"为编译者补充，不是论文内容。

> **这是「AI × 工业 / PLC」专题的一部分。**完整地图见：[AI × 工业 / PLC 完全指南](https://www.hubwiz.com/blog/ai-industrial-stack/)