自动化编程中的封装数据

使用面向对象编程的元素可以保持数据的组织性并简化代码的编写。

通过杰夫Monforton 2013年1月8日

在开发自动化解决方案时,我们面临的一个问题是管理和组织所需的大量数据。这适用于许多场景,无论是开发跟踪系统,控制输送机,还是离散的机器控制。不仅数据的组织对控制系统直接重要,图形开发也同样重要。

当面临开发新的自动化解决方案的挑战时,第一个也是最容易陷入的陷阱之一就是过快地跳入代码开发。这通常发生在I/O列表粗略完成之后。一般的心态是,代码必须尽快完成,以便图形人员能够在屏幕和动画上工作,但让我们考虑另一种方法。

现代控制处理器比过去的典型plc提供了显著的改进。这些改进部分是计算机理论进步的结果,特别是面向对象编程(OOP)。OOP中的一个概念叫做封装.这个想法强调把所有的特点某物一起放入一个容器或对象.这个想法是,如果你想知道a某物你只需要去一个地方就能找到它。相反,所有朋友,具有相同的可用特性。(这有点过于简单化了,但却能让人理解)。

今天的控制处理器通过使用用户定义的数据类型(UDT)提供了实现封装的高度组织的数据的能力。大多数制造商不仅为开发人员提供udt,而且自己也广泛地使用这个概念;举个例子,看看a的定义计时器计数器类型。这些数据类型由一组更基本的数据类型组成——布尔值、整数等。

对我来说,这个过程开始于我逐渐改进的电子表格布局、一些基本的符号和粗略的I/O列表。图1是我用于数据的基本符号的示例。这些符号被分为两个基本区域:HMI和Proc(ess)。HMI符号对图形开发人员非常重要,而Proc符号详细说明了数据如何在程序中移动。

图1:基本符号学

在这一点上,挑战在于开发包含所有类似事物的所有必要数据元素的UDT定义。作为一个例子,让我们考虑一条传送带线和它所使用的电机。每个电机都有许多特征:它是否启用,是否满足联锁,电机是否故障,是否处于自动模式,等等。图2是开发的单个电机定义的一部分的示例。

图2:电机UDT样本

的名字类型,描述列表示个体特征及其含义。右边的列(未命名)有助于阐明实际值的含义。对于HMI人员来说,最大的帮助是数据对他们的实际意义要么别碰等。Proc字段表示它来自哪里,如何流动以及在哪里/如何生成。这里没有真正的要求,只是增加了材料的清晰度的信息。

UDT不仅可以包含基本数据类型,还可以由其他UDT组成,如图3所示。

图3:将UDT包含为元素

上面的部分仍然是电动机定义,它包含额外封装数据的进一步udt。

在绘制出系统或过程的所有需求之后,我们生成了几个东西:

•控制器中有大量的文件数据
•传递给图形开发人员的文档
•关于如何编写实际代码的合理的深思熟虑的方法!

一旦输入了所有的udt并创建了控制器标记,开发就顺利进行了。显然,编写代码并不简单,但是通过允许这些例程处理整个数据块,可以进一步简化处理全部或部分数据的例程;所有的,而不仅仅是几个变量。从这一点开始,例程需要确保:

•数据被移动到寄存器(例如:字段输入)
•执行功能控制(例如:开发联锁),并且
•数据移出寄存器(例如:字段输出)

通常,当遵循这种方法时,代码本身在本质上更加模块化,因此更容易维护。它还有助于编写更完整的文档代码,这总是一个优点。

这是编程的一种方法,但不一定是解决问题的唯一方法。然而,我相信这是可以添加到自动化开发人员的技巧包中的另一个选项。

本文由Jeff Monforton撰写。Jeff是MAVERICK Technologies的高级工程师,MAVERICK Technologies是一家领先的系统集成商,为制造和流程行业提供工业自动化、运营支持和控制系统工程服务。MAVERICK在工业自动化控制、分布式控制系统、制造执行系统、运营战略和业务流程优化等广泛领域提供专业知识和咨询。该公司提供全方位的自动化和控制服务——从PID控制器整定和HMI编程到作为主要自动化承包商。此外,MAVERICK还提供工业和技术人员配备服务,提供现场自动化、仪器仪表和控制工程师。