一、风场现状诊断:数据采集与清洗实战

各位同行,咱们直接进入正题。

做风场发电量提升,第一步不是调算法,也不是换叶片。第一步是——搞清楚你手头的数据到底能不能用。

我见过太多项目,上来就搞AI模型,结果跑出来的结果连自己都不信。为什么?因为数据本身就是脏的。你想想看,一个风速传感器偏了5%,你后面再怎么优化,都是白搭。

所以这一章,咱们就聊聊数据采集和清洗的那些坑。我把自己踩过的雷,一个一个说给你听。

1.1 数据采集:别让源头就错了

数据采集听起来简单,不就是从SCADA系统里把数据拉出来吗?

嗯,理论上是的。但实际操作中,问题多得很。

采集哪些数据?

我个人习惯,先把这几类数据列清楚:

  • 气象数据:风速、风向、温度、气压、湿度。注意,风速要机舱风速和测风塔风速都拿。
  • 机组状态数据:有功功率、桨距角、发电机转速、转矩、变桨角度。
  • 故障与报警数据:停机时间、故障代码、复位次数。
  • 电网数据:电压、频率、功率因数。

我在项目中遇到过一件事:某个风场一直说发电量低,我一看数据,发现他们只采集了机舱风速,没采集测风塔数据。结果机舱风速受叶片尾流影响,偏差很大。后来补上测风塔数据,问题一下子就清楚了。

核心原则:数据源要冗余,不要只依赖单一传感器。

1.2 数据清洗:80%的时间花在这里

说实话,数据清洗是这活儿里最枯燥、但最重要的部分。我经常跟团队说:你花一天做模型,得花四天洗数据。

常见的数据脏问题:

问题类型 表现 原因
缺失值 时间戳跳变、字段为空 传感器故障、通信中断
异常值 风速突然跳到100m/s 传感器结冰、雷击干扰
重复值 同一时刻多条记录 SCADA缓存重复上报
时间不同步 机舱和测风塔时间差几分钟 设备时钟未校准

为什么会这样?说白了,风场环境太恶劣了。零下30度,传感器结冰是常事。雷雨天气,通信中断也是家常便饭。

清洗流程,我一般这么干:

  1. 时间对齐:把所有数据按统一时间戳重采样,我习惯用10分钟平均。
  2. 剔除停机数据:机组故障、检修、限电期间的数据,统统去掉。这些数据会污染模型。
  3. 异常值过滤:风速超过切出风速的、功率为负的、桨距角超出范围的,标记并剔除。
  4. 缺失值处理:短时间缺失(<30分钟)用插值;长时间缺失直接丢弃该时段。
  5. 一致性检查:比如风速和功率的关系,如果风速10m/s但功率为0,那肯定有问题。

小技巧:我习惯在清洗前先画一个风速-功率散点图。一眼就能看出哪些点是异常的。比看表格快多了。

1.3 代码实战:一个清洗示例

光说不练假把式。我给你看一段我常用的清洗代码。这是Python的,用pandas处理。

import pandas as pd
import numpy as np

# 读取SCADA数据
df = pd.read_csv('wind_farm_data.csv', parse_dates=['timestamp'])

# 1. 时间对齐:重采样到10分钟
df.set_index('timestamp', inplace=True)
df = df.resample('10T').mean()

# 2. 剔除停机数据(功率小于0或风速小于切入风速)
df = df[(df['active_power'] > 0) & (df['wind_speed'] >= 3.0)]

# 3. 异常值过滤:风速超过25m/s的剔除
df = df[df['wind_speed'] <= 25]

# 4. 缺失值处理:连续缺失不超过3个点,用线性插值
df = df.interpolate(method='linear', limit=3)

# 5. 一致性检查:风速-功率关系
# 如果风速>5且功率<10,标记为异常
df.loc[(df['wind_speed'] > 5) & (df['active_power'] < 10), 'flag'] = 1

print(f"清洗后数据量:{len(df)} 条")

这段代码看着简单,但实际项目中,我往往要迭代好几轮。每次清洗完,我都会再画一次散点图,看看还有没有漏网之鱼。

注意:千万不要用全局阈值一刀切。不同风场、不同机型的参数差异很大。我曾经在一个山地风场用平原风场的阈值,结果把正常数据全剔了。嗯,那叫一个尴尬。

1.4 数据质量评估:你得有个标准

数据洗完了,怎么知道洗得干不干净?

我一般用这几个指标:

  • 数据完整率:实际数据量 / 理论数据量。低于90%就要警惕。
  • 异常值占比:被标记为异常的数据比例。超过5%说明传感器可能有问题。
  • 风速-功率相关性:计算皮尔逊相关系数,正常应该在0.85以上。

我记得有一次,一个风场的数据完整率只有72%。我让现场兄弟去查,发现是通信光纤被老鼠咬断了。修好之后,完整率直接到98%。

所以你看,数据清洗不只是技术活,有时候还得懂点现场运维。

1.5 知识体系总览

下面这张图,是我自己总结的数据诊断流程。你照着这个走,基本不会漏掉关键步骤。

风场数据诊断与清洗流程 1. 数据采集 2. 时间对齐 3. 剔除停机数据 4. 异常值过滤 5. 数据质量评估 SCADA/测风塔 统一10分钟 故障/检修/限电 传感器/通信异常 完整率/相关性 不合格则返回重新清洗

这张图里,最容易被忽略的是那个反馈循环。很多人洗一遍就觉得行了,其实数据质量不达标,得回头重新检查采集源或者调整阈值。

我的习惯:每次清洗完,我都会把清洗前后的数据对比图存下来。这样后面模型效果不好时,可以快速排查是不是数据的问题。

好了,数据采集和清洗这部分,咱们就聊到这儿。记住一句话:数据质量决定了模型的天花板。你后面算法再牛,数据不行,一切都是空中楼阁。

下一章,咱们会聊怎么用清洗好的数据做风功率曲线拟合。到时候见。


专注资料整理