认识BACnet协议

Posted bossing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识BACnet协议相关的知识,希望对你有一定的参考价值。

一、什么是BACnet?

BACnetBuilding 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连接调制解调器,线路驱动器,或者其他数据通信设备。

以上是关于认识BACnet协议的主要内容,如果未能解决你的问题,请参考以下文章

什么是modbus协议

PLC 数据内存读写 调试软件工具

PLC 数据内存读写 调试软件工具

PLC 数据内存读写 调试软件工具

记一次使用windbg排查内存泄漏的过程

记一次使用windbg排查内存泄漏的过程