控制工程在线更新2005年2月11日

通过控制工程人员 二五年二月十一日
二五年二月十一日
突出了 ABB赞助
说明如何IEC61131-3编程可用于plc执行特定功能,并重新用于创建现有或未来项目的不同例程的分步指南。
plc中基于对象的编程

基于对象的编程已经成为当今办公自动化软件产品的一个常见方面。任何向电子表格添加定制或向数据库添加用户界面的人都熟悉这些可重用、自包含模块的好处。然而,在IEC61131-3编程标准和后续产品发布之前,可编程逻辑控制器(plc)的世界对用户需求反应缓慢。

IEC61131-3标准试图通过实现对程序和数据表结构的更好定义来为PLC程序开发的混乱世界带来秩序。通过在数据表标签结构的定义中采用这些标准,可以开发出可重用的逻辑,这与我们在Visual Basic、Access或Excel中使用的对象没有什么不同。

在最简单的形式中,对象是一段逻辑,它根据其中包含的数据执行一个或多个函数。此外,该对象/数据对可以在同一程序或不同程序中轻松重用。

为了展示这是如何做到的,罗克韦尔自动化公司的ControlLogix将被用来描述如何在plc上执行基于对象的编程。

定义对象
在ControlLogix处理器中编程对象的一般体系结构如下所示。

为了说明如何在实际的ControlLogix程序中实现这样一个对象,让我们使用一个输送机控制的示例。具体要求如下:

  • 这个系统有许多传送带

  • 输送机采用全电压不可逆起动器

  • 所有输送机都有过载和辅助触点

  • 需要手动关闭自动功能

  • 需要人机界面控制

  • 安装/调试前需要进行I/O模拟

  • 需要诊断(启动失败、过载、停止失败等)

用户定义的类型
如果我们使用传统的PLC产品进行上述设计,我们将为每个控制元素分配数据块。需要各种布尔或二进制文件。此外,可能还需要一些整数、计时器和浮点文件。最终结果是每个输送机的数据片段。通过使用用户定义类型(UDT)模型,不管数据的类型如何,都可以将数据分组在一起。此外,数据类型可以嵌套以允许重用子结构。以下说明了一些可能的udt,可用于输送机控制:

掌握UDT:输送机
主UDT是我们在声明标记时使用的变量类型。定时器结构,在传统的PLC术语中,是这种结构的一个例子。定时器可以有预设值(. pre)、累积值(. acc)、使能位(. en)、完成位(. dn)等。实际上,这些点引用是称为Timer的系统定义类型(SDT)结构的元素。当我们定义一个主UDT时,我们正在创建类似的元素和子元素。我们可以创建对其他udt的引用(嵌套)和/或定义实际的数据引用。这个屏幕截图显示了类型Conveyor的主UDT定义。

Sub-UDTs
子udt提供的功能可以在主udt(而不是输送机)上重用。例如,模式选择是许多设备的共同要求,而不仅仅是输送机。出于这个原因,创建了一个名为Process_Mode的UDT。下面是描述Process_Mode子元素的输送机UDT的展开视图:

在定义子udt和udt中的元素时,应该使用描述性名称。这将有利于程序记录,因为只有主UDT需要描述符。元素名称将用于进一步描述它们自己。

声明UDT
在我们的例子中,让我们假设我们有100个输送机(CNV1 - CNV100)。我们可以单独声明标记,也可以在数组中声明标记。单独声明标签的好处是每个传送器都可以有唯一的描述。如果在数组中声明,则描述不会携带整个结构。

对象逻辑定义
既然已经定义了数据结构,那么必须编写对该数据结构起作用的逻辑。利用ControlLogix多程序布局,可以创建一个名为“设备”的程序,其中包含每个输送机的子例程。子例程的名称应该与对象的名称相同。对于本例,创建一个名为CNV1的子例程(如下面的程序文件树所示)。

确保对象子例程中的所有逻辑只引用对象数据结构的元素是非常重要的。这将允许重用完整的目标代码。真实的I/O可以从位于“输入”程序下的另一个子例程映射到对象元素,而真实的输出可以从位于“输出”程序下的另一个子例程编程的对象元素激活。这种I/O映射实现如下功能:

  1. 同步输入和输出扫描

  2. 从逻辑中分离真实i /O

  3. 从目标代码内部使用I/O模拟的可能性

典型的输入和输出映射显示在这里(输入是顶部图形)。

一旦I/O被映射了,对象逻辑就跟着来了。下面的示例显示了仅使用对象元素的简化run命令。

总结
在定义多设备系统时,基于对象的编程可以极大地加快开发和部署。一旦初始对象逻辑已经编写和调试,以下步骤可以完成重用:

  1. 为新对象创建一个控制器范围的对象标记

  2. 复制设备、输入映射和输出映射子例程

  3. 将例程重命名为对象名称

  4. 在例程中搜索并替换对象名称

  5. 重新映射真实I/O

如果使用I/O别名标记来定义设备I/O,则每个子例程只需要执行一次搜索和替换,因此部署速度很快。当前和未来需要的所有设备功能都可以构建到对象模型中。这允许在现有和未来的项目中重用。

测试和调试精度是使用该模型的另一个好处。通过在每个对象中构建仿真逻辑和数据结构,整个测试和模拟过程成为对象的函数。这也增加了对象的可移植性,因为可以在不与I/O子系统建立物理连接的情况下对对象进行完全测试。

Mike Voll是Stantec Consulting Ltd.制造/工业控制经理。