光伏

光伏功率预测的气象输入详解:GHI/DNI/DHI 三分量与组件温度修正

· 南京运梦科技算法团队 · 评审 算法负责人

光伏功率预测的气象输入详解:GHI/DNI/DHI 三分量与组件温度修正 封面

做光伏功率预测,模型再花哨,喂进去的气象输入不对,结果一定是错的。很多团队上来就堆 LSTM、Transformer,却没把最基础的一件事想清楚:光伏出力的物理驱动量到底是什么、它们从哪里来、又会被哪些现场因素一层层削掉。这篇文章不讲模型结构,专门讲清楚「特征侧」——辐照三分量 GHI/DNI/DHI 的物理意义与获取、用气温做组件温度修正、把水平辐照转到组件倾斜面的转置计算、污渍与衰减对实际出力的扣减,以及最后怎么把这些量组织成一组干净的输入特征。读者对象是新能源行业的算法、工程与运营同行。

关键要点

  • 辐照必须拆成三分量:GHI = DNI × cos(θz) + DHI,三者代入若明显不闭合,说明数据源、单位或时区对齐有问题,应先查清再建模。
  • 历史回测用 ERA5(CF 字段 rsds 对应 GHI、dni、dhi),做未来预测要换预报源(德国气象局预报数据 DWD,覆盖未来约 7 天),字段口径保持一致以复用同一套管线。
  • 组件温度修正不能直接用气温:晶硅功率温度系数约 −0.35%/℃ 到 −0.45%/℃,需用 Faiman 或 NOCT 模型结合 tas、倾斜面辐照与风速 ws 协同估算。
  • 水平辐照要经转置(transposition)算到组件倾斜面 POA,散射分量推荐 Hay-Davies 或 Perez 各向异性模型,并叠加按反照率 albedo 的地面反射分量。
  • 污渍(5%–15%)与逐年衰减(约 0.5%–0.8%/年)等现实折扣不在气象输入里,须显式建模,否则系数失真、跨季节泛化崩坏。

一、为什么辐照要拆成三分量

到达地表的太阳辐射不是一个标量,而是由几何关系决定的三个分量。GHI(Global Horizontal Irradiance,地表水平总辐射) 是水平面单位面积接收到的全部短波辐射,是最常被引用、也最容易拿到的量。但 GHI 本身不能直接决定一块倾斜安装的组件接收多少能量,因为它把方向信息抹平了。

真正承载方向信息的是另外两个分量。DNI(Direct Normal Irradiance,法向直接辐射) 是在垂直于太阳光线的平面上测到的直射分量,它对组件朝向、跟踪系统和遮挡极其敏感——一片云飘过,DNI 可能瞬间掉到接近零。DHI(Diffuse Horizontal Irradiance,散射水平辐射) 是经大气分子、气溶胶和云层散射后从天空各方向漫射下来的部分,阴天时它几乎是出力的全部来源。

三者满足一个基本几何恒等式:GHI = DNI × cos(θz) + DHI,其中 θz 是太阳天顶角。这个关系是后面所有转置计算的出发点,也是数据质检的第一道闸门:如果你拿到的三分量代入后明显不闭合(偏差远超 cos(θz) 的数值误差),说明数据源、单位或时区对齐出了问题,必须先查清楚再建模。

二、从 ERA5 拿 rsds / dni / dhi

历史回测与资源评估阶段,最常用的辐照来源是 ERA5——ECMWF 的第五代再分析数据集,全球覆盖、逐时、时序连续,对没有现场观测的站点尤其有价值。在 CF(Climate and Forecast)命名约定下,对应字段是:rsds 即地表下行短波辐射,承担 GHI 的角色;dni 为法向直接辐射;dhi 为散射水平辐射。三者在同一套 CF 命名下对齐,跨数据源迁移时口径不会乱。

用 ERA5 做辐照有三个工程上必须知道的权衡。第一,时间标签的累积口径。再分析的辐射量本质是通量的时段累积或平均,逐时序列代表的是该小时的平均功率密度(W·m⁻²),不是瞬时快照;做日内 15 分钟级建模时,需要明确这是小时平均,避免和高频实测对齐时引入系统性相位错位。第二,云的平滑效应。再分析对积云这类小尺度、快变过程刻画偏平滑,晴空段精度不错,但对快速穿云的强波动会低估方差,DNI 受影响最大。第三,做预报要换数据源。ERA5 是历史再分析,只覆盖到过去;做未来出力预测时应使用预报数据源(德国气象局预报数据 DWD,覆盖未来约 7 天),两者字段口径保持一致,便于把历史训练与在线预测的特征拼到同一套管线里。

三、用 tas 做组件温度修正

