李峰
摘 要:本文介绍了AB公司Logix5000开发平台自动内存管理的面向"对象"技术在电子皮带秤控制系统中的应用。应用该技术在多传感器、多秤台联合监控的电子皮带秤程序开发中比以往开发方式更高效,尤其在一拖多(一台PLC控制器控制多台电子皮带秤输送机)的多传感器、多秤台联合监控的电子皮带秤程序开发中优势更突出,是传统的开发方式无法企及的。
关键词:Logix5000 面向对象 Tag 结构体 电子皮带秤 PLC编程 数据结构
PLC应用程序由算法和数据结构(也即数据,Logix5000开发环境里习惯称为标签Tag,定义变量称为定义标签)组成,通过应用程序对数据的运算,实现对数据的处理和设备的控制。简言之,PLC控制过程就是PLC应用程序对数据进行运算处理,将运算结果送到执行单元执行的过程。PLC程序开发存在一个普遍的问题是很多开发平台无法定义有意义的变量名,如AB公司SLC500系列PLC,它的应用程序开发平台是Logix500,变量定义(如定义实数:F12:0)是面向机器的,可读性差。虽然可以对变量添加有意义的注释,增加可读性,但是注释无法上传下载,要想上传带注释的有实时数据的程序,除非随时带着有注释的源程序上传,就算带有注释,可读性也很差,给程序维护升级等带来一定困难,而且在开发测试阶段就要制作好变量表,以便调试及以后维护升级时随时查找,PLC应用程序开发人员对变量的识别读取耗费了大量的时间精力,开发、修改及升级程序容易出错且效率低下。如何提高PLC应用程序的开发效率,让程序开发人员把更多精力放在对逻辑及算法的优化上来成为亟待解决的问题。AB公司的Logix5000开发平台支持面向“对象”的自动内存管理技术,理论上可以解决了这一问题,但在电子皮带秤控制系统开发中还没有应用。
1 面向对象的程序设计概念
1.1 类的概念
类是对所有具有相同属性的事物的抽象概念,相当于模具;而对象是类中的一个实体,相当于是用模具制造出来的一个产品。同一类设备的控制方法、信号反馈、故障检测等操作相同或相似。
电子皮带秤可以抽象为一个大类,其下有输送机、电控系统二个子类,输送机下面有传感器、秤台等对象,对象与包含它的类之间、子类与包含它的上一级别类之间可以层层嵌套,反映出电子皮带秤的真实属性及对象与对象、对象与类之间所属关系。
1.2 封装
封装将数据与操作数据的源代码有机结合成类。封装将对象的属性和方法形成一个不可分割的整体;只保留有限的对外接口,并尽可能隐藏内部的具体细节。封装在对象与外界之间建立了一道屏障,使外界只能通过对象所提供的接口与对象发生联系,而不能直接修改对象的属性值。
一台电子皮带秤拥有多个传感器,这些传感器具有相同的属性,可将这些属性的数据结构抽象出来,封装在一个类或对象里。这就大大减少了变量的定义、优化了数据结构,提高编程和维护的效率。
2 数据结构的概念
2.1 数据(Data)
數据是外部世界信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。计算机程序处理各种各样的数据,可以是数值数据,如整数、实数;也可以是非数值数据,如字符、文字、图形、图像、声音等。
2.2 数据元素(Data Element)和数据项(Data Item)
数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。数据元素有时也被称为元素、结点、顶点、记录等。一个数据元素可由若干个数据项(Data Item)组成。数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段(Field)或域(Domain)。
2.3 数据对象(Data Object)
数据对象是性质相同的数据元素的集合,是数据的一个子集。例如,整数数据对象是{0,±1,±2,±3,…},字符数据对象是{a,b,c,…}。
2.4 数据类型(Data Type)
数据类型是高级程序设计语言中的概念,是数据的取值范围和对数据进行操作的总和。数据类型规定了程序中对象的特性。程序中的每个变量、常量或表达式的结果都应该属于某种确定的数据类型。数据类型可分为两类:一类是非结构的原子类型,如 Logix5000的基本类型(整型、实型、字符型、布尔型等);另一类是结构类型在Logix5000中也称结构体(如定义的DZC数据类型),它的成分可以由多个结构类型组成,并可以分解。结构类型的成分可以是非结构的,也可以是结构的。
3 开发背景
沙曲选煤厂2013年新投入使用使用的5台电子皮带秤控制系统控制器选用的是AB公司CompactLogix5000系列的1769-L32E,软件平台是AB公司Logix5000,版本V19.0。赛摩公司和天地常州科技有限公司第一次开发了基于Logix5000软件开发平台的电子皮带秤控制系统,但面临着巨大的挑战,即在不足2个月如时间里,开发出基于新的软件平台且要求优于以前结构和算法的电子皮带秤控制系统。Logix5000开发环境里有项功能,可以升级转换Logix500的程序,转换完成经过修改调试可以在Logix5000平台的CompactLogix控制器上使用,然后,这只是简单的升级,电子皮带秤的技术发展日新月异,很多新技术层出不穷,要将一些新技术应用到新开发的电子皮带秤PLC程序里,且要求开发出的电子皮带秤PLC程序有很好的可维护性和扩展性。
4支持Logix5000开发平台的PLC开发电子皮带秤的数据管理
(1)支持面向对象的自动数据管理,用户编程无需分配变量/记忆内存地(常规PLC是必须的步骤),如定义的变量Rated_Flow_QP属于内部参数画面Parameter,可以上传下载,无需注释也能看懂,指的是额定流量;
(2)支持各种形式的用户自定义类型,进一步降低了应用系统的抽象程度并提高了可维护性。
(3)对于具有相同属性的对象,自定义的结构体只需定义一次,如同样的对象有几个时,只需将该结构体定义成数组。
5编程
缕清了电子皮带秤的数据结构,抽象出数据类型,完成数据定义以后,编程变得相对简单且思路清晰。如对电子皮带秤的每个传感器实时码值进行均值滤波,且滤波深度可以在内部参数表里随时修改而无需修改源程序,实现起来只需几条语句即可完成且运行高效。
6 结束语
高效开发一套复杂的电子皮带秤PLC程序,除了熟悉开发环境、熟练开发语言的语法和语义外,还要有“面向对象”和“数据结构”的概念和思想,这样在PLC程序的设计上才是最有效的。AB公司的Logix5000平台自动内存管理的面向“对象”技术完全满足这一要求,它的面向“对象”技术,可以将电子皮带秤的数据抽象出来,将电子皮带秤定义成一个数据类型;它的自动内存管理系统会自动存储这些数据结构,开发者无需知道数据具体存放的物理单元,因而开发者可以把精力集中应用在对算法的优化及对新技术的应用上。Logix5000平台自动内存管理的面向“对象”技术在河南中烟南阳卷烟厂电子皮带秤PLC程序开发中得到了成功实践,开发的5套电子皮带秤控制系统运行稳定,5台电子皮带秤已运行将近一年,一直保持很高的精度,各项指标优于预定目标值。
参考文献
[1]胡云.c++面向对象程序设计[M].北京:电子工业出版社,2008.
[2]张逸群等.PLC编程的面向对象程序设计方法.上海:煤矿机电,2009(05).
[3]段恩泽,肖守柏.数据结构(C/C#语言版)[M].北京:清华大学出版社,2010.