认识BACnet协议
一、什么是BACnet?
BACnet,Building Automation and Control networks的简称,即楼宇自动化与控制网络。是用于智能建筑的通信协议。
一般楼宇自控设备从功能上讲分为两部分:一部分专门处理设备的控制功能;另一部分专门处理设备的数据通信功能。而BACnet就是要建立一种统一的数据通信标准,使得设备可以互操作。BACnet协议只是规定了设备之间通信的规则,并不涉及实现细节。
BACnet协议模型为:
(1)所有的网络设备,除基于MS/TP协议的以外,都是完全对等的(peer to peer);
(2)每个设备都是一个“对象”的实体,每个对象用其“属性”描述,并提供了在网络中识别和访问设备的方法;设备相互通信是通过读/写某些设备对象的属性,以及利用协议提供的“服务”完成;
(3)设备的完善性(Sophistication),即其实现服务请求或理解对象类型种类的能力,由设备的“一致性类别”(Conformance Class)所反映。
二、BACnet的体系结构
BACnet建立在包含四个层次的简化分层体系结构上,这四层相当于OSI模型中的物理层、数据链路层、网络层和应用层。
BACnet标准定义了自己的应用层和简单的网络层,对于其数据链路层和物理层,提供了以下五种选择方案:
(1)第一种选择是ISO 8802-2类型1定义的逻辑链路控制(LLC)协议,加上ISO 8802-3介质访问控制(MAC)协议和物理层协议。ISO 8802-2类型1提供了无连接(Connectionless)不确认(Unacknowledged)的服务,ISO 8802-3则是著名的以太网协议的国际标准。
(2)第二种选择是ISO 8802-2类型1定义的逻辑链路控制(LLC)协议,加上ARCNET(ATA/ANSI878.1)。
(3)第三种选择是主从/令牌传递(MS/TP)协议加上EIA-485协议。MS/TP协议是专门针对楼宇自动控制设备设计的,同ISO 8802-2类型1一样,它通过控制EIA-485的物理层,向网络层提供接口。
(4)第四种选择是点对点(PTP)协议加上EIA-232协议,为拨号串行异步通信提供了通信机制。
(5)第五种选择是LonTalk协议。
三、BACnet的协议栈和数据流
由应用层服务原语产生的应用层协议数据单元(APDU),构成了网络层服务原语的数据部分,并通过网络层服务访问点下传到网络层。
同样,这个请求将进一步下传到本地设备协议栈的以下各层。
服务原语:用于描述服务用户和服务提供者之间交互作用的、抽象的、与具体无关的表现方式。服务原语只有4种类型:
- 请求(Request) 用户实体要求服务做某项工作 源(N+1)实体—>源(N)实体
- 指示(Indication) 用户实体被告知某事件发生 目的(N)实体—>目的(N+1)实体
- 响应(Response) 用户实体表示对某事件的响应 目的(N+1)实体—>目的(N)实体
- 确认(Confirm) 用户实体收到关于它的请求的答复 源(N)实体—>源(N+1)实体
PDU:Protocol Data Unit,协议数据单元,是指对等层次之间传递的数据单位。
APDU:Application Protocol Data Unit,应用协议数据单元。
NPDU:Network Protocol Data Unit ,网络协议数据单元。
LPDU:Link Protocol Data Unit,链路协议数据单元。
MPDU:MAC Protocol Data Unit,MAC协议数据单元。
PPDU:Presentation Protocol Data Unit,表示协议数据单元。
四、BACnet应用层
BACnet应用层主要有两个功能:
- 定义楼宇自控设备的信息模型——BACnet对象模型
- 定义面向应用的通信服务
BACnet应用进程模型:
一个应用进程包括:应用程序和应用实体,应用实体位于应用层内,属于通信协议的部分,应用程序不属于协议部分。应用程序和应用实体之间通过API进行通信。
应用层有四种原语,分别为:请求(request)、指示(indication)、响应(response)和证实(confirm)。
BACnet对象模型:
BACnet网络协议使用先进的面向对象技术,通过封装在APDU内的对象数据进行通讯。BACnet拥有28个对象:
序号 | 对象名称 | 应用实例 |
01 | Accumulator | 累加器 |
02 | Analog Input | 模拟输入对象 |
03 | Analog Output | 模拟输出对象 |
04 | Analog Value | 模拟值对象 |
05 | Averaging | 平均器 |
06 | Binary Input | 二进制输入对象 |
07 | Binary Output | 二进制输出对象 |
08 | Binary Value | 二进制值对象 |
09 | Calendar | 日期表对象 |
10 | Command | 命令对象 |
11 | Device | 设备对象 |
12 | Event Enrollment | 事件登录对象 |
13 | Event Log | 事件日志对象 |
14 | File | 文件对象 |
15 | Global Group | 全局组对象 |
16 | Group | 组对象 |
17 | Life Safety Point | 生命安全监测点的信息检测 |
18 | Life Safety Zone | 生面安全区域的信息检测 |
19 | Loop | 控制环对象 |
20 | Multi-State Input | 多态输入对象 |
21 | Multi-State Output | 多态输出对象 |
22 | Multi-State Value | 多态值对象 |
23 | Notification Class | 通告类对象 |
24 | Program | 程序对象 |
25 | Pulse Converter | 脉冲转换器 |
26 | Schedule | 时间安排对象 |
27 | Trend Log | 趋势记录对象 |
28 | Trend Log Multiple | 多趋势记录对象 |
BACnet服务:
BACnet具有35种服务,服务是操作对象的方法。这35种服务分为6类,分别为:报警与事件服务,文件访问服务,对象访问服务,远程设备管理服务、虚拟终端服务和网络安全服务。
其中,对象服务访问包括:
- 创建对象服务
- 删除对象服务
- 读属性服务
- 条件读属性服务
- 读多个属性服务
- 写属性服务
- 写多个属性服务
远程设备管理服务包括:
- 设备通信控制服务
- 有证实专有传输服务
- 无证实专有传输服务
- 重新初始化设备服务
- 有证实文本报文服务
- 无证实文本报文服务
- 时间同步服务
五、BACnet网络层
BACnet网络层的作用是检查网络拓扑结构,决定最佳路由。
- 网络层提供将报文直接传送到一个远程BACnet设备、广播到一个远程BACnet网络、或者广播到所有的BACnet网络中的所有BACnet设备的能力。
- 一个BACnet设备由一个网络号码和一个MAC地址唯一确定。
BACnet互联网络拓扑结构:
物理网段(Physical Segment):直接连接以下BACnet设备的一段物理介质。
网段(Segment):多个物理网段通过“中继器”在物理层连接,所形成的网络段。
网络(Network):多个BACnet网段通过网桥互联而成,每隔BACnet网络都形成一个单一的MAC地址域。这些在物理层和数据链路层上连接各个网段的设备,可以利用MAC地址实现报文的过滤。
互联网络(Internetwork):将使用不同LAN技术的多个网段,用BACnet路由器互联起来,便形成了一个BACnet互联网络。在一个BACnet互联网络中,任意两个节点之间恰好存在着一条报文通路。
六、BACnet数据链路/物理层
BACnet标准将五种类型的数据链路/物理层技术作为自己所支持的数据链路/物理层技术进行规范,形成其协议。
ARCNET局域网:
ARCNET是1977年由Datapoint公司开发的一种安装广泛的局域网(LAN)技术,它采用令牌总线(token-bus)方案来管理LAN上工作站和其他设备之间的共享线路,其中,LAN服务器总是在一条总线上连续循环的发送一个空信息帧。
当有设备要发送报文时,它就在空帧中插入一个“令牌”以及相应的报文。当目标设备或LAN服务器接收到该报文后,就将“令牌”重新设置为0,以便该帧可被其他设备重复使用。这种方案是十分有效的,特别是在网络负荷大的时候,它为网络中的各个设备提供平等使用网络资源的机会。
主从/令牌传递(MS/TP)协议:
BACnet的主从/令牌传递局域网技术的基础时使用EIA-485标准。
由于EIA-485标准只是一个物理层标准,不能解决设备访问传输介质的问题,BACnet定义了主从/令牌(MS/TP)协议,提供数据链路层功能。
MS/TP网络使用一个令牌来控制设备对网络总线的访问:
- 当主节点掌握令牌时,它可以发送数据帧。
- 凡是收到主节点请求报文的主(从)节点都可以发送响应报文。一个主节点在发送完报文之后,就将令牌传递给下一个主节点。
- 如果主节点有许多报文要发送,当它一次掌握令牌期间最多只能发送Nmax_info_iframes个数据帧,就必须将令牌传递给下一个主节点,其他数据帧只能在它再一次掌握令牌时,才能发送。
点到点(PTP)通信协议:
为了使两个BACnet设备能够各种点到点通信机制进行通信,BACnet定义了点到点数据链路层通信协议,面向连接的协议,这个协议的功能是:
- 使两个BACnet网络层实体建立点到点数据链路连接,可靠地交换BACnet PDU。
- 使用已建立地物理连接执行BACnet点到点连接的有序终止。
一旦这种连接成功建立后,两个设备就可以透明地交换BACnet PDU。
无论呼叫设备还是被呼叫设备,都可以启动释放连接过程,而只有每个设备都发送了终止请求后,连接才会终止。
对应地物理连接有:EIA-232连接调制解调器,线路驱动器,或者其他数据通信设备。