常海
摘 要:将面向对象程序设计方法应用于PLC程序设计中,可以大大提高编程效率和可维护性。文章给出了一个在STEP7软件中实现类的抽象与封装的简单示例。
关键词:PLC;面向对象;程序设计
在PLC的编程设计中,如果外围设备很多,则PLC程序设计将面临编程效率低、程序维修困难等问题。把“面向对象”的程序设计方法引进PLC程序设计,可以提高代码的使用效率,减小程序出错的可能性。因而提高PLC程序的编程效率和程序的可维护性。
1 传统PLC程序设计
现代工业生产的控制系统经常要涉及到多个外部设备,设备的动作往往有严格的时序要求。长久以来,多使用“面向过程”的程序设计方法。以过程为中心构造应用程序,数据和数据处理过程代码是相互独立的,可重用代码少,且代码量大时,维护数据和代码相当困难。其缺点有:割裂被控对象在PLC程序与现实中的联系,内部逻辑与被控对象不明确,程序的后期维护困难;程序的内部逻辑关系非常复杂,控制流程不明确,容易出错;输入与输出都缺乏整体性,程序员往往孤立考虑各输入点或输出点的逻辑和控制。
2 面向对象的程序设计概念
面向对象程序设计方法OOP(object-orientedprogram)直接以现实世界中的事物为中心来思考问题,按照事物的本质特征把它们抽象为对象,作为构建软件系统的基础。程序与现实世界之间具有极强的对应关系,大大降低了软件开发的难度。
⑴类。类是对所有具有相同属性的事物的抽象概念,相当于模具;而对象是类中的一个实体,相当于是用模具制造出来的一个产品。同一类设备的控制方法、信号反馈、故障检测等操作相同或相似,如水泵电机、油泵电机和驱动电机等,可以抽象为一个电机类,编写其通用性模块。
⑵封装。封装将数据与操作数据的源代码有机结合成类。封装将对象的属性和方法形成一个不可分割的整体;只保留有限的对外接口,并尽可能隐藏内部的具体细节。封装在对象与外界之间建立了一道屏障,使外界只能通过对象所提供的接口与对象发生联系,而不能直接修改对象的属性值。比如驱动电机在PLC程序中可能不仅要“启动”与“停止”,还需要监测电机电流、轴温等。拥有多个驱动电机的设备,可将这些特性抽象,封装在一个类里。这就可以大大简化整个系统PLC程序的结构,提高编程和维护的效率。
3 面向对象程序设计方法的特点和设计原则
3.1 面向对象程序设计方法的特点
⑴以“对象”或“数据”为中心,对象接收了消息就发生动作。对象自然对应领域的模块性,可被用作组件去构成更复杂的应用。对象封装的是某一实际需求的成分,改变某一对象对整个系统几乎没有影响;⑵类与类以层次结构组织。属于某个类的对象除了具有该类的特性外,还继承其更高层次所有全部性质;⑶由于类的模块性与继承性,可在原有对象的数据类型和功能的基础上通过重用、扩展和细化设计新的应用程序,达到事半功倍的效果;⑷程序开发容易。系统中控制方法和功能相同或相似的设备很多时,这一特点尤为突出;⑸程序调试方便。只要把系统调试的可能性柔性地编到类的通用模块中,便可应对同类设备所有预料的突发问题。只須修改一个通用模块,或者仅仅是修改几个参数,也可应对没有预料到的问题;⑹系统维护和功能扩展方便。对象的存在使程序的可读性大大增强,数据的封装使得在对系统进行维护和功能扩展时,不需知道设备的具体情况,只要知道设备的输人输出的接口即可。
3.2 设计原则
面向对象程序设计的基本原则如下:⑴对象设计。把设备分类,抽象和封装公共的属性,赋予其现实的意义。⑵控制流程的设计。编写处理逻辑关系与工艺流程的控制程序,形成功能模块,通过接口来调用被控设备。既能使工艺流程清晰,又使被控对象明确,从而提高了程序的可维护性。
4 基于STEP7软件的示例
STEP7软件具备模块化的编程方法,可将自动化任务分解为能够反映某种过程工艺、功能或可以反复使用的更小的任务块(FC或FB),主程序循环块OB1通过调用这些块来完成整个自动化任务。对应面向对象程序设计方法中类的抽象和封装,主程序调用不同的类进行实例化,编写控制程序。
在某工程项目中,使用西门子S7-300PLC控制三台同1型号变频器。输人变量有:变频器启动ST,变频器停止SP,变频器输出电流I1,变频器所驱动电机的轴温T1。输出变量有:变频器启动输出Q,经过数值变换后的变频器电流I2,经过数值变换后的电机轴温T2。按照OOP方法的要求,针对控制对象与变量,使用STEP7软件函数功能块抽象出变频器对象FC1,实现如下功能:(1)使用ST和SP接口变量控制输出变量Q。(2)使用I_BCD函数实现I NT型变量(输入电流) 转换为BCD型变量(内部程序使用)。在主程序OB1的梯形图中放人三个被控变频器的FC1,将外部变量(输入:ST,SP,I1,T1。输出:Q,I2,T2)分别与FC1定义的变量对应起来进行控制.
5 结论
基于OOP的程序设计方法的应用使PLC程序的实现更加容易,更加可靠,也为程序的调试和后续的维护及功能的扩展提供了广阔的空间。它在PLC程序设计中的应用可以使它的设计向着工业化的设计方向发展,使大型PLC程序在集体合作设计时分工更加明确,性能更加可靠。
[参考文献]
[1]西门子公司.S7-300 PLC STEP BY STEP[M].北京:北京航空航天大学出版社,2004.
[2]沈被娜,等.计算机软件技术基础[M].北京:清华大学出版社,2000.