目 录CONTENT

文章目录

Wipro PARI 如何利用 Amazon Bedrock 加速 PLC 代码生成

Administrator
2025-11-22 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://aws.amazon.com/blogs/machine-learning/how-wipro-pari-accelerates-plc-code-generation-using-amazon-bedrock/

原文作者:Aparajithan Vaidyanathan, Divakaran Ullampuzha Mana, Charu Dixit, Debasish Mishra, Rejin Surendran, and Bakrudeen K


本文由 Rejin Surendran(来自 Wipro Enterprises Limited)和 Bakrudeen K(来自 ShellKode)与我们合作撰写。

在制造业环境中,工业自动化工程师面临着一个重大挑战:如何快速地将复杂的流程需求转化为可编程逻辑控制器 (PLC) 的梯形文本代码。这种传统的手动过程通常需要 3-4 天来处理一个查询,从而在生产工作流程中造成瓶颈。复杂性源于多个因素:工程师必须一丝不苟地将高层需求转化为精确的机器指令,同时管理多个状态和转换;促进符合国际 PLC 编程标准 IEC 61131-3;处理复杂的变量声明;维护详细的工业合规文档;并对安全协议和执行路径进行彻底测试。

Wipro PARI 是全球最大的自动化公司之一,在全球拥有超过 1300 名员工和三个设施,总部位于印度浦那。Wipro PARI 致力于利用其专业知识和资源,为客户带来自动化和机器人技术的最佳解决方案。

在本文中,我们将分享 Wipro 如何利用 Amazon Bedrock,通过实施先进的提示工程技术、自定义验证逻辑和自动代码校正,来规模化地简化工业自动化代码的开发。我们将介绍架构、关键用例、解释核心组件和工作流程,并分享展示对制造运营产生变革性影响的真实结果。

为什么 Wipro PARI 选择 Amazon Bedrock?

Wipro PARI 与 AWS 和 ShellKode 合作,开发了一个创新的解决方案,利用人工智能改变了这种耗时的 PLC 代码生成过程。通过使用 Amazon Bedrock 和 Anthropic 的 Claude 模型,我们开发了一个系统,该系统能够:

  • 将 PLC 代码生成时间从 3-4 天减少到每个需求大约 10 分钟
  • 将代码准确率提高到 85%
  • 自动针对行业标准进行验证
  • 自动处理复杂的状态管理和转换逻辑
  • 促进正确的变量声明和命名约定
  • 维护合规文档和审计跟踪
  • 为工业工程师提供用户友好的界面

Wipro PARI 选择 Amazon Bedrock 作为此 PLC 代码生成解决方案的基础,因为它将企业能力与工业自动化要求相结合的独特优势。借助 Amazon Bedrock 中广泛的模型选择,团队可以使用 Anthropic 的 Claude 3.5 Sonnet 进行复杂的代码生成,同时保持了在不更改基础设施的情况下切换到更新、更强大的模型的灵活性。完全托管的服务减少了托管和扩展机器学习 (ML) 基础设施的运营开销,帮助 Wipro PARI 的工程师专注于特定领域的自动化逻辑,而不是模型部署。

对于工业应用而言至关重要的是,Amazon Bedrock 确保客户数据——包括专有的控制逻辑和制造规范——保留在 AWS 环境中,并且不会被用于训练底层基础模型 (FM),从而维护严格的数据隐私和知识产权保护。这种安全态势,加上 AWS 合规性认证,为处理敏感操作数据的制造环境提供了所需的企业级治理。

解决方案概述

在本节中,我们将介绍 Wipro PLC 代码生成器的解决方案架构和用户工作流程。下图说明了端到端的架构。

Solution Architecture

架构组件

