面向对象设计在楼宇控制系统中的应用

时间:2015-08-20 10:09 来源:发表吧 作者:发表吧编辑 点击:
  【摘要】介绍了面向对象编程如何提高程序的可靠性、提供更大的灵活性和减少编制费用,进而介绍了完整的面向对象设计还包括构成控制系统通讯基础的面向对象协议。BACnet协议将每个控制子单元归纳为对象形式,简化了设备之间的通讯和操作。
  【关键词】面向对象设计,控制系统,BACnet,协议
  1简介
  自20世纪80年代以来,面向对象的方法已广泛应用于计算机及其相关领域,它不仅应用于编程阶段,而且应用在系统设计和系统分析上。面向对利用设计在控制系统中的应用减少了控制系统的费用、提高了系统的易用性、加强了系统的可维护性,因此成为控制系统的发展方向。控制系统中的面向对象设计主要分为两部分:
  ①面向对象编程
  传统的过程化编程语言(比如BASIC,C)由于不具备对象的特点,编制程序时得一行一行地编制,因此只有专业人员才能轻松地应用这些工具[1]。但即使这些专业人员也难免在编程过程中产生错误,而这对于控制系统可能是灾难性的。由于控制系统控制的是实际设备,任何疏忽均可能会使设备出现故障甚至报废,从而对业主造成巨大的损失。
  面向对象编程实现了编程的简单化和可视化,从而大大减少编程人员的工作量。同时对象中的成员及函数均由专业人员反复测试和检验过,出错的可能性也因此显著降低。相对于传统的编程语言,缺乏编程背景的建筑设备工程师可以熟练运用"对象"来完成他所需的控制任务,而不需软件人员的帮助。
  ②面向对象的协议
  协议是控制系统相互之间通讯的基础,面向对象设计必须由面向对象的协议来完善。传统的集散式控制系统(DCS)主要由模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)构成控制系统的各个通道,它们之间彼此相互独立。DCS的这种结构便于工程人员根据工程的特点来任意组合控制系统通道的组成,但通道之间独立的数据造成的大量冗余数据和信息的盲目性使数据的解释变得非常复杂,很难发现其中有用的数据。面向对象的底层协议将数据的解释、分类和判断由前期设计人员完成,使无用的数据变成有用的信息,大大方便了工程人员的应用。
  面向对象技术若要在控制系统中真正应用,必须在这两个层次完成对象化改造。缺乏其中的任何一环,整个面向对象系统均是不完整的。
  2面向对象编程
  2.1控制语言中的对象
  随着面向对象语言C++的流行,面向对象编程已广泛被人们所认知。但由于种种原因,控制系统的编程语言多数是逐行编制的非面向对象语言,面向对象语言还较少应用。众所周知,面向对象技术是建立在"对象"和"类"的基础上的,因此对于它们应有一个准确的定义。对象的定义为"问题域或者其实现中一些东西的抽象,它反映系统为之保存信息和(或)与它交互的能力。它是一些属性及其专用服务的一个封装体"[2]。而类的定义为"一个或多个对象的描述,可用一组属性和服务的形式来描述"[1]。对于控制系统中的面向对象语言,"对象"应有如下特点:
  ①独立性
  一个对象是独立存在的模块,各对象彼此之间依赖性很小。系统可由各自独立的对象组成,而不必考虑彼此之间的干扰。
  ②连接性
  一个孤立的对象只能完成很少的一部分功能,只有将对象有机地结合起来才能发挥它的作用。面向对象系统通过消息激发机制使对象相互作用、相互联系,构成一个联系紧密的整体。
  ③易维护性
  一个对象的内部功能与外界环境没有任何的固有联系,因此对一个对象的维护、发行不会影响到其它对象和外界程序的功能。
  在对象的独立性上,控制语言中应分离对象内部的运算变量与实际的操作变量。例如集散式控制系统(DCS)中直接操作设备的是4~20mA/0~10V的模拟量输出或开关量输出,而现场总线控制系统(FCS)直接操作的是阀门、电机等智能控制器。控制语言中的变量若直接是AO,DO或特定的阀门、电机等,虽然程序看起来比较直观,但它丧失了通用性和对象封装的特点。当系统中的控制程序移植到具有相同特点的另一个系统中时,用户就需将程序中的每一个变量变更以适应新的系统,这样做不仅费时而且极容易出错。因此需要将程序中的运算变量和实际操作变量分离,使对象的独立性和系统的可操作性统一起来。
  控制系统中的现场控制模块通常程序容量和计算速度均远低于计算机的相应性能,因此硬件上的限制使控制语言尽量减少类的复杂过程的应用。同时类中的成员函数也应尽量减少,构造函数和析构函数均由赋值表达式完成。简言之,控制语言中的类由两部分组成:
  变量的声明表;②对变量进行计算和操作的方法。
  控制语言中的类定义为:
  类名称:
  类变量声明表:
  变量类型变量1
  …
  变量类型变量n
  类代码:
  方法1
  …
  方法m
  类描述结束
  2.2消息的发送和接收
  一个面向对象的控制程序由若干相互关联的一组对象组成,并通过对象之间的相互联系完成所有的功能。对象之间的联系方式即是消息激励机制,消息是"用来请求对象执行某个处理或回答某些信息的要求"[3]。在面向对象系统中,对象之间的联系是通过消息的传递完成的,对象只有接收到消息之后才能做出响应。而对消息进行响应的是对象中的成员函数即所谓的"方法",方法是实现消息具体功能的手段。
  消息具有如下几个性质:
  ①同一对象可以接收不同形式的多个消息,产生不同响应。
  ②一条消息可以发送给不同的对象,消息的解释完全由接收对象完成。
  ③对象对消息的响应是不必须的。对象既可以对消息作出响应,也可以不返回任何的回答信息。
  根据消息表,控制语言将包括设备、时钟和数据交换等系统事件发送给能够响应这些事件的对象。设备事件是控制系统中的实际设备的状态变化等设备信息,控制系统将其通知相应的操作对象。时钟事件用于满足系统对时间控制的要求,定时器时钟在时间条件具备的条件下向对象发送"时间已到"的信息,对象根据此信息按固定时间步长或绝对时间操作。
  由于控制程序要兼顾系统中的所有设备,因此在程序中不能存在无限循环等待某一外界变量变化的情况。若对系统"死机"的现象。当一个对象需要向另外一个对象发送数据的时候便产生一个数据交换消息以激励该对象,被激励对象据此接收被发送的数据。数据交换的消息激励机制同时可用于对象根据内部的某些条件来触发自己本身。
  在控制系统中事件的产生是没有规律的,某一时刻可能会同时出现多个消息。而哪个消息应首先得到处理、哪个最后处理就需要控制系统对消息进行管理。消息管理通常采用队列方式即按消息产生的时间序列来排队,先来的先处理后来的后处理。若消息产生的时间恰好相同,则按消息的等级即设备、时间、数据通讯的顺序来排列。设备消息对应的是实际现场设备,消息的产生说明现场设备出现了变化,因此控制系统应首先作出响应。
  一个对象可能对多个触发消息响应,而每个消息必然需要一个成员函数对它响应,这种成员函数即所谓的"方法"。将系统事件映射到对象时所使用的手段称为"消息表"。面向对象控制语言出于简便的原则将消息映射和对应的方法按照统一的格式来书写。在消息表中预定义了系统事件所映射到的方法,当消息触发该对象后寻找对应这个消息的方法名称,并据此执行相应的方法。
  控制语言中一个完整的对象应包括对象名称、消息表、对象变量声明和数据交换表和对象的实体。对象变量声明和数据交换表将系统内的变量声明并与外界设备数据进行交换。当消息触发对象时,表中的系统设备状态和数据均映射到相应的变量上。对象的整体构造为:
  对象名称:
  消息表:
  方法名称1(触发条件1)
  …
  方法名称k(触发条件k)
  对象变量声明和数据交换表:
  变量类型变量1=系统设备1
  …
  变量类型变量n=系统设备n
  对象的实体:
  方法名称1
  方法的源代码1
  方法名称2:
  方法的源代码
  …
  结束

  (www.fabiaoba.com),是一个专门从事期刊推广、论文刊登的网站。
  本站提供如何发表论文,寻求论文刊登代理,快速发表论文,发表论文格式指导等解决方案:省级论文刊登/国家级论文刊登/CSSCI核心/医学论文发表/职称论文发表。

 投稿邮箱:fabiaoba365@126.com
 在线咨询:论文发表275774677论文发表1003180928
 在线咨询:论文发表610071587论文发表1003160816
 联系电话:18796993035

联系方式
李老师QQ:发表吧客服610071587 陈老师QQ:发表吧客服275774677 刘老师QQ:发表吧客服1003160816 张老师QQ:发表吧客服1003180928 联系电话:18796993035 投稿邮箱:fabiaoba365@126.com
期刊鉴别
  • 刊物名称:
  • 检索网站:
热门期刊
发表吧友情提醒

近来发现有些作者论文投稿存在大量剽窃、抄袭行为,“发表吧”对此类存在大量剽窃、抄袭的论文已经停止编辑、推荐。同时我们也提醒您,当您向“发表吧”投稿时请您一定要保证论文的原创性、唯一性,这既是对您自己负责,更是对他人的尊敬。

此类投稿的论文如果发表之后,对您今后的人生和事业将造成很大的麻烦,后果不堪设想,请您一定要慎重,三思而后行。

如因版权问题引起争议或任何其他原因,“发表吧”不承担任何法律责任,侵权法律责任概由剽窃、抄袭者本人承担。

 
QQ在线咨询
论文刊登热线:
187-9699-3035
微信号咨询:
fabiaoba-com