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

主题概要
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消息,发送到目的地址。

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
BACnet(Building Automation and Control Networks)协议是一种通信协议,用于建筑自动化和控制系统。它是一种开放的、厂商中立的协议,被广泛应用于建筑物的自动化和控制领域。 BACnet协议的源码是指实现BACnet协议的软件代码。该源码是建立BACnet通信的基础,可以在各种设备上运行,包括传感器、执行器、控制器和监测设备等。BACnet协议的源码提供了一种灵活、可扩展和互操作的解决方案,可以满足不同厂商的需求。 BACnet协议的源码通常由专业的软件工程师编写和维护。这些源码包括了实现BACnet协议所需的各种功能,如数据传输、设备发现、数据解析和处理等。此外,源码还包括了各种BACnet网络的实现,如乙太网、RS-485、LonWorks和BACnet/IP等。这些功能和网络实现使得BACnet协议在建筑自动化和控制系统中具备了强大的通信能力。 对于建筑自动化和控制系统的厂商和开发者来说,BACnet协议的源码是一种宝贵的资源。通过研究和使用这些源码,他们可以快速、方便地实现BACnet协议,构建符合标准的、高效可靠的通信系统。此外,源码还可以用于协议栈的移植和定制,满足特定应用场景的需求。 总之,BACnet协议的源码是一项重要的技术资源,对于建筑自动化和控制系统的开发和应用具有重要意义。它提供了一种开放、互操作的通信解决方案,促进了建筑设备之间的互联和数据交换,提高了建筑自动化和控制系统的效率和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值