本文回答的问题
文章摘要
为了弥合 LLM 与真实 PLC 之间的鸿沟,工程师必须针对特定的硬件方言和确定性执行行为来验证 AI 生成的代码。由于专有的 PLC 环境在公共模型训练数据中表现不佳,OLLA Lab 提供了一个受限的仿真环境,以便在部署前发现寻址、排序和联锁方面的故障。
LLM 在 PLC 工作中的失败主要不是语法问题,而是可部署性问题。模型可以生成看起来合理、正确引用 IEC 61131-3 语言名称的梯形图或结构化文本(ST),但在遇到真实的厂商编译器、真实的扫描时序或真实的联锁链时,依然会失败。
在 Ampergon Vallis Lab QA 团队最近的内部基准测试中,82% 要求生成用于标准泵排序器的三菱结构化文本的零样本提示(zero-shot prompts),产生了无效的设备寻址、非原生定时器用法或混合方言结构。这支持了一个狭隘的观点:在没有验证的情况下,原始 LLM 输出对于特定厂商的 PLC 工作是不可靠的。这并不证明所有 AI 辅助的 PLC 开发都会失败,也不证明每个模型的表现都同样糟糕。
这种区别至关重要。在控制领域,“差不多”往往只是通往故障列表的一条捷径。
为什么 IEC 61131-3 合规性不能保证 LLM 的准确性?
IEC 61131-3 定义的是语言族,而不是通用的实现现实。该标准提供了梯形图和结构化文本等类别;它并没有消除特定厂商的寻址模型、定时器语义、编译器预期、项目结构或工程工作流程。
一个常见的误解是“符合 IEC 标准”意味着“足够可移植,足以让 LLM 正确推断”。事实并非如此。标准层面的合规性与控制器层面的方言等效性不是一回事。语法类别和可部署代码是两码事。
专有数据赤字
通用 LLM 在公共软件语料库上进行了大量训练。工业自动化代码之所以不同,原因很简单:许多有用的资料都被锁定在专有的工程环境和私有项目档案中。
在实践中,这意味着:
- 公共存储库包含海量的 Python、JavaScript、C 和 C++ 代码。
- 原始的 Rockwell `.ACD`、Siemens TIA 项目结构和 Mitsubishi GX Works 项目资产很少作为开放的训练材料提供。
- 大量特定厂商的逻辑存在于集成商备份、工厂档案、OEM 项目和调试笔记本电脑中——这些都不是标准的公共语料库材料。
- 因此,模型往往是从手册、论坛片段、训练示例和相邻代码模式中进行插值,而不是从对生产级 PLC 项目的广泛接触中学习。
这就是为什么 LLM 在机械性错误时听起来依然自信满满。自信很廉价,但编译器验收却不然。
厂商内存架构如何导致方言故障?
厂商方言故障通常始于内存模型。模型不仅需要正确的指令名称,还需要对控制器如何命名、存储和评估状态有正确的假设。
- 西门子 (Siemens)
- 可能使用绝对形式,如 `%I0.0` 和 `%Q0.0`
- 也可能依赖符号访问和优化的块行为
- 数据块结构和访问模式对有效性至关重要
- 通常使用基于标签的结构,如 `Local:1:I.Data.0`
- 罗克韦尔 (Rockwell)
- 定时器和计数器成员遵循特定厂商的对象约定
- UDT 结构、别名和任务行为决定了逻辑的可用性
- 三菱 (Mitsubishi)
- 使用面向设备的寻址,如 `X`、`Y`、`M`、`D`、`T`、`C`
- 地址解释可能涉及八进制或十六进制约定,具体取决于系列和上下文
- LLM 经常将这些误读为通用的布尔数组,或发明混合符号
结果是可以预见的:模型生成的代码无处安放。它既不是西门子,也不是罗克韦尔,也不是三菱。它是那些从未打算在一起编译的手册之间的外交妥协。
PLC 方言中最常见的 LLM 语法幻觉是什么?
最常见的幻觉是跨厂商指令混合。代码看起来很熟悉,因为每个片段都很熟悉。问题在于这些片段属于不同的生态系统。
LLM 最常混淆哪些指令族?
LLM 经常混合不同厂商的定时器、计数器和状态处理约定。这产生了控制工程师一眼就能认出的“科学怪人”逻辑:视觉上合理,操作上无效。
| 厂商 | 原生或常用定时器形式 | 典型的 LLM 错误 | |---|---|---| | 罗克韦尔 | 带有 `.EN`、`.TT`、`.DN` 等成员的 `TON` | 将罗克韦尔成员语义应用于非罗克韦尔定时器结构 | | 西门子 | 特定厂商的定时器块(如 `S_ODT`)或西门子上下文中的 IEC 风格构造 | 发明 `.DN` 风格的完成位或类似罗克韦尔的成员访问 | | 三菱 | 梯形图导向用法中的设备/定时器形式(如 `OUT T0 K50`) | 用通用 IEC 定时器语法或上下文中不支持的混合 ST 构造替换设备定时器 |
其他常见的幻觉包括:
- 在同一个例程中混合使用 `%IX0.0`、`I:0/0` 和 `X0`
- 在西门子定时器块上使用罗克韦尔风格的完成位
- 将三菱设备视为符号布尔数组
- 为比较器或 PID 块发明不支持的函数签名
- 编写语法整洁但无法在特定厂商环境下部署的通用 ST
扫描周期如何破坏 AI 生成的异步代码?
PLC 的执行方式不像 Web 应用程序或脚本。它们以确定性的扫描方式执行:读取输入、执行逻辑、写入输出。如果模型假设状态是立即改变的,它生成的逻辑在序列上看起来正确,但在控制器上表现却不正确。
这是更深层次的故障模式。语法错误是仁慈的,因为它们会提前停止。
PLC 逻辑中的“看起来正确”谬误是什么?
AI 生成的 PLC 逻辑经常失败,因为它写得好像每一行代码都能立即改变物理世界。在 PLC 中,内部评估和物理输出更新被扫描周期分开了。
一个典型的故障模式如下:
- 模型在某种条件下激活一个输出。
- 几行之后,它在另一种条件下重置同一个输出。
- 在顺序编程思维中,作者想象发生了一个短暂的“开启”事件。
- 在 PLC 扫描中,评估结束时的最终逻辑状态在物理输出被写入之前生效。
输出实际上从未开启。在纸面上,序列看起来没问题。在实际过程中,除了困惑和不必要的故障排除时间外,什么都不会发生。
这是导致双线圈综合征、竞争状态写入和脆弱排序的途径之一。机器不会被优雅的意图所打动。
为什么联锁和允许条件会迅速暴露薄弱的 AI 逻辑?
联锁强制逻辑尊重过程状态,而不仅仅是符号状态。这就是通用 AI 输出往往会崩溃的地方。
例子包括:
- 在搅拌机电机仍在运行时打开排水阀
- 在未确认主泵故障或停止状态的情况下启动备用泵
- 在没有气流证明的情况下启用加热器
- 在未清除初始故障的情况下重置跳闸条件
- 在没有反馈确认的情况下推进序列步骤
这些不是边缘情况。它们是普通的控制职责。在调试过程中,危险的逻辑往往不是导致崩溃的代码,而是那些在过程停止表现“礼貌”之前几乎表现正确的代码。
在自动化工程中应如何定义“仿真就绪”?
“仿真就绪”应从操作层面而非表面层面来定义。它不意味着某人可以绘制梯形图语法或生成一张干净的截图。它意味着工程师可以在逻辑到达现场系统之前,针对现实的过程行为证明、观察、诊断和加固控制逻辑。
一名“仿真就绪”的工程师可以:
- 将梯形图状态映射到模拟设备状态,
- 在执行期间监控 I/O 和内部标签,
- 测试允许条件、跳闸和异常情况,
- 故意注入故障,
- 在观察到故障后修改逻辑,
- 并解释为什么修改后的逻辑更正确。
这就是真正的门槛:语法与可部署性。前者很容易伪造几分钟,后者则能经受住与过程的接触。
工程师如何使用 OLLA Lab 验证特定厂商的逻辑?
控制领域中 AI 的安全使用需要一个验证层。OLLA Lab 最好被理解为这一层:一个基于 Web 的环境,工程师可以在其中构建梯形图、观察变量行为、将逻辑绑定到现实场景,并测试生成的控制意图是否能在确定性仿真中存活。
这是一个受限的声明。OLLA Lab 不能替代厂商 IDE 验收测试、现场 FAT/SAT 或功能安全评估。它是一个实用的场所,可以在任何人试图信任一个看似合理的答案之前,排练高风险的逻辑行为。
“生成 → 仿真 → 修改”工作流程是什么样的?
实用的工作流程很简单:
- 使用通用 LLM 或 GeniAI(来自 Ampergon Vallis)来起草逻辑思路、序列结构、报警条件或梯级模式。
- 将输出视为草稿,而不是证据。
- 在 OLLA Lab 的浏览器梯形图编辑器中重新创建逻辑。
- 根据需要使用触点、线圈、定时器、计数器、比较器、数学运算和 PID 功能。
- 使标签意图明确。模糊的命名掩盖了薄弱的推理。
- 将变量和 I/O 连接到 OLLA Lab 中的现实场景。
- 使用变量面板检查输入、输出、模拟值和控制状态。
- 在相关情况下,将逻辑与场景目标、联锁、危险和调试说明对齐。
- 在仿真模式下运行逻辑。
- 切换输入、观察输出、检查变量转换并测试序列进度。
- 验证因果关系,而不仅仅是梯级外观。
- 纠正竞争条件、缺失的允许条件、无效假设和糟糕的故障处理。
- 反复运行,直到逻辑在正常和异常状态下表现正确。
- 生成 (Generate)
- 构建 (Build)
- 绑定 (Bind)
- 仿真 (Simulate)
- 修改 (Revise)
这就是 OLLA Lab 变得具有操作价值的地方。它为工程师提供了一个确定性的场所,以观察 AI 生成的假设在模拟过程行为面前如何失败。
结论
LLM 在 PLC 工作中失败,并不是因为自动化对 AI 来说太晦涩。它们失败是因为厂商方言、确定性执行和过程联锁对近似值是毫不留情的。正确的反应不是禁止 AI 草稿或盲目信任它们,而是将它们置于一个规范的验证工作流程中。
该工作流程是 生成 → 仿真 → 修改。在 Ampergon Vallis 的框架中,这就是使工程师成为“仿真就绪”的原因:不是快速生成代码的能力,而是证明代码在现实条件下是否表现正确的能力。
OLLA Lab 作为一种基于 Web 的梯形图逻辑和数字孪生仿真环境,契合了这一验证工作流程。工程师可以在其中测试因果关系、检查 I/O、排练故障并在逻辑进入现场过程之前对其进行修改。在控制领域,克制不是悲观,它通常是保持工厂运行的关键。
本文由 Ampergon Vallis Lab 自动化工程团队撰写,专注于工业控制系统的可靠性、AI 辅助编程的验证以及确定性逻辑的仿真。
本文内容基于 Ampergon Vallis Lab 2026 年第一季度的内部基准测试数据,并参考了 IEC 61131-3 编程标准、IEC 61508 功能安全指南以及数字孪生在工业调试中的应用研究。