工业自动化中的基于规则的代码生成


工业自动化中的基于规则的代码生成文章插图
摘要工业自动化应用软件开发是一个具有高度经济影响的不断增长的市场 。 控制工程师使用标准化编程语言(iec61131-3)为此类系统设计和实现软件 , 但仍然需要大量的人工工作 , 从而导致高工程成本和潜在的质量问题 。 已经开发了使用从正式需求文档中提取知识自动生成控制逻辑的方法 , 但到目前为止只在简化的实验室环境中进行了演示 。 我们已经在大型工业装置上进行了四个案例研究 , 这些工厂有数千个传感器和执行器 , 用于基于规则的控制逻辑生成方法 CAYENNE , 以确定其实用性 。 我们发现 , 我们可以用适用于不同工厂的代码生成规则生成 70%以上的所需联锁控制逻辑 。 这可以使估计的总体开发成本节省高达 21% , 这为此类方法提供了一个有希望的前景 。
1、简介工业自动化中的软件应用程序需要更高水平的自动化和代码生成 。 在过去的三十年里 , 从业者创建了软件库来重用功能和工具来自动导入基于列表的规范 。 研究人员提出了十多种自动生成 iec61131-3 代码的方法 。 一类方法建议首先使用具有自动化特定概要文件的 UML 模型对客户需求进行建模 , 然后使用代码生成器创建 iec61131-3 控制逻辑] 。 然而 , 过程工程师通常不熟悉 UML 符号 , 并且附加的符号需要保持模型和代码的同步 。 另一类方法建议使用基于规则的方法 , 直接从半形式化的客户需求中提取代码生成所需的知识 。 这些方法还没有在实际环境中进行测试 , 因此它们的可扩展性和健壮性是未知的 。
我们根据实际工业装置的要求规范 , 使用我们称为 CAYENNE 的基于规则的方法(为快速工程控制系统创建体系结构)生成 IEC 61131-3 控制逻辑代码 。 它涉及到将客户“管道和仪表图”(P --tt-darkmode-color: #9B9B9B;">过程控制系统(PCS)使各种工业生产设施自动化 。 图 1 显示了过程控制系统的通用组件 。 许多用于温度、压力、液位和流量的传感器收集数据 , 例如来自储罐、热交换器或涡轮机的数据 。 传感器提供实时控制器 , 计算各种执行器的控制信号 。 工程工作站允许对现场设备和控制器进行编程和配置 , 而监督工作站支持操作员进行生产监控和报警管理 。 PCS 通常连接到管理资源和调度过程的制造执行系统(MES) , 以及管理会计、采购和人力资源的企业资源计划系统(ERP) 。
工业自动化中的基于规则的代码生成文章插图
【工业自动化中的基于规则的代码生成】PCS 控制器通常依赖于实时操作系统 。 它们周期性地执行用 iec61131-3 编程语言编写的控制算法 。 这些包括图形语言以及文本符号 。 清单 1 显示了 iec61131-3 结构化文本语法 , 类似于 Pascal 编程语言的最小代码示例 , 其中通过打开或关闭入口阀 , 油箱的填充水平保持在 50 厘米以下 。 这样的控制逻辑使工业过程保持在安全的条件下 。 控制工程师在运行时环境中编译和执行代码 。 控制逻辑可以包括复杂的计算来优化生产流程 。
工业自动化中的基于规则的代码生成文章插图
控制工程师根据工程承包商的要求设计并实施控制逻辑 。 图 2 描述了过程控制系统的典型工程流程 。 工程承包商提供 I/O 清单 , 其中规定了传感器和致动器所需的输入和输出信号 。 如果需要 , 控制工程师在新的功能块中为特殊要求实现自定义算法(步骤 1) , 并将其添加到功能块库中 。 然后 , I/O 列表可以自动映射到库中的功能块(步骤 2) , 这将创建控制逻辑框架 , 例如 IEC 61131-3 的变量输入和输出列表(见清单 1) 。
工业自动化中的基于规则的代码生成文章插图
然后需要根据非正式逻辑图和文本控制叙述手动实现粘合代码(步骤 3) 。 胶水代码需求规格说明的另一种方法是因果矩阵 , 它是连接特定信号以指定联锁的表格 。 作为联锁装置的一个例子 , 表示管道中警报状态的信号可以与容器排气信号相关联 , 以便自动化系统避免不安全的情况 。 工程承包商通常指定 C --tt-darkmode-color: #9B9B9B;">虽然传统的过程涉及到步骤 2 和步骤 4 中已经存在的某种形式的代码生成 , 但仍有可能实现额外的自动化 。 逻辑图和控制说明可以变成更正式的规范 , 允许自动处理 。 C --tt-darkmode-color: #9B9B9B;">我们提出的 CAYENNE 方法的核心思想是引入一个具有特定领域、可重用规则的规则库 , 以自动化控制逻辑的简单、重复发生的设计和实现任务 。 规则引擎将预先指定的规则应用于需求文档 , 因此可以自动生成 iec61131-3 代码的一部分 。 在典型工程工作流程(图 2)中 , 这一理念的第一个实例建议使用 P --tt-darkmode-color: #9B9B9B;">P --tt-darkmode-color: #9B9B9B;">图 3 示出了用于知识提取的抽象示例 。 P --tt-darkmode-color: #9B9B9B;">在本例中 , 规则引擎识别 P --tt-darkmode-color: #9B9B9B;">尽管为了简单起见 , 工程过程在图 2 中以线性形式出现 , 但实际上它是一个迭代过程 , 工程承包商将连续多次的细化需求移交给自动化供应商 。 当根据更新的需求重新生成代码时 , 代码生成器必须考虑手动并行编写的控制逻辑 。 为支持这一点 , CAYENNE 方法建议采用合并方法 , 将新生成代码与现有代码进行比较 , 并让控制工程师审查和批准任何合并冲突 。