第二章 系统架构设计:整体架构分层

好,咱们进入第二章。这一章我打算聊聊系统架构。

很多人一上来就撸代码,结果做到一半发现数据上不来,或者设备接不进去。说白了,就是没想清楚架构。我个人习惯,做任何能源管理平台之前,先把架构图画清楚。你想想看,楼宇里几百个传感器、几十台空调、一堆电表水表,没有清晰的层次,后期维护就是噩梦。

2.1 整体架构分层

我把整个平台分成四层:感知层、网络层、平台层、应用层。每一层各司其职,互不干扰。

层级 核心职责 典型组件
感知层 数据采集与执行 传感器、电表、水表、执行器、PLC
网络层 数据传输与协议转换 网关、路由器、Modbus、BACnet、MQTT
平台层 数据存储与计算 时序数据库、消息队列、规则引擎
应用层 业务展示与决策 大屏、报表、告警、AI优化

2.2 感知层

这是最底层,也是我最头疼的一层。为什么?因为设备太杂了。

我在项目中遇到过,同一个项目里,有BACnet的空调控制器,有Modbus RTU的电表,还有4-20mA模拟量的温度传感器。这些设备的数据格式、通信速率、甚至供电方式都不一样。

核心原则:感知层只做两件事——采集和执行。采集温度、湿度、电流、功率这些数据;执行开关阀门、调节频率这些指令。别在这一层做复杂计算,算力不够,也不稳定。

避坑指南:我曾经在一个项目中,把数据清洗逻辑写在了传感器端的单片机里。结果现场温度一波动,单片机死机了,整个楼的数据都断了。后来我学乖了,感知层只负责原始数据上报,脏活累活交给上层。

2.3 网络层

这一层是桥梁。说白了,就是把感知层那些乱七八糟的协议,统一转换成平台能理解的语言。

我建议网络层重点关注三个点:

  • 协议转换:Modbus转MQTT,BACnet转HTTP,这是基本功。网关设备要选支持多协议的,别一个协议配一个网关,机柜都塞不下。
  • 数据缓存:网络可能会断。网关本地要能缓存至少24小时的数据,等网络恢复后再补传。我见过太多项目因为网络抖动丢数据,最后能耗分析全是错的。
  • 安全加密:楼宇数据虽然不像金融数据那么敏感,但也不能裸奔。TLS加密是底线,别用明文传输。

小技巧:选网关的时候,看看它支不支持远程升级。现场几百个网关,一个个去刷固件,你会崩溃的。

2.4 平台层

这是整个系统的大脑。数据到了这一层,才算真正有了价值。

平台层我一般拆成三个模块:

  1. 数据接入模块:负责接收网络层上来的数据。这里要用消息队列,比如Kafka或者RabbitMQ。为什么?因为设备上报频率不一样,有的每秒一次,有的五分钟一次。消息队列能削峰填谷,保证系统不被打爆。
  2. 数据存储模块:楼宇数据是典型的时序数据。别用MySQL硬扛,用InfluxDB或TimescaleDB。我见过有人用MySQL存能耗数据,半年后查询一次要等30秒,那体验太差了。
  3. 规则引擎模块:比如温度超过28度就开空调,功率超过阈值就告警。规则引擎要支持热更新,改规则不用重启系统。
// 一个简单的规则引擎示例(伪代码)
if (temperature > 28 && hvac_status == 'off') {
    sendCommand('hvac_01', 'on');
    createAlert('温度过高,已自动开启空调');
}

2.5 应用层

这一层是给用户看的。老板看大屏,工程师看报表,运维看告警。

应用层我强调一个原则:按角色分视图。别把所有功能堆在一个页面上,那叫大杂烩,不叫平台。

  • 管理层:看总能耗、趋势图、同比环比。他们关心的是钱。
  • 运维层:看设备状态、告警列表、实时数据。他们关心的是故障。
  • 分析层:看AI优化建议、能效报告。他们关心的是改进空间。

2.6 技术选型原则

技术选型这事儿,我踩过不少坑。总结下来就三条:

原则 说明 我的经验
成熟优先 选社区活跃、文档齐全的技术栈 别追新框架,楼宇项目周期长,你走了别人得能接手
解耦设计 各层之间通过API通信,不直接依赖 我曾经把感知层和平台层写死在一起,换了个网关,代码全废了
可扩展性 预留20%的性能余量 楼宇设备只会越来越多,别把路走窄了

2.7 系统边界定义

很多项目做砸了,不是因为技术不行,而是边界没划清楚。

我一般这样定义边界:

  • 平台内部:从数据接入到应用展示,这是我们的地盘。
  • 平台外部:设备硬件、网络线路、第三方系统(比如物业的OA系统),这些我们只对接,不控制。
  • 接口规范:对外提供RESTful API,数据格式统一用JSON。别搞什么XML、SOAP,那都是过去式了。

注意:边界定义一定要写进合同里。我曾经吃过亏,客户说「你们平台要能控制所有设备」,结果发现有些设备是20年前的,连通信接口都没有。最后扯皮扯了三个月。

嗯,这一章就到这里。架构设计是地基,地基稳了,后面盖楼才踏实。下一章咱们聊聊数据采集的具体实现,包括怎么对接Modbus设备、怎么处理脏数据。到时候我会拿一个真实项目里的案例来讲,保证干货满满。


公众号:蓝海资料掘金营,微信deep3321