摘要: 本文通过介绍BACnet标准协议中使用的通信语言三大要素:对象、属性和服务,说明面向对象技术在BACnet标准中的具体实现,并采用面向对象的设计思想对BACnet协议的类库进行开发、设计和类结构的定义。W1WW_P4LCJS_COM-PLC-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
控制系统中的面向对象设计主要分为两部分:面向对象编程和面向对象的协议。协议是控制系统相互之间通信的基础,在控制系统中仅有属于管理层的面向对象编程语言是不够的。面向对象设计必须由面向对象的协议来完善,只有包括现场层的面向对象通信协议才能构成完整的面向对象控制系统。BACnet协议是针对楼字自动化系统设计的,采用了面向对象的技术,用 “对象”、“属性”和“服务”等要素定义信息格式,定义了一种具有属性的对象来表示任意的楼宇系统设备的功能,从而提供了一种标准的表示楼宇自控设备的方式。 WWW.PLCJS.COM——可编程控制器技术门户
WWW_P※LCJS_COM-PLC-)技.术_网
1 可行性研究 WWcW_PLCJS_COM-PLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
1.1面向对象技术 W1WW_P4LCJS_COM-PLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
面向对象技术中最重要的就是 “对象”的概念,“对象”具有一定的属性和方法。一个具体的对象可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性。对于外界而言,并不需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要调用对象所提供的方法来完成特定的功能。 WWW_PL※CJS_COM-PLC-技.术_网
WWW_PL※CJS_COM-PLC-技.术_网
一个面向对象的控制程序由若干相互关联的一组对象组成,并通过对象之间的相互联系完成所有的功能。对象之间的联系方式即是消息激励机制,消息是用来请求对象执行某个处理或回答某些信息的要求。在面向对象系统中,对象之间的联系是通过消息的传递完成的,对象只有接收到消息之后才能做出响应。而对消息进行响应的是对象中的成员函数,即所谓的“方法”,方法是实现消息具体功能的手段。 ——可——编——程——控-制-器-技——术——门——户
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
1.2 BACnet协议 WWW_PL※CJS_COM-PLC-技.术_网
WWW_P※LCJS_CO※M-PLC-技-.术_网
通信协议是楼宇自动化系统(BAS)的重要组成部分。由于功能不同,不同的设备具有不同存储信息的数据结构。为了实现设备间的信息交换,必须定义一种标准的、“网络可见”的信息描述方式。楼宇自动控制网络数据通信协议 (AData Communication Protocol for Building Automation and Control Network,BACnet)采用了面向对象的技术,定义了一组具有属性的对象(Object)来表示任意的楼宇自控设备的功能,从而提供了一种标准的表示楼宇自控设备的方式。BACnet是一个ISO国际协议,定义了包括空调控制系统、消防等楼宇设备控制系统之间的数据通信方式。本协议遵循OSI开放性网络协议,将数据组合成对象在网络之间传播。 P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLC※JS_COM-PmLC-技.术_网
BACnet协议是一个面向对象的协议。在BACnet应用层,通过定义标准的对象和服务,对应用提供了完整的实现手段,同时又可以使得开发商按照不同的应用进行具体的开发,实现了异构BACnet设备的互操作性以及良好的可重用性和扩展性。 P.L.C.技.术.网——可编程控制器技术门户
WW.W_PLC※JS_C,OM-PL,C-技.术_网
1.3 BACnet中的面向对象的要素 P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
——可——编——程——控-制-器-技——术——门——户
工业界长期使用“点(Points)”来表示传感器输入、控制输出或控制值。BACnet采用了面向对象技术。在BACnet协议中定义了一组标准的对象类型,给出了一种抽象的数据结构,作为建立BACnet协议中应用层服务的一种框架。大部分应用层服务设计成对这些标准对象类型的属性进行访问与操作,网络中的每个设备用对象进行描述。因此,对象(Object)、属性(Property)和服务(Service)构成了BACnet要素。 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PL※CJS_COM-PLC-技.术_网
在BACnet中,对象是在网络设备之间传输的一组数据结构,对象的属性就是数据结构中的信息。设备可以从数据结构中读取信息,可以向数据结构写入信息,这些就是对对象属性的操作。BACnet网络中的设备之间的通信,就是设备的应用程序将相应的对象数据结构装入设备的应用层协议数据单元 (APDU)中,按照一定的规范传输给相应的设备。对象数据结构中携带的信息就是对象的属性值,接收设备中的应用程序对这些属性进行操作,从而完成信息通信的目的。 WWW_PLC※JS_COM-PmLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
BACnet定义了一个“对象”的标准集,任何一个实际控制设备均可由不同的标准对象实例集合来表示。其中每个对象都有一个“属性”标准集,对象的属性用于向BACnet互联网上的其它设备描述该对象及其当前状态。正是通过这些属性,该对象才能被其它BACnet设备操作和控制。 WWW_P※LCJS_COM-PLC-)技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
不过值得注意的是,BACnet标准对象只是一些与控制信息和寻址信息有关的“属性(property)”集合,没有定义对这些属性操作的方法(method)。因此BACnet定义的对象与面向对象程序设计语言中定义的对象是不同的概念,前者相当于结构化程序设计语言中的数据结构。 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
在BACnet中,如果说对象和属性提供了通信的共同语言,那么服务则提供了信息传递的手段或方法。通过这些方法,一个BACnet设备可从另一个设备中获取信息,可命令另一设备执行某动作或向一个或多个设备发布某种事件已发生的通知。每个发出的服务请求和返回的服务应答都是一个报文分组,该报文分组通过网络从发送端传输到接收端。BACnet定义了32种服务,划分为5类:报警和事件、文件访问、对象访问、远程设备管理和虚拟终端服务。 WWW_PL※CJS_COM-PLC-技.术_网
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
2 方案设计 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
下面以实现对模拟输入对象当前值属性的查询为例,来实现楼宇自控网络协议。图1表示一个BACnet读属性服务: plcjs.技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
WWcW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
在面向对象方法中,功能是通过与对象的通信获得的。对象被定义为一个封装了数据结构(或属性)和操作的实体。属性是为执行操作而存在于对象之中的数据、信息。消息是对象通信的方式,因而也是获得功能的方式。对象受到发给他的消息后,或者执行一个内部操作(有时成为方法或过程),或者再去调用其他对象的操作,从而完成一定的功能。同样,一个客户端的BACnet用户需要知道BACnet网络中指定DDC中的温度计的当前输入值,并不需要知道温度值的存储方式,只需发出一份读属性服务请求 (Read Property service),即面向对象技术中对对象的操作。该服务报文通过网络发送给指定的BACnet设备,该设备通过解析所接收到的报文,得知该报文为读取其所属的模拟输入对象的当前值属性。此时温度计在BACnet网络中不再是传统控制模式下的一个控制点了,而是BACnet设备所属的一个模拟输入对象。BACnet设备通过访问模拟输入对象的当前值属性,获得此时的室内空气温度为25.0℃。最后,通过封装的报文做出服务应答。 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
plcjs.技.术_网
当脱离服务为true时,当前值属性是可写的,从而丰富了控制的内容。所以采用了面向对象的BACnet协议很容易实现节点间的对等通信,使系统设计大大简化,可靠性大大提高。 WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
2.1对象结构的实现 WWW_PLCJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
模拟输入对象是BACnet标准对象之一,其属性表示一个模拟输入的外部可见一致性代码,代表一种模拟传感器输入。BACnet协议中对于模拟输入对象类型结构形式描述,见图2。 WWW_PL※CJS_COM-PLC-技.术_网
WWW_P※LCJS_CO※M-PLC-技-.术_网
其中,“Object-identifier、Object—name、Object—type、present-value、out—of-service”分别表示模拟对象的对象标识符、对象名称、对象类型、当前值、脱离服务等属性,“[75>”为该属性编号,“BACnet Object Identifier”是属性数据类型。 ——可——编——程——控-制-器-技——术——门——户
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
根据协议中有关模拟输入对象的描述,可以生成一个模拟输入对象的实例:空调控制器中的混合空气温度模拟输入对象。以下是该对象的参数: WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWcW_PLCJS_COM-PLC-技.术_网
Property :Object_Identifier=(Analog lnput,Instance 1) WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)