3. 数据采集:传感器数据、SCADA系统与气象站数据获取方法

做发电量预测,第一步不是调模型,而是搞数据。我见过太多人一上来就调参,结果数据质量一塌糊涂,模型再牛也白搭。今天咱们就聊聊数据采集这件事——传感器、SCADA系统、气象站,这三块怎么拿数据、怎么避坑。

3.1 传感器数据采集:最基础的“触角”

传感器是发电系统的“神经末梢”。说白了,就是靠它们感知物理世界的状态。光伏板上的温度传感器、风机上的振动传感器、逆变器里的电流传感器……这些都是最原始的数据源。

常见的传感器类型:

  • 温度传感器:测量环境温度、组件温度、逆变器温度
  • 辐照度传感器:测量太阳辐射强度(光伏必备)
  • 风速/风向传感器:测量风速和风向(风电必备)
  • 电流/电压传感器:监测电气参数
  • 振动传感器:监测设备运行状态
我的经验:传感器采集频率很关键。我习惯把高频数据(秒级)先缓存到本地,再按分钟聚合上传。直接传秒级数据,网络带宽和存储都扛不住。

采集协议选择:

协议 适用场景 传输距离 实时性
Modbus RTU 近距离、有线连接 几百米
Modbus TCP 远距离、网络环境 不限(依赖网络)
OPC UA 跨平台、安全性要求高 不限 中高
MQTT 物联网、低带宽场景 不限 低(依赖网络)
注意:我曾经遇到过传感器漂移的问题——温度传感器用了半年,偏差到了5度以上。所以一定要定期校准,至少每季度一次。

3.2 SCADA系统数据获取:电站的“大脑”

SCADA系统,全称是监控与数据采集系统。它把各个传感器的数据汇总起来,再加上控制功能。你想想看,一个风电场几十台风机,每台风机几十个传感器,没有SCADA系统根本管不过来。

SCADA系统能提供什么数据?

  • 运行状态数据:启停状态、运行模式、故障代码
  • 电气参数:有功功率、无功功率、电压、电流、频率
  • 环境参数:温度、湿度、风速(部分SCADA集成气象站)
  • 累计数据:发电量、运行时长、启停次数

获取SCADA数据的方式:

  1. 直接数据库读取:很多SCADA系统使用SQL Server或MySQL,可以直接连数据库取数。但要注意权限问题。
  2. OPC接口:工业自动化领域的标准接口,支持实时数据读取。我建议优先用OPC UA,安全性更好。
  3. API接口:部分新系统提供RESTful API,用HTTP请求就能拿数据,比较方便。
  4. 文件导出:最原始的方式,SCADA系统导出CSV或Excel文件。适合数据量不大的场景。
核心要点:SCADA数据的时间戳一定要统一。我遇到过不同设备时间不同步的情况,导致数据分析时对不上号。建议用NTP服务器统一对时。

3.3 气象站数据获取:预测的“外部变量”

发电量预测离不开气象数据。光伏要看辐照度、温度、云量;风电要看风速、风向、空气密度。气象数据来源主要有三种:

1. 现场气象站

在电站现场安装气象站,数据最准确。但成本高,维护麻烦。我建议至少安装一套完整的气象站,包括辐照度计、风速仪、温湿度计、气压计。

2. 数值天气预报(NWP)

从气象局或商业气象服务商获取。比如ECMWF、GFS、WRF模型的数据。这些数据覆盖范围广,但分辨率有限。我习惯用NWP数据做中长期预测(未来3-7天)。

3. 卫星遥感数据

通过卫星云图反演辐照度等参数。适合没有现场气象站的场景。但精度不如现场测量,而且有延迟。

气象数据获取示例(Python):

import requests
import pandas as pd

# 从气象API获取数据(示例使用OpenWeatherMap)
api_key = "your_api_key"
lat, lon = 40.7128, -74.0060  # 电站经纬度

url = f"http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={api_key}"
response = requests.get(url)
data = response.json()

# 提取关键气象参数
weather_data = {
    'temperature': data['main']['temp'] - 273.15,  # 开尔文转摄氏度
    'humidity': data['main']['humidity'],
    'pressure': data['main']['pressure'],
    'wind_speed': data['wind']['speed'],
    'wind_direction': data['wind']['deg'],
    'cloud_cover': data['clouds']['all']
}

df = pd.DataFrame([weather_data])
print(df)
避坑指南:我曾经直接用NWP的原始数据做预测,结果误差很大。后来发现NWP数据有系统偏差,需要做偏差校正。简单的方法是用历史数据做线性回归校正。

3.4 数据采集的整体架构

下面这张图展示了数据采集的整体流程。从传感器到SCADA,再到数据平台,最后到预测模型。每一步都有需要注意的地方。

发电量预测数据采集架构 传感器层 温度、辐照度、风速、电流 SCADA系统 数据汇聚、监控、控制 气象数据源 现场站、NWP、卫星 数据平台(数据清洗、存储、管理) 时序数据库、数据湖、ETL 预测模型(ML/DL) 特征工程、模型训练、预测输出 数据流方向:传感器 → SCADA → 数据平台 → 预测模型

3.5 数据质量检查清单

数据拿到手,别急着用。先做一轮质量检查。我总结了一个检查清单:

  • 完整性检查:有没有缺失值?时间序列是否连续?
  • 一致性检查:不同数据源的数据是否对得上?比如SCADA的功率数据和电表的累计电量是否一致。
  • 异常值检查:有没有明显不合理的数据?比如风速100m/s,温度-100°C。
  • 时间戳检查:时间是否对齐?有没有时区问题?
  • 单位检查:单位是否统一?比如温度是摄氏度还是华氏度?
重要提醒:数据质量直接影响预测精度。我做过一个项目,因为辐照度传感器被鸟粪遮挡,导致数据偏低,模型预测误差大了30%。所以数据清洗这一步,千万别省。

好了,数据采集这块就聊到这儿。记住一句话:数据质量决定模型上限。下一章咱们聊聊数据预处理,怎么把原始数据变成模型能吃的“干净数据”。


专注资料整理