APP下载

面向对象方法在水蓄冷PLC编程中的应用

2018-01-18仇文君欧阳峥嵘

自动化与仪表 2017年1期
关键词:面向对象程序设计组件

仇文君,欧阳峥嵘

(中国科学院 强磁场科学中心,合肥 230031)

稳态强磁场实验装置(SHMFF)是国家发改委支持的“十一五”国家重大科学工程,水冷磁体由于消耗大量的电能而产生热量必须由去离子冷却水及时带走,而冷冻水通过板式换热器,为去离子冷却水提供冷源。由于水冷磁体的最大瞬时热负荷为28 MW,如果按此配置制冷机组,系统造价很高,为了节省系统投资,选用较小规模的冷水机组,采用水蓄冷[1]方式,将夜间电网多余的谷段电力(低电价时)与水的显热相结合来蓄冷,以低温冷水形式储存冷量,并在用电高峰时段(高电价时)使用储存的低温冷水来做为冷源,从而达到“削峰填谷”,均衡用电及降低电力设备容量的目的。

随着我国电网负荷峰谷段用电量差距的不断加大,国家电力部门逐步实施分时电价政策[2],并且很多地方的电力部门对于蓄冷空调系统在收取电力增容费方面给予优惠,蓄冷空调系统已是空调系统发展的必然趋势。在制冷与空调方面,可编程逻辑控制器(PLC)已经得到广泛应用,PLC程序的设计也越来越受到重视。随着蓄冷空调控制功能更加全面,数据处理量和通信功能的增加等,PLC程序设计的难度也随之增加。人们也希望PLC程序能够具有较强的可读性和通用性,方便控制系统后期的维护、升级与改造。显然,传统的PLC程序设计方法已无法满足人们的要求,本文针对SHMFF去离子水冷却系统的水蓄冷工艺控制的要求,使用面向对象的方法对水蓄冷的PLC控制系统进行程序设计,提高了程序的可读性和复用性。

1 面向对象方法的基本原理

面向对象程序设计方法直接以现实世界的实体或概念为中心来思考问题,根据事物的本质特征把它抽象为对象,作为构建软件系统的基础。也就是说,面向对象是对复杂事物简单化,将具有相同或相似结构、操作、约束条件以及具有相同数据的对象进行合理的集合归类,不同类之间采用入口参数判别方法加以区分,并建立起类的数据结构,而后将类的属性和方法封装到具有适当定义的接口容器,最后将不同的类通过消息实现联系通信,这样就将系统流程的实现变成封装模块的简单调用。

面向对象的编程思想的有些特征是传统设计方法所不具备的,如抽象性、封装性、继承性及多态性等。面向对象的系统包含了对象、类和继承3个要素。对象即计算机逻辑中抽象表示现实世界的实体或概念,对象是有且仅有1个对象名并具有固定对外接口的一组属性和操作的集合。在计算机中,对象用来模拟影响或组成现实世界问题的一个或一组因素。对象的属性代表了它所处的状态,而对象的操作则可以用来改变对象的状态以达到特定的功能,或者在状态不变的情形下执行某种动作或活动。面向对象的问题求解就是争取从实际问题中抽象出这些封装了属性和操作的对象。在计算机软件编程中需要把一些事物归纳和抽象,才能编写类,而在工业控制系统中的控制对象,如电机及阀等是很明显的控制类别,不需要抽象就能很明显且有针对性地编写类[3]。

统一建模语言UML(unified modeling language)[4]是一种通用的可视化建模语言,被广泛应用于面向对象的系统分析和设计。在使用面向对象方法设计软件程序时,UML模型能够合理地封装系统中的对象,隔离对象的内部活动和外部的联系。UML使用类图表示对象的结构,使用状态图表示对象的内部活动,使用活动图等精确描述对象之间的关系,同时还可以详细表示对象的继承关系、静态结构、动态特性以及相互协作等。这样就掩盖了软件程序的具体细节,简化了程序设计过程,同时使得软件程序具有更好的可读性和复用性。

UML模型用标准的图形来描述系统的功能和形态,主要包括用例图、静态模型、动态模型和实现模型。本文只针对水蓄冷PLC程序的用例图、静态模型、动态模型和实现模型进行分析。

2 水蓄冷面向对象方法的PLC程序设计

