BACnet协议简要说明及组网简介

article/2025/11/1 9:41:52
主题概要
BACnet协议BACnet协议简要说明,组网简介
编辑时间
新建20160217
序号参考资料
1BACnet协议正文1995版
2http://www.bacnet.org/Tutorial/BACnetIP/

1 协议说明

BACnet协议(A Data Communication Protocol for Building Automation and Control Networks),是由美国采暖、制冷和空调工程师协会(ASHRAE)制定的一个楼宇自动控制技术标准文件,BACnet协议最根本的目的是提供一种楼宇自动控制系统实现互操作的方法。BACnet协议并不能简单的认为是一种应用层的协议,而是包含四个层次的简化分层体系结构,这四层相当于OSI模型中的物理层、数据链路层、网络层和应用层。
BACnet中有很多专业术语,解释如下:

1.1 服务原语

与ISO服务中的约定用法一致,BACnet中两个对等应用进程间的信息交换,被表示成抽象服务原语的交换。这些服务原语用来传递一些特定的服务参数,本协议定义了四种服务原语:请求(request)、指示(indication)、响应(response)和证实(confirm)。
同样,本协议定义了下列几种服务:
有证实(confirmed)服务:用CONF_SERV标记,表示客户方通过具体的服务请求实例向服务器方请求服务,服务器方通过响应请求来为客户方提供服务。存在客户/服务器模型、区分“请求方BACnet用户”和“响应方BACnet用户”等。
无证实(unconfirmed)服务:用UNCONF_SERV标记,只有“发送方BACnet用户”和“接收方BACnet用户”的概念,不存在客户/服务器模型,只有发送方和接收方,而不是请求-响应对。
分段确认(segment acknowledge)服务:用SEGMENT_ACK标记,为了实现长报文(长度大于通信网络、收/发设备所支持的长度)的传输,BACnet采取了应用层报文分段的机制来对报文进行分段。在BACnet中只有有证实请求(Confirmed-Request)和复杂确认(Complex-ACK)报文可能需要分段,因此分段还是BACnet的一个可选特性。
另外,还有差错(ERROR)服务,拒绝(REJECT)服务,中止(ABORT)服务。
因此,根据不同的服务类型和原语类型,据有下表所示的服务原语。这些原语中的信息,由各种协议数据单元(PDU:Protocol Data Unit)传递。

1.2 PDU类型

BACnet协议定义了七种不同的PDU,用以传递原语信息。

1.2.1 BACnet有证实请求PDU

用于传送包含在有证实服务请求原语中的信息。

1.2.2 BACnet无证实请求PDU

用于传送包含在无证实服务请求原语中的信息。

1.2.3 BACnet 简单确认PDU

用于传送包含在一个服务响应原语中的信息,这个信息是服务请求已经成功执行。

1.2.4 BACnet复杂确认PDU

用于传送包含在一个服务响应原语中的信息,这个信息除了包含服务请求已经成功执行之外,还有其它一些信息。

1.2.5 BACnet 分段确认PDU

用于对收到一个或者多个PDU进行确认,这些PDU包含一个分段报文的分段。BACnet 分段确认PDU也用于对分段报文的下一个或者几个分段的请求。

1.2.6 BACnet差错PDU

用于传送包含在一个服务响应原语中的信息,这个信息指出前一个服务请求完全失败的原因。

1.2.7 BACnet拒绝PDU

用于对一个有证实请求PDU的拒绝接收,其原因是这个被拒绝的PDU具有句法结构错误或者其它的协议错误,使得不能对这个PDU进行解读,或者不能够提供请求的服务。只能对有证实请求PDU进行拒绝。

1.2.8 BACnet 中止PDU

用于结束两个对等实体之间的事务处理。

1.3 服务选择

BACnet定义了以下几类可选择的服务,用于两个对等实体之间的交互。

1.3.1 文件访问服务

定义一组访问和操作在BACnet设备中的文件的服务。文件只是一个抽象的概念,表示一个任意长度和意义的字节集合的网络可见形式。
基本读文件(AtomicReadFile)服务:一个客户端的BACnet用户使用基本读文件服务对某个文件进行一个“打开-读出-关闭”的操作。
基本写文件(AtomicWriteFile)服务:一个客户端的BACnet用户使用基本写文件服务对某个字节流进行一个“打开-写入-关闭”的操作,将它写入到文件的某个位置。

