BACnet协议概述

1. BACnet协议概述

楼宇自动控制网络数据通信协议BACnet(A Data Communication Protocol for Building Automation and Control Network)由美国供热、制冷与空调工程师协会组织的标准项目委员会135P于1995年6月正式通过制定。标准编号为ANSI/ASHRAE Standard 135-1995 ,同年12月正式成为美国国家标准,并得到欧盟标准委员会的承认,成为欧盟标准草案。2000年1月ISO组织TC205委员会的15个国家(中国、法国、日本、英国、美国等)的代表一致通过决议,将BACnet作为“委员会草案”进行广泛评议,适当修改后列为“国际标准化草案”,成为国际标准。

一般楼宇自控设备从功能上讲分为两部分:一部分专门处理设备的控制功能;另一部分专门处理设备的数据通信功能。而BACnet就是要建立一种统一的数据通信标准,使得设备可以互操作。BACnet协议只是规定了设备之间通信的规则,并不涉及实现细节。

BACnet协议模型为:

(1)所有的网络设备,除基于MS/TP协议的以外,都是完全对等的(peer to peer);

(2)每个设备都是一个“对象”的实体,每个对象用其“属性”描述,并提供了在网络中识别和访问设备的方法;设备相互通信是通过读/写某些设备对象的属性,以及利用协议提供的“服务”完成;

(3)设备的完善性(Sophistication),即其实现服务请求或理解对象类型种类的能力,由设备的“一致性类别”(Conformance Class)所反映。

1.1 BACnet的体系结构

BACnet是一种针对智能建筑的开放性的网络协议,遵循OSI模型体系结构,BACnet体系结构层次图如图1所示。BACnet协议从硬/软件实现、数据传输速率、系统兼容和网络应用等几方面考虑,目前支持五种组合类型的数据链路/物理层规范。其中主从/令牌传递(MS/TP)协议是专门针对楼宇自控设备设计的数据链路规范。BACnet在物理介质上,支持双绞线、同轴电缆和光缆。在拓扑结构上,支持星型和总线拓扑。

图1 BACnet体系结构层次图

BACnet没有严格规定网络拓扑结构,如图2所示。其中:网段(Segment)是多个物理网段通过中继器(R)连接形成的段落区间;网络是多个网段通过网桥(B)连接而成的,每个网络都形成一个MAC地址域;BACnet/Internet网络是将使用不同局域网技术的多个网络用路由器(RT)互联起来形成的网际网。

图2 BACnet网络结构图

在BACnet拓扑中设备之间只存在一条逻辑通路,无需广域网的路由算法;其次,BACnet具有单一的局部地址空间,所以BACnet参照OSI模型制定了简化的网络层协议,向应用层提供不确认无连接的数据单元传送服务。每个BACnet设备都被一个网络号码和一个MAC地址唯一确定。

网络层通过“路由器”实现两个或多个异类BACnet局域网(不同的数链层)的连接,并通过协议报文进行“路由器”的自动配置、路由表维护和拥塞控制。BACnet路由器与每个网络的连接处称为一个“端口”。路由表中包含端口的下列项目:端口所连接网络的MAC地址和网络号;端口可到达网络的网络号列表及与这些网络的连接状态。图2中,“1/2RT”是半路由器,由PTP连接形成一个完整的BACnet路由器,即BACnet网际网将广域网技术向应用层屏蔽。

BACnet应用层即BACnet应用实体,通过API(应用编程接口)为上层应用程序服务,并与对等应用层实体通信。应用实体由两部分组成:用户单元和应用服务单元(ASE)。ASE是一组特定内容的应用服务。而用户单元支持本地API、保存事务处理上下文信息、产生请求ID、记录ID对应的应用服务响应、维护超时重传机制所需的计数器以及将设备行为要求映射为对象。

BACnet应用层提供证实和非证实两种类型的服务。BACnet定义了四种服务原语:请求、指示、响应和证实,它们通过应用层协议数据单元(APDU)传递。由于BACnet建立在无连接的通信模式上,所以OSI模型提供端到端服务的传输层部分简化功能也由应用层实现,分别为:可靠的端到端传输和差错校验;报文分段和流量控制;报文重组和序列控制。

1.2 BACnet的对象、服务和功能组

