认识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连接调制解调器,线路驱动器,或者其他数据通信设备。
认识BACnet协议的更多相关文章
- BA-协议-BACnet 协议优势简析
BACnet - Building Automation and Control Network 的简称,为楼宇自控网络制定 的网络和通讯协议 .由美国暖通空调工程师协会主导制定的开放的楼宇自控通讯标 ...
- Bacnet协议IP采集开发 总结
一.开发准备 a.模拟器 VTS和BACnetDeviceSimulator b.主站 BACnetScan c.参考文档 http://wenku.baidu.com/view/3052 ...
- BACnet开发资料与调试工具
一.开发资料 1.认识BACnet协议 2.BACnet网络讲义: 链接:https://pan.baidu.com/s/1A6OOUxvJe1zIYbockqTEsQ提取码:wz49 二.调试工具 ...
- BACnet IP转OPC UA网关
BACnet是楼宇自动化和控制网络数据通信协议的缩写.它是为楼宇自动化网络开发的数据通信协议 根据1999年底互联网上楼宇自动化网络的信息,全球已有数百家国际知名制造商支持BACnet,包括楼宇自 ...
- Modbus转BACnet IP网关
BACnet是楼宇自动化和控制网络数据通信协议的缩写.它是为楼宇自动化网络开发的数据通信协议 根据1999年底互联网上楼宇自动化网络的信息,全球已有数百家国际知名制造商支持BACnet,包括楼宇自 ...
- BA--关于江森的学习笔记
机房功率密度:“每机架”功耗 数据中心效率:平均 PUE 2.5,百度是1.36,苹果是1.06 绿色数据中心:PUE<1.58 机房环境:空气质量,配电,UPS,空气处理系统,发电机,江森OD ...
- BA-BACnet对象
BACNET协议有多少个对象呢,拿出西门子教程中的看看一下,居然有48个,其中的大部分都没有用到:
- 物联网基础组件IoTClient开发系列
系列目录 IoTClient开发1 - 你也可以写个聊天程序 IoTClient开发2 - 你也可以写个服务器 IoTClient开发3 - ModBusTcp协议客户端实现 IoTClient开发4 ...
- 记一次使用windbg排查内存泄漏的过程
一.背景 近期有一个项目在运行当中出现一些问题,程序顺利启动,但是观察一阵子后发现内存使用总量在很缓慢地升高, 虽然偶尔还会往下降一些,但是总体还是不断上升:内存运行6个小时候从33M上升到80M: ...
随机推荐
- POJ-3041 Asteroids,二分匹配解决棋盘问题。
Asteroids Time Limit: 1000MS Memory Limit: 65536K Description Bessie wants to navigate her s ...
- Github上600多个iOS开源项目分类及介绍
将Github上600多个iOS开源项目进行分类并且有相应介绍,小伙伴们快来看呀 地址:http://github.ibireme.com/github/list/ios/
- 使用JavaMail通过QQ/126服务器服务发送邮件
https://blog.csdn.net/yidragon88xx/article/details/53230310
- csu - 1536: Bit String Reordering (模拟)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1536 不知道为何怎么写都写不对. 这题可以模拟. 虽然题目保证一定可以从原串变成目标串,但是不一定 ...
- KMP算法 C#实现 字符串查找简单实现
KMP算法 的C#实现,初级版本 static void Main(string[] args) { #region 随机字符 StringBuilder sb = new StringBuilder ...
- Servlet开发(3)
Servlet开发 Servlet过滤器: 主要是对访问主页的用户进行过滤,通过登录系统进入的用户可以看到主页内容,在session中存在currentuser. 可以对此进行判断: package ...
- Ubuntu系统备份工具大全(官方整理推荐)
其实官方在系统备份这块已经有Wiki整理和收集各类实用的工具.以下是翻译自官方Wiki的部分文档: 备份工具 wiki文档实用程序 工具 界面 格式类型 Raw/File 支持 远程 增量 差异 自 ...
- Servlet的Cookies处理
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/cookies-handling.html: Cookies是存储在客户端计算机上的文本文件,用于 ...
- Utuntu下Xshell使用+vi使用
记得上次Utuntu下Xshell环境没有搭建成功,这个又试试! 按照以前的方法测试Utuntu的ip;在本机安装Xshell 然后出现xshell连接虚拟机时,提示SSH服务器拒绝了密码 修改方法: ...
- iOS开发项目实战——Swift实现图片轮播与浏览
近期開始开发一个新的iOS应用,自己决定使用Swift.进行了几天之后,发现了一个非常严峻的问题.那就是无论是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是 ...