当 BACnet 遇上 IoT,你将体验到不一样的大楼
本文分享自华为云社区《当 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 解决方案:https://marketplace.huaweicloud.com/contents/3d45bf15-b29b-4786-9279-6d12aab10201#productid=OFFI880405640067829760
BACnet 协议简介:https://en.wikipedia.org/wiki/BACnet
BACnet 协议概念理解:https://kargs.net/BACnet/BACnet_Basics.pdf
当 BACnet 遇上 IoT,你将体验到不一样的大楼的更多相关文章
- 微服务中台落地 中台误区 当中台遇上DDD,我们该如何设计微服务
小结: 1. 微服务中台不是 /1堆砌技术组件就是中台 /2拥有服务治理就是中台 /3增加部分业务功能就是中台 /4Cloud Native 就是中台 https://mp.weixin.qq.com ...
- 【云享专刊】开源遇上华为云,OCP架构变身“云原生框架”
摘要:华为云DTSE团队出品云原生改造指南,助力轻松实践OCP上云. 本文分享自华为云社区<[云享专刊]开源遇上华为云,OCP架构变身"云原生框架">,作者:华为云社区 ...
- MVC遇上bootstrap后的ajax表单模型验证
MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...
- 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)
邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...
- 敏捷遇上UML—软创基地马年大会(广州站 2014-4-19)
我们将在广州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战技巧. 时间:2 ...
- 敏捷遇上UML——软创基地马年大会(深圳站 2014-3-15)
邀请函: 尊敬的阁下: 我们将在深圳为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战 ...
- 初识genymotion安装遇上的VirtualBox问题
想必做过Android开发的都讨厌那慢如蜗牛的 eclipse原生Android模拟器吧! 光是启动这个模拟器都得花上两三分钟,慢慢的用起来手机来调试,但那毕竟不是长久之计,也确实不方便,后来知道了g ...
- SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败解决方案
SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败的问题,可作如下尝试: 更新失败后,在windows的[事件查看器→应用程序]中找到来源为MsiInstaller,事件ID为1 ...
- 当创业遇上O2O,新一批死亡名单,看完震惊了!
当创业遇上O2O,故事就开始了,总投入1.6亿.半年开7家便利店.会员猛增至10万……2015半年过去后,很多故事在后面变成了一场创业“事故”,是模式错误还是烧钱过度?这些项目的失败能给国内创业者带来 ...
- LoadRunner - 当DiscuzNT遇上了Loadrunner(下) (转发)
当DiscuzNT遇上了Loadrunner(下) 在之前的两篇文章中,基本上介绍了如何录制脚本和生成并发用户,同时还对测试报告中的几个图表做了简单的说明.今天这篇文章做为这个系列的最后一篇,将会介绍 ...
随机推荐
- 【v2v迁移】Xen2kvm 迁移-linux篇
迁移环境: 源平台:华为FusionComputeV100R006C10SPC101 目标平台:基于KVM虚拟化的云平台,本文以原生的libvirt为例 虚拟机:centos 7.6 具体操作步骤: ...
- 自然数的拆分问题(lgP2404)
dfs.又调了一个小时,窝果然菜 需要传递的变量分别为目前搜索的数字:目前所有选中数字的和:目前所选数字个数. 见注释. #include<bits/stdc++.h> using nam ...
- mac os 升级到13后,系统免密失败
# sudo vim /etc/ssh/ssh_config # 添加以下内容 PubkeyAcceptedKeyTypes +ssh-rsa
- 文心一言 VS 讯飞星火 VS chatgpt (132)-- 算法导论11.2 4题
四.用go语言,说明在散列表内部,如何通过将所有未占用的槽位链接成一个自由链表,来分配和释放元素所占的存储空间.假定一个槽位可以存储一个标志.一个元素加上一个或两个指针.所有的字典和自由链表操作均应具 ...
- 题解 CF1264D1
前言 数学符号约定: \(\dbinom{n}{m}\):表示 \(n\) 选 \(m\) . 如非特殊说明,将会按照上述约定书写符号. 题目分析: 考虑题目的问题弱一点的版本,假设此时我们的括号序列 ...
- Python 如何实现合并 PDF 文件?
在处理多个 PDF 文档时,频繁地打开关闭文件会严重影响效率.因此,对于一大堆内容相关的 PDF 文件,我们可以先将这些 PDF 文件合并起来再操作,从而提高工作效率.比如,在传送大量的 PDF 文档 ...
- 2022.7.13 tongyf 讲课纪要
前言 这个笔记记晚了,主要是都在跟 \(LCT\) 进行殊死搏斗,所以博客这方面就挂了很久. tongyf 学长当年是拿到省一之后省选炸了,之后暴切高考.ORZ%%% 这节课讲的是线性dp和背包dp, ...
- OpenAI 董事会宫斗始作俑者?一窥伊尔亚·苏茨克维内心世界
OpenAI 董事会闹剧应该是暂告一个段落了,Sam Altman和Greg Brockman等一众高管均已加入微软,还有员工写联名信逼宫董事会的戏码,关注度已经降下来了. 但是,这场宫斗闹剧的中心人 ...
- pygame播放视频并实现音视频同步
一.前言 在我接触pygame时最新的pygame已经不支持movie模块,这就导致在pygame播放视频变成一个问题,网上搜了下解决方案有两个: 一是使用opencv播放视频,再结合pygame.m ...
- 🔥🔥Java开发者的Python快速进修指南:面向对象--高级篇
首先,让我来介绍一下今天的主题.今天我们将讨论封装.反射以及单例模式.除此之外,我们不再深入其他内容.关于封装功能,Python与Java大致相同,但写法略有不同,因为Python没有修饰符.而对于反 ...