基于面向对象的工控DCS系统编程教学方法探究
2010-01-29姚海军
姚海军
(西安航空职业技术学院 计算机工程系,陕西 西安 710089)
计算机的发展从1946年的ENIAC到目前已经历了4代,是一个从电子管到大规模集成电路、从机器语言到高级语言、从面向过程到面向对象、从仅用于科学计算到多媒体信息技术、从纯粹的机器到人工智能的发展过程,已经在通信、金融、交通运输、信息管理,乃至包括航天航空、工业控制等在内的各个行业上得到了普遍地应用。
随着科学技术的发展,计算机在工业生产中的应用越来越广泛,目前可编程逻辑控制器(Programming Logical Controller,PLC)/分布式控制系统(Distributing Control System,DCS)已成为工业控制自动化中两大主流控制系统,而且集成度越来越高,尤以后者更为突出。面向对象的编程思想和方法已渗透到系统设计与编程之中,通过通信协议将工程数据库与操作界面的控制信息有机地结合起来,通过工控软件内嵌的迷你(MINI)脚本[1],实现了对系统设备的实时监控、对控制信息的采集和处理。PLC/DCS的使用,对企业人力资源的充分利用、员工工作环境的改善、提高劳动生产率和产品质量,对于事故分析、故障处理、为管理者的生产决策提供了量化的依据都有着极大的意义。
作者有多年从事工业控制自动化PLC/DCS控制系统组态、编程、管理和维护经验,对工控软件比较熟悉;目前又在高职院校从事计算机技术的教学工作,在教学过程中,尤其是像在Java,VB,C#等面向对象的程序设计语言教学中,总有似曾相识的感觉,那就是工控软件中的面向对象的特点。事实上,工控软件编程中的面向对象对于学生才具有真正意义,它是把理论用于实践的具体表现,是把计算机技术转化成企业生产力。因此把企业中工控软件的编程思想和方法作为实例运用到面向对象程序设计语言的教学当中,让学生更容易理解和接受,而在教学工控软件的编程时,将面向对象的理论渗透进去,让学生在理论上有所收获和提升,为他们的后天发展提供帮助,这也是工学结合在高职教学活动中具体实践的体现。
1 面向对象程序设计的特点
面向对象语言[2]是指以对象为基本的编程单元,其下包含属性和方法。与传统的面向过程语言不同,面向对象语言的重要特点之一就是引入了类的概念。类就是现实生活中具有共同特性的事物(对象)的抽象。面向对象具有封装性、继承性和多态性的特点。封装性是指类封装了对象的属性和方法,封装可以隐藏实现的细节,使得编程代码模块化,实现了代码的可复用性。继承性,指可以从一个类(称之为父类或超类)扩展成一个新类(子类或派生类),子类可以继承父类的属性和方法,而且可以发展自己新的属性和方法,通过继承可以更有效地组织程序结构,明确类间的关系,充分利用已有的类来完成更复杂、更深入的开发。采用继承的方式来组织设计系统中的类,可以提高程序的抽象程度,使其更接近人的思维方式,使程序结构更清晰并降低编码和维护的工作量。多态性就是类中行为的多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。在运行时根据传递的不同的对象引用,来调用相应的处理方法。
类是对象的抽象,对象是类的具体化,是实例。有了类的概念,有了面向对象的编程思想,特别是面 向对象所具有的封装性、继承性和多态性等特性,可以在编程中大大减少编码的重复工作,提高编程效率,同时也提高了程序的可读性和可移植性。在工控中的应用更能体现这个优越性。
2 OOP在工控软件编程中的应用
在企业中,传统的控制方式是继电接触式控制方式[3-4],在控制设计方面主要靠工程技术人员的经验来完成设计任务,一旦工艺过程发生变化,原理图发生更改,接线也要修改,工作量大且控制可靠性差。而现代的PLC/DCS控制系统中,可以通过梯形图逻辑[5](Ladder Logic)的编程方法,借助图形化的操作界面GOS(Graphics Operating Station,图形操作站)的设计来实现对所有设备(包括模拟量、开关量及通讯参数)的实时监控,即便是工艺过程发生了变化,控制功能改变了,也不需要改变I/O端子和现场设备的接线关系,只需要修改其梯形图程序就可以了,而且对于设备间的联锁关系、时间控制(如启动延时,只需要在启动回路中加入一个时间功能块,取代了传统的连接时间继电器的方式)等问题无需硬接线,只需要在梯形图逻辑中加入相应的功能块就可以了。这样,不但减少了员工的工作强度,更重要的是减少了系统的故障率,有利于系统维护和质量监控。
以电机的控制为例,无论是哪种电机,都具有通信、备妥、运行、停车、故障等状态和启动、停车等行为,因此可以把它抽象为一个电机类(基类)。而高压电机、直流电机、伺服电机等,虽然也是电机,但在状态和行为上又各有不同,因此可以从该电机类派生(继承)。而不同类型电机(直流电机、交流电机等)的启动、停车方法,也就表现为电机启动、停车方法的多态。
图1是PLC程序设计中采集电机状态的通用逻辑。把电机的状态值保存在16位保持寄存器4XXXX中,在该寄存器中,以不同的位(对应于不同继电器的通断或组合)来表示不同的状态。当取得某种状态时,使用图中的MBIT位修改功能块[5],将相应的位置1,使得保持寄存器取得相应的值。这样寄存器的不同值就对应电机的不同状态。
图1 电机状态的PLC通用网络Fig.1 PLC universal network of motor status
图2是一个普通交流电机控制的PLC通用逻辑。在这个控制逻辑中,当(组)启动命令发布以后,在满足启动方式、设备联锁、工艺联锁、启动延时、停车延时等一系列要素之后,电机启动并运行;而交流电机的停车是通过断开启动线圈来实现的。
图2 交流电机PLC控制的通用梯形图逻辑Fig.2 Universal ladder diagram logic in AC motor controlling
而在工作站上,一般用一个实心圆表示电机(也可以用自己喜欢的图形符号,被称为Symbol[5]或Shape[6]),用图形的不同颜色表示电机的不同状态。在使用Honeywell公司的PlantScape(PS)[6]控制软件包中的 ControlBuilder设计操作站界面时,做出一系列代表不同状态的Shape(彩色实心圆),利用它提供的ShapeLink工具,把这些Shape封装在一起,形成了PS中的电机类,如图3所示。
图3 PS中电机类的制作过程Fig.3 Creating procedure of motor class in PlantScape software
在控制界面设计上,有一个重要的工作就是“贴标签”,“贴标签”则是类的实例化过程,它把生产线上实际使用的该类电机命名,命名是以工程数据库为依据,在运行时通过ODBC技术,将界面上的设备与工程数据库相连接(设备与状态保持寄存器一一对应),PLC程序获得电机状态寄存器的值,这个值就是图1所产生的电机的状态值,进而改变了操作站上电机的颜色,从而实现对电机实时的动态的监控。
对于直流电机,启动和停车多使用脉冲信号并分开进行。由于脉冲信号无法使线圈自保,所以利用计时器功能块[5]的工作特点,并使用一个内部线圈来启动电机并实现启动自保,以保证电机的持续运行(如图4所示)。
相对于启动回路,停车回路就要简单得多,它只需要通过缓停车命令给停车线圈发一个脉冲信号,使停车继电器吸合即可(如图5所示)。这也就是对电机控制方法的修改,即面向对象的多态。
图4 直流电机PLC控制启动回路的通用梯形图逻辑Fig.4 Universal ladder diagram logic in DC motor start controlling
图5 直流电机PLC控制停车回路的通用梯形图逻辑Fig.5 Universal ladder diagram logic in DC motor stop controlling
其他的电机,如伺服电机、变频调速电机,多驱动的电机,使用软启动的电机、间歇运转的电机等,就是该电机类的派生类,其启动、停车等操作同样也是电机类用启动停车方法多态性的表现。
3 电机控制的计算机语言模拟实现
在面向对象程序设计的教学中,设计类似的项目教学,模拟实际的工况和控制过程,可以达到理论与生产实际相结合、教学与就业相结合的目的。在模拟实验时,建立数据库取代工程数据库,并对控件的事件编写相应的代码。下面就是用VB语言编写显示电机状态的例子,代码如下(假设电机类的图形符号名称是Motor,状态寄存器为整型数据Motor_Status,要想实现定时刷新,只要添加Timer控件定时触发即可):
对于16位的状态寄存器,它可以存放216种状态。在实际使用中,只用了为数很少几种情况(如例中的几种case),而且有些值,如136或137,无备妥故障运行状态或有备妥故障运行状态,看似不可能而实际是存在的,可以通过这个状态值分析出设备目前已经脱离了集中控制。
学生还可利用Java,C++,C#等其他面向对象的编程语言,来完成这个设计。这样,学生一方面可以学习、理解面向对象的编程思想在实际工程中的应用;另一方面,在教学中,学生可以感受计算机语言的应用领域的广泛,化抽象为具体,提高学习的兴趣,为用而学,学以致用。与实际不同的是,工程中使用的是实时动态采集来的数据,而且工况要复杂得多。
4 结束语
教学过程中,通过设计并实施这些项目,在工厂电气控制技术课程的PLC教学中,配合实验和实训,可让学生感受到真实的工况环境,把所学的PLC技术为生产服务,使课堂与生产实际亲密结合,加深对控制技术的理解,真正实现电气控制自动化,并为学生最终实现无缝就业提供帮助。工控软件很多,比如Heuristics Inc的 ONSPEC32,Bailey公司的INFI-90,Honeywell公司的 PlantScape,Simens的 Step 7 等控制软件包中,都蕴含有面向对象的思想,也都有其具体的实现方法。计算机软件专业的学生,通过类似的项目,可以理解所学知识的应用价值,拓宽就业渠道。因此将面向对象编程思想与工业控制自动化结合起来,有利于学生知识的拓展、可持续发展,更可为社会培养出更多更好的复合型技术人才。
“Leaning For Work,Learning In Work”,这应该是老师和学生都应该重视的问题,切实做到工与学的结合,培养出高素质的应用型人才。
[1]Fangmark I,Van Bavel B,Marklund S,et al.Influence of combustion parameters on the formation of polychlorinated dibenzo p dioxins,dibenzofurans,benzenes,biphenyls and polyaromatic hydrocarbons in a pilot incinerator[J].Environ.Sci.Tech-nol,1993(27):1602-1610.
[2]刘世峰.Visual Basic程序设计[M].北京:中国广播电视大学出版社,2006.
[3]邵鹏鸣.Visual C#程序设计基础教程[M].北京:清华大学出版社,2006.
[4]张运波.工厂电气控制技术[M].北京:高等教育出版社,2006.
[5]Honeywell.Plant scape control manual[M].USA:Honeywell Industry Colleage,2004.
[6]Schneider公司.Modicon concept 2.5编程软件使用手册[Z].Schneider公司,2000.