SHMFF的水蓄冷回路中,包含了串联的2台冷水机组、3台冷冻水一次泵、3台冷冻水二次变频泵、3台开式塔冷却泵、2台开式塔变频风机、6台闭式塔变频风机、6台闭式塔喷淋泵、十几台阀门等设备和一百多个检测仪表。控制系统由PLC构成,定义“流程”就是为实现蓄冷回路中各设备按顺序启停以完成蓄冷过程的列表。水蓄冷共有6个工作流程,以其中的一个工作流程“2台主机单独蓄冷”(单罐单布水器模式)为例,其启动流程如图1所示。

图1 两台主机单独蓄冷启动流程Fig.1 Flow chart of two chillers’cold storage

其中,1号、2号冷水机组是串联工作的,1号冷机的冷凝器对应1号开塔冷却泵和1号开塔风机;2号冷机的冷凝器对应2号开塔冷却泵和2号开塔风机。根据蓄水罐上方回水温度的高低,用户自行选择冷机的工作模式(单独使用上游冷机、单独使用下游冷机、上下游冷机串联使用),所以每一条选择分支的设备选择及时间间隔都不相同。为了整个蓄冷功能的实现,就需要合理有效地控制驱动各个流程的设备,使其协调运行,这就要求不同的设备可以顺序启停,同种设备间可以协调控制和联动。

3 UML建模过程

3.1 功能模型用例图

系统功能模型用例图如图2所示。用例图是软件需求分析到最终实现的第一步,主要用来描述用户、需求、系统功能单元之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。用例图从用户的角度来展现系统的功能,便于软件开发人员最终实现这些功能[5]。UML的用例模型不仅能够展现系统功能需求,还能够更加清楚地描述系统的参与者,即外部执行者和系统之间的交互关系以及参与者之间的关系。本例中包含了2个角色(工程师和操作员),2个角色都属于同一类对象,但是操作员的权限较小,工程师的权限较高。

图2 水蓄冷系统功能模型用例图Fig.2 Functional model of the chilled water system use case diagram

3.2 静态模型

类图[6]是面向对象系统建模中的核心视图,反映类的结构(属性、操作)以及类之间的关系。类图中的类与面向对象语言中的类的概念是对应的,是对事物的抽象归类。这里运用类图建立水蓄冷系统的静态模型。

在面向对象方法编程中,对系统类的划分有很多不同的分法。划分类的不同使得系统的实现模型不同,从而使程序设计也会有很大的差异。结合水蓄冷系统的特点,本文采用按照流程类、设备类和操作类进行分类。按照流程分类,定义不同工况下设备的选择和启停顺序;按照设备分类,可以对单台同种设备的输入信号做规范的处理后输出;按照操作进行分类可以实现同种设备间的协调工作。这3种分类,都是针对一组控制算法,将每一个算法封装到具有共同接口的独立的类中,从而使得对控制算法的增减修改都不会影响其他的对象。静态模型类图的示例如图3所示。

图3 水蓄冷系统静态模型类图Fig.3 Static class diagram of the chilled water system

3.3 动态模型

3.3.1 系统的工作流程

UML活动图用来为用例建模工作流,提供对系统执行过程的充分描述,说明系统如何根据不同的条件和刺激改变执行方向,在不同的主体之间切换任务。水蓄冷系统的控制流程选择过程由操作员发出命令,流程对象按照流程列表将流程中的所有设备依次选中,这是一组选择处理活动,一次只能选择一个流程,在活动图中以分岔和联结来建模,如图4所示。

3.3.2 对象的行为

系统中的每个对象在得到其他对象的消息或满足一定的条件后,将会在不同的状态之间进行转移,这种状态转移用状态图建模。流程的基本状态为静止、启动、运行、停车和故障等,流程对象的状态图描述了在不同的状态下由不同的条件驱动的状态转换过程,如图5所示。

以上系统的动态模型描述了对象之间和对象自身的结构和活动,从动态模型中可以抽象出各个类的特性和操作,从而完善了对象的静态模型。

图4 水蓄冷系统流程选择活动图Fig.4 Process selection activity diagram of the chilled water system

图5 水蓄冷设备对象的状态图Fig.5 State diagram of the chilled water’s devices

3.4 实现模型