1.3.2 对象访问服务

定义九个应用服务,这些服务共同提供一组访问和操作BACnet对象的方法。
添加列表元素(AddListElement)服务:一个客户端的BACnet用户使用添加列表元素服务向一个具有列表的对象的属性添加一个或者多个列表元素。
删除列表元素(RemoveListElement)服务:一个客户端的BACnet用户使用删除列表元素服务从一个具有列表的对象的属性中删除一个或者多个列表元素。
创建对象(CreateObject)服务:一个客户端的BACnet用户使用创建对象服务创建一个对象的新实例。
删除对象(DeleteObject)服务:一个客户端的BACnet用户使用删除对象服务删除一个已有的对象。
读属性(ReadProperty)服务:一个客户端的BACnet用户使用读属性服务请求一个BACnet对象的一个属性值。
条件读属性(ReadPropertyConditional)服务:一个客户端的BACnet用户使用条件读属性服务请求那些满足一个选择准则列表的所有BACnet对象的对象标识符和0个或者多个特定属性的值。
读多个属性(ReadPropertyMultiple)服务:一个客户端的BACnet用户使用读多个属性服务请求一个或者多个BACnet对象的一个或者多个特定属性的值。
写属性(WriteProperty)服务:一个客户端的BACnet用户使用写属性服务修改一个BACnet对象的一个属性值。
写多个属性(WritePropertyMultiple)服务:一个客户端的BACnet用户使用写多个属性服务修改一个或者多个BACnet对象的一个或者多个特定属性的值。

1.3.3 远程设备管理服务

定义一组远程设备管理服务。
设备通信控制(DeviceCommunicationControl)服务。
有证实专有传输(ConfirmedPrivateTransfer)服务。
无证实专有传输(UnconfirmedPrivateTransfer)服务。
重新初始化设备(ReinitializeDevice)服务。
有证实文本报文(ConfirmedTextMessage)服务。
无证实文本报文(UnconfirmedTextMessage)服务。
时间同步(TimeSynchronization)服务。

1.3.4 Who-Has和I-Have服务

一个发送的BACnet用户使用Who-Has服务确定一些其它BACnet设备的设备对象标识符和网络地址,设备使用I-Hava服务响应Who-Has服务请求,或者通告自己有一个具有给定的对象名称属性或者对象标识符属性的对象。

1.3.5 Who-Is和I-Am服务

一个发送方BACnet用户使用Who-Is服务确定在同一个互联网上的其它BACnet设备的设备对象标识符和网络地址,Who-Is服务是一个无证实服务。I-Am服务也是一个无证实的服务,这个服务用于响应Who-Is服务请求。

1.3.6 虚拟终端服务

略。

1.4 对象

对象是对现实设备中某一特征的抽象。

1.4.1 模拟输入对象类型(Analog Input Object Type)

模拟输入对象类型定义为一个标准对象,其属性表示一个模拟输入的外部可见一致性代码。

1.4.2 模拟输出对象类型(Analog Output Object Type)

模拟输出对象类型定义为一个标准对象,其属性表示一个模拟输出的外部可见一致性代码。

1.4.3 模拟值对象类型(Analog Value Object Type)

模拟值对象类型定义为一个标准对象,其属性表示一个模拟值的外部可见一致性代码。BACnet设备的一个“模拟值”是驻留在这个设备的内存中的一个控制系统参数。

1.4.4 二进制输入对象类型(Binary Input Object Type)

二进制输入对象类型定义为一个标准对象,它的属性表示二进制输入的外部可见一致性代码。“二进制输入”是物理设备或硬件的输入,该输入只存在两种状态,即“活动(ACTIVE)”状态和“非活动(INACTIVE)”状态。二进制输入的主要用途是指明机械设备状态,如:风机或水泵是否运行。活动表示设备开或运转,非活动表示设备关或未运行。

1.4.5 二进制输出对象类型(Binary Output Object Type)

二进制输出对象类型定义为一个标准对象,它的属性表示二进制输出的外部可见一致性代码。“二进制输出”是物理设备或硬件的输出,该输出只存在两种状态,即“活动”状态和“非活动”状态。二进制输出的主要用途是切换机械设备状态,如:风机或水泵的开和关。活动表示设备开或运转,非活动表示设备关或未运行。

1.4.6 二进制值对象类型(Binary Value Object Type)

