当前位置: 首页 > news >正文

【文献笔记】LLM-based control code generation using image recognition

LLM-based control code generation using image recognition
原文代码

标题翻译:基于图像识别的LLM控制代码生成

1. 内容介绍

1.1. 简介

论文提出了一种基于LLM的新方法,通过图像识别从管道仪表图(Piping and Instrumentation Diagrams, P&IDs )的拓扑结构生成IEC 61131-3结构化文本(Structured Text, ST)控制逻辑代码,旨在减少工业自动化中控制逻辑的手动编程工作量。

1.2. 背景与问题

1.2.1. 工业自动化的挑战

控制工程师通常使用标准化的编程语言(如IEC 61131-3 ST)手动编写控制逻辑,工作量巨大且容易出错。ST语言受Pascal和C语言启发,适合表达如PID控制、互锁(interlocks)和顺序逻辑(sequential logic)等控制策略。

1.2.2. P&IDs的作用和局限

过程工程师通过P&IDs(管道仪表图)指定控制策略需求,P&IDs包含管道、容器、阀门、传感器等元素。通常是CAD画出来的,然后图纸通常以纸质或PDF格式分发,难以直接用于算法处理。

P&IDs示例图
PID示例


除了P&ID,过程工程师还使用I/O表控制叙述来表达自动化需求。I/O表通常是一个大型表格,其中每个条目代表与特定传感器或执行器相关的模拟或数字信号。这些表格指定了I/O信号的特性,可能已经包含了报警限制阈值和期望设定点。

控制叙述control narratives)是使用自然语言表达的所需控制策略,它是独立于特定的控制系统进行制定的,并且必须翻译成供应商特定的编程符号和控制功能块。【另一篇就是从控制叙述中生成控制代码,另一篇的笔记】

1.2.3. 现有方法

现有方法大致可以分为三类:

  1. 从P&IDs生成控制逻辑:这些方法未使用LLM,依赖特定格式或规则
  2. P&ID图像识别:仅限于图像识别上面的符号,也没有生成控制代码
  3. 其他领域的图像识别代码生成:从网页草图生成HTML、从UML图生成代码、使用LLM生成P&IDs,这些方法都未处理P&ID的复杂图形或生成控制逻辑
1.2.4. LLM的潜力

近年来,大型语言模型(如GPT-4)集成了图像识别、领域知识和代码生成能力,为从P&IDs自动生成控制代码提供了可能。论文提出利用LLM的这些能力,结合图像识别,生成符合IEC 61131-3标准的控制逻辑代码

2. 研究方法

论文提出利用LLM的领域知识和代码生成能力,结合图像识别,生成符合IEC 61131-3标准的控制逻辑代码。替代人工解读P&IDs和编写代码,提升效率和代码质量。

overview


  • 预处理(Step 1)
    将纸质P&IDs扫描为数字图像,或对PDF格式的P&IDs进行颜色和对比度调整以提高图像识别质量;对于复杂P&IDs,可能需要分割为较小的图像块,以适应LLM的处理能力。
  • 代码生成(Step 2)
    • 子步骤2.1:生成控制回路(Control Loops)
      LLM识别P&ID中明确指定的控制回路(如图1中的LIC_B115),为每个回路分配预定义的PID功能块,生成相应的ST代码
    • 子步骤2.2:生成互锁逻辑(Interlocks)
      LLM识别P&ID中的互锁需求(在特定条件满足或不满足时,自动触发某些动作以防止设备损坏、工艺失控或安全事故;如防止储罐溢出的泵关闭逻辑),生成相应的ST代码
    • 子步骤2.3:生成顺序逻辑(Sequential Logic)
      LLM分析P&ID的工艺流程,生成启动/关闭过程的顺序逻辑代码
  • 代码导入(Step 3):将LLM生成的ST代码导入控制逻辑开发环境(IDE),如OpenPLC
  • 代码编译(Step 4):将ST代码编译为C代码或机器代码
  • 测试与调试(Step 5):在IDE的仿真环境中测试代码,验证功能和非功能需求
  • 部署(Step 6):将通过测试的代码部署到工业控制器,用于实际生产过程控制