辐照决定能进来多少光,温度决定有多少光能变成电。晶硅组件的功率温度系数通常约 −0.35%/℃ 到 −0.45%/℃,意味着组件温度每升高 1℃,输出功率下降约零点三到零点四个百分点。夏季正午组件背板温度常比环境气温高出 25℃ 以上,对应的出力扣减可达百分之十量级——这是绝不能省的修正项。

工程上不要直接用气温当组件温度。气温(CF 字段 tas,即 2 米气温)只是输入之一,组件温度还取决于辐照强度与散热条件。一个被广泛采用的经验式是 Faiman 模型:T_组件 = T_气温 + G_POA /(U0 + U1 × 风速),其中 G_POA 是组件倾斜面接收的辐照,U0、U1 是与组件安装方式相关的散热系数(典型量级 U0≈25、U1≈6.8)。另一个更轻量的是 NOCT 模型:T_组件 = T_气温 +(NOCT − 20)/800 × G_POA。两者都说明同一件事——组件温度修正需要 tas、倾斜面辐照、风速三者协同,单靠气温会系统性偏低。因此特征侧除了 tas,还应拉取派生风速 ws(或用 uas、vas 自行合成),用于散热项。

四、倾角转置:从水平面到组件面

电站组件几乎都是倾斜安装的,而再分析与多数气象产品给的是水平面分量。把 GHI/DNI/DHI 转换成组件倾斜面总辐照(POA,Plane of Array)的过程叫转置(transposition)

转置分三块叠加。直射分量按几何投影 DNI × cos(AOI),AOI 是太阳光线与组件法线的夹角,由组件倾角、方位角和太阳位置算出。散射分量用天空散射模型,简单的各向同性模型只用倾角做几何因子,但低估了晴空时地平圈与日周的方向性,工程上更推荐 Hay-DaviesPerez 这类各向异性模型,后者在晴空高 DNI 条件下精度明显更好。地面反射分量按地表反照率 albedo 估算,雪地或浅色地面反照率可达 0.6 以上,对双面组件尤其不能忽略。转置环节是把「天上的辐照」对齐到「组件实际接收」的关键,做错了,后面温度修正再准也是错上加错。

五、污渍与衰减:现实世界的折扣

物理链路算出的是理论可发电量,真正上网的功率还要被一系列现场因素打折。污渍损失(soiling) 指灰尘、沙尘、鸟粪、积雪覆盖组件造成的遮挡,在西北干旱多尘地区,长时间不清洗的污渍损失可达 5%–15%,且呈缓慢累积、雨后骤降的锯齿形态。长期衰减(degradation) 是组件逐年老化,晶硅典型衰减率约每年 0.5%–0.8%,首年还有额外的光致衰减(LID)。此外还有限电弃光、检修停机、逆变器与线路损耗、阴影遮挡等。

这些因素的共同点是:它们不在气象输入里,却实实在在压低了实测功率。建模时如果不显式处理,机器学习模型会把污渍和限电的影响硬塞进气象特征的权重里,导致系数失真、跨季节泛化崩坏。务实做法是把可观测的损失(限电、检修)作为掩码剔除或单独建特征,把缓变项(污渍、衰减)用随时间变化的折减系数显式表达,让气象特征只解释它该解释的那部分方差。

六、怎么组织输入特征

把上面的物理量落成一张可训练的特征表,建议按四组组织:辐照组(rsds、dni、dhi 以及由转置算出的 POA)、温度组(tas 与派生的组件温度)、散热与风组(ws,必要时叠加 uas、vas、hurs)、几何与日历组(太阳天顶角、方位角、AOI、晴空指数 Kt,以及月份与小时的周期编码)。其中晴空指数 Kt = GHI / 大气层顶辐照,能把季节与昼长的强趋势归一化,是非常有用的衍生特征。所有字段务必统一时区与时间步长,缺测按物理含义补零(夜间辐照为 0)而非线性插值,否则模型会被夜间的插值噪声带偏。

七、在运梦气象 API 上手

运梦气象 API(南京运梦科技)同时提供历史再分析 ERA5(dataSourceId="era5")与未来预报德国气象局预报数据 DWD(dataSourceId="ger",覆盖未来约 7 天)。下面用同步下载接口 downloadSync 一次性拉取光伏建模所需的辐照三分量、气温与风速。接口返回统一 JSON envelope,用 resp.json() 解析后从 data 里按字段名取等长数组,各数组与 timeList 一一对应。

import requests

