2. 风场数据采集与治理:SCADA系统、激光雷达测风、数据清洗与标准化
各位工程师,大家好。这一章我们来聊聊风场的数据底座——数据采集与治理。说白了,就是搞清楚“数据从哪来、怎么来、来了之后怎么处理才能用”。
我见过不少项目,仿真模型建得漂漂亮亮,结果一跑起来跟实际风场差了十万八千里。为什么?数据源头就没整明白。你想想看,数字孪生讲究的是“以虚映实”,如果喂进去的数据都是脏的、乱的、有偏差的,那孪生出来的东西能准吗?
所以,这一章我们重点啃三块硬骨头:SCADA系统、激光雷达测风,以及数据清洗与标准化。这三者构成了风场数字孪生的数据供应链。
2.1 SCADA系统:风场的“神经末梢”
SCADA,全称是监控与数据采集系统。你可以把它理解成风场的神经系统。每台风机上几十上百个传感器,把温度、振动、转速、功率、桨距角、偏航位置……一股脑儿地往SCADA服务器上报。
我个人习惯把SCADA数据分成三类:
- 运行数据:有功功率、无功功率、发电机转速、电网频率等。这些是秒级或毫秒级的数据,用来做实时监控和短期预测。
- 状态数据:风机运行/停机/故障/维护状态。这些是事件触发的,比如“报故障了,停机!”
- 环境数据:机舱风速仪测的风速风向、环境温度、气压等。注意,这里的风速是机舱风速,不是自由流风速,后面会讲区别。
SCADA的数据量有多大?一个100MW的风场,50台2MW风机,一天就能产生几个GB的数据。嗯,这里要注意,数据量大不是问题,问题是数据质量。
2.2 激光雷达测风:给风场装上“千里眼”
SCADA的机舱风速仪有个硬伤——它测的是风机转起来之后的气流,已经被叶片搅乱了。说白了,它测的不是“风来了多少”,而是“风被风机干扰后还剩多少”。
这时候,激光雷达(LiDAR)就派上用场了。它用激光脉冲测量大气中的气溶胶粒子运动,直接测出自由流风速。我建议在风场的前沿、后排、以及复杂地形区域,至少各部署一台激光雷达。
激光雷达能给我们带来什么?
- 提前感知:可以测出前方200米到500米的风速风向,相当于给风机一个“预判”能力。偏航系统可以提前动作,减少载荷。
- 风廓线测量:不同高度的风速是不一样的。激光雷达可以测出从地面到轮毂高度以上几十米的风速垂直分布。这对评估风切变、湍流强度至关重要。
- 功率曲线验证:用激光雷达测的自由流风速,去对比SCADA测的发电功率,才能得到真实的功率曲线。机舱风速仪测的功率曲线,往往偏“好看”,但实际没那么好。
2.3 数据清洗:把“垃圾”筛出去
数据采集回来了,但里面什么妖魔鬼怪都有。我总结了一下,常见的数据“脏”类型有这几种:
| 脏数据类型 | 典型表现 | 产生原因 |
|---|---|---|
| 缺失值 | 某段时间风速为NaN或0 | 传感器故障、通信中断 |
| 异常值 | 风速突然跳到100m/s | 传感器受干扰、雷击 |
| 重复值 | 同一时间戳出现多条记录 | 数据重传、缓存机制bug |
| 死值 | 连续几小时数值不变 | 传感器卡死、结冰 |
| 时序错乱 | 时间戳不连续或倒序 | 时钟同步失败 |
数据清洗的流程,我一般按这个顺序来:
- 去重:按时间戳+风机ID去重,保留第一条或最后一条。
- 缺失值处理:短时间缺失(<5分钟)用线性插值;长时间缺失直接剔除该时段。
- 异常值过滤:用3σ原则或箱线图法,把超出物理极限的值干掉。比如风速超过35m/s(切出风速以上)的,直接标记为无效。
- 死值检测:如果某个变量连续N个点数值完全一样,且N>阈值(比如60个点),判定为死值,整段剔除。
- 时间戳对齐:把所有数据重采样到统一的频率(比如10分钟平均)。
# 一个简单的Python清洗示例(伪代码)
import pandas as pd
import numpy as np
def clean_scada_data(df):
# 1. 去重
df = df.drop_duplicates(subset=['timestamp', 'turbine_id'])
# 2. 异常值过滤(风速)
df = df[(df['wind_speed'] >= 0) & (df['wind_speed'] <= 35)]
# 3. 死值检测(功率)
df['power_diff'] = df['active_power'].diff().abs()
df = df[df['power_diff'] > 0.01] # 功率变化小于0.01kW视为死值
# 4. 缺失值插值(短时间)
df = df.set_index('timestamp').resample('10T').mean()
df = df.interpolate(method='linear', limit=5) # 最多插5个点
return df.reset_index()
2.4 数据标准化:让不同数据源“说同一种语言”
数据洗干净了,但还没完。SCADA的数据格式、激光雷达的数据格式、气象站的数据格式……五花八门。有的风速单位是m/s,有的是km/h;有的时间戳是UTC,有的是本地时间;有的功率单位是kW,有的是MW。
标准化,就是把这些数据统一成一个“通用格式”。我建议遵循以下规则:
- 时间标准:统一使用UTC时间,精确到秒。本地时间作为辅助字段保留。
- 物理单位:风速用m/s,风向用度(0-360°),功率用kW,温度用℃。别搞混。
- 命名规范:变量名用英文小写+下划线。比如
wind_speed_hub、active_power、pitch_angle。 - 数据频率:统一为10分钟平均值。这是风能行业的通用标准,也是IEC 61400-12规定的功率曲线测试标准。
2.5 知识体系总览
下面这张图,是我梳理的本章知识体系。你可以把它当成一个“数据流地图”,从采集到治理,每一步都环环相扣。
这张图把整个流程串起来了。从左侧的三个数据源出发,经过中间的清洗和标准化,最终汇入右侧的数字孪生标准数据集。每一步都有坑,每一步也都有技巧。
好了,这一章的内容就到这里。数据是数字孪生的血液,把数据治理好,后面的仿真和调试才能事半功倍。希望各位在实际项目中,能把这些方法用起来,少走一些我曾经走过的弯路。