面向对象设计在楼宇控制系统中的应用(2)
作者:佚名; 更新时间:2014-12-05
数对它响应,这种成员函数即所谓的"方法"。将系统事件映射到对象时所使用的手段称为"消息表"。面向对象控制语言出于简便的原则将消息映射和对应的方法按照统一的格式来书写。在消息表中预定义了系统事件所映射到的方法,当消息触发该对象后寻找对应这个消息的方法名称,并据此执行相应的方法。
  控制语言中一个完整的对象应包括对象名称、消息表、对象变量声明和数据交换表和对象的实体。对象变量声明和数据交换表将系统内的变量声明并与外界设备数据进行交换。当消息触发对象时,表中的系统设备状态和数据均映射到相应的变量上。对象的整体构造为:
  对象名称:
  消息表:
  方法名称1(触发条件1)
  …
  方法名称k(触发条件k)
  对象变量声明和数据交换表:
  变量类型 变量1=系统设备1
  …
  变量类型 变量n=系统设备n
  对象的实体:
  方法名称1
  方法的源代码1
  方法名称2:
  方法的源代码
  …
  结束

  为了简单地说明对象在楼宇控制系统中的实际应用,以最常用的PID算法为例来构成一个PID对象。图1所示为PID算法调节 调节执行器v使受控对象的温度t达到温度设定值tset。对于这个调节算法,一个简单的对象就可以将其概括。
   

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


                         图1 PID系统调节系统

  离散PID算法是周期性运算,因此它的触发消息为时间周期。PID算法与外界存在3个数据的交换,它们是温度设定值、温度测量值和执行器。完成一个PID对象只需规定时间周期,同时将映射到这3个数据的对象内部变量与实际设备相对应。这是一个非常简单的过程,一个不精通PID算法的人可以熟练地操作PID算法。简单的PID算法只是一个例子,而对象的实际应用在复杂的算法上。通常工程人员需要花很多时间去理解复杂的算法,如自适应算法等等。而算法的对象化省去了这些麻烦,节约了工程人员的时间和精力。
  由于对象对不同的消息作出不同的响应,因此可以在PID对象中加上对故障的处理等以丰富PID算法的应用。下面例子中对温度超限的信号进行了处理。当温度超限后,对象直接执行故障处理的程序,不再进行PID运算。用户同时可以增加其它的方法来处理不同的情况,从而大大提高了对象的灵活性。
  PID算法:
  消息表:
  PID计算(间隔时间10s)
  故障处理(温度超限报警信号)
  对象变量声明和数据交换表:
  tset=温度设定值
  t=温度测量值
  v=执行器
  对象的实体
  PID计算
  PID计算源代码
  故障处理:
  故障处理源代码
  结束