该架构由以下关键组件组成:

  • 前端客户端层 – 前端客户端层包含一个基于 React 的响应式 Web 应用程序,使工业工程师能够上传控制逻辑电子表格、配置生成设置,并具有完全可追溯性地验证生成的梯形代码。
  • 后端应用程序服务层 – WIPRO PARI 解决方案实现了一个 React 和 FastAPI 微服务架构,其中超过 30 个专业 API 部署在安全虚拟私有云 (VPC) 环境中、负载均衡的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上,用于工业自动化 PLC 代码生成,并计划在未来迭代中迁移到 Amazon Elastic Container Service (Amazon ECS)。VPC 配置包括公有和私有子网隔离,以及用于安全远程管理工业控制系统开发服务的堡垒机访问控制。后端应用程序服务层组织成不同的组件,包括用于请求处理的控制器、用于业务逻辑的核心服务、用于用户管理的身份验证模块、用于电子表格处理的文件处理引擎,以及用于从工业自动化文档中提取控制逻辑规范的电子表格解析器。
  • AI/ML 处理层 – 该解决方案包括一个专用的 AI/ML 处理层,它与 Amazon Bedrock 集成,并根据任务复杂性和要求使用多个 Anthropic Claude 模型。大型语言模型 (LLM) 集成服务将控制逻辑需求转换为中间结构化伪查询,然后通过多迭代处理将其转换为标准化的 PLC 梯形文本代码。该系统处理复杂的工业自动化场景,包括制造控制系统中常见的并行执行路径、分叉/合并逻辑和布尔表达式。
  • 数据和存储层 – 生成的 PLC 代码经过智能校正,以修复特定于梯形逻辑编程的语法和逻辑错误,然后根据预定义的工业指南进行系统验证,以促进代码质量和安全合规性。Amazon Simple Storage Service (Amazon S3) 存储桶用于存储生成的代码工件、模板和工业项目管理的版本历史记录。该系统使用 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 数据库来进行持久状态管理、项目跟踪,以及维护控制逻辑规范与生成代码之间的关系。

用户工作流程

代码生成工作流程包括以下步骤:

  • 用户输入和身份验证 – 工业工程师登录 React Web 应用程序,通过基于角色的访问控制进行身份验证,并上传包含控制逻辑规范的 Excel 电子表格,用于 PLC 编程需求。系统通过 Excel 解析器处理上传的电子表格,提取控制逻辑数据,根据工业标准验证输入规范,并将原始数据转换为适合 AI 处理的结构化格式。
  • AI 驱动的代码生成 – LLM 集成服务使用 Anthropic 的 Claude 3.5 Sonnet 通过 Amazon Bedrock 发送结构化需求,生成中间伪查询,将其转换为标准化的 PLC 梯形文本代码,并处理复杂的工业自动化场景,包括并行执行路径和布尔表达式。伪查询是中间的结构化表示,它将 Excel 电子表格中人类可读的控制逻辑需求转换为可由 AI 模型处理以生成 PLC 代码的标准格式。
    • 示例规范 – 当 温度 > 80°C 并且 压力 < 5 bar 时,打开冷却泵
    • 伪查询IF (TEMP_SENSOR > 80) AND (PRESSURE_SENSOR < 5) THEN SET COOLING_PUMP = TRUE
  • 验证和存储 – 生成的 PLC 代码经过针对 IEC 61131-3 标准的自动质量验证,智能校正修复了语法和逻辑错误,并且经过验证的代码工件以版本控制和可追溯性的形式存储在 Amazon S3 中。
  • 工程师审查 – 工业工程师通过 Web 界面审查生成的梯形代码,验证代码质量和安全合规性,下载经过验证的 PLC 代码以进行部署,并为工业合规性要求维护具有完整审计跟踪的项目历史记录。

下面的 GIF 演示了从 Excel 上传到 PLC 代码生成和下载的完整用户工作流程。

安全性和合规性

用户身份验证和授权通过 Amazon Cognito 进行管理,它验证用户凭据并强制执行基于角色的访问控制,以确保只有授权人员才能访问 PLC 代码生成功能和敏感的工业自动化数据。安全性通过 AWS Identity and Access Management (IAM) 基于访问控制来实现,该控制管理工程师权限和服务到服务身份验证,以实现工业数据保护。Amazon GuardDuty 提供持续的威胁检测,而 AWS CloudTrail 则为工业合规性要求维护代码生成活动的全面审计日志。

在接下来的部分中,我们将详细分解每项功能。解决方案中使用的模块通过简化的工作流程集成,以最大限度地提高自动化和准确性。

数据格式化器

该解决方案从处理伪查询输入开始,如下所示。这个关键的第一步将各种输入格式转换为可以被语言模型有效处理的标准结构。

Data Formatter

