基于DesignPatterns的大型工控软件研究与实践_刘铭
- 格式:pdf
- 大小:152.79 KB
- 文档页数:4
基于Design Patterns的大型工控软件研究与实践刘 铭,施 仁,贾宏宇(西安交通大学自动控制系,陕西西安710049)摘 要:针对大型工控软件开发面临的各种难题,提出了基于设计模式(Desig n Patte rns)的工控软件设计的解决方案.在大型电力系统监控软件设计中,采用设计模式进行工控软件框架和工位的设计,实现了功能模块的松耦合关系,降低了代码的复杂度,从而提高了运行效率,同时也加快了系统开发、调试的效率.论证了设计模式在工控软件设计中应用的潜力,提出了大型工控软件设计的新思路.关键词:设计模式;面向对象;工控软件中图分类号:T P311 文献标识码:A 文章编号:1000-1220(2004)06-1032-04Large-Scale Industrial C ontrol Software Research Basedon Object-Oriented Design PatternsLI U M ing,S HI Ren,JI A Hong-yu(Depar tment of Automatic Control,X i’an Jiaoton g University,X i’an710049,China)Abstract:T o so lv e so me problems o ccurr ed in the dev elo pment o f la rg e-sca le industria l contr ol so ftw ar e,a scheme based o n o bject-o riented desig n patter ns w as pro po sed in this paper.This technique w as applied in the desig n o f so ft-wa re fr amewo r k a nd tag module in this pa pe r.The result show s tha t the co upling betw een modules is loo sed,the co m-plexity of code is reduced and the efficiency is improv ed.And the time used in system dev elo ping and debugg ing a re re-duced.So th e po tential o f desig n pa tter n in so ftwa re for industry co nt ro l is demonstr ated in this paper.And a new idea o n how to desig n the adv anced larg e-scale so ftw are fo r industry contr ol system is pro posed in this paper.Key words:desig n pa tter ns;o bject-o riented;industrial contr ol so ftw ar e1 前 言工控软件作为一种专业软件,在全球得到了广泛应用,近年来更向着大型化、多样化、复杂化的方向发展.但如果设计不好,将使工控软件费用增加、可靠性下降、维护工作量增大,出现严重的“软件危机”.基于设计模式的软件系统设计是解决软件危机的有效途径之一.设计模式是对面向对象软件设计经验的提炼,是一种软件设计经验的复用技术.设计模式使人们可以更加简单方便地复用优秀的设计方案和体系结构,将过去最好的设计经验用到当前系统设计中[1].设计模式对面向对象系统中重要的、重复出现的设计进行了系统的命名、解释和评价.每个设计模式具有模式名称、问题、解决方案和效果四个基本要素.设计模式不仅记录了已有的设计经验和问题的解决方案,而且为基于设计模式的软件开发提供了广泛意义上的构件.自从Erich Gam ma等提出的Desig n Pat terns(设计模式)概念[2]得到业界广泛的认可后,已应用于不同的面向对象软件设计中[3-9].工控软件作为一种专业软件面临着模块化、复用性、开放性、易扩展和易维护等各方面的要求,同时由于其特定的应用领域,又面临着高稳定性、实时性的要求.所以使用已经成熟的设计模式来开发高效的工控软件已成为必然,同时也是工控软件发展的关键.本文将主要介绍作者采用设计模式开发大型工控软件框架和工位的设计思想.开发工控软件框架的主旨是开发一个通用的、稳定的工控软件框架,以便对不同行业的特殊需求,只需做少许扩充就能正常运行,并具有良好的维护性能.工位模块设计的主旨是开发一个易于扩展新类型工位的结构,实现新类型仪表与工控系统无缝连接.2 工控软件框架设计2.1 工控软件框架设计要求工控软件广泛应用于化工、电力、石油、冶金、机械制造等行业,同时也应用于电信网络管理、楼宇监控、交通道路监控等.由于不同行业、系统对工控软件的需求不尽相同,如果一旦有新的需求就重新开发工控软件,已经完成的程序不能重用,将造成极大的浪费.通常,人们采用模块化设计来实现软件复用,并已取得一定的成效.但是各模块采用何种方式来组建系统,即采用何种框架结构来组合各功能模块,对系统的整体效果关系重大,这也是当前软件研究和开发中的薄弱环节. 第25卷第6期 2004年6月小型微型计算机系统M IN I-M I CRO SY ST EM SV o l.25No.6 J une2004 收稿日期:2002-09-12 作者简介:刘 铭,博士研究生,研究领域为大型通用工业自动化软件及网络通信技术;施 仁,博士生导师,研究领域为自动控制理论及应用,DCS,FC S,CIPS研究与开发;贾宏宇,博士. 功能模块的可复用设计已深入人心,如果软件框架的设计也具有良好的通用性、可复用性,那么针对不同行业需求只需增加相应功能模块就能避免资源的浪费,并易于维护.同时一个好的框架设计是系统安全、稳定、高效运行的有效保证.通常一个工控系统的功能模块包括数据通信、控制算法、报警处理、报表管理、数据库以及各种人机界面等模块.各模块间的关系是相当复杂的,例如数据通信模块获得新数据后,人机界面、报警处理、报表等模块都要刷新其数据,数据库模块负责相应数据的入库工作.同时,在人机界面上如果操作人员要对工位进行的调节、控制,也要通过调用控制模块、数据通信等模块来完成.由此可见各模块间具有紧耦合关系.虽然采用功能模块化设计可以增加复用性,但模块间相互连接的激增又会降低其复用性,使得一个模块似乎不太可能在没有其他模块的支持下工作.同时模块间过多的数据通信、事件处理将增加代码的复杂度,降低运行的稳定性.所以如何处理各模块之间的依赖关系,是设计工控软件框架的首要问题.对工控系统的特点进行分析不难发现,各模块间交换的主要是工位数据和控制命令.如果设计一个工控软件框架来管理这些工位数据和控制命令,将模块间的交互封装在软件框架中,各模块将不再具有紧耦合关系,而转变为工控软件框架与各模块的交互关系.一方面工控软件框架从数据通信、控制算法等模块获得实时数据,并将刷新过的工位数据传送到报警处理、趋势记录、报表管理、数据库及人机界面等模块.另一方面,工控软件框架从人机界面等模块接收操作员下达的控制命令,并负责传送给数据通信、控制算法等模块.因而,可以将各功能模块归纳为两种类型:控制型和监视型.控制模块包括数据通信、控制算法等模块,主要是与工业现场的硬件仪表或者虚拟仪表进行通信,获得实时数据,并执行控制命令.监视模块则是对工位数据的显示、存储,并能获得操作员的操作信息,如报警处理、人机界面、趋势记录、报表管理等模块.于是,如何处理工控软件框架与这两种类型模块的关系是设计可复用工控软件框架的关键.为此,作者采用中介者(M edia to r)和观察者(Observ er)模式来处理工控软件框架与各模块的关系.2.2 基于设计模式的工控软件框架设计如图1所示,首先利用中介者模式来实现工控软件框架对模块间交互关系的封装.中介者模式(M edia tor )由中介者、具体中介者和同事类构成,它利用一个中介对象来封装一系列的对象交互,从而各对象不需要显式的互相引用,使各对象间耦合松散化,而且可以独立地改变它们之间的交互.工控系统的两种基本类型的模块对应同事类:控制类(Co nt rol Subject)和监视类(Show O bserv er ),而工控软件框架图1 工控软件框架结构Fig .1 M edia tor -o bserv er structur e o f fra mewo rk对应中介类:框架(Frame ).此处框架实际上就是一个中介者模式的实例,作为控制类、监视类的中介,充当二者通信的中转中心.当控制类需要与监视类进行通信时,它仅将通信的内容通知给框架,由框架进一步完成与监视类的通信.于是控制模块和监视模块之间将不再具有紧耦合关系,避免了模块之间的相互引用,降低了代码的复杂度,提高了代码的运行效率以及稳定性,同时也有利于功能模块的扩展、替换.其后,使用观察者模式处理同事类与中介类之间的关系.观察者模式(Observ er )由目标、观察者、具体目标和具体观察者构成,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知,并被自动更新.作者根据各功能模块与框架数据通信的内容、要求,将控制模块和框架设计为目标和观察者的关系,监视模块和框架设计为观察者和目标的关系.采用观察者模式的好处在于,目标只需知道它有一系列观察者,每一个都符合抽象的观察类的简单接口,这样二者间的耦合是最小的,于是设计者可以独立地改变目标和观察者.如图2所示,工位数据在控制类、框架和监视类之间流向,是两个观察者模式重合的结果.控制类作为框架的目标,其实时数据发生变化后,它将通知其观察者——框架,刷新其数据.框架作为监视类的目标,其数据更新时,它将负责通知10336期 刘 铭等:基于Desig n Pat terns 的大型工控软件研究与实践其观察者,如人机界面、报表、报警等监视模块,给用户以界面上的提示.而控制命令的流向又体现了中介者与同事类的交互关系.用户通过监视模块下达的控制命令,将统一传送给中介框架,由此中介者统一调度,传送给相应的控制模块.采用中介者和观察者设计模式相结合来设计工控软件框架,实现了各功能模块之间的松耦合关系,同时也实现了工控软件框架与模块之间的耦合关系抽象,提高了框架和模块的可复用性.利用这个工控软件框架,根据不同的行业需求,增添不同的功能模块,便能构成用于不同行业的工控软件.从而在设计中大大减少了人力、物力的浪费,也使软件更易维护、升级.图2 软件框架结构中各对象的协作关系Fig.2 Collabo ra tio ns betw een th e o bjects of f ramew o rk 采用恰当的设计模式进行软件框架设计,处理好模块间的信息交互,是系统安全性、稳定性和实时性的有效保证.同时一个经过实践考验的软件框架的复用将大大减少系统测试、调试的工作.3 工位设计3.1 工位设计要求工位(U nit )是工控软件中的一个重要概念,通常代表工业生产现场中的检测点和控制点,随着虚拟仪器、虚拟工位等概念的引入,在工控软件中工位也可以用于代表某些中间变量,例如实际工位测量值的开方、累积等,或需要保留的控制算法中的变量.一个工控系统通常由不同类型的工位组装而成,如模拟量工位、开关量工位.而不同类型的工位具有不同的工位属性,如模拟量工位属性与开关量工位属性就不相同.如何灵活实现不同类型的工位引用,是可复用工位设计必须解决的首要问题.随着仪表技术的发展和工业现场的需要,会出现更多新类型的仪表,如何实现工位的扩展是工位设计必须解决的另一个问题.针对这两方面的问题,本文在工位设计中采用了工厂方法(Facto ry M ethod )和模板方法(Templa te M ethod ).3.2 基于设计模式的工位设计工位是独立于工控软件框架设计的,工控软件中工位的生成和引用均利用工位模块提供的接口来实现.如图3所示,作者首先使用了工厂方法来实现工位的创建.工厂方法(Facto ry M e tho d)由产品、具体产品、创建器和具体创建器构成,是一种对象创建型模式,它定义了一个用于创建对象的接口,让子类具体完成类的实例化.工位作为产品,抽象的定义了工位对象的基本接口,客户通过它访问工位.模拟量工位(Analo g U nit)和开关量工位(DigitalU nit )作为具体的产品,它们具体实现了工位提供的接口.工位创建器(U nit Cr eato r)抽象的定义了一个参数化工厂方法作为创建器的接口,客户通过它来创建不同类型的工位.模拟量工位创建器(Ana lo g U nitCrea to r )和开关量工位创建器(DigitalU nit Cr eato r )作为具体的创建器,负责创建具体的产品.它们重定义了工厂方法,返回一个相应的模拟量工位或开关量工位实例.其后在工位引用中使用了模板方法.模板方法(T emplate M ethod )由抽象类和具体类构成,是一种代码复用的基本技术,它定义了一个操作中的算法的骨架,而将一些步骤延伸到子类中.图3 工位设计结构Fig .3 Fac tor y -template st ructure o f tag ma nag e module 工位引用是工控软件框架与工位对象之间的信息交流,如得到工位属性的值、设定工位属性的值等.将工位引用的操作设计为工位类的抽象接口,客户可以通过它来访问工位.而其具体实现由具体类型的工位完成,因为不同类型的工位其内部的工位属性的不一致导致了这些接口实现上的不一致.利用参数化工厂方法和模板方法相结合进行工位设计,1034 小 型 微 型 计 算 机 系 统 2004年使得工控软件框架(Fr ame)作为客户通过接口来使用工位创建器、访问工位,从而避免了工控软件框架与工位模块之间的紧耦合,提高了工位模块的可复用性.同时利用统一的接口进行不同类型工位的访问,使得工位模块内部结构更清晰明确,有利于减轻代码的复杂度,提高代码的运行效率,这对于实时性、稳定性要求很高的工控系统是非常重要的.另一方面,采用恰当的设计模式进行工位设计,有利于工位的扩展和维护.由于工位结构中一个具体的工位产品对应一个具体的工位创建器,当有新类型的工位需要扩展时,只需生成相应的新工位子类(N ew U nit)和新工位创建器子类(N ew U nitCreato r),并在其中具体实现工位引用和工位创建的接口,便能在不影响原有工位结构的情况下实现新类型工位的扩展.4 总 结通常,人们使用已有的经验来解决相似的问题是很自然的事情.由有经验的面向对象设计者收集的设计模式是面向对象工控软件设计的有效工具.当这些设计模式合理应用在工控软件设计中,将有助于解决工控软件设计中遇到的难题.本研究室在工控软件设计与开发方面进行了多年的研究,开发过几套大型通用工控软件[10,11],主要侧重于过程控制.在近期承担的大型电力系统监控软件的开发中,由于主要侧重于数据采集与监控,同时有事故追忆、故障录波、操作票等专业需求,与过程控制软件有较大差异.如果该软件的开发从零开始,将需要几十至上百人年的工作量.为最大限度的复用已有的工控软件设计成果,如上文所述,作者采用了设计模式进行电力监控软件设计.经过5个月的时间,一套大型通用电力系统监控软件开发、调试成功,实践证明了设计模式在工控软件设计中的有效性.采用设计模式进行工控软件设计,可使整个软件框架具有清晰的结构、良好的扩展性,易于实现与各功能模块的连接,以及新功能模块的扩展.同时恰当的设计模式在各模块中的应用,使得其数据抽象、继承均表现出好的面向对象特性,灵活性提高.设计模式作为一种良好的设计思想,在整个软件的开发中可以避免各种设计弯路,节约开发时间,提高开发效率.同时,设计模式的使用避免了模块间以及各模块与软件框架之间的紧耦合关系,各功能模块的相互引用大为减少,从而降低了错误发生时产生的“涟漪效应”.与本研究室以前的工控软件相比,系统调试时间大大减少,同时系统运行的稳定性也大有提高.可以看出,使用设计模式将在软件结构的模块化、复用性、坚固性等多方面都有好处,并且只需少量的开销.随着设计模式在软件工程,特别是在面向对象设计中的介入,我们认为这是生产可复用、高品质的工控软件的重要一步.References:1M ichael Duell.Looking beyond s oftw are to u nders tand s oftw are design patterns[C].Int’l puter Softw are and Appli-cations,1999:312-313.2Erich Gamma,R ichard Helm.Design patterns elements of reusable object-oriented s oftw are[M].Addison W esley Pub-lishing Company,1995.3Kent Beck,Jam es O.Coplien,Ind ustrial ex perience with design patterns[C].In t’l Conf.Softw are Engineering,1996:103-114. 4Jun Zhu,Paul J oss man.Application of design patterns for ob-ject-orien ted model ing of pow er s ystem[J].IEEE Tran s.on Pow er System,1999,14(2):532-537.5Gou M as uda,No rihiro Sakamoto.Red esig ning of an existing s oftw are using design patterns[C].In t’l Symp.Principles of Softw are Evolution,2000:165-169.6Kh riss I,Keller R K.Pattern-bas ed refinemen t s ch emas for d e-sign know ledge trans fer[J].Knowledge Bas ed Systems,2000, 13(6):403-415.7M in Z h ang,Keh ong W ang,Im plemen ting Und o/Red o in PDF S tudio Using object-orien ted design pattern[C].Int’l Conf.Tech nology of Ob ject-Oriented Lang uag es and Sys tems,2000: 58-64.8Toyoaki Tomura,Kiyoshi Uehiro.Ob ject-o riented design pattern app roach for m od eling and simulating op en dis tributed control sys tem[C].IEEE Int’l Conf.Robotics&Au tomation,2001: 211-216.9Pontus As trom,Stefan Joh nss on.Peter Nilsson,Application of softw are design patterns of DSP library design[C].IS SS’01, 2001:239-243.10 J ia Hong-yu,Shi Ren.Design th e field bus orien ted g eneral larg e s cale s oftw are for indus try control[J].Information and Control, 2001,30(1):30-35.11 J ia Hong-yum Shi Ren.Research on the reus e technolog y in in-dus try softw are design[J].Information and Control,1999,28(4):316-320.附中文参考文献:10 贾宏宇,施仁.大型通用工控软件设计研究[J].信息与控制, 2001,30(1):30-35.11 贾宏宇,施仁.工控软件设计中的复用技术研究[J].信息与控制, 1999,28(4):316-320.10356期 刘 铭等:基于Desig n Pat terns的大型工控软件研究与实践 。