- 1 -
BACnet协议应用层的分析与研究
罗颖
武汉理工大学信息工程学院,武汉(430070)
摘 要:BACnet 协议是一个用于楼宇自动控制的网络数据通信协议,其中的应用层是最复
杂、最丰富,也是最能代表 BACnet特点的一层。本文依次分析了 BACnet应用层中的对象
与服务,服务状态机和编/解码过程,为 BACnet协议的实现提供了基础和前提。
关键词:BACnet协议,应用层,状态机,编/解码
中图分类号:TP393 文献标识码:A
0. 引言
BACnet 协议(A Data Communication Protocol for Building Automation and Control
Network)是由美国 ASHRAEA(美国供热、制冷与空调工程师协会)于 1995年 6月制定发
布的楼宇自控网络数据通讯协议,并在 2003年 1月 20日被 ISO正式采纳为国际标准(ISO
16484-5)。BACnet 协议是一个开放的通讯协议,不以赢利为目的,任何人都可以参与讨
论,提出建议,并可以开发出相关产品。正是基于这种开放的特性,BACnet 得到了全球所
有主要楼宇设备厂商的支持,为楼宇自控系统提供了多种选择,最终为业主和物业管理降低
了成本和运行费用。
1. BACnet协议体系结构
BACnet协议的作用是将各个厂商的楼宇自控设备集成为一个高效、统一和具有竞争力
的自控网络系统。因此,作为网络,BACnet 标准有自己的网络体系结构。BACnet 建立在
包含四个层次的简化分层体系结构上,这四层相当于 OSI 模型中的物理层、数据链路层、
网络层和应用层。BACnet标准定义了自己的应用层和简单的网络层,对于其数据链路层和
物理层,提供了五种选择方案[1],如图 1所示。
图 1 BACnet体系结构和 OSI-RM的参照图
BACnet 应用层协议是 BACnet 中最为核心的内容,最复杂的一层,它涵盖了开放系统
互联参考模型(OSI)中传输层、表示层和应用层的功能。同时 BACnet应用层也是 BACnet
应用软件的基础,它通过各种接口,提供应用软件与物理设备之间,或各种应用软件之间透
- 2 -
明的通信服务。
2. 应用层的对象与服务
BACnet 协议是面向对象的协议,对象和服务也正是 BACnet 协议中最具创新性和优势
的两个基本要素,在 BACnet 应用层中,网络中的设备将抽象成对象(object),每个对象
又用一些属性(property)来描述,这些属性表示了设备的硬件、软件及操作的各个方面。
通过对对象属性的修改即可实现对设备的操作,而不需要了解设备的内部情况。目前 BACnet
已从最初的 18个对象增加到现在的 30个对象(包括 2006年 12月增加的 7个门禁对象)。
协议服务是对网络通信功能进行抽象描述的术语,具有一般性。协议服务将通信网络模
型化为“服务用户”和“服务提供者”两大部分,并规定由一系列“服务原语组成”。在 BACnet
应用层提供了一系列的服务,这些服务定义了访问和操作设备中 BACnet 对象的命令。
BACnet 应用层一共定义了 6 个类别 35 个标准的服务。这六个类别分别是报警与事件服务
(Alarm and event Services),文件访问服务(File Access Services),对象访问服务(Object
Access Services),远程设备管理服务(Remote Device Management Service),虚拟终端服务
(Virtual Terminal Services)及网络安全服务(Network Security)[2]。
3. 应用层的状态机
BACnet标准定义了两类服务:证实服务和非证实服务。
非证实应用层服务是一种不受保证的报文通信机制,主要用于信息广播和信息探询,时
序较为简单。发送方和接收方之间不需要维持状态同步关系。
有证实应用层服务提供可靠的传输,是 BACnet标准中最为常见的服务类型。一个证实
服务有请求、指示、响应和证实四个服务原语组成。在这种模式下,客户端和服务器端采用
一问一答的会话方式,客户端每发送一个有证实请求报文都要判断该报文是否被服务器端收
到,以及服务器端对该请求的处理结果,在整个会话过程中,客户端和服务器端之间需要进
行同步,以使会话能够正常进行。为了使状态保持同步,BACnet协议规定客户端在发送请
求报文时应创建客户状态机(ClientTSM),服务器端在收到有证实请求报文时应创建服务
器状态机(ServerTSM)[3]。BACnet应用层状态机如图 2,3所示[1]。由图可知,一个客户状
态机有空闲、等待证实、分段请求和分段证实 4种状态,一个服务器状态机有空闲、分段请
求、分段响应和等待响应 4种状态。
- 3 -
PD
U
PD
U
PD
U PD
U
PD
U
PD
U
PD
U
PDU
PDU
PDU
PD
U
PD
U
图 2 客户状态机状态变迁图
图 3 服务器状态机状态变迁图
应用层客户状态机和服务器状态机,保证了 BACnet服务报文端到端可靠传输,实现了
BACnet 服务报文分段和分发的功能。应用层状态机加上 BACnet 有证实请求服务和无证实
请求服务配合,就形成了 BACnet自己的传输层。
4. 应用层编/解码
由于在 BACnet体系结构,不包含表示层,从而使得一部分表示层的功能必须由应用层
来完成,在应用层中规定了 BACnet 通信设备一致遵守的编码规则,并按照此编码方案对
- 4 -
BACnet对象和服务原语进行编码(即实现 OSI模型中表示层的功能)。同其他网络协议一
样,BACnet 协议采用 作为表述服务数据内容的方法,这种语法提供了丰富的数据
结构和灵活的扩展机制,并有着较好的可读性。
BACnet协议数据单元一般由大量深层嵌套的结构化数据记录构成,采取将数据结构和
服务原语封装成一个个类,然后层层调用的方法可以达到简化编码的目的[4]。编/解码流程
如图 4所示:
图 4 协议数据单元编/解码流程
5. 结束语
BACnet 应用层是 BACnet 协议中地位最重要、内容最丰富的一层。通过对 BACnet 应
用层的分析与研究,可以充分了解 BACnet 协议的精髓所在,为我们更好的学习和使用
BACnet协议打下良好的基础。
参考文献
[1] 董春桥.智能楼宇 BACnet原理与应用[M].北京:电子工业出版社, 2003.
[2]Stand 135-2001, BACnet-A Data Communication Protocol for Building Automation and Control Networks[S].
[3] 许毅平,朱振华,周曼丽.BACnet应用层状态机在线测试研究[J].计算机科学,2006,6(33):76-78.
[4] 周亚军,许毅平,周曼丽.BACnet协议应用层编解码实现[J].船舶电子工程,2004,2(24):34-37.
- 5 -
Analysis and Study of BACnet Application Layer
Luo Ying
The School of Information Engineering,Wuhan University of Technology,Wuhan (430070)
Abstract
BACnet protocol is an openly data communication protocol for building automation and control
networks, and BACnet Application layer is not only the most complex one among the four layers of
BACnet system, but also it best represents the idea and characteristic of design. This paper in turn
analyses object and service of BACnet Application layer, Transaction State Machine, and process of
encode/decode to provide basis and precondition of implementation of BACnet protocol.
Keywords: BACnet protocol,BACnet Application layer,Transaction State Machine (TSM),
Encode/Decode
作者简介:罗颖(1982-),女,湖北武汉人,硕士研究生。主要研究方向:嵌入式系统研
究与开发和 BACnet智能楼宇控制。