光伏短临(超短期光伏功率预测)这两年只要做新能源功率预测的,基本都在啃这块硬骨头。电网考核越来越细,现货市场又要求前瞻性和准确性兼顾,单纯靠数值天气预报(NWP)粗放地“估一个数”已经行不通了。我自己的感受是,短临预报想提准,不能只盯着最终的功率曲线骂模型不行,得把“云量 → 辐照 → 功率”这条链路拆开,看看误差到底是从哪个环节漏进来的。这篇文章我就拿自己做过的项目经验,完整捋一遍这条链路的验收思路和实操方法。
这套链路验收的思路,适合三类人参考:一是新能源场站做功率预测运维的工程师,天天被考核指标压着但不知道从哪下手;二是做预测算法或产品的研发人员,想在短临方向上找明确的优化点;三是刚接触功率预测、想快速理解业务逻辑的学生或转行朋友。我会尽量把每个环节的原理、参数、坑都说得具体点,不讲虚的。
1. 光伏短临链路拆解:先搞清楚误差从哪来
我带过好几个场站的预测项目,接手时第一件事从来不急着调模型,而是先把“云量 → 辐照 → 功率”这条链路的每个环节单独拎出来做误差体检。为什么这么做?因为短临预测是一条串联链路:上游云量预测不准,下游辐照算出来必然偏;辐照偏差再叠加温度、组件状态等因素,传导到功率端可能还会被非线性放大。如果不做链路拆分,你看到最终功率误差大了,根本不知道是云量的问题、辐照转换的问题还是功率模型的问题。
1.1 链路的地基:云量、辐照、功率各自扮演什么角色
先明确各环节的定义,这决定了后续验收指标怎么设计。
云量预测是链路的最上游。它回答的问题是“未来几分钟到几小时,天空中有多少云、云有多厚、大致位置在哪”。云量预测的数据来源常见的有三类:数值天气预报(NWP)输出的总云量/低云量产品、地基云图设备拍摄后外推的结果、卫星云图反演与移动矢量外推的组合结果。三者时间分辨率和空间分辨率差异很大,NWP能看未来几小时但更新慢,卫星云图覆盖广但临近时刻精度一般,地基云图精度高但只能覆盖场站周边几十公里,各有各的局限。
辐照预测是链路的中游。它回答的是“到达光伏组件表面的总辐照度是多少”。辐照预测通常分成两步走:先算“晴空辐照”,也就是无云天气下理论上的辐照基准值;再叠加云的衰减系数,得到“实际辐照”。如果把链路比作做饭,晴空辐照就是“完美食材的基准菜谱”,云衰减就是“实际火候的修正”。
功率预测是链路的终端。它要回答的非常明确:“并网点未来能发多少千瓦”。这一步牵扯到组件温度、逆变器效率、组件衰减、限电状态、遮挡情况等一系列场站自身特性,是误差最容易隐藏的地方。
1.2 为什么链路验收比直接对比功率更有效
很多人习惯把预测功率和实际功率一比,算个MAPE就完事。这个做法不是说错,而是它没有归因能力。假设某天中午预测功率比实际低20%,你拿这个结果去复盘,能知道是云量报少了、辐照衰减系数给大了,还是组件温度修正没做吗?不能。链路验收的思路是给每个环节各设一道“关卡”,用实测数据逐级对照。云量错了先找云量的原因,辐照偏了再查辐照转换逻辑,最后到功率端还有偏差才去查场站特性。
这样拆开还有个额外好处:数据质量能顺带校验。比如辐照计自身故障、数据采集器漂移、组件背后温度传感器异常,这些在整条链路做拆分比对时会显露出不合理的跳变,能及早暴露场站端的数据问题。我自己做过的几个项目里,至少有三分之一的问题不是预测模型本身,而是数据源坏了或者标定偏了。
1.3 链路误差的传导规律:误差会放大,也会相互抵消
在做链路验收之前,必须对误差在链路里的传导规律有数。大体上有三点:
第一,上游相对误差可能被非线性放大。云量误差从“偏少10%”变成“辐照误差30%”,这种情况在天气不稳定、云层厚薄不均时特别常见,本质上是云的消光作用和辐射传输的非线性导致的。
第二,上下游误差有时会“对冲”。比如云量报多了但气溶胶浓度报少了,两者的辐照误差方向相反,功率端看到的结果反而还行。这种情况下不做链路拆分,你根本发现不了两个环节都有问题,隐患会一直埋着。
第三,时问错位是隐形的杀手。云量的时间分辨率和辐照预测的时间分辨率对不齐时,哪怕预测的“型”都对,时间上挪了15分钟,误差也会非常吓人。这类误差在链路验收里要专门做“时序对齐检查”。
2. 云量预测提准:短临的上限由云量决定
我接触过的短临项目里,至少七成以上的辐照误差,追根溯源都能追到云量预测头上。云量定不准,下游做得再精细也很难力挽狂澜。这一节重点讲云量预测的实操细节。
2.1 抛弃单一数据源,做NWP和卫星云图的多源融合
早些年的预测系统大多只依赖NWP的云量产品。问题是NWP更新频次低,一般3小时或6小时更新一次,遇到快速发展的对流云团,几小时内云量变化非常大,NWP根本追不上。纯卫星云图外推也存在局限,超过2小时外推误差急剧增大,而且对云层厚度的判断能力弱。
我推荐的方案是“NWP粗骨架 + 卫星/地基云图细修正”。具体做法是:用NWP云量作为基准趋势预测,再用最新一帧卫星云图或地基云图反演当前云量分布,通过光流法或交叉相关法计算云的移动矢量,外推未来15分钟到4小时的云量修正量。两套结果做加权融合,融合权重根据时间尺度自动调整:越临近(0~1小时)越信外推,越往后越信NWP。
做融合时还有个容易踩的坑:空间匹配。NWP格点和卫星云图格点分辨率不同,直接做像素级叠加之前要先重采样,我用过双线性插值也用过保守重映射,实测下来保守重映射更适合云量这种物理量在格点间跳变明显的情况,双线性会把云的锐利边缘抹平,反而不利于确定“云边界在哪”。
2.2 分类型云量比总云量更有用:低云、中云、高云要区别对待
很多预测系统只用“总云量”一个变量去算辐照。实际上云的消光作用跟云的类型、厚度、高度关系巨大:低云(层积云、积云)厚度大、含水量高,对辐照的削减极其凶狠;高云(卷云)虽然覆盖面积大,但薄的时候对辐照影响相对有限。
在做短临提准时,我强烈建议把云量预测从“总云量”升级为“云量分型/分高度层”输出。NWP的云量产品通常自带低中高层的分层云量,卫星云图反演也能给出云顶高度和云光学厚度的估计值。把这些分型数据拿来做后续辐照衰减计算,会比用一个总量参数精细得多。
实操中,我给这套逻辑建了一个经验查询表:
| 云类型 | 典型云底高度 | 太阳辐照衰减经验系数(晴空辐照的比例) | 对短临预测的影响特点 |
|---|---|---|---|
| 卷云(高云) | 6000m以上 | 0.8~0.95 | 辐照波动缓,误差传导慢 |
| 高层云 | 3000~6000m | 0.4~0.7 | 影响较稳定,时间延迟明显 |
| 层积云/积云 | 500~2500m | 0.1~0.4 | 波动剧烈,瞬时辐照变化大,最难预测 |
| 浓积云/积雨云 | 500~2000m | 0.05~0.2 | 极端波动,可能伴随快速风场变化 |
这个表是工程经验的粗估值,大家用的时候要根据本地气候特点修正。但核心思路很明确:云的类型信息一定要进到辐照衰减模型里,否则就是拿平均代替极端,误差根本控不住。
2.3 云量预测的验收指标:不只是平均误差
云量这层验收,我习惯同时看三个指标:平均绝对误差(MAE)、命中率(云量级别判断对的比例)和时序相关延迟误差。前两个好理解,第三个要专门解释一下:把预测云量时间序列和实测云量序列做互相关分析,找最大相关对应的滞后时间。如果滞后超过一个预测步长,说明外推速度给快了或给慢了,要调光流法的平滑参数或NWP的时问插值策略。
另外特别提醒:云量实测真值本身精度就有限,卫星反演和地基观测各有误差。验收时要选一个相对可靠的参考基准,别拿两个都不靠谱的数据互相“验证”,否则会陷入越调越歪的循环。
3. 从云量到辐照:中间物理过程吃透才能减少非线性误差
云量预测是输入,但真正的辐照计算结果取决于怎么把云量翻译成衰减系数。这里的水有多深,很多人低估了。
3.1 晴空辐照模型是基准线:选型和参数修正都不能偷懒
晴空辐照是“没有云时到达地面的太阳辐射量”,它由太阳高度角、日地距离、大气衰减等因素共同决定。常用的晴空模型有Haurwitz模型、Iqbal模型、Bird模型,以及业内用得较多的Rest2和Inichen等。
实操上,我不建议直接套默认参数。因为晴空辐照高度依赖当地大气条件,尤其是气溶胶光学厚度(AOD)、水汽含量和臭氧含量。同样是晴空,山区和工业城市周边的辐照能差出5%~10%。如果条件允许,用场站所在位置的长期实测辐照数据反推一个本地化的“等效大气透明度系数”,对晴空模型做标定,效果比硬套模型默认值好很多。
这里我踩过一个大坑:早期直接用模型默认参数,晴空时预测辐照长期偏高,导致晴天的功率预测也偏高。后来用场站辐照计的晴天历史数据反算,发现本地气溶胶影响比默认参数假设的严重得多。做了本地化修正后,晴天辐照MAE降了将近四成,这属于典型的“参数标定价值”。
3.2 云量衰减系数:线性模型 vs 物理半经验模型
从云量到辐照衰减,最简单的做法是用一个线性映射:辐照 = 晴空辐照 × (1 - α × 云量),α取某个常数。这种做法在云量平缓时有参考价值,但在云量剧烈变化时误差会很大,因为云的消光不是线性的。
更好的做法是用半经验物理模型。核心思路是区分直射辐射(DNI)和散射辐射(DHI)。云的存在对直射的遮挡几乎是一票否决式的,一旦太阳被云挡住,DNI会掉到极低水平;但散射辐射的响应要温和一些,翻过云来散射还可能增强。所以辐照预测不能只看“总辐照”,要把DNI和DHI分开算,再按组件倾角合成斜面总辐照。
实际计算时,可以做这样的简化框架:
- 根据云量/云类型估算覆盖因子;
- DNI_{实际} = DNI_{晴空} × (1 - 遮挡系数),遮挡系数对厚云取0.85~0.95,对薄高云取0.15~0.3;
- DHI_{实际} = DHI_{晴空} × (1 + 云增量系数),云增量系数取决于云的类型和太阳相对位置;
- 最后用几何角度关系把DNI和DHI投影到组件斜面上,得到最终的斜面总辐照。
这个框架里,遮挡系数和云增量系数是最需要本地化的参数。我会用场站历史数据反演,让预测的斜面辐照和实测辐照的残差最小化。这个过程看着繁琐,但做完之后辐照精度能明显上一个台阶。
3.3 别忽视辐照计自身的问题:你的真值可能不干净
辐照预测模型做得再精细,如果用来验收的实测辐照数据本身不准,那一切都是白搭。场站辐照计常见的问题有:玻璃罩脏了导致测量偏低、水平仪偏了导致余弦响应失常、数据采集器采样故障产生台阶状跳变。
链路验收时,我通常会对辐照计数据做三道体检:一是同周边气象站辐照数据做相关性检查,如果相关系数骤降,就要怀疑辐照计状态;二是画太阳高度角与辐照晴空指数的散点图,如果高太阳高度角时晴空指数明显低于理论范围,多半是辐照计脏污或衰减;三是检查辐照日累计量和理论日累计量的比值是否稳定,偏离太大要人工排查。
4. 从辐照到功率:最后一公里藏着不少“隐形扣分项”
前面辐照算准了,功率也不一定准。场站端一堆工程细节,都会把辐照到功率的映射拉偏。这一节把这些细节拆开讲。
4.1 组件温度修正:温度一高,功率肉眼可见往下掉
光伏组件的输出功率和温度强相关,组件的标称功率一般是在25℃电池温度下测的。实际运行时,组件温度能轻松上到50℃~70℃,功率会因此下降8%~15%。这个损失不修正,辐照再准也没用。
温度修正公式基本是线性的:P_{tp} = P_{stc} × [1 - γ × (T_cell - 25)],其中γ是组件功率温度系数,一般晶硅组件在-0.35%/℃~-0.45%/℃之间。关键是怎么获得T_cell。场站有背板温度传感器的话,直接用它做修正;没有的话,可以用环境温度和辐照度通过NOCT(额定工作温度)公式估算。
我遇到过的情况是:一个场站装了背板温度传感器,但传感器贴的位置不对,处于组件边框阴影处,测出的温度比实际低了十几度。导致高温时段功率预测系统性偏高。排查过程花了很久,后来把传感器读数跟红外测温枪人工测的数据做了对比才定位。所以温度传感器和辐照计一样,要纳入定期校验清单。
4.2 逆变器效率和限电状态:预测模型里最容易忽略的“软钉子”
从直流侧组件功率到交流侧并网功率,中间隔着逆变器的转换效率。逆变器效率不是恒定值,低负载时效率低、中高负载效率高,典型曲线是类似“倒抛物线”的形状。如果功率预测模型只用固定效率系数,早晚高峰和阴天低功率时段会出现明显偏差。
另外还要关注限电状态。场站被调度限电时,实际并网功率远远低于理论可发功率,如果预测模型不知道限电指令,直接拿天气条件算理论可发功率,那对比起来必然惨不忍睹。合理的做法是:功率预测模型分两路输出,一路输出“理论可发功率”,另一路叠加限电逻辑输出“预测实际功率”。考核时用理论可发功率和实际功率分别评估,避免被限电情况混淆了模型的真实精度。
4.3 组件衰减和灰尘遮挡:长期标定不可少
组件每年的衰减在0.5%~1%之间,运行五六年之后,整体功率输出就会比铭牌低几个百分点。不做校正的话,预测模型会持续偏高。校正方法不复杂:用场站历史数据回归出“等效衰减率”,定期更新功率模型里的容量参数即可。
灰尘遮挡的问题更隐蔽。特别是西北地区,沙尘暴之后组件表面脏污严重,辐照在组件前就损失了一部分。我见过一个场站,一次严重沙尘后功率预测连续五天明显偏高,排查到最后是现场清洗组件的时间比我预想的晚了两天。这种问题不是模型能解决的,必须配合场站运维记录来调整模型里的“ dirty loss 系数”。
5. 链路验收的方法论:不只看最终误差,要逐层拆解对照
这一节是全文的核心操作部分。我会把链路验收的完整流程、指标体系和实操方法梳理出来,照着做基本就能在项目里落地。
5.1 建立逐级对照的验收指标体系
链路验收需要一套分层的指标体系。我的习惯是分三层:
第一层:云量预测评价指标
- 云量MAE:预测云量和参考云量的平均绝对偏差;
- 云量分级命中率:把云量划分成晴(0~2成)、少云(2~4成)、多云(4~8成)、阴(8成以上)四档,看预测档位和实测档位的一致率;
- 时序延迟误差:对预测和实测云量序列做互相关分析,找到最佳相关延迟时间和最大相关系数。
第二层:辐照预测评价指标
- 辐照MAE、RMSE:衡量总体误差水平;
- 晴空指数误差分布:按晴空指数分箱统计误差,看晴空和阴天分别的偏差规律;
- 突变捕捉能力:统计实际辐照变化率超过某个阈值(比如120W/m²/min)的时刻,看预测能否在相近时刻出现同样的下降趋势。
第三层:功率预测评价指标
- 功率MAE、RMSE、MAPE;
- 不同天气类型下的分项误差(晴天、多云、阴雨);
- 不同时段分项误差(早晚、中午、凌晨)。尤其注意早晩辐照爬坡段的误差,那往往是考核惩罚最重的地方。
这样分层的指标体系,最有价值的点在于权责分明:哪个环节出了问题,哪个环节的数据就出现异常波动,可以直接定位到源头。
5.2 链路误差传导的逐级对照诊断法
具体做诊断的时候,我一般按下面这个流程走:
第一步,采集同一时段的云量、辐照、功率三组数据,包括预测值和实测值,时间对齐到同一分辨率(比如5分钟或15分钟)。时间对齐这一步别偷懒,时序错位的诊断结果会完全失真。
第二步,画出三条误差曲线:云量预测误差随时间变化曲线、辐照预测误差随时间变化曲线、功率预测误差随时间变化曲线。把三条曲线叠放在同一张图里。
第三步,做“误差放大倍率”分析。方法很简单:计算辐照误差相对于云量误差的变化敏感度,以及功率误差相对于辐照误差的变化敏感度。公式可以用相邻时刻的差分近似,例如:
ΔG / ΔC:辐照变化量 ÷ 云量变化量(看辐照对云量的敏感度); ΔP / ΔG:功率变化量 ÷ 辐照变化量(看功率对辐照的敏感度)。
这两个比值如果偏离理论区间,说明链路里某些环节的传递逻辑出了问题。
第四步,针对每个环节单独调试。云量环节误差大,就调外推参数、融合权重或NWP选择;辐照环节误差大,就查晴空模型标定和衰减系数的合理性;功率环节误差大,就查温度修正、逆变器效率曲线和容量衰减。
这个方法看起来很朴素,但实测非常实用。我有一次做项目,功率误差异常大,逐级一看,辐照误差正常,云量误差正常,唯独跑到功率端突然炸了。最后查出来是场站一块逆变器连续几天降额运行,功率预测模型还在按满发效率算。这就是链路验收才发现得了的问题。
5.3 关键场景的专项验收:爬坡、多云切换、早晚时段
短临预测最考验精度的是三类场景:辐照快速爬坡(比如早上的云散)、云量快速切换(晴-阴-晴交替)以及傍晚辐照骤降。这三类场景下,即便平均误差不错,瞬时误差也可能让考核吃大亏。
针对爬坡场景,我建议单独做“爬坡事件检测和定位”。方法是:从实测功率序列里识别出爬坡事件(比如15分钟内功率变化超过装机容量的30%),然后检查对应时段的预测功率是否也在相近时刻出现了相应变化。如果预测曲线变化滞后超过1个采样间隔,说明时间分辨率或云外推速度偏慢;如果变化幅度明显不足,说明衰减系数不敏感。
针对多云切换场景,重点看预测辐照的极值是否和实测辐照的极值对得上。我通常在验收表里专门统计“预测辐照波动周期”和“实测辐照波动周期”的平均偏差,用来确认云图外推的速度是否设置合理。
用表格来归纳这三类场景的验收要点:
| 场景 | 验收指标 | 常见问题 | 对应排查方向 |
|---|---|---|---|
| 辐照爬坡 | 爬坡事件预测命中率、滞后时间 | 预测变化量平缓、滞后1~2个时间步 | 衰减系数不敏感、云外推速度偏慢 |
| 多云切换 | 辐照波动周期匹配度、极值偏差 | 预测波动太平滑、幅值失真 | 融合权重不合理、云量分档过于粗糙 |
| 傍晚辐照骤降 | 功率降坡时间偏差、最低点误差 | 预测功率提前或滞后下降 | 太阳高度角计算误差、时间分辨率不足 |
5.4 持续验收和模型迭代的节奏
链路验收不是一次性工作,应该形成持续机制。我建议场站按月或按季度做一次系统性的链路复盘,中间穿插按周的快速体检。月度复盘侧重全链路参数是否漂移(比如组件衰减有没有加速、传感器有没有老化、逆变器效率曲线是否变化),周度体检则更聚焦预测误差的短期波动。
复盘时一定要把天气分类考虑进去。单个月的MAPE可能受异常天气干扰很大,按晴、多云、阴、雨(雪)分类统计误差异常值,才能判断模型是否在某一类天气条件下系统性失效。很多模型整体评估还行,就是雷暴天、沙尘天爆表,这种隐患不做天气分类复盘是看不见的。
6. 常见问题与排查技巧实录
这一节整理我在链路验收中实际遇到的高频问题,以问答形式给出排查思路和解决方向,很多结论是依赖踩坑换来的。
6.1 预测辐照总比实测高,阴天尤其明显
出现这种情况第一反应是检查晴空模型是否过度乐观——也就是晴空辐照基准给高了。再往下查,可能是气溶胶参数、水汽参数的本地化没做,或者云量到衰减系数的映射过于乐观。还有一个容易忽视的原因:辐照计本身是水平面总辐照,而预测输出的是斜面总辐照,两者混用来验收比较,会形成系统性偏差。要确认参考序列到底是水平面还是斜面,再做对比。
6.2 云量预测挺准,但辐照预测误差还是大
如果云量误差很小,辐照误差却大,问题大概率出在“云的微观属性”上。云的光学厚度、液水含量远比“几成云”更关键。同样是8成云,薄卷云和厚积雨云的辐照衰减天差地别。此时要对云量预测结果做“垂直结构/云类型”的补充,或者引入卫星云图的光学厚度反演产品,对衰减系数做动态修正。
6.3 晴空时段功率预测也偏高或偏低
晴空时段没有云干扰,辐照预测相对稳定,问题多半出在场站端:要么是组件温度修正没做或做偏了,要么是组件容量衰减未校正,要么是逆变器效率假设不合理。优先排查温度传感器、清洁度和容量参数。
6.4 预测曲线整体趋势对,但时间上总滞后
“趋势对、时间滞后”几乎都指向数据链路的时序处理问题。可能的原因有几个:用于预测的实测数据更新本身有延迟,比如辐照计数据五分钟前的数据才上送到预测系统;云图外推的光流法平滑参数用了默认值导致运动矢量速度被低估;NWP数据的时间分辨率过低造成时间插值阶梯状。排查时把预测值和实测值的互相关函数画出来,滞后几个时间步一目了然。
6.5 多云天反复跳变时功率预测出现“冲头”
“冲头”指预测曲线出现尖峰或突跳,但实测平稳。这通常是云量外推结果在不同时刻之间不连续导致的。外推算法每一帧独立计算时,云运动矢量在帧间可能突变;融合NWP和外推结果时,如果权重切换不平滑,也会导致预测云量跳变。解决思路是做时序平滑,或者用带时间一致性的数据同化方法,减少帧间跳变。
6.6 验收数据总是对不齐,怀疑数据链路有问题
这种情况要从数据源头排查:检查采集器时钟是否同步,检查数据从采集器到预测系统的传输延迟是否稳定,检查预测系统内部是否做了正确的时区转换。我见过一个项目,场站数据服务器时间与预测服务器差了8分钟,所有序列对不齐,排查了大半天才发现是时钟同步服务挂了。建议场站把NTP时钟同步纳入日常运维巡检。
6.7 换季之后模型突然变差
季节变化导致太阳高度角、气溶胶、水汽、植被反照率都在变,模型参数若不随季节自适应,误差必然增大。做法是把关键参数做好“按月标定”或“按季节标定”,每次换季前后滚动更新一次参数集。功率预测模型如果用了机器学习,还要注意训练集的时间分布——不要一个模型吃一年四季,训练样本要按季节加权或分季节建模。
最后再分享一个小技巧:链路验收这件事,不要只做“事后归因”,最好在预测系统里做在线监测,在云量、辐照、功率三个环节的预测值和实测值之间实时计算误差,超阈值就告警。这样能第一时间发现数据源或模型参数漂移,而不是等到月底考核出了大问题才回头翻历史数据。我自己在实际项目里把这套监测逻辑做完之后,预测系统的稳定性上了一个大台阶,很多问题在影响考核之前就被拦下来了。