BACnet采用面向对象技术,借此提供一种表示楼宇自控设备的标准。在BACnet中,对象就是在网络设备之间传输的一组数据结构,网络设备通过读取、修改封装在应用层APDU中的对象数据结构,实现互操作。BACnet目前定义了18个对象,如图3所示,每个对象都必须有三个属性:对象标志符(Object_Identifier)、对象名称(Object_Name)和对象类型(Object_Type)。其中,对象标志符用来唯一标识对象;BACnet设备可以通过广播自身包含的某个对象的对象名称,与包含相关对象的设备建立联系。BACnet协议要求每个设备都要包含“设备对象”,通过对其属性的读取可以让网络获得设备的全部信息。

图3 BACnet对象

在BACnet中,把对象的方法称为服务,对象及其属性提供了对一个楼宇自控设备“网络可见信息”的抽象描述,而服务提供了如何访问和操作这些信息的命令和方法。BACnet设备通过在网络中传递服务请求和服务应答报文实现服务。BACnet定义了35种服务,并将其划分为6个类别:
(1)报警与事件服务(Alarm and Event Services)包含8种服务处理环境状态的变化,提供了BACnet设备预设的请求值改变通告、请求报警或事件状态摘要、发送报警或事件通知、收到报警通知确认等方法;
(2)文件访问服务(File Access Services)包含2种服务,提供读写文件的方法,包括上/下载控制程序和数据库的能力;
(3)对象访问服务(Object Access Services)包含9种服务,提供了读、修改和写属性值以及增删对象的方法;
(4)远程设备管理服务(Remote Device Management Services)包含11种服务,提供对BACnet设备进行维护和故障检测的工具、方法;
(5)虚拟终端服务(Virtual Terminal Services)包含3种服务,提供了一种面向字符的数据双向交换机制,使其他具有专有特性的楼宇自控设备成为一个BACnet虚拟终端并使BACnet网络能对其进行重构;
(6)网络安全服务(Network Security Services)包含2种服务,提供对等实体验证、数据源验证、操作者验证和数据加密等功能。

BACnet功能组规定了实现特定控制功能所需的对象和服务的组合。BACnet已定义了13个功能组,包括时钟功能组、事件响应功能组、文件功能组、虚拟终端功能组、设备通信功能组等。

1.3 BACnet设备级别和设备等级说明

在实际的楼宇自动化系统中,没有必要也不可能所有的设备都支持、包含上述所有的对象和服务。因此,BACnet定义了6个一致性类别(设备级别)。一致性类别的分级编号为1~6,最低级别是类别1。每个类别都规定了设备要实现的最小服务子集,且包含低级别的所有服务。

为了帮助用户和工程人员确定不同BACnet设备之间的互操作性,需要厂商为每个设备提供标准格式文件以标识设备中己实现的BACnet标准的内容,即文件需包括设备符合BACnet等级的说明。这个文件就是PICS(Proto Implementation Conformance Statement),它包括:
(1)标识厂商和描述设备的基本信息;
(2)设备符合BACnet的级别;
(3)设备所支持的功能组;
(4)设备所支持的基于标准或专有的服务,设备启动或响应服务请求的能力;
(5)设备所支持的基于标准或专有的对象类型及其属性描述;
(6)设备支持的数据链路技术;
(7)设备支持的分段请求和响应。

2. BACnet的互联网扩展

目前,BACnet标准使用两种技术实现与Internet的互联。第一种技术附件H中称之为“隧道”技术,并将其设备称之为分组封装/拆装设备,简称PAD。其作用就像一个网关/路由器,这在图2中两个半路由器连接广域网形成一个完全的BACnet路由器有所体现。第二种技术附件J中称之为BACnet/IP,设备直接封装IP帧/包在BACnet网络和Internet上传输。

PAD将BACnet报文数据封装在IP协议数据包内传输,在目的BACnet网络解封。因此每个连接Internet的BACnet网络都要配置PAD网关/路由器。它可以是一个单独的设备,也可以是某种楼宇控制设备功能的一部分。

ASHPAE于1999年1月正式发布附件并成为美国国家标准。它规范了支持TCP/IP的设备组建BACnet网络的技术,并称之为BACnet/IP网络,简称B/IP,是一个或多个IP子网组成的集合,整体具有单独的BACnet网络号。BACnet/IP网络报文在网络层是IP包,在传输层是UDP数据报,从而实现与Internet的TCP/IP协议的融合。