第三章 数据采集与预处理:从传感器到可用的能量数据
说实话,做能量调度这么多年,我最大的体会就是——数据质量决定调度上限。你算法再牛,模型再准,进来的数据是脏的,那输出就是一堆废纸。这一章,咱们就聊聊数据是怎么从现场设备一路走到数据库的。
3.1 传感器数据采集:能量系统的“神经末梢”
传感器是啥?说白了就是能量系统的眼睛和耳朵。电流、电压、温度、压力、流量……这些物理量都得靠它转成电信号,我们才能读懂。
常见的能量传感器类型:
- 电流互感器(CT):测大电流用的,我见过不少项目把CT变比选错,结果数据差了好几个数量级。
- 电压互感器(PT):配合CT算功率,精度等级一般选0.5级或0.2级。
- 温度传感器(PT100/热电偶):光伏板背板温度、变压器油温,这些都得盯着。
- 流量计:燃气、蒸汽、冷却水,流量数据对热平衡计算至关重要。
- 气象传感器:光照强度、风速、环境温度,光伏和风电调度离不开它。
3.2 SCADA系统:数据的中枢神经
SCADA,全称是监控与数据采集系统。它干的事很简单:把分散的传感器数据收上来,集中展示,再下发控制指令。
SCADA的核心架构:
- RTU(远程终端单元):部署在现场,负责采集传感器信号,做简单的预处理,然后上传。
- 通信网络:光纤、4G/5G、LoRa、WiFi……选哪种取决于现场条件和实时性要求。
- 主站系统:服务器集群,跑着SCADA软件,负责数据汇聚、存储、展示。
- HMI(人机界面):给运维人员看的,实时曲线、报警列表、设备状态。
我习惯把SCADA比作人体的神经系统。传感器是神经末梢,RTU是神经节,主站就是大脑。任何一个环节断了,数据就传不上来。
3.3 数据清洗与异常值处理:把垃圾数据挡在门外
数据采上来了,但别高兴太早。现场环境恶劣,传感器漂移、通信丢包、设备故障……各种问题都会导致数据异常。我见过最离谱的——某个光伏电站的辐照度数据,半夜两点显示1200 W/m²,这太阳是打西边出来了?
常见的异常数据类型:
| 异常类型 | 典型表现 | 常见原因 |
|---|---|---|
| 缺失值 | 数据点为空或NaN | 通信中断、传感器故障 |
| 跳变值 | 瞬间变化超过物理极限 | 电磁干扰、AD转换错误 |
| 死值 | 长时间保持不变 | 传感器卡死、通信冻结 |
| 越限值 | 超出合理范围 | 传感器漂移、量程设置错误 |
我常用的清洗策略:
- 阈值过滤:设定物理上下限,超出直接剔除。比如电压不可能为负,电流不可能超过断路器额定值。
- 变化率检测:相邻两个数据点的变化率超过阈值,标记为可疑。比如1秒内功率从100kW跳到1000kW,这肯定有问题。
- 3σ原则:假设数据服从正态分布,超出均值±3倍标准差的数据视为异常。这个方法对平稳工况很有效。
- 插值填补:对于缺失值,用线性插值或样条插值补上。注意,连续缺失超过5个点就别补了,直接标记为无效时段。
3.4 数据存储方案:选对工具,事半功倍
数据洗干净了,得找个地方存起来。能量调度系统的数据有几个特点:数据量大(一个中型光伏电站每天几千万条)、写入频率高(秒级甚至毫秒级)、查询模式固定(按时间范围聚合)。
我推荐的存储方案:
- 时序数据库(TSDB):首选。InfluxDB、TimescaleDB、TDengine都行。专门为时间序列数据优化,写入快,聚合查询也快。
- 关系型数据库:存元数据用。设备信息、测点配置、用户权限,这些用PostgreSQL或MySQL。
- 消息队列:数据入口用Kafka或RabbitMQ。先缓冲,再写入,防止数据洪峰把数据库冲垮。
嗯,这里要注意——千万别把所有数据都往一个库里塞。我见过有人把实时数据和历史数据混着存,结果查询历史趋势时把实时写入拖慢了,调度界面直接卡死。
一个典型的数据流架构:
传感器 → RTU → SCADA主站 → Kafka → 数据清洗服务 → InfluxDB(实时库)
↓
Hadoop/Parquet(历史归档)
实时库只保留最近7天的数据,用于调度决策。超过7天的数据压缩后归档到Hadoop,需要时再调出来做离线分析。
3.5 本章知识体系总览
下面这张图,是我梳理的数据采集与预处理全流程。从传感器到最终可用的数据,每一步都有坑,每一步也都有解法。
你看,从传感器到最终可用的数据,中间要经过采集、传输、清洗、存储四个环节。每个环节都有它的技术选型和注意事项。我个人觉得,数据清洗是最容易被忽视的环节——很多人觉得数据采上来就能用,结果模型跑出来一塌糊涂,回头查才发现是数据本身有问题。
好了,这一章的内容就到这儿。数据准备好了,下一章咱们就可以聊聊怎么用这些数据做能量预测了。
公众号:蓝海资料掘金营,微信deep3321