工作流程遵循以下步骤:

  1. 用户通过 UI 界面上传电子表格中可用的控制逻辑作为输入。
  2. 格式化器从上传的电子表格中智能地提取状态定义、转换编号、相关动作以及分叉/合并路径关系。提取的信息在下游流程中对验证 PLC 代码很有用。
  3. 提取的信息存储在 S3 存储桶中以供持久化和将来参考。
  4. 数据格式化器构建一个包含原始电子表格数据和特定处理指令的全面提示。
  5. 该提示发送给 Anthropic 的 Claude 3.5 Sonnet,以将控制逻辑转换为结构化的伪查询格式。冗长的描述被缩写为 20 个字符,以符合 PLC 变量命名约定。
  6. 数据格式化器然后将控制权传递给 PLC 代码生成器模块。

以下代码是样本中间伪查询(数据格式化器模块的输出)。伪查询实现了一个工业机械的安全监控系统,确保机器仅在满足安全条件时运行。它监控安全门和紧急按钮,并在安全违规后包含适当的复位程序。每个状态网络包含状态编号、转换变量以及每​​个转换要执行的操作。

State Number: 25
Description: Machine Safety Check
State Name: MchSafetyCheck
Action:
Transitions:
 - Condition: IF iSafetyDoorClosed & iEmergencyButtonReleased
   - Goto State Number: 28
 - Condition: IF !iSafetyDoorClosed | iEmergencyButtonPressed
   - Goto State Number: 26 State Number: 26
Description: Machine Safety Violation
State Name: MchSafetyViolation
Action:
  - SET oAlarmLight = TRUE
  - SET oMachineStop = TRUE
Transitions:
 - Condition: IF iAcknowledgeButton & iSafetyDoorClosed & iEmergencyButtonReleased
   - Goto State Number: 27

PLC 代码生成器

为了最大限度地提高梯形文本生成的准确性,该解决方案采用了复杂的提示工程技术,并使用 Anthropic 的 Claude 3.5 Sonnet 进行代码生成。该解决方案此部分的流程图如下。

PLC Code Generator

提示创建

提示创建过程包括以下步骤:

  1. 将数据格式化器生成的中间伪查询传递给 PLC 代码生成器模块,该模块启动提示创建过程。
  2. 提示构建器构建一个详细的任务提示,用于生成初始批次的 PLC 代码以及后续批次。它包括:
    • PLC 编程领域知识(状态/转换变量命名约定、用于分叉/合并的网络创建模式、条件网络结构)。
    • 演示伪查询到梯形文本转换的少样本示例。
    • 关于处理状态转换、变量声明和复杂布尔表达式的明确说明。
  3. 提示构建器还会创建一个延续提示,指示 FM 从前一次迭代的停止位置继续生成 PLC 代码。

少样本采样

我们使用少样本学习策略,通过在提示上下文中提供相关示例来生成特定领域的输出。将伪查询和相关元数据(包括结构特征(状态转换、操作、控制流模式))索引到向量存储中。在推理时,混合检索策略将语义相似性和词法匹配与元数据相结合,以获取结构上对齐的最相关示例及其对应的 PLC 代码,然后将它们动态注入到提示中。请看以下代码:

PLC_PROMPT = """You are expert in writing code in PLC text ladder code …
##DYNAMIC EXAMPLES
{retrieved_examples}
##DOMAIN VARIABLES
{business_specific_variables}
##USER INPUT
{user_pseudo_code}
##FUNCTIONAL GUIDELINES
{custom_instructions}
"""

PLC 代码生成

PLC 代码生成过程包括以下步骤(如上一个图表中所示):

  1. 任务提示传递给 Anthropic 的 Claude 3.5 Sonnet,它处理提示以生成初始梯形文本代码,其中包含最多 4096 个 token(FM 的最大输出 token 限制)。
  2. 由于梯形文本通常会超出此限制,我们的解决方案实施了一种迭代生成方法,并使用了专门的延续提示。系统会检查生成是否完成,并在需要时请求额外的延续提示。
  3. 这种延续方法在连续生成之间保持上下文,有助于整个代码库的一致性。
  4. 该过程持续迭代,直到完全生成 PLC 梯形代码。然后将完成的代码段合并并传递给代码校正器模块进行进一步处理。

以下代码块显示了一个样本 PLC 代码生成结果:

