本文分享自华为云社区《当 BACnet 遇上 IoT》,作者:美码师zale 。
引言
在十四五规划中,"新基建"无疑是倍受关注的重点领域。而关于"新基建"一词相信大家也早已耳熟能详,与传统基建相比,新基建最大的区别在于数字经济特征的体现,其自身包含了数字化、网络化、智慧化等几个特点。毫无疑问的是,新基建将成为新型智慧城市设施建设的有力支撑。智慧场馆、智慧楼宇作为智慧城市最重要的组成部分,在今天看来也不再是一些陌生的词汇。事实上,几乎所有的大型商业综合体、办公园区都配备了完善的楼宇自控,安防、办公等综合性系统,其中楼宇自控系统(BAS)是智慧建筑不可或缺的最重要的组成部分。
利用楼宇自控系统,可以对整栋建筑所有公用机电设备实现统一的监控管理。系统可无缝对接各类楼宇设施子系统,包括中央空调系统、给排水系统、供配电系统、照明系统等等,进一步对设备实施自动化控制管理及优化。例如,提前监测到人工无法及时发现的隐患,避免重大事故损失;自动进行室内恒温/湿控制,人性化的照明控制,提升办公体验;优化设备自动化控制管理,从而降低设备故障率和运维成本。基于多种使用场景的综合优化,旨在打造安全高效、舒适便捷的空间环境。
BACnet 简介
接下来,我们来谈一谈楼宇自控系统背后的一些技术实现。作为智慧楼宇的"控制核心",BAS 面对的是照明、制冷、供暖等各式各样的子系统和设备,而对于同一类别的设备,还存在不同厂家、型号、接口的差异,这使得 BAS 系统的复杂度和实现成本非常的高昂。为了降低复杂度,业界普遍推出了一些楼宇自控的协议标准,其中 BACnet 协议所受到的关注和接受程度无疑是最高的,下面我们介绍下该协议的基本情况。
BACnet 全称为 A Data Communication Protocol for Building Automation and Control Network(楼宇自动化控制数据通信协议),是由美国冷暖空调工程师协会组织于1995年 6月制定的一种楼宇自控网络通信协议,该标准将不同厂家的设备组成一个一致的自控系统,旨在解决不同厂家的设备之间相互操作(Interoperability)的诉求。BACnet 协议包含设备数据通信和命令控制两个部分,并基于这两个部分设计了相关通信的标准。
BACnet 协议分层
BACnet 了一种简化的 4层的网络协议结构,包括了物理层、数据链路层、网络层、应用层,如下:
图 - BACnet 四层协议结构
【说明】
- 物理层 :提供设备间的物理连接,以及传输载波信号的方式。
- 数据链路层:将物理信号抽象转换为数据帧,采用帧(Frame)或分组(Packet)的方式进行传播,该层负责通信介质的访问和寻址,错误校正和流量控制功能。
- 网络层:实现本地网络或跨网络进行报文的路由传输,负责网络包序列/流量/差错校验等能力。
- 应用层:定义了BACnet协议的通信语义,包括应答/非应答数据包,以及BACnet标准对象/服务的通信。应用层是协议标准设计中最重要的一环,也是BACnet应用程序开发最关注的部分。
BACnet 协议统一了应用层和网络层两个部分,在物理层和数据链路层的部分提供了七种组合方案。其中,基于 BACnet IP/以太网和BACnet MSTP/RS485实现的两种局域网组网,是楼宇自控场景使用最广泛的方式。BACnet IP允许跨子网/区域控制系统进行通信,利用光纤和千兆以太网的优势实现设备IP寻址。
BACnet 网络拓扑
BACnet 网络层定义中,网络是由中继器或网桥互联起来的一个或多个网段所组成的局部网络,具有单一的局部地址空间;在BACnet 网际网中,由网络层实现全局地址到局部地址的转换和寻址。
如下是一个典型的BACnet 网络拓扑:
【相关概念】
- 物理网段(Physical Segment):直接连接一些 BACnet 设备的一段物理介质。
- 网段(Segment):多个物理网段通过中继器在物理层连接,所形成的网络段。
- 网络(Network):多个 BACnet 网段通过网桥互连而成,每个 BACnet 网络都形 成一个单一的 MAC 地址域。
- 网际网(Internetwork):将使用不同 LAN 技术的多个网络,用 BACnet 路由器 互联起来,形成了一个 BACnet网际网。在一个 BACnet 网际网中,任意两个节点之间恰好存在着一条报文通路。
BACnet 网络具有明显的局域网特征,借助BACnet 路由器节点可以将BACnet局部网络与外部网络(如以太网、 ARCNET)实现打通。此外 BACnet 网络层定义了明确的数据包协议(NPDU)规范,并支持数据包的单播、多播、广播功能。
BACnet 应用交互
由于 BACnet 协议仅采用了简化的四层结构,因而 BACnet 应用层协议除了要考虑应用层服务之外,还需要考虑端到端的可靠传输。一个APDU(应用层数据包)包含两个部分:
- 协议控制信息(PCI),为固定头部,包含 APDU类型(服务请求/响应),报文分段重组信息。
- 用户数据,可变内容,包含每种服务请求和服务响应的具体信息
BACnet 应用层支持"请求-应答"、"请求-无应答"两种交互模式。
图-请求-应答模式
图-请求-非应答模式
对象与服务
BACnet 借鉴了面向对象的思路,以实现网络设备之间通信的语言抽象。
为进一步获得体会,我们需要理解如下几个概念:
- 对象,描述模拟输入、输出或程序模块等,BACnet 设备包含一个或多个对象,设备之间通过读取/修改对象的属性来实现互操作。
- 属性,描述对象的基础字段,例如对一个传感器输入对象来说,Present_Value(现值)就是它的一个属性。
- 服务,描述对象操作的方法,例如访问对象的某个属性,基于对象实现告警或通知等。
简言之,对象提供了对楼宇自控设备的"网络可见"部分的抽象描述,而服务提供了用于访问和操作这些信息的命令。
对所有的BACnet对象来说,都需要包含如下几个公共属性:
- 对象标志符(ObjectIdentifier),用来在设备中唯一标识对象,ObjectIdentifier 一共包含32位字符(由10位的 ObjectType和22位的InstanceNumber组成)
- 对象名称(ObjectName),BACnet设备通过广播自身包含的某个对象的对象名称,与包含相关对象的设备建立联系。
- 对象类型(ObjectType),不同类型的对象拥有一组独立的属性。
对象、服务的关系,可以用下图来描述:
图-BACnet对象、服务
【说明】
- BACnet 协议要求每个设备都要包含唯一的"设备对象",通过对其属性的读取获得设备的全部信息
- BACnet 设备包含多个模拟输入/输出对象,对象的属性(当前值)用来表示传感器/控制器的点位
- BACnet 程序通过BACnet 服务与设备进行通信,例如通过ReadProperty服务读取点位数据。
内置定义
BACnet 内置了一组标准对象和服务,随着协议的演进,这些对象/属性和服务也持续在同步更新。
当前协议中内置对象数量已超过49个,一些常见的对象如下:
BACnet 内置服务主要分为 6个类别。
- 报警与事件服务(Alarm and Event Services)提供了内部属性或状态改变的通知能力。
- 文件访问服务(File Access Services)提供读写文件的方法。
- 对象访问服务(Object Access Services)提供了读、修改和写属性值以及增删对象的方法。
- 远程设备管理服务(Remote Device Management Services)提供对BACnet设备进行维护和故障检测的工具方法。
- 虚拟终端服务(Virtual Terminal Services)提供了一种面向字符的数据双向交互机制。
- 网络安全服务(Network Security Services)提供对等实体验证、数据源验证、操作者验证和数据加密等功能。
传统 BA 系统的问题
通过前面的介绍,我们已经对 BACnet、BA系统有了一定的认识。不难发现,BACnet 仍然是以本地/局域网组网为主的一个门类协议,在BA领域中,绝大部分的设备是静态的,也就是在空间上不会经常发生移动,这本质上也贴合了楼宇建筑的特性。在今天来说,尽管 BACnet 的应用已经遍布各种大型建筑系统,但大部分的 BA 系统仍然存在不少问题,这主要体现在以下几个方面:
- 系统复杂且不易部署
首先是BA系统的种类繁多,一个BA系统可包含许多细分子系统和子设备,各子系统整合部署难度高;大型楼宇的空间设计复杂程度高,导致整体软硬件布线设计和实施都非常复杂。基于传统的方案很难实现无线化,也无法快速部署。 - 运维模式落后
传统的运维模式比较落后,大多数还是依靠人工巡检,整体效率强依赖于人力投入和专业技能。 - 运营低效,能耗浪费
传统的BA系统大部分只做到了设备的"远程控制"功能,缺乏数据的整合分析能力,无法充分挖掘数据的价值;难以实现对设备/空间能耗的分析及优化。 - 系统封闭,数据孤岛
在长期的市场竞争过程中,传统BA厂商都形成了自己的技术壁垒自成体系。子系统应用协议呈现多样化及私有化,系统数据严重孤岛化,进一步增加了系统复杂度和使用难度。
华为云 设施aPaas
设施 aPaas 架构
华为云目前推出了 设施 aPaas 服务,以华为云 IoT 设备接入、IoT边缘云引擎为底座构筑楼宇设施管理服务,牵引设备逐步上云,实现楼宇设施运营运维、智控和节能。
设施aPaas 架构:
图-设施 aPaas 解决方案
设施 aPaas 核心能力包括:
- 设施监控:通过云服务实现跨地域、跨网络、多园区的集中接入。
- 设施节能:通过AI算法、模型、专家经验实现冷站、空调末端、照明的节能。
- 智能运维:提供故障诊断专家系统;提供系统智能巡检系统。
- 设施运营:提供集中运营能力和运营支撑系统。
- 全国产化系统:构建从芯片、电子元器件、操作系统、通信协议、应用软件等全国产的设施管理系统。
此外,设施 aPaas 作为 IoT 在 BA 场景的衍生服务,提供了开箱即用的接口以简化伙伴/客户应用集成的开发成本。
实现 BACnet 设备接入
设施 aPaas 采用华为云IoTDA 提供设备接入能力,在BA 设备接入之前,需要定义好产品的物模型。平台基于IoTDA物模型描述设备具备的能力和特性。
IoTDA-物模型概念:
图-IoTDA-物模型
概念 | 说明 |
服务 | 描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,再定义每个服务具备的属性、命令以及命令的参数。 |
属性 | 描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。 |
命令 | 设备的功能模型之一,设备能够被外部调用的能力或方法。 |
事件 | 设备的功能模型之一,设备运行时的事件。事件可以被订阅和推送。 |
物模型是面向 IoT 设备的高级抽象,其中服务/属性与 BACnet 的对象属性存在映射关系。
在完成 BACnet 设备的物模型定义后,我们还需要建立 BACnet 设备的点位映射,具体如下图所示:
【说明】
- IoT 设备实例与 BACnet 设备一一对应。
- IoT 设备信息从 BACnet 设备对象中获取属性。
- IoT 设备物模型属性(动态属性)与 BACnet 输入输出值类型对象建立映射。
- 将 IoT 设备属性绑定到 BACnet 对象属性ID,映射字段包括:
对象类型:BACnet协议中定义的 Objecte_Type。
对象ID:BACnet协议中定义的 Object_Identifier。
属性ID:BACnet协议中定义的属性,一般为现值 Present_Value。
基于设施 aPaas 实现BACnet 设备接入的整体架构如下:
图-设施 aPaas-设备接入
【说明】
- 设施 aPaas 基于 IoTEdge 边缘网关的纳管管理,BACnet 数采驱动管理、BACnet 点位配置管理。
- Hlink 驱动基于边缘引擎底座实现可靠性部署、运行;该驱动承载设备点位的映射配置转换,与 Bacnet 网络打通并实现控制器/机电设备管控。
- 边缘网关与 IoTDA通过标准 MQTT 协议通信,实现属性上报/属性设置功能对接。
- 设施 aPaas 基于 IoTDA 实现物模型/设备管理、属性查询及设置功能。
小结
BACnet 是智慧楼宇领域的通用的协议标准,在当今已经被广泛采用。在产业园区上云、楼宇自控智能化的趋势背景下,基于BACnet 打造的传统 BA 系统由于其技术壁垒和封闭性,导致在云化应用开发上需要做大量的适配改造工作。设施 aPaas作为一款为智慧楼宇而生的云原生aPaas服务,提供了一套 BACnet 设备接入、管控、一体化运维的能力。设施 aPaas 开箱即用的接口服务,为客户/伙伴集成交付和业务创新提供了更低成本及更高效率的选择。
参考文档
华为云设施 aPaas 解决方案
BACnet 协议简介
https://en.wikipedia.org/wiki/BACnet
BACnet 协议概念理解