於宇琛 杨传将 谭明波
(中国船舶重工集团公司第七一二研究所,武汉 430064)
升船机主提升控制系统(以下简称系统)作为现代化大型 PLC控制系统,结构庞大,时序复杂,采用传统的顺序编程思想会使系统开发难度大,程序冗长,代码重复利用率低,后期维护升级困难。随着系统复杂程度和自动化程度的不断提高,编程思想也需要不断的完善和发展。编程思想是指解决问题的思路,在系统分析和设计阶段起到管理资源分配和规划程序组织的作用[1]。面向对象思想以其模块重用、结构紧凑和易维护升级等特点,已经在计算机程序设计领域中被广泛应用[2]。本文将面向对象思想引入到 PLC控制系统分析和设计中来,应用统一建模语言(Unified Modeling Language, UML),分析系统需求,找出问题域,建立问题域模型,确定程序总体结构和流程,设计详细功能及接口,达到规范开发过程,提高编程效率和方便维护升级的目的。
面向对象思想从现实世界中客观存在的事物出发,强调以问题域为中心,根据事物的本质特征,将事物抽象表示为对象,作为系统基本构成单位,运用继承、封装、多态等方法来构造系统,使其直接映射问题域,保持问题域中事物及其相互关系的本来面貌[3]。统一建模语言是一种可视化的建模语言,能让设计者用标准的、易于理解的方式建立起系统模型,并且提供有效的共享和交流机制[4]。
系统分析指描述和分析系统需求,找出问题域,建立用例图,区分类和对象,通过交互视图确定问题域中类的活动和约束,通过类图定义类的属性和方法,形成面向对象的程序体系结构[5]。
系统的功能需求主要表现在以下几个方面:
1)上位机可以在遥控方式下控制船厢的运行。2)柜门按钮可以进行安全系统的紧急制动。3)触摸屏可以进行检修操作或在现地方式下控制船厢的运行。
系统参与者包括上位机、液压站和其他子站等;用例包括紧急制动、拖动系统和通讯系统等。根据参与者、用例及其之间的相互关系,建立起用例图。通过分析得出系统主要包括紧急制动问题域、系统检修问题域和船厢动作问题域。系统用例图如图1所示。
图1 系统用例图
通过交互视图和类图对问题域进行分析,确定问题域中各实体及其之间的关系,建立问题域的模型[5]。
在船厢动作问题域中,通过分解船厢动作问题域,得出该问题域主要由液压系统,润滑系统,拖动系统,通讯系统这四个对象以及它们之间的相互关系构成。本文采用交互视图对问题域进行描述,通过顺序图显示对象之间相互传递消息的顺序关系,通过协作图描述这些对象的控制流程和协作关系[6]。船厢动作的顺序图如图2所示。当船厢动作时,启动顺序为润滑系统,液压系统和拖动系统。停止顺序为拖动系统,润滑系统和液压系统。
图2 船厢动作顺序图
类是具有共同属性、操作和语义特征的对象的集合,主要包括名称、属性和方法。类图描述类基本信息和类之间的联系。以润滑系统类为例,类的名称是润滑系统,每个润滑站都是唯一标示和可区分的,都是润滑系统类的具体对象;润滑站对象的属性表示润滑站的性质,包括润滑站号、润滑温度、润滑压力和启停状态;润滑站对象的方法表示润滑站对象的行为,包括电机控制、温度控制和压力控制。系统类图如图3所示。
图3 系统类图
系统设计是根据系统分析结论,结合PLC编程软件特点,确定程序总体结构和流程,设计对象的详细功能以及接口。
概要设计包括层次结构设计和总体功能设计,是编程设计过程的重要环节。系统分析指出系统主要包括紧急制动、系统检修和船厢动作三个问题域以及拖动系统、液压系统、润滑系统和通讯系统四个对象类。从系统整体规划和组织结构出发,将系统分成两层,上层是问题域层,下层是对象类层,其中问题域和对象类分别对应组织块和功能块,形成组织块和功能块相结合的组织结构。这种结构方便系统调试和后期升级维护,对功能块进行修改和测试时不会对功能块之间相互协作和共享信息的关系造成影响。
详细功能设计包括问题域交互视图和类图的详细设计。交互视图对应于程序流程图,各功能块协同配合实现系统功能需求。船厢动作问题域程序流程图如图4所示。
图4 船厢动作问题域程序流程图
类图对应于功能块详细设计,主要确定功能块的属性和方法。润滑功能块详细设计包括参数设置和动作控制。参数设置包括控制方式设置、时间设置、润滑压力报警点设置,润滑温度报警点设置,油位报警点设置;动作控制包括电机动作控制、润滑压力控制,润滑温度控制。
控制系统中,功能块通过接口互相联系。接口设计主要包括继承机制和面向接口编程。继承机制使同类的不同对象可以使用相同的功能块和各自的背景数据块,提高了程序的代码重用性的同时满足了现场同类对象间不用的工况要求。面向接口编程在保持功能块接口不变的情况下,改变内部程序不会影响系统总体功能及其他功能块,在增加了功能块内聚度的同时,提高了编程的灵活性和程序的可维护性。考虑到相似对象间的微小差别,在接口设计中需要留出足够的裕量以满足修改未来的升级改造需要。
本文将面向对象思想结合到PLC控制系统程序开发中来,基于统一建模语言对系统进行分析和设计。在实际工程应用中,既规范了程序开发过程,减少了开发时间,又优化了程序结构,简化了代码,使程序逻辑更加清晰,可扩展性更强,满足了程序运行维护、更新升级和阅读交流的需要,使程序开发向着规范化、模块化和系统化方向发展,形成了一套基于面向对象思想的系统程序开发体系,并为将来的系统开发提供一个可复用性的平台。
[1]廖常初. PLC编程及应用[M]. 北京: 机械工业出版社,2003.
[2]汪成为. 面向对象分析、设计及应用[M]. 北京: 国防工业出版社, 1991.
[3]宋炎等译. 面向对象的编程指南[M]. 北京: 电子工业出版社, 1996.
[4]王养庭. UML基础与应用[M]. 北京: 清华大学出版社,2006.
[5]徐锋等译. UML2.0实战项目开发指南[M]. 北京: 人民邮电出版社, 2007.
[6]Erich Gamma 等. 设计模式:可复用面向对象软件的基础[M]. 北京: 机械工业出版社, 2000.