FUNCTION_BLOCK "Machine_Safety_Monitoring"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
   VAR_INPUT       iSafetyDoorClosed : Bool;
      iEmergencyButtonReleased : Bool;
      iEmergencyButtonPressed : Bool;
      iAutoRunning : Bool;
      iReset_fault : Bool;
   END_VAR    VAR       s25_MchSafetyCheck : Bool;
      s25_MchSafetyCheck_T1 : Bool;
      s25_MchSafetyCheck_T2 : Bool;
      SEQ01_ResetComplete : Bool;
      sStWtResetRel_T1 : Bool;
   END_VAR NETWORK
TITLE = Transition for STATE Num:25 Machine Safety Check
      A #s25_MchSafetyCheck;
      AN #sStWtResetRel;
      A #sSst;
      A #iSafetyDoorClosed;
      A #iEmergencyButtonReleased;
      = #s25_MchSafetyCheck_T1;
      A #s25_MchSafetyCheck;
      AN #sStWtResetRel;
      A #sSst;
      AN #iSafetyDoorClosed;
      O #iEmergencyButtonPressed;
      = #s25_MchSafetyCheck_T2;
NETWORK
TITLE = STATE Num:25 Machine Safety Check
      A(;
      O #s25_MchSafetyCheck;
      O #sStWtResetRel_T1;
      );
      AN #sStWtResetRel;
      AN #s25_MchSafetyCheck_T1;
      AN #s25_MchSafetyCheck_T2;
      = %L1.0;
      A %L1.0;
      BLD 102;
      = #s25_MchSafetyCheck;
      A %L1.0;
      JNB Label_25;
      L 25;
      T #StateNo;
Label_25:      NOP 0;

代码校正器

由于 PLC 梯形逻辑本质上很复杂,LLM 在初始代码生成过程中可能会遗漏关键功能。该解决方案包含一个复杂的校正系统,用于解决这些差距并促进高质量的输出。校正采用定制逻辑(包含业务准则)和 FM 相结合的混合方法来执行校正任务。下图说明了工作流程。

PLC Code Rectifier

校正模块执行以下步骤以帮助提高代码准确性:

  1. 由生成器模块生成的 PLC 代码被传输到校正模块进行增强。
  2. 该模块通过调用 Anthropic 的 Claude 3.7 Sonnet 来促进对并行执行路径的正确处理,即序列分割成多个分支然后再重新会合,从而在整个 PLC 程序中保持正确的逻辑流程。Claude 3.7 Sonnet 提供了处理复杂并行执行路径校正所需的增强推理能力,并使用专门的提示和生成的 PLC 代码。使用节点/网络映射脚本来跟踪状态转换和序列跟踪。
  3. 该模块利用格式化器提取的数据(包括存储在 Amazon S3 中的转换变量的源状态和目标状态),通过以下阶段:
    • 识别阶段 – 使用专用的 Python 算法分析 PLC 代码结构,并将转换变量与其声明的源状态和目标状态进行交叉引用,标记不正确的连接。
    • 补救阶段 – 采用有针对性的 Python 例程,在保持整体逻辑结构完整性的同时,系统地删除不正确的连接。
    • 重构阶段 – 实现自定义 Python 逻辑,以遵循正确的顺序执行模式,在状态之间建立正确的连接。
  4. 生成的代码可能包含语法错误、未声明的变量或不合规的命名。使用 Anthropic 的 Claude 3.5 Sonnet 和自定义逻辑,此过程涉及:
    • 识别代码中使用但未声明的缺失变量。
    • 将缺失的变量添加到声明部分。
    • 标准化变量名称,以确保变量遵循西门子 S7-1517 PLC 命名约定。
  5. 校正后的 PLC 代码和相关元数据存储在 Amazon S3 中。

代码评估器

校正后,代码将经过一个全面的验证过程:

  1. 验证器模块根据关键指南分析校正后的梯形文本:
    • 唯一的​​状态标志 – 验证每个状态是否具有唯一的标识符,没有重复。
    • 唯一的​​转换标志 – 确认转换标识符在整个代码中是唯一的。
    • 正确的连接验证 – 验证每个转换是否连接到正确的目标状态。
    • 输入转换完整性 – 确保每个状态至少有一个输入转换条件来触发状态更改。
    • 互斥条件 – 检查同一状态内的转换变量是否互斥,以帮助防止逻辑冲突。
  2. 对于每项验证检查,系统都会生成详细的通过/失败结果,其中包含有关检测到的问题的具体信息。
  3. 系统会编制一份全面的验证报告,突出显示可能需要工程师手动关注的剩余问题,并清晰指示代码中问题的位置和性质。
  4. 这种多层校正和验证方法极大地有助于提高生成的梯形文本的质量,减少了手动干预的需要,并加速了整体代码开发过程。

