BACnet(A Data Communication Protocol for Building Automation and Control Network)是一种为楼宇自动控制网络所制定的数据通信协议,由美国采暖、制冷与空调工程师协会(ASHRAE)资助的标准项目委员会(Standard Project Committee:SPC 135P)于1995 年6 月制定。1995 年12 月成为美国标准,2003年1 月正式成为国际标准(ISO 16484-5),是智能建筑楼宇自控领域中唯一的国际标准。BACnet 标准产生的背景是用户对楼宇自动控制设备互操作性(Interoperability)的广泛要求,即将不同厂家的设备组成一个一致的自控系统。
BACnet 协议体系结构如图4-19 所示,BACnet 标准对ISO/OSI-RM 进行了精简和压缩。其目的是为了解决楼宇自控网络信息通信和互操作的基本问题,在体系结构上可以划分为通信功能和互操作性两个大部分,并且这两大功能部分既相互独立,又相互联系。通信功能由物理层、数据链路层和网络层三个协议层进行定义;互操作功能由应用层单独定义。
图4-19 BACnet 体系结构
1. BACnet 应用层
BACnet的应用层协议要解决3 个问题:① 向应用程序提供通信服务的规范;② 与下层协议进行信息交换的规范;③ 与对等的远程应用层实体交互的规范。BACnet 应用层主要有2 个功能:① 定义楼宇自控设备的信息模型—— BACnet对象模型;② 定义面向应用的通信服务。
应用进程:为了实现某个特定的应用(例如,节点设备向一个远端的温度传感器设备请求当前温度值)所需要的进行信息处理的一组方法。一般来说,这是一组计算机软件应用进程,分为两部分。一部分专门进行信息处理,不涉及通信功能,这部分称为应用程序。另一部分处理BACnet 通信事务,称为应用实体。
BACnet 应用进行模型如图4-20 所示,在应用进程中有一部分位于应用层之外,它们与通信功能无关,这些部分都不属于BACnet 标准的规范范围。我们将应用进程中位于应用层内的部分称为应用实体(Application Entity)。换句话说,一个应用实体是应用进程中与BACnet 通信功能相关的部分。一个应用程序(Application Program)通过应用编程接口API(Application Program Interface)与应用实体进行交互。编程接口不在BACnet 中定义,但是在具体的实现中它总是一个函数、过程或子程序的调用。在图4-20 中,阴影部分是应用进程位于BACnet 应用层中的部分。
图4-20 BACnet 应用进行模型
当应用程序需要同远程的应用进程通信时,它所要进行的操作是通过API访问本地的BACnet 用户元素。应用程序调用API 接口,并且将诸如服务请求接收设备的标识符(或地址)和协议控制信息等作为参数传递给API,而将通信内容作为数据传递给API。API 将参数直接下传到网络层或数据链路层,而将数据组成一个应用层服务原语,通过BACnet 用户元素传递给BACnet 应用层服务元素。从概念上来讲,由应用层服务原语产生的应用层协议数据单元APDU(Application Protocol Data Unit),构成了网络层服务原语的数据部分,并通过网络层服务访问点NSAP(Network Service Access Point)下传到网络层。按照这样的方式,这个请求进一步下传到本地设备协议栈的以下各层,整个过程如图4-21 所示。于是,报文就这样被传送到远程的设备,并在远程设备协议栈中逐级上传,最后指示原语看起来似乎是直接从远程的BACnet 应用层服务元素上传到远程的BACnet 用户元素。同样,任何从远程设备发回的响应,也是以这样的方式回传给请求设备的。
图4-21 BACnet 协议栈及数据流
应用实体通过API 与应用程序除了交换服务原语和服务参数之外,还交换接口控制信息ICI(Interface Control Information)参数。ICI 的具体内容取决于服务原语的类型。应用实体将接收到的ICI 参数下传至下面各层,从而使得各层可以构建自己的PDU。而由应用实体回传给应用程序的ICI 参数,则包含了下面各层从各自PDU 中得到的信息。
通过API 与各种服务原语交换信息的ICI 参数包括:
“目的地址DA(Destination_address)”:将要接收服务原语设备的地址。其格式(如设备名称、网络地址等)只与本地有关。这个地址也可以是多目地址、本地广播地址或全局广播地址类型。
“源地址SA(Source_address)”:发送服务原语的设备的地址。其格式只与本地有关。
“网络优先级NP(Network_priority)”:在6.2.2 节中所描述的一个四级网络优先级参数。
“期待回复数据DER(Data_expecting_reply)”:一个逻辑值参数,用来指明某个服务是否需要一个回复的服务原语。
BACnet 设备(BACnet Device)是指任何一种支持用BACnet 协议进行数字通信的真实的或者虚拟的设备。每一个BACnet 设备必须且只能包含一个设备(Device)对象。每一个BACnet 设备,都由一个NSAP 唯一定位。在NASP 中,包含了一个网络编号和一个MAC 地址。在多数情况下,一个BACnet 设备就是一个物理设备。然而在某些情况下,一个单一的物理设备也可以形成多个“虚拟的”BACnet 设备。
BACnet 基于客户/服务器通信模型定义了有证实的应用层服务。客户方通过具体的服务请求实例向服务器方请求服务,服务器方通过响应请求来为客户方提供服务,这种关系如图4-22 所示。在交互过程中,担当客户角色的BACnet 用户,称为请求方BACnet 用户;担当服务器角色的BACnet 用户,称为响应方BACnet 用户。
图4-22 客户与服务器的关系
有证实应用层服务的具体过程如下:由请求方BACnet 用户发出一个有证实服务请求原语(CONF_SERV.request),形成请求PDU,发送给响应方BACnet用户。当这个请求PDU 到达响应方BACnet 用户时,响应方BACnet 用户则收到一个有证实服务指示原语(CONF_SERV.indication)。同样,由响应方BACnet用户发出的一个有证实服务响应原语(CONF_SERV.response),形成响应PDU回传给请求方BACnet 用户。当响应PDU 到达请求方BACnet 用户时,请求方BACnet 用户则收到一个有证实服务证实原语(CONF_SERV.confirm)。无论是请求方BACnet 用户还是响应方BACnet 用户,在该过程中都进行了PDU 的发送和接收。因此,所谓“发送方BACnet 用户”指的是发起一个PDU 发送的BACnet用户;而“接收方BACnet 用户”指的是接收到PDU 到达指示的BACnet 用户。
在无证实应用层服务中,不存在上述客户/服务器模型、“请求方BACnet 用户”和“响应方BACnet 用户”等概念,只有“发送方BACnet 用户”和“接收方BACnet 用户”,BACnet 标准用它们来定义无证实的应用层服务的服务过程。(www.xing528.com)
2. 网络层
网络层提供将报文直接传递到一个远程的BACnet 设备、广播到一个远程BACnet 网络或者广播到所有的BACnet 网络中的所有BACnet 设备的能力。一个BACnet 设备由一个网络号码和一个MAC 地址唯一确定。网络层的功能就是实现连接两个异类的BACnet 局域网使用不同的数据链路层技术的局域网称为异类网络,例如,以太网、ARCnet 网络和LonWorks 网络等就是异类网络。实现异类网络连接的设备称为“BACnet 路由器”,从协议的观点看,网络层的功能是向应用层提供统一的网络服务平台,屏蔽异类网络的差异。
如图4-23 所示,BACnet 设备互联网络主要由物理网段、网段、网桥、路由器、中继器及联网设备设备构成,其中各名词含义如下:
图4-23 BACnet 互联网络结构图
(其中:B =网桥,RT =路由器,R =中继器,1/2RT =半路由器)
物理网段(Physical Segment):直接连接一些BACnet 设备的一段物理介质。
网段(Segment):多个物理网段通过“中继器”在物理层连接,所形成的网络段。
网络(Network):多个BACnet 网段通过“网桥”互联而成,每个BACnet网络都形成一个单一的MAC 地址域。这些在物理层和数据链路层上连接各个网段的设备,可以利用MAC 地址实现报文的过滤。
互联网络(Internetwork):将使用不同LAN 技术的多个网络,用BACnet“路由器”互联起来,便形成了一个BACnet“互联网络”。在一个BACnet 互联网络中,任意两个节点之间恰好存在着一条报文通路。
当网络层从应用层收到一个N-UNITDATA.request 请求原语后,就用网络层规范所表述的方式发送一个网络层服务数据单元NSDU。当一个网络实体收到从一个对等网络实体发来的NSDU 后,它做如下处理:
(1)通过一个直接连接的网络将NSDU 发送到目的地;
(2)将NSDU 发送到下一个BACnet 路由器后再路由到目的地;
(3)如果NSDU 的地址与它自己的应用层中的某个实体的地址匹配,则向这个实体发送一个N-UNITDATA.indication 原语,通知有一个NSDU 到达。
3. 数据链路层/物理层
BACnet 标准将五种类型的数据链路/物理层技术作为自己所支持的数据链路/物理层技术进行规范,用同一种技术建立起来的通信链路连接的一组计算机设备就称为一个类型的计算机网络。用载波侦听多路访问/冲突检测技术建立的网络称为以太网,用LonTalk 协议技术建立的网络称为LonWork 网络。不同技术所建立的网络在数据传输速率、传输的数据帧格式、设备使用介质的方式等方面都不相同,其特点如表4-12 所示。
表4-12 BACnet 支持的数据链路
MS/TP(Master Slave/Token Passing)协议是唯一的使用EIA 485 信号标准的BACnet 协议。在一个MS/TP 网络中,最多可以连接127 个BACnet 主设备或127 个从设备。Slave Devices 不能够发出开始(Initiate)数据的请求;它们仅能够回复信息给其他设备。它适用于简单、低要求的功能。Master Devices 能够发出开始(Initiate)数据的请求,这些请求使它比“从设备”需要更多的程序和内存容量。所有的ComfortPoint AP 控制器都是MS/TP 主设备。
BACnet 的主从/令牌传递(MS/TP)局域网技术的基础是使用EIA 485 标准。由于EIA 485 标准只是一个物理层标准,不能解决设备访问传输介质的问题,BACnet 定义了主从/令牌传递(MS/TP)协议,提供数据链路层功能。MS/TP网络使用一个令牌来控制设备对网络总线的访问,当主节点掌握令牌时,它可以发送数据帧。凡是收到主节点请求报文的主(从)节点都可以发送响应报文。一个主节点在发送完报文之后,就将令牌传递给下一个主节点。如果主节点有许多报文要发送,当它一次掌握令牌期间最多只能发送Nmax_info_frames 个数据帧,就必须将令牌传递给下一个主节点,其他数据帧只能在它再一次掌握令牌时,才能发送。
为了使两个BACnet 设备能够使用各种点到点通信机制进行通信,BACnet定义了点到点数据链路层通信协议,面向连接的协议,这个协议主要有两大功能:
(1)使两个BACnet 网络层实体建立点到点数据链路连接,可靠地交换BACnet PDU。
(2)使用已建立的物理连接执行BACnet 点到点连接的有序终止。一旦这种连接成功建立之后,两个设备就可以透明地交换BACnet PDU。不论呼叫设备还是被叫设备都可以启动释放连接过程,而只有每个设备都发送了终止请求之后,连接才会终止。对应的物理连接方式有:EIA-232 连接调制解调器、线路驱动器或者其他数据通信设备。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。