二进制值对象类型定义为一个标准对象,它的属性表示二进制值的外部可见一致性代码。“二进制值”是驻留在BACnet设备内存中的控制系统参数。这个参数只存在两种状态即:“活动”状态和“非活动”状态。

1.4.7 日期表对象类型(Calendar Object Type)

日期表对象类型定义为一个标准对象,用于描述日期列表,例如,“节假日”、“特别日”或简单的日期列表。

1.4.8 命令对象类型(Command Object Type)

命令对象类型定义为一个标准对象,其属性反映了多操作命令过程的外部可见一致性代码。命令对象的作用是,根据写入到命令对象自己的当前值属性中的“操作代码(action code)”,向一组对象属性写入一组值。无论何时,只要命令对象的当前值属性被写入,就会触发命令对象采取一组改变其它对象的属性值的操作。

1.4.9 设备对象类型(Device Object Type)

设备对象类型定义为一个标准对象,其属性表示BACnet设备的外部可见一致性代码。每个BACnet设备有且只有一个设备对象。每个设备对象由它的对象标识符属性确定,该属性在BACnet设备中乃至整个BACnet互联网中都是唯一的。

1.4.10 事件登记对象类型(Event Enrollment Object Type)

事件登记对象类型定义为一个标准对象,表示BACnet系统内管理事件的信息。“事件”是指满足预先规定条件的所有对象的任何属性值的变化。事件登记对象主要用于定义一个事件和提供在事件发生与通告消息向一个或多个接收者进行传输这两者之间的联系。

1.4.11 文件对象类型(File Object Type)

文件对象类型定义为一个标准对象,用于定义可以通过文件服务(见第14节)访问的数据文件的属性。

1.4.12 组对象类型(Group Object Type)

组对象类型定义为一个标准对象,其属性表示一个其它对象的集合以及这些对象的一个或多个属性。组对象提供一种快速的方式,可以一次确定组的成员,从而简化BACnet设备间的信息交换。一个组对象可以是任何对象类型的组合。

1.4.13 环对象类型(Loop Object Type)

环对象类型定义为一个标准对象,其属性表示任何形式的反馈控制环路的外部可见一致性代码。环对象通过提供三个独立的无单位增益常数,可以具有广泛的适用性。每个增益常数由控制算法具休确定,如何使用不同的算法确定增益常数的方法,由生产商自行确定。

1.4.14 多态输入对象类型(Multi-state Input Object Type)

多态输入对象类型定义了一个标准对象,它的当前值属性表示对象驻留的BACnet设备内算法处理的结果。

1.4.15 多态输出对象类型(Multi-state Output Object Type)

多态输出对象类型定义了一个标准对象,它的属性表示这个对象驻留的BACnet设备内的处理程序或一个或多个物理输出的期望状态。

1.4.16 通告类对象类型(Notification Class Object Type)

通告类对象类型定义了一个标准对象,表示在BACnet系统内事件通告发布所需的信息。

1.4.17 程序对象类型(Program Object Type)

程序对象类型定义了一个标准对象,它的属性表示应用程序的外部可视一致性代码。在本协议中,应用程序是指对一个在BACnet设备中的处理过程的抽象表示,这个处理过程执行一个指令集,对某个数据结构集合进行操作。

1.4.18 时间表对象类型(Schedule Object Type)

时间表对象类型定义了一个标准对象,用于描述一个周期性的时间表。这个时间表中确定了某事件在一个日期范围内可能重复发生,同时表示有些日期是事件不发生的日期。

1.5 属性

上述各对象除了有公有的属性外,还有自己私有的属性。
常用的公有属性有:
对象名称(Object_Name)
对象类型 (Object_Type)
当前值 (Present_Value)
描述(Description)
通常对象名称由对象类型和对象实例一起标识。需注意,当前值属性并不一定为实数,可以为BOOL型、INT型等。

2 TCP/IP组网布署

每个设备有一个唯一的设备地址,在TCP/IP网络中,就是IP地址。在设备不是一个BACnet路由器的情况下,设备不知道或不需要知道他们BACnet网络的网络号。一个或多个子网可以有相同的网络号。

2.1 BBMD结构

为了确保广播消息不会在所有子网中路由,引入了BACnet广播管理设备(BACnet Broadcast Management Device,BBMD)。很多功能,比如动态name绑定、值改变通知都会广播,通过BBMD把这些消息限制在各自的网络中。

2.1.1 树形结构

