认识BACnet协议

article/2025/11/1 10:27:07

一、什么是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个对象:

序号对象名称应用实例
01Accumulator累加器
02Analog Input模拟输入对象
03Analog Output模拟输出对象
04Analog Value模拟值对象 
05Averaging 平均器 
06Binary Input 二进制输入对象
07Binary Output二进制输出对象
08Binary Value 二进制值对象
09Calendar 日期表对象
10Command 命令对象
11Device设备对象
12Event Enrollment 事件登录对象
13Event Log事件日志对象
14File文件对象
15Global Group全局组对象
16Group 组对象
17Life Safety Point 生命安全监测点的信息检测
18Life Safety Zone 生面安全区域的信息检测
19 Loop控制环对象
20Multi-State Input多态输入对象
21Multi-State Output多态输出对象
22Multi-State Value多态值对象 
23Notification Class通告类对象 
24Program  程序对象
25Pulse Converter 脉冲转换器
26Schedule时间安排对象 
27Trend Log趋势记录对象 
28Trend 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连接调制解调器,线路驱动器,或者其他数据通信设备。


http://chatgpt.dhexx.cn/article/KJZGbWaP.shtml

相关文章

【块存储block源码分析】 linux内核模块ceph nbd源码分析

jewel 版本支持 rbd-nbd 的特性,需要 map 支持较多特性的 rbd image 时,可以使用该 nbd driver NBD(Network Block Device) 可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。NBD是一个内核模块,…

用户增长 - BG/NBD概率模型预测用户生命周期LTV(二)

文章目录 1 理论1.1 BG / NBD概率模型介绍1.2 Gamma-Gamma模型2 实践案例2.1 lifetimes实践案例一:在线零售业务的交易2.1.1 数据解读2.1.2 BG / NBD - 预期交易的frequency /recency 热力图2.1.3 顾客留存概率热力图2.1.4 评估模型效果方式一:模型验证重…

使用BG/NBD模型与Gamma-Gamma模型预测客户的生命周期价值CLV/LTV

1. 背景 客户生命周期价值CLV: CLV是Customer Lifetime Value的简称,用来衡量一个客户(用户)在一段时期内对企业有多大价值,也称为LTV。 假如一个客户两年内在某商店内消费2000元,这2000元就是CLV,具有预测性。 CLV…

nbd 相关概念及操作

周五(3月6号)笔者发现有台物理机上挂载了一个并非常用的nbd设备,估计是之前人做的测试留下来的,决定卸载它,顺带了解了下nbd的设备信息。 什么是nbd 全称是network block device,类似于nfs,远程设备可以挂载&#xff…

qemu-nbd挂载虚拟机镜像文件系统

qemu-nbd挂载虚拟机镜像文件系统 基本原理操作步骤1.加载NBD驱动2. 连接 qemu-nbd3.挂载4.解挂 虚机文件系统为LVM实例1.加载驱动2.连接qemu-nbd3.挂载lvm分区4.卸载盘符 虚机文件系统为非LVM虚机文件系统为NTFS 基本原理 nbd(网络块设备: Network Block Device&am…

linux qemu-nbd介绍

1. 介绍 NBD(Network Block Device),即网络块设备。可以将一个远程主机的磁盘空间,当作一个块设备来使用。就像一块硬盘一样使用它,你可以很方便的将另一台服务器的硬盘空间,增加到本地服务器上。NBD与NFS有所不同&am…

centos7 nbd 挂在qcow2或qcow,raw,虚机镜像,virsh,virt,使用qemu-nbd挂载qcow2镜像文件

基本原理 nbd(网络块设备: Network Block Device),利用qemu-nbd将qemu虚拟机镜像挂载到Linux上。   展开来讲,nbd可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。使用它,你可以很…

linux nbd模块,Centos7.3 安装编译nbd模块-Go语言中文社区

未安装nbd模块 [zhaojqlocalhost ~]$modprobe nbd modprobe: FATAL: Module nbd not found. 查看linux版本 [zhaojqlocalhost ~]$cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [zhaojqlocalhost ~]$uname -r 3.10.0-514.26.2.el7.x86_64 安装 [rootlocalhost…

linux nbd模块,Centos7.3 安装编译nbd模块

未安装nbd模块 [[email protected] ~]$ modprobe nbd modprobe: FATAL: Module nbd not found. [[email protected] ~]$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [[email protected] ~]$ uname -r 3.10.0-514.26.2.el7.x86_64 安装 [[email protected] …

NBD(Network Block Device)简介及基本使用

NBD指的是Network Block Device,正如其名字的意思,NBD让用户可以通过网络访问到某个块设备,或者设备镜像。 你可能会想NFS(Network File System)不是已经可以实现通过网络挂载各种文件系统并进行访问了吗,…

微信开放平台开发者认证

1.邮箱注册,激活账号 2.企业认证 3.登陆微信开放平台,进行开发者认证 4.填写认证信息 5.发票选择,可以选择不开发票 6. 支付费用300 备注:如有疑问,请联系作者!

微信开放平台开发(3) 移动应用微信登录

在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现移动应用微信登录的功能。 移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号&#x…

微信开放平台之第三方平台开发,模板小程序如何提交?

大家好,我是悟空码字 12月25日,天气晴朗,阳光普照,今天是圣诞节。因为疫情影响,小羊人的增多,街上放眼望去,人烟稀少。楼下除了几个十一二岁的小男孩在玩耍,也没有像往日老人悠闲打…

微信开放平台第三方开发,注册试用小程序,一整套流程

大家好,我是小悟 对服务商来说,试用小程序的好处不言而喻,主打一个先创建后认证的流程。只需要提供小程序名称和openid便可快速注册一个试用小程序,在认证之前,有效期14天,大致流程如下。 注册试用小程序 …

微信开放平台开发第三方授权登陆(五):微信小程序

微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三)&a…

微信开放平台开发-授权、全网发布(PHP)

这两天做了微信开发平台的开发,梳理下。。。 先看看授权的流程: 第一步:接收component_verify_ticket: 1、微信服务器每隔10分钟会向第三方的消息接收地址推送一次component_verify_ticket,拿到后需要在本地做好存储&…

微信开放平台开发——网页微信扫码登录(OAuth2.0)

转自 http://www.cnblogs.com/0201zcr/p/5133062.html 1、OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表)&am…

微信开放平台-第三方平台开发配置及常见的问题

目录 概述 参考文档 开源项目&工具 第三方平台设置 问题及解决方法 概述 本实例:第三方平台微信公众号(服务号) 微信开放平台-第三方平台,为广大公众号和小程序提供运营服务和行业解决方案。分两种类型,定制…

微信第三方平台开发(一)

个人感觉微信在第三方平台开发者这块的开发文档写的很不友好,很隐晦,我在开发的过程总结的一些东西,写出来给大家分享一下。恩,就这样吧。 一、注册第三方平台账号 打开https://open.weixin.qq.com/cgi-bin/index?thome/index&…

微信开放平台开发第三方授权登陆(三):Android客户端

微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三)&a…