采用组件图建立实现模型[7]。组件图用来显示程序代码的逻辑结构,描述了程序中存在的组件、接口以及组件之间的依赖关系。UML建模中的组件是系统中可以替换的代码模块,每个组件都体现了系统设计中的类的实现。组件图是从软件结构的角度来描述一个系统的主要功能,可以清楚地看出系统程序的结构和功能。定义良好的组件不直接依赖于其他组件而是依赖于所支持的接口,这样就可以避免系统的各个组件之间发生依赖关系,有利于新组件的替换。水蓄冷系统的程序组件图如图6所示。

图6 水蓄冷控制系统组件Fig.6 Component diagram of chilled water control system

根据系统静态模型中的分类,使用设备控制组件和操作控制组件实现系统的功能,6个流程可以重复调用水泵控制组件、变频风机控制组件、冷水机组控制组件、两用一备控制组件、一用一备控制组件等。按照这个方法,后期如果需要对系统进行升级或者程序移植,只需要增加或删减流程,修改其入口参数即可,使得程序具有更好的可读性和复用性。

4 PLC编程实现

本系统采用西门子S7-300 PLC,程序编写在Step7中进行。用户程序主要由组织块OB(organization block)、功能 FC(function)、功能块 FB(function block)、数据块 DB(data block)组成。

在上述实例系统中利用功能FC和用户定义数据类型UDT可以实现对象的封装和对象属性的定义,流程类、设备类和操作类均可采用FB或FC创建,按照以上建模过程中得到的类结构图和系统组件图,对不同类对象加以合并和简化,仅用了5个UDT和FC就实现了所有的设备类,3个FB实现操作类,流程类由6个FB实现,在主程序中调用不同的类的FB或FC都可以生成相应的对象。不同的是,调用FB时,系统会为其配置一个背景数据块[8],调用FC时,需使用提前建立好的共享数据块。

以上实例系统的投运非常顺利,流程启停功能和切换功能实现良好。由于采用了面向对象的方法,整个系统所需的编程时间大幅下降,程序结构模块化,易读性强;在这个系统中增加新的设备只需添加或从原有的类中派生一个新的类,或者将已有的类实例化。调用FC或FB示意图如图7所示。

图7 调用FC和FB示意Fig.7 Example of calling function and function block

5 结语

本文将面向对象的方法应用在水蓄冷控制系统的PLC程序设计中,使用UML对水蓄冷系统进行了建模,不仅对系统进行了抽象与类的封装,并且用组件图描述了系统的结构与功能。在最后的程序实现时,这种面向对象的PLC编程方法不但提高了编程效率,而且使水蓄冷系统的程序更易于阅读和修改,对空调水蓄冷控制系统的使用和维护具有很大的指导和借鉴价值。

[1]黄渝,宋勤锋.浅谈浦东机场能源中心水蓄冷系统的控制[J].制冷空调与电力机械,2008,29(3):73-77.

[2]丁艳虹,朱江.昆明新机场水蓄冷空调自动控制系统设计[J].工程建设与设计,2009(8):71-75.

[3]张博,王志信.模块化编程思想在PLC系统中的应用[J].化工自动化及仪表,2013,40(3):416-418.

[4]孟彦京,王佳宁,段明亮.面向对象方法在造纸机PLC程序中的应用[J].自动化仪表,2015,36(3):29-35.

[5]黄咏,庄诚,高东杰.输送系统的UML建模、优化与实现[J].控制工程,2006,13(1):55-59.

[6]周元芳.结构化及面向对象的程序设计方法在PLC编程中的应用[J].浙江工学院学报,2003,31(3):264-267.

[7]周珂,李子丰.基于UML构件分析的软件复用技术[J].航空计算技术,2004,34(2):51-53.

[8]陈娟,周猛.面向对象的程序设计方法在PLC程序设计中的应用[J].电气自动化,2001,23(3):55-57.

猜你喜欢

面向对象程序设计组件
GEE平台下利用物候特征进行面向对象的水稻种植分布提取
无人机智能巡检在光伏电站组件诊断中的应用
医学专业“Python程序设计”课程教学改革总结与思考
一种嵌入式软件组件更新方法的研究与实现
基于Visual Studio Code的C语言程序设计实践教学探索
U盾外壳组件注塑模具设计
从细节入手,谈PLC程序设计技巧
面向对象方法在水蓄冷PLC编程中应用分析
面向对象的组合软件工程研究
桥梁组件搭配分析