BACnet 101 - BACnet介绍
Ref: https://www.csimn.com/CSI_pages/BACnet101.html
BACnet概要视图
BACnet代表建筑自动化和控制网络。它由ASHRAE于1996年正式发布,并已被批准为ISO标准16454-5,并正在成为欧盟的标准。
BACnet IP和BACnet MS/TP是标识用于在网络上传输BACnet数据包的物理层(IP或MS/TP)的名称。至少还定义了另外三个物理层,并在一定程度上使用它们。我们将在本网站上讨论IP和MS/TP,因为这是两个最常见的物理层,而且这两个物理层是控制解决方案在其产品线中支持的。
Modbus谈论寄存器,BACnet谈论对象和对象属性。例如,传感器就是一个对象。如果它的属性是它的现值,这个属性在BACnet中被称为,现值属性(The Present Value property)。传感器很可能是两种对象类型之一:模拟输入(温度、湿度等)或二进制输入(感应传感器、开关等)。最常用的属性是现值,但还需要其他属性。其他属性包括状态标志(故障、服务停止)、可靠性,以及其他一些可选的属性,如高限制和低限制。
更多更好的Backnet资料,请参考www.bacnet.org](http://www.bacnet.org/Tutorial/index.html).
BACnet的基础背景知识
BACnet设备在网络上定义为“对象”的集合Oobjecs)。典型的对象包括模拟输入、模拟输出、二进制输入、二进制输出和更复杂的对象,如调度。主要通过网络对对象的属性读写进行消息处理。模拟输入最常引用的属性是“现值(Present Value)”,这通常意味着来自传感器或物理设备的数据。与模拟输入对象相关的其他属性,例如,包括故障状态、可靠性、对象名称、最小和最大限制等。BACnet协议标准为每个对象类型定义了必需的和可选的属性。BACnet设备的制造商文档将列出设备中包含哪些对象类型,以及每个对象中包含哪些可选属性。
除了对象的定义,BACnet协议还定义了“服务(Services)”。这些服务包括对象访问服务、警报和事件服务、文件访问服务等等。对象访问服务是最常用的,因为它们提供对对象属性的基本“读/写”访问。
访问对象属性需要指定以下参数:
设备实例(即,网络上的哪个设备)
对象类型(模拟输入、二进制输入等)
对象实例(即,哪个模拟输入)
属性(当前值、对象名称、状态标志等)
输入对象(Input Objects)很简单,它们只有一个与之关联的“现值”。输出对象(Output Objects)被称为“可指令的(commandable)”,它们更加有趣。因为这个创造了多个算法一起控制一个对象的可能,通过有优先级的指令请求(Command Request)来控制对象,多个指令的时候最高优先级的指令有效;当高优先级指令被取消(Relinquished)时,次一优先级的指令接替生效。对象会维护一个指令优先队列来管理所有的指令(共有16个优先级别)。
因此,对于输出对象的操作需要额外两个参数:
- 指令优先级
- 对应优先级上指令的级别
对一个”可指令的”对象去读它的现值(Present Value),则这个读的指令将会是最高优先级的,并且不可被取消。对于其他指令,通过向可执行的对象发送”取消(relinquish)”即可(这个应该是一个特殊的访问方式,应该需要制定之前的指令信息才行)。
BACnet物理层(Physical Layer)
BACnet协议定义了用于物理电信号、寻址、网络访问、错误检查、流控、表示和消息格式等。该协议侧重于构建自动化应用程序。
BACnet IP
BACnet IP使用一个标准的UDP/IP堆栈来发送和接收消息(参见下面UDP/IP的定义)。在大多数情况下,可以在MS/TP链接上找到的包被封装在UDP/IP包中,称为BACnet IP。设备使用IP地址和以太网MAC地址,就像其他UDP/IP网络设备一样。没有主从令牌传递的概念,因为以太网本质上是自动对等的。设备只是随意地将数据传输给它们的目标接收方,让以太网根据需要处理数据包冲突和重试。
BACnet MS/TP
MS/TP代表主从令牌传递。当链路上的每个设备都有令牌时,它被认为是“主设备”。如果不需要立即使用令牌,则需要将令牌传递给下一个设备。这是“令牌传递”部分。链路上当前没有令牌的所有设备都被视为从设备,并被期望侦听当前主设备可能为它提供的任何消息。因为所有的设备轮流成为主设备,所以这个链接实际上是点对点的。
BACnet Application Layer
真正有意思的地方,所有消息处理都在应用层处理,包括设备寻址。IP地址将通过UDP/IP堆栈层获得一个BACnet包。然后应用程序层决定如何处理BACnet消息。可能的消息类型有一个完整的列表,但是最常用的是“读取现值(read present value property)”,另一个“最常用”的是COV通知(值的更改,Change of Value)。
BACnet术语表
UDP/IP - 大家都听说过TCP/IP,与这个一样,UDP/IP也是一个常见的以太网协议栈,不同之处在于TCP是一个”连接(connection)”协议,而UDP是一个”无连接(connectionless)”协议;TCP协议更安全,但为了连接需要额外的开销来确保数据包的安全送达,而UDP速度和效率更高。BACNet IP使用UDP协议,主要原因是BACnet的消息通常都很短,并且彼此独立没有依赖。
Object - 构成BACnet设备的传感器,执行器或其他功能元素的引用概念,属于协议的一部分;常用的对象有模拟输入对象和模拟输出对象。
Object Property - 每个对象都具有BACnet协议所需的几个属性。最常用的属性是现值。其他常见属性包括可靠性和状态标志。对象的可选属性,如模拟输入,包括最小和最大范围,高和低的限制,等等。
COV - Change Of Value - 当设备对象的属性值根据默认参数、或者写指令变化的时候,可以通过向设备订阅COV通知来获取COV通知消息(意译,需要跟进测试确认)。
BBMD - BACnet/IP广播管理设备(BACnet/IP Broadcast Management Device),用于跨大型网络的BACnet实现。BACnet典型的应用场景在一个园区,尽管在协议涉及上支持广域全国范围的网络建设。BACnet设备的运行,需要广播机制来广播消息。标准的IP技术在路由网关规定是不转发广播消息的,BBMD设备在多个不同网络域(IP子网)中进行广播转发到本地网络,来实现跨IP网络的BACnet/IP网络广播实现。IP域(子网中)只有一个设备充当BBMD即可实现广播消息的转发。(目前场景中,如果只在一个子网中建设BACnet,不用考虑BBMD的构建)
MS/TP Mac Address or Station ID - 这是一个8位数字,对于主/从设备来说是0-127。此Mac地址在RS-485链路上本地使用,用于链路上的物理地址设备,不经过路由器。它相当于Modbus RTU从地址。
MS/TP Max Masters - 通过发起”主设备投票(poll for master)的活动来决定MS/TP Link网络中有多少设备可以作为主设备,如果所有的设备都不匹配,会发生不可预期问题。
BACnet IP Addressing - 标准以太网IP地址用于标识IP网络上的设备。IP地址用于物理路由网络上的消息,同时用BACnet设备实例标识BACnet系统中的设备。
Device Instance - 这是与BACnet有关的逻辑地址。无论是在MS/TP链路还是IP网络上,设备实例在所有子网和路由链路上都是惟一的。(补充:访问设备的参数顺序为:设备示例、对象类型、对象示例、属性)
Client/Server versus Master/Slave - 我们倾向于在MS/TP级别考虑主服务器和从服务器,当我们讨论IP网络时,我们开始考虑客户机/服务器。在功能上,客户机和主服务器是同步的,而服务器和从服务器是同步的。