url = "https://console.yun-meng.top/api/energy-weather/search/weather/action/downloadSync"
headers = {
    "Authorization": "Bearer sk-your-api-key",
    "Content-Type": "application/json",
}
payload = {
    "dataSourceId": "era5",                 # 历史回测用 ERA5;预报改 "ger"
    "lat": 32.03253,
    "lon": 117.35184,
    "stime": "2022-06-01 00:00",            # 格式 yyyy-MM-dd HH:mm
    "etime": "2022-06-30 23:00",
    "timezone": "8",                         # 必填,东八区时区偏移
    "fields": ["rsds", "dni", "dhi", "tas", "ws"],
}

resp = requests.post(url, headers=headers, json=payload)
result = resp.json()

if result["success"]:
    data = result["data"]
    t   = data["timeList"]
    ghi = data["rsds"]                       # GHI(地表水平总辐射)
    dni = data["dni"]
    dhi = data["dhi"]
    tas = data["tas"]
    ws  = data["ws"]
    print(f"共 {len(t)} 条逐时数据,首条 {t[0]} GHI={ghi[0]} W/m²")
    # 下一步:转置到 POA → Faiman 估组件温度 → 物理或 ML 模型出功率
else:
    print("请求失败:", result["msg"], result.get("errorCode"))

拿到三分量后的标准流程是:先用三分量恒等式做质检,再选 Perez 或 Hay-Davies 转置到 POA,接着用 tas 加 ws 经 Faiman 估算组件温度,最后交给物理模型(如 pvlib 思路)或机器学习模型出功率,并叠加污渍与衰减折减。历史用 era5 训练、预报用 ger 推理时,只需切换 dataSourceId,字段名与解析逻辑完全复用。

常见问题

GHI、DNI、DHI 三者有什么区别?

GHI 是水平面接收的全部短波辐射,DNI 是垂直于太阳光线平面上的直射分量,DHI 是经大气散射后从天空各方向漫射下来的部分。三者满足几何恒等式 GHI = DNI × cos(θz) + DHI,其中 θz 是太阳天顶角。

光伏功率预测可以直接用气温当组件温度吗?

不可以。组件温度还取决于辐照强度与散热条件,直接用气温会系统性偏低。工程上用 Faiman 模型(T_组件 = T_气温 + G_POA /(U0 + U1 × 风速))或 NOCT 模型,结合 tas、倾斜面辐照与风速一起估算。

历史回测和未来预测应该分别用什么气象数据源?

历史回测与资源评估用 ERA5(dataSourceId="era5"),它是 ECMWF 的再分析数据,只覆盖到过去。做未来出力预测要换成预报数据源德国气象局预报数据 DWD(dataSourceId="ger",覆盖未来约 7 天),两者字段口径一致,便于把历史训练与在线预测拼到同一套管线。

为什么水平辐照不能直接喂给模型,还要做转置?

电站组件几乎都是倾斜安装的,而再分析给的是水平面分量。需要把 GHI/DNI/DHI 转置到组件倾斜面总辐照 POA:直射按 DNI × cos(AOI) 投影,散射推荐 Hay-Davies 或 Perez 各向异性模型,地面反射按反照率 albedo 估算。

污渍和组件衰减会怎样影响建模?

它们不在气象输入里却实实在在压低实测功率。若不显式处理,模型会把污渍和限电的影响硬塞进气象特征权重,导致系数失真、跨季节泛化崩坏。务实做法是把可观测损失作掩码剔除,把缓变项用随时间变化的折减系数显式表达。

结语

光伏功率预测的精度天花板,很大程度上由气象输入的质量与组织方式决定,而不只由模型决定。把 GHI/DNI/DHI 三分量的物理意义吃透、用 tas 配合风速做对组件温度修正、用各向异性模型把水平辐照转置到组件面,再把污渍与衰减这些现实折扣显式建模,特征侧就立住了。模型,是站在这套扎实输入之上才谈得上调优的。字段口径与单位以数据要素说明为准,接入细节见 API 参考文档。

参考与延伸阅读

  • Hersbach, H., Bell, B., Berrisford, P., et al. (2020). The ERA5 global reanalysis. Quarterly Journal of the Royal Meteorological Society, 146(730), 1999–2049. https://doi.org/10.1002/qj.3803
  • Perez, R., Ineichen, P., Seals, R., Michalsky, J., & Stewart, R. (1990). Modeling daylight availability and irradiance components from direct and global irradiance. Solar Energy, 44(5), 271–289. https://doi.org/10.1016/0038-092X(90)90055-H
  • Faiman, D. (2008). Assessing the outdoor operating temperature of photovoltaic modules. Progress in Photovoltaics: Research and Applications, 16(4), 307–315. https://doi.org/10.1002/pip.813
  • IEC 61724-1:2021, Photovoltaic system performance – Part 1: Monitoring (Edition 2.0). International Electrotechnical Commission. https://webstore.iec.ch/en/publication/65561