1. SCADA能源管理数据库工程全景
在能源管理系统中,SCADA(Supervisory Control and Data Acquisition,数据采集与监视控制)负责“看现场、控设备”,而能源管理数据库负责“存历史、算指标、出报表”。两者不是简单的上下级关系,而是围绕同一批测点数据形成的采集—传输—存储—计算—应用闭环。理解这个闭环,是后续所有数据库工程工作的前提。
典型项目中,现场设备层包括电表、水表、气表、温度/压力变送器、PLC 与 RTU。它们通过 Modbus TCP、IEC 104、OPC UA、BACnet 等协议把实时数据送到 SCADA 采集服务器。SCADA 侧通常维护一份实时库(Tag 表),每个测点有唯一 TagName、地址、量程、单位、采集周期。实时库解决“当前值是多少”,但它不擅长保存多年历史、做复杂聚合和跨系统共享,因此需要把数据落到能源管理数据库。
能源管理数据库一般选用时序数据库(如 InfluxDB、TDengine、TimescaleDB)或关系库+时序扩展。它的核心对象是测点(Point/Tag)、设备(Device)、区域(Area)、能源介质(电/水/气/汽)和计量周期。数据流路径可以概括为:现场仪表 → 采集网关/PLC → SCADA 实时库 → 数据转发服务 → 能源数据库 → 计算引擎 → 报表/看板/告警。其中“数据转发服务”是工程中最容易出问题的环节,需要处理断线缓存、时间戳对齐、坏点过滤和批量写入。
从工程角色看,一个能源管理数据库项目通常涉及三类人:自控工程师负责现场仪表接线、PLC 程序和 SCADA 组态,保证数据“采得到”;数据库工程师负责测点建模、表结构设计、转发服务配置和存储策略,保证数据“存得对”;能源分析师负责指标定义、报表口径和异常判断,保证数据“用得好”。三者之间的接口就是测点清单和数据库表结构,任何一方变更都必须同步。
下面以一个典型工厂项目为例导入。假设某园区有 1 号车间和 2 号车间,每个车间有 2 台冷水机组、1 块总电表、1 块总水表。SCADA 侧已组态 48 个测点,采集周期 5 秒。能源数据库需要保存 1 年历史数据,支持 15 分钟、1 小时、1 天三种聚合粒度。测点命名采用“区域_设备_介质_参数”规则,例如:
A1_Chiller01_E_Power 1号车间1号冷机电功率(kW)
A1_Chiller01_E_Energy 1号车间1号冷机电能(kWh)
A1_Main_E_Energy 1号车间总电能(kWh)
A1_Main_W_Flow 1号车间总水流量(m³/h)
A2_Chiller02_E_Power 2号车间2号冷机电功率(kW)
数据转发服务从 SCADA 实时库读取这些 Tag 的当前值,每 5 秒批量写入能源数据库的原始表。原始表只追加、不更新,字段包括 timestamp、point_id、value、quality。quality 用于标记好点、坏点、超量程、通讯中断。计算引擎再按 15 分钟窗口做平均值、最大值、积分值,写入聚合表。例如电功率积分得到电能,水流量积分得到用水量。判断数据是否可信,可以看三个信号:quality 是否为 Good、时间戳间隔是否稳定、积分值与表计读数偏差是否在 2% 以内。
实战项目导入阶段,建议先完成三件事:第一,导出 SCADA Tag 清单,整理成测点台账,至少包含 TagName、描述、单位、量程、采集周期、所属设备、能源介质;第二,确定能源数据库的测点模型和表结构,明确原始表、分钟表、小时表、日表的字段和保留周期;第三,搭建最小数据链路,用 1 个电表测点跑通“采集—转发—入库—查询”全过程,确认时间戳、数值和单位都正确,再批量接入其余测点。这样可以把风险控制在项目早期,而不是等到报表出不来才发现数据链路有问题。