2. 系统总体架构:分层架构设计

大家好,我是老张。今天咱们聊聊储能监控平台最核心的东西——分层架构。

说实话,我见过不少新手一上来就急着写代码,结果写到一半发现数据不知道往哪存,告警不知道往哪发。嗯,这就是典型的「没想清楚架构就动手」。我个人习惯,做任何系统之前,先把分层画清楚。

2.1 为什么一定要分层?

你想想看,一个储能电站里有多少设备?BMS、PCS、温控、电表、消防……每个设备都有自己的协议、自己的数据格式。如果所有代码都揉在一起,那维护起来就是一场噩梦。

分层架构的核心思想:每一层只干一件事,层与层之间通过标准接口通信。这样改一层不影响其他层。

我踩过的坑: 曾经有个项目,开发同学把协议解析和界面展示写在一个函数里。后来换了电表型号,改了一个字段,结果界面崩了三天。从那以后,我强制团队必须分层。

2.2 四层架构详解

储能监控平台一般分四层:感知层、网络层、平台层、应用层。我画了张图,你看一眼就明白了。

应用层 实时监控 | 告警管理 | 数据分析 | 报表统计 | 远程控制 人机交互界面、移动端APP、大屏展示 平台层 数据存储(时序库+关系库) | 数据处理(清洗/聚合/计算) 告警引擎 | 规则引擎 | 设备管理 | 用户权限 核心业务逻辑、数据持久化、消息队列 网络层 TCP/IP | MQTT | Modbus TCP | 4G/5G | 以太网 数据通信、协议转换、网关管理 感知层 BMS(电池管理系统) | PCS(储能变流器) | 温控系统 电表 | 消防传感器 | 环境监测设备 数据采集源头、硬件设备层 数据流 ↑ 数据流 ↑ 数据流 ↑ 控制流 ↓ 控制流 ↓ 控制流 ↓

2.3 感知层:数据的源头

感知层就是所有硬件设备的集合。说白了,就是那些装在储能柜里、电池架上的各种传感器和控制器。

  • BMS(电池管理系统):采集每节电池的电压、温度、电流,计算SOC、SOH。这是最核心的数据源。
  • PCS(储能变流器):控制充放电功率,采集交流侧电压、频率、功率因数。
  • 温控系统:空调、风扇、液冷机组,采集环境温度、湿度。
  • 电表:计量总用电量、发电量,用于收益核算。
  • 消防传感器:烟雾、可燃气体、温度异常检测。

我的经验: 感知层最容易出问题的是「数据精度」。有一次现场反馈电压数据跳变,查了两天发现是BMS的采样线接触不良。所以,我建议在感知层就做一次简单的数据有效性校验,比如电压不能超过额定值的120%。

2.4 网络层:数据的血管

网络层负责把感知层的数据传到平台层。这里要考虑几个现实问题:

  1. 通信协议不统一:BMS用Modbus RTU,PCS用Modbus TCP,电表用DL/T645。网关要做协议转换。
  2. 网络环境复杂:有的电站在偏远山区,只能用4G;有的在工业园区,有专网。
  3. 数据可靠性:网络断连时,数据不能丢。我习惯在网关上加本地缓存,网络恢复后补传。
协议类型 适用场景 传输速率 可靠性
Modbus RTU 串口设备(BMS、电表) 低速(9600-115200bps) 高(有线)
Modbus TCP 以太网设备(PCS、空调) 中速 高(有线)
MQTT 物联网设备、云平台 中速 中(依赖网络)
4G/5G 远程站点、移动场景 高速 低(信号影响)

注意: 网络层最容易忽略的是「心跳机制」。我曾经遇到一个项目,网关死机了,平台端还以为设备正常运行。后来我强制要求:所有设备必须每5秒发一次心跳,平台端超过15秒没收到就告警。

2.5 平台层:系统的大脑

平台层是整套系统的核心。所有数据在这里汇聚、处理、存储。我个人习惯把平台层拆成几个模块:

  • 数据接入模块:接收网络层传来的数据,做协议解析、数据清洗。比如把Modbus的原始字节流转成JSON。
  • 数据存储模块:时序数据(电压、电流、温度)存到时序数据库(比如InfluxDB、TDengine);设备信息、用户信息、告警记录存到关系数据库(MySQL、PostgreSQL)。
  • 告警引擎:根据预设规则判断是否触发告警。比如「电池温度超过55℃」或者「SOC低于10%」。
  • 规则引擎:处理联动逻辑。比如「当温度超过45℃时,自动降低充电功率」。
  • 设备管理:管理所有设备的注册、配置、固件升级。

核心要点: 平台层一定要做好「数据分级」。实时数据(秒级)走内存队列,历史数据(分钟级)写时序库,报表数据(小时/天级)走离线计算。别把所有数据都往一个管道里塞,否则系统迟早会崩。

2.6 应用层:用户看到的世界

应用层就是用户直接操作的界面。包括:

  • 实时监控大屏:展示电站总功率、SOC、充放电状态、关键告警。
  • 告警管理:告警列表、告警确认、告警历史查询。
  • 数据分析:历史曲线、效率分析、收益统计。
  • 远程控制:手动启停、功率设定、模式切换。
  • 移动端APP:方便运维人员随时随地查看。

应用层设计时,我特别强调「用户体验」。你想想看,运维人员可能同时管理好几个电站,如果界面操作复杂,他根本不会用。所以,关键信息要一目了然,操作步骤要尽量少。

2.7 数据流与业务流

说完分层,咱们看看数据是怎么在层之间流动的。

数据流(上行方向):

感知层(BMS采集电压25.2V) 
  → 网络层(Modbus RTU转MQTT) 
  → 平台层(解析、存储、判断是否告警) 
  → 应用层(大屏显示25.2V,无告警)

业务流(下行方向):

应用层(运维人员点击「启动放电」) 
  → 平台层(校验权限、生成控制指令) 
  → 网络层(MQTT转Modbus TCP) 
  → 感知层(PCS执行放电指令)

避坑指南: 我曾经遇到一个情况,运维人员点了「停止」按钮,但指令在网络层丢了,PCS没收到。结果电池过放,差点出事故。从那以后,我要求所有下行指令必须有「确认回执」——设备执行完指令后,必须回复「已执行」,平台层没收到回执就重发。

2.8 小结

分层架构不是什么高深的理论,它就是一套「分而治之」的思路。每一层做好自己的事,别越界。感知层只管采集,别管存储;平台层只管处理,别管界面。这样系统才容易扩展、容易维护。

嗯,这一章就到这里。记住这张四层图,后面每一章都会用到它。


专注资料整理