3 面向对象的协议

  在控制系统中仅有属于管理层的面向对象编程语言是不够的,包括现场层的面向对象通讯协议才构成完整的面向对象控制系统。面向对象设计的初衷是将编程过程大大的简化,而传统的面向点的控制系统只会使编程人员的负担增加。例如一个AI和两个DO组成的对阀门的控制,其中AI测量阀开门度、两个DO分别是阀门电机的正反转,在控制阀门时若AI测量值小于阀门设定值则正转DO输出信号开大阀门,反之关小阀门。这些简单的功能在传统的面向点的控制系统中均需要编程人员来编写,增加了系统的设计费用和调试成本。
  面向对象的BACnet协议是用来帮助系统中所有设备相互理解的"共同语言"。出于统一楼宇控制协议的目的,ASHRAE于1995年公布了BACnet协议[4]。BACnet协议定义了包括空调控制系统、消防等楼宇设备控制系统之间的数据通讯协议。它遵循OSI开放性网络协议,将数据组合成对象在网络之间传播。同时由于楼宇控制网络是网络,它只保留了物理层、数据链接层、网络层和应用层。它们的构成见图2。
     

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


                      图2 BACnet的结构
  
  BACnet协议没有在具体规定物理层和数据链接层的形式,它可以建立在多种不同的协议之上。图2所示的第1,2种选择是建立在IEEE 802局域网标准上,它将数据链接层又细分为逻辑链路控制子层(LLC)和介质存取控制子层(MAC),其中逻辑链路控制子层主要提供寻址、排序、差错控制等功能,介质存取控制子层提供传输介质和访问控制方式等功能。图中ISO 8802-2(IEEE 802.2)是逻辑连路控制子层,ISO 8802-3(IEEE 802.3)是介质存取控制子层,具体方法为冲突检测的载波侦听多路访问(CSMA/CD)。第3种选择在数据链接层上为主从/令牌方式,物理层则采用了主从结构的RS-485标准,RS-485标准允许最多并联32台驱动器和32台接受器,因此在多点互连时非常方便。第4种选择是点对点协议,相应的物理层为RS-232标准。第5种选择是Echelon公司的LonTalk协议。BACnet的网络层的目的是将不同的网络连接起来,不管是由何种物理层和数据链接层组成的。例如建立一个BACnet路由器就可以将IEEE 802.3和ARCNET构成的不同网络组织起来。
  BACnet之所以没有规定物理层和数据链接层的具体协议,是希望BACnet能应用在多种网络基础上。BACnet协议的真正实质是在应用层定义了开放性的设备对象,并因此成为面向对象的协议。BACnet几乎涵盖了楼宇控制中所有可能的情况,它定义了设备对象、时间表对象、程序对象、文件对象等等,同时还提供了管理和操作对象的服务。
  BACnet目前定义了18种对象,它们分别是模拟量输入、模拟量输出、模拟量值、数字量输入、数字量输出、数字量值、设备、多态量输入、多态量输出、命令、时间表、时序表、事件登记、文件、环、组、通知类和程序对象。BACnet为这些对象定义了具体的数据结构和属性,属性代表了设备中的信息,系统可通过属性对设备进行读取或写入信息。在这18个对象中,输入输出对象共6个,它们代表了所有可能的输入输出类型。多态量输入输出对象2个,它们表示对象所在BACnet设备中运算程序的结果和物理输出。命令对象1个,它向一组对象的属性写入一组值。时间表对象2个,它们用于表示周期性的时间或日历。事件登记对象1个,它记录了管理事件所要求的信息。文件对象管理对文件的访问和读写。组对象将相似的设备定义为一组,使操作更简便。环对象为反馈控制对象。通知类对象包括事件通知所需的信息。程序对象将运行程序作为一个对象。


  表1以数字量输入为便说明BACnet是如何定义对象的。
  表中各项为数字量输入对象的属性。对象ID是代表对象的一个数字,对象名称和对象类型顾名思义是对象的名字和对象的类型。设备类型是一个描述所接设备的字符串,而设备状态和事件状态均代表设备正常与否。服务状态属性代表实际输入值和对象中的测量值是否一致。当它为真时实际输入值和测量值无关,用户可以随意更改而不用考虑实际的输入值,这为调试程序带来了极大的方便。极性属性代表对象的极性,当极性为正时对象中的测量值与实际输入值相同,极性为负时二者相反。例如实际输入值为"ON",若极性为负时对象中的值为"OFF"。"开"、"关"状态描述说明了对象对开或关状态的解释,例如"关"状态描述可以写为"风机1关"。"最近状态变换时间"属性是数字量从计数器复位后的状态变换次数,而状态变换计数器复位时间属性即记录了上次复位的时间。"开"状态复位时间和经历时间属性分别记录了复位的时间和复位后"开"状态的时间(s)总和。剩下的属性描述了对报警信息的操作,这里就不一一详述。
  
  表1 数字量输入对象

  属性名称     数据类型

属性特征

  对象ID   BACnet对象ID

只读

  对象名称   字符串

只读

  对象类型   BACnet对象类型

只读

  测量值   BACnetBinaryPV

只读

  描述   字符串

可选

  设备类型   字符串

可选

  设备状态   BACnetStatusFlags

只读

  事件状态   BACnetEventState

只读

  可靠性   BACnetReliability

可选

  服务状态   布尔量

只读

  极性   BACnetPolarity

只读

  "关"状态描述   字符串

可选

  "开"状态描述   字符串

可选

  最近状态变化时间   BACnetDateTime

可选

  状态变换计数器   无符号整型

可选

  状态变换计数器复位时间   BACnetDateTime

可选

  "开"状态经历时间   32位无符号整型

可选

  "开"状态复位时间   BACnetDateTime

可选

  延迟时间   无符号整型

可选

  告知级别   无符号整型

可选

  报警值   BACnetBinaryPV

可选

  事件使能   BACnetEventTransitionBits

可选

  应答   BACnetEventTransitionBits

可选

  告知类型   BACnetNotifyType

可选

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com