这里写图片描述
优点:
结构简单,只有一个parent和几个child
易增加新设备
消息不会被复制成几份
缺点:
一条链路失败,整个支路不通
动态TOPO复杂

2.1.2 环形结构

这里写图片描述
缺点:一条链路坏了,整个环就瘫痪

2.1.3 B/IP网络结构

这里写图片描述
完全连接的星形结构,注意只是逻辑结构而不是物理结构。

2.2 跨网段之间的定点通信或广播

这里写图片描述
如果知道各自的IP和端口,并且具有BBMD设备,则相互之间就能正常通信。注意BBMD和相关的BVLL协议只是用来广播消息。

2.3 BBMD本地广播的接收

这里写图片描述
BBMD是一个被动设备,几乎没有消息主动传递给它,通常它仅仅用来监听本地局域网的广播消息。

2.4 广播消息的转发

这里写图片描述
BBMD会根据自身的BBMD表和掩码,对接收到的消息进行转发。通过创建Forwarded-NPDU消息,发送到目的地址。


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

相关文章

BACnet协议详解——应用层说明一

文章目录 写在前面1. 应用层模型1.1 需确认的应用层服务1.2 无需确认的应用层服务2 BACnet报文的分段2.1 报文分段规则2.1.1 APDU数据流的分段规则2.1.2 APDU最大长度的确定2.1.3 可接受的最大分段数2.2 分段协议控制信息(PCI)写在前面 年关将至,事情有点多,耽误了原本定好…

BACnet协议读取与发送

BACnet协议读取与发送 注意我的提问:更新开发环境BACnet相关基础知识BACnet格式BACnet代码BACnet设备查找BACnet设备读取BACnet写入操作AND其他...**BACpypes库中没有提供非标准数据类型接口!!!!!** 结束 因…

Bacnet协议报文格式详解(一)

系统实现基于BACnet/IP(又称B/IP)网络进行通讯。BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持的定向和广播信息。本实现关…

bacnet (收集)

嵌入式系统中BACnet-MS/TP协议栈的实现 一个BACnet设备由一个网络号码和一个MAC地址唯一确定 bacnet MS/TP 走的是485网络 https://www.eefocus.com/mcu-dsp/226727 1 引言 20世纪90年代,Internet经历了爆炸性发展,成为垄断全球的计算机网络。以Cisc…

BACnet

BACnet通讯协议(一) BACnet协议(A Data Communication Protocol for Building Automation and Control Networks),是由美国采暖、制冷和空调工程师协会(ASHRAE)制定的一个楼宇自动控制技术标准文件,BACnet协议最根本的目的是提供…

BACnet协议

BACnet协议 BACnet协议层包括物理层,链路层,网络层,应用层和BACnet安全层。 我们知道BACnet是用于楼宇自动化和控制网络的简短形式的数据通信协议。BACnet是主要行业供应商产品中常用的自动化和控制协议之一,如江森自控&#xff…

BACnet协议详解——初识BACnet架构

文章目录 BACnet协议架构BACnet简化的架构简化的四层BACnet体系结构选取BACnet 网络的拓扑结构安全最后声明BACnet协议架构 国际标准化组织在制定计算机网络通讯协议标准时定义了一个模型,称为开放系统互联参考模型(OSI(ISO 7498)。模型的目的是解决计算机与计算机之间普遍…

BACnet基础入门

BACnet入门:一、简单了解 前言协议栈层级与拓扑结构1.层级体系2.拓扑结构 协议栈的相关内容1.应用层a.设备b.对象c.属性e.服务f.扩展g.安全h.互操作基本模块(BIBBs)i.一致性声明(PICS)j.其他 2.网络层3.数据链路与物理层 工具源码参考 前言 …

BACnet协议介绍

BACnet为BuildingAutomation andControlnetworks的简称,台湾通常翻译为“建筑自动化控制网路通讯协定”,而中国大陆则译为“楼宇自动化与控制网络”。 前言 BACnet是用于智能建筑的通信协议,是国际标准化组织(ISO)、美…

认识BACnet协议

一、什么是BACnet? BACnet,Building Automation and Control networks的简称,即楼宇自动化与控制网络。是用于智能建筑的通信协议。 一般楼宇自控设备从功能上讲分为两部分:一部分专门处理设备的控制功能;另一部分专…

【块存储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)不是已经可以实现通过网络挂载各种文件系统并进行访问了吗,…