前言
在面向对象技术中,与对象相关联的是属性和方法,属性用来说明对象,而方法是外界用来访问或作用于对象的手段。在BACnet 中,把对象的方法称为服务(Service)。
服务就是一个BACnet 设备可以用来向其它BACnet 设备请求获得信息,命令其它设备执行某种操作或者通知其它设备有某事件发生的方法。
下图:BACnet设备接收服务请求和进行服务应答的示意图。
BACnet 定义了35 个服务,并且将这35 个服务划分为6 个类别。这6 个服务类别分别是:报警与事件服务(Alarm and Event Services),文件访问服务(File Access Services),对象访问服务(Object Access Services),远程设备管理服务(Remote Device Management Services),虚拟终端服务(Virtual Terminal Services),和网络安全性(Network Security)。
这些服务又分为两种类型,一种是确认服务(Confirmed,简单标记为“C”),另一种是不确认
服务(Unconfirmed,简单标记为“U”)。
1 报警与事件服务
报警与事件服务类别中有8 种服务,这类服务处理BACnet 设备感知的环境状态的变
化。
服务 | 确认性 | 描述 |
确认报警 AckknowledgeAlarm | C | 用来告知报警发送方,操作者已收到报警 |
确认的“属性值改变”通告 ConfirmedCOVNotification | C | 告知“属性值改变” 的预订设备,在一个属性中已发生值的改变 |
确认的事件报告 ConfirmedEventNotification | C | 用来告知发送者,可能发生一个错误 |
获得报警摘要 GetAlarmSummary | C | 请求设备提供一份“活动报警”列表 |
获得注册摘要 GetEnrollmentSummary | C | 请求一份(可能错误的)“事件”列表 |
预订“属性值改变” SubscribeCOV | C | 由一个设备发送的,请求当在一个对象中有属性值改变发生,要被告知 |
不确认的“属性值改变”通告 UnconfirmedCOVNotification | U | 告知“属性值改变”的预订设备,在某个对象的一个或多个属性中值的改变已发生 |
不确认的事件通告 UnconfirmedEventNotification | U | 用来告知多个设备,可能发生一个或多个错误。 |
2 文件访问服务
文件访问服务提供读写文件的方法,这包括上载和下载控制程序和数据库的能力。
服务 | 确认性 | 描述 |
基本读文件 AtomicReadFile | C | 请求获得一个“文件对象”文件的部分或全部。 |
基本写文件 AtomicWriteFile | C | 向一个“文件对象”写入部分或全部文件。 |
3 对象访问服务
虽然定义了创建对象和删除对象服务,但是其应用是受限制的。与物理设备本身相关联的对象是不可增删的,而组对象和事件注册对象以及在某些情况下的文件对象可对其进行增删服务。
服务 | 确认性 | 描述 |
添加列表元素AddListElement | C | 向一个列表的属性添加一个或多个项目。 |
删除列表元素RemoveListElement | C | 从一个列表的属性中删除一个或多个项目。 |
创建对象CreateObject | C | 用来在本设备中创建一个对象的新实例。 |
删除对象DeleteObject | C | 用来在本设备中删除某个对象。 |
读属性ReadProperty | C | 返回一个对象的一个属性的值。 |
条件读属性 ReadPropertyConditional | C | 返回符合条件的多个对象中的多个属性的值。 |
读多个属性ReadPropertyMultiple | C | 返回多个对象中的多个属性的值。 |
写属性WriteProperty | C | 向一个对象的一个属性写入值。 |
写多个属性WritePropertyMultiple | C | 向多个对象中的多个属性写入值。 |
4 远程设备管理服务
远程设备管理服务类别中有11 种服务,提供对BACnet 设备进行维护和故障检测的工具。
服务 | 确认性 | 描述 |
设备通信控制 DeviceCommunicationControl | C | 通知一个设备停止(及开始)接收网络报文。 |
确认的专用信息传递 ConfirmedPrivateTransfer | C | 向一个设备发送一个厂商专用报文。 |
不确认的专用信息传递 UnconfirmedPrivateTransfer | U | 向一个或多个设备发送一个厂商专用报文。 |
重新初置设备 ReinitializeDevice | C | 对接受的设备进行排序,以使可以自引导冷或热启动。 |
确认的文本报文 ConfirmedTextMessage | C | 向另一个设备传递一个文本报文。 |
不确认的文本报文 UnconfirmedTextMessage | U | 向一个或多个设备发送一个文本报文。 |
时间同步TimeSynchronization | U | 向一个或多个设备发送当前时间。 |
Who-Has | U | 询问BACnet 设备中哪个含有某个对象。 |
I-Have | U | 肯定应答Who-Has 询问,广播。 |
Who-Is | U | 询问关于某个BACnet 设备的存在。 |
I-Am | U | 肯定应答Who-Is 询问,广播。 |
可以用Who-Is 和I-Am 服务来获得BACnet 互联网中的BACnet 设备的网络地址。
当一个BACnet 设备需要知道一个或多个其它BACnet 设备的地址时,它就可向整个BACnet 互联网广播一个标明有一个“设备对象实例标号”或者一组“设备对象实例标号”的Who-Is 服务请求报文。
需要响应的设备并不是向询问设备发回一个响应,那些具有Who-Is 报文中标明的“设备对象实例标号”的设备向本地局域网,或者向远程网,或者向整个BACnet 互联网广播一个包含有其自己的网络地址的I-Am 服务报文。这样不仅响应了询问的设备,而且也使那些需要知道地址的其它设备得到了信息,限制了网络负载的增加。
5 虚拟终端服务
因为不同厂家生产的楼宇自控设备仍然保持有在其硬件和结构上的专有特性,BACnet要提供一种工具,使得操作者能够重构这些设备。
虚拟终端服务就是这样的工具,它们提供了一种实现面向字符的数据双向交换的机制。操作者可以用虚拟终端服务建立BACnet设备与一个在远程设备上运行的应用程序之间的基于文本的双向连接,使得这个设备看起来就象是连接在远程应用程序上的一个终端。
服务 | 确认性 | 描述 |
VT-Open | C | 与一个远程BACnet 设备建立一个虚拟终端会话。 |
VT-Close | C | 关闭一个建立的虚拟终端会话。 |
VT-Data | C | 从一个设备向另一个参与会话的设备发送文本。 |
6 网络安全性服务
安全性服务提供对等实体验证,数据源验证,操作者验证,和数据加密等功能。
服务 | 确认性 | 描述 |
验证Authenticate | C | 验证密码。 |
请求密钥RequestKey | C | 申请一个密钥。 |
BACnet 协议的一致性类别
一致性类别的编号是1-6,是分级结构,最低级别的是一致性类别1。每个类别都规定了设备要实现的最小的服务子集,且包含有比它低一级别的类别的所有服务。
一致性类别1 : 一致性类别1 的BACnet 设备只要求具有一个“设备对象(Device Object)”及能够响应读属性服务请求。
一致性类别2: 一致性类别2 的设备要求再增加能够响应写属性服务请求。
一致性类别3: 一致性类别3 的设备增加的服务是:启动I-Am 和I-Have 服务请求,响应读多个属性、写多个属性、Who-Has和Who-Is 服务请求。
一致性类别4: 一致性类别4 的设备再增加的服务是:启动添加列表元素、删除列表元素、读属性、读多个属性、写属性和写多个属性服务请求,响应添加列表元素和删除列表元素服务请求。
一致性类别5: 一致性类别5 的设备再增加的服务是:启动Who-Has 和Who-Is 服务请求,响应创建对象、删除对象和条件读属性服务请求。
一致性类别6: 一致性类别6,要求设备能够执行全部32 个服务类型中的21 个,其中有20 个必须是该设备能够启动的服务,有17 个是设备能够响应的服务。