优点:灵活性

  • 该方法不依赖特定的P&ID符号、编程语言或LLM。
  • 可扩展到其他输入(如I/O列表、控制叙述)或输出(如功能块图、顺序功能图)。
  • 未来可生成测试代码或人机界面代码

缺点:当前论文提出的代码生成方法尚未完全自动化,仍然需要人工与LLM(如GPT-4)交互,通过手动编写提示(prompt)来指导LLM识别P&IDs并生成代码。例如,他们可能会上传P&ID图像,并编写类似以下的提示:“这是xxx图,识别一下帮我生成xxx代码”。因此,当前流程依赖人工与LLM的交互,属于交互式操作

3. 实验与评估

论文通过三个工业P&ID案例研究评估了方法的有效性,使用的LLM为2023年11月版本的GPT-4,开发环境为开源的OpenPLC。评估采用探索性方法,通过交互式ChatGPT界面进行

3.1. 案例1:Eastman Chemical

3.1.1. P&ID描述

来自Eastman Chemical公司的工艺工厂,包含三个蒸馏塔、两个分离器和多个循环流,14个控制执行器和15个指示器

案例1

3.1.2. 任务与结果
  1. 控制回路

    • GPT-4正确识别了14个控制点(7个流量、3个液位、2个压力、2个温度)。
    • 识别前馈级联控制方案(feedforward cascading control)时,仅正确识别1个,漏识4个,需人工纠正。
    • 为温度控制器TC-1和流量控制器FC-5生成46行ST代码,语法正确,满足了最低功能规格,可在OpenPLC中编译和仿真。
      仿真结果
  2. 互锁

    • 正确指定蒸馏塔E-7的液位和温度互锁,但错误添加了不存在的压力传感器互锁。
    • 生成76行ST代码,逻辑合理。
  3. 顺序逻辑

    • 正确识别工艺起点(In_2_Feed和阀门V-1),生成9步启动序列。
    • 为第2步(启动蒸馏塔1)生成55行ST代码,逻辑简单但符合P&ID。

问题

  • GPT-4难以识别复杂拓扑结构,偶尔误认管道标签或虚构控制点。
  • 生成的代码较抽象,需更多上下文(如设定点、报警限值)。

3.2. 案例2:DEXPI

3.2.1. P&ID描述

由DEXPI组织提供,基于ISO 10628标准,包含一个大储罐、两个泵、两个换热器和四个仪表,用于测试数据交换。

案例2

3.2.2. 任务与结果

1. 控制回路

  • GPT-4正确识别温度控制器TICSA 4750.03和压力控制器PICSA 4712.02,但误将手开关和压力指示器识别为控制器。
  • 为PICSA 4712.02生成38行ST代码,但输入/输出信号引用错误(如误用流量孔板标签)。

2. 互锁

  • 缺乏储罐T4750功能信息,生成通用互锁列表(液位、压力、温度等)。
  • 提供储罐尺寸和设计压力后,生成66行ST代码(图6),合理设置报警限值(如90%储罐高度)。

3. 顺序逻辑

  • 正确识别泵P4711和P4712的启动顺序,生成抽象的储罐填充代码。

    生成的代码

问题

  • 图像识别错误(如误判连接线)导致信号引用错误。
  • 未能正确识别管道路径和喷嘴列表(虚构不存在的N4喷嘴)。
  • 代码抽象,需更多上下文。

3.3. 案例3:Butane Regeneration

3.3.1. P&ID描述:

韩国工程公司提供的丁烷再生空气和水冷系统P&ID,包含两个水冷器、一个带两个风扇的空气冷却器

案例3

3.3.2. 任务与结果

1. 控制回路

  • 完整P&ID识别时,GPT-4虚构多个控制器。使用图7切片后,错误减少,但仍误将温度变送器识别为控制器。
  • 为温度控制器TIC2911生成ST代码,语法正确但标签错误。