UI 和用户交互

该解决方案提供了一个直观的用户界面 (UI),有助于工程师高效地与系统交互。此部分的工作流程遵循以下步骤:

  1. 用户访问基于 Web 的界面以上传控制逻辑电子表格或结构化文本输入。
  2. 界面提供了选项来选择不同的模型并调整参数以优化生成。
  3. 高级用户可以直接编辑提示以自定义生成过程。
  4. 系统显示生成的梯形文本、伪查询和验证报告,使工程师能够快速评估输出质量。

从上传到验证代码的整个过程通常在 3 到 7 分钟内完成,具体取决于输入查询的复杂程度。下面的 GIF 演示了设置界面,用户可以在其中配置模型参数,包括温度、Top-P、Top-K 值,选择不同的模型,并为各种项目自定义提示设置。

结果和业务影响

该解决方案改进了 Wipro PARI 以前的方法,在各种测试用例中表现出一致的性能:

  • 跨测试用例的平均验证完成率为 85%
  • 处理时间从 3-4 天减少到每个查询大约 10 分钟
  • 每个查询生成的成本约为 $0.40–$0.60
  • 对于“输送机控制”等不太复杂的查询,实现了完美的 (100%) 验证分数
  • 即使是具有多个状态转换的复杂查询也实现了 70–90% 的验证分数

这种自动化方法改变了 Wipro PARI 的 PLC 编程工作流程,在节省了 5000 个工作小时的同时实现了可衡量的业务影响,同时最大限度地减少了手动编码错误。该解决方案帮助其 200 名工程师专注于高价值任务,如代码设计和应用程序开发,同时加速了代码生成过程。它还帮助 Wipro PARI 赢得了关键的汽车客户,并在复杂的自动化项目中创造了竞争优势。他们计划将来扩展到其他主要的 PLC 系统,包括罗克韦尔自动化 (Rockwell Automation)、施耐德电气 (Schneider Electric) 和 ABB,以帮助 Wipro PARI 扩大其在汽车行业的专业知识。

结论

在本文中,我们探讨了 AWS 如何与 Wipro PARI 合作开发一个 AI 驱动的 PLC 代码生成器,该生成器将根据给定的控制逻辑,改变创建梯形文本代码的耗时过程。通过在 Amazon Bedrock 中使用多个 Anthropic Claude 模型和自定义验证框架,该解决方案实现了平均 85% 的准确率,同时将代码生成时间从 3-4 天减少到每个查询大约 10 分钟。

Wipro PLC 代码生成器代表了工业自动化编程的一个里程碑,直接解决了 Wipro PARI 工程顾问面临的生产力挑战。该解决方案的方法——结合提示工程、迭代代码生成、自动化校正和系统验证——创建了一个强大的框架,可应用于各种 PLC 编程场景。

在当前实施的基础上,Wipro PARI 计划利用更多的 Amazon Bedrock 功能来扩展解决方案的能力。该团队将实施 Amazon Bedrock Guardrails,以帮助执行内容过滤策略,从而防止生成不安全的控制逻辑,并在模型输出级别促进符合 IEC 61131-3 标准。路线图包括使用 AWS Strands Agents(专为自主 AI 代理设计的开源 SDK)构建多代理工作流程,其中专门的代理将处理不同的任务:一个代理用于需求分析,另一个用于代码生成,第三个用于自动化文档生成。为了在生产中扩展这些代理,Wipro PARI 将使用 Amazon Bedrock AgentCore,它提供用于部署和扩展代理的无服务器基础设施,具有企业级安全性、会话隔离和内置身份管理。Amazon Bedrock AgentCore Memory 将使系统能够在工程会话中保持上下文,允许代理记住以前的交互并以前面的工作为基础;Amazon Bedrock AgentCore 网关将帮助安全地将代理连接到现有 PLC 验证工具和内部 au... [内容被截断]




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区