2. 互锁

  • 为容器E-234-009生成13个互锁,包括不可实现的扇形互锁(因缺少传感器)。
  • 生成的ST代码包含合理的过程参数范围。

3. 顺序逻辑

  • 生成10步启动序列,正确包括进料建立和冷却器启动。
  • 初始ST代码(77行)过于通用,含并行启动错误。
  • 优化提示后,生成83行ST代码(图8),包含状态机和定时器,修复错误。
    生成的代码

问题

  • 图像识别不准确,误认风扇为泵。
  • 需更具体的提示以生成实用代码。

3.4. 讨论

限制

  • 内部有效性:LLM的非确定性可能导致结果差异。
  • 构造有效性:仅测试PDF格式P&IDs,未包括智能P&IDs;未使用库功能块,代码偏低级。
  • 外部有效性:方法适用于多种P&ID符号和自动化子领域,但具体表现依赖LLM训练数据。

4. 结论与未来工作

4.1. 结论

  • 论文提出了一种基于LLM的控制代码生成方法,通过图像识别从P&IDs生成IEC 61131-3 ST代码。
  • 三个案例研究证明了方法的可行性,GPT-4能在秒级生成可编译的代码。
  • 图像识别存在问题(如误认控制器、管道路径),生成的代码偏抽象,需更多上下文。
  • 方法可通过批处理实现高度自动化,降低工程成本。

4.2. 意义

  • 实践者:可将方法应用于项目,基于论文提示定制自己的提示。
  • 开发者:可开发工具支持方法自动化。
  • 研究者:可结合深度学习图像识别和工业代码生成,优化方法。

4.3. 未来方向

  • 在更大P&ID数据集上测试,优化提示设计。
  • 实现非交互式批处理,自动生成大量代码文件。
  • 集成I/O列表、控制叙述等输入,采用检索增强生成(RAG)提高代码准确性。
  • 支持特定供应商的功能块,生成仿真或人机界面代码。
  • 开发自动验证工具,检查代码的正确性和兼容性。
http://www.xdnf.cn/news/3169.html

相关文章:

  • 详细讲解一下Java中的Enum
  • Missashe考研日记-day22
  • AI与物联网的深度融合:开启智能生活新时代
  • 写书的三驾马车
  • 【Unity】UI点击事件处理器
  • 文件系统 软硬连接
  • 类和对象(下篇)(详解)
  • 2025.4.20机器学习笔记:文献阅读
  • 【前端】跟着maxkb学习流程图画法
  • Qt QML实现Windows桌面歌词动态播放效果
  • Win10如何一键切换IP地址教程
  • ubtuntu安装docker拉取iwebsec镜像
  • 关于STM32G030和G070未初始化看门狗,程序里面喂狗会导致擦除Flash失败或进入‘HardFault_Handler’
  • WebSocket 实现数据实时推送原理
  • GPT,Bert类模型对比
  • 4.17---实现商铺和缓存与数据库双写一致以及宕机处理
  • 2025.04.17【Dendrogram】生信数据可视化:Dendrogram图表详解
  • 网络编程 - 1
  • Genspark:重新定义AI搜索与代理的全能型工具
  • 私人笔记:动手学大模型应用开发llm-universe项目环境创建
  • 【前端vue生成二维码和条形码——MQ】
  • 【随身WIFI】随身WiFi Debian系统优化教程
  • AUTOSAR图解==>AUTOSAR_SWS_DefaultErrorTracer
  • 计算机网络 - UDP协议
  • 4.15BUUCTF Ez_bypass,HardSQL,AreUSerialz,BabyUpload,CheckIn
  • 【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法
  • jQuery入门和选择器
  • JavaScript-立即执行函数(Immediately Invoked Function Expression,IIFE)
  • 【AI量化第24篇】KhQuant 策略框架深度解析:让策略开发回归本质——基于miniQMT的量化交易回测系统开发实记
  • dumpsys--音频服务状态信息