光伏组件温度损失与辐照-功率建模实战

做光伏功率预测和资源评估,很多团队把全部精力压在辐照上,却对组件温度一笔带过。这是个代价不小的省略。同样的辐照,夏季正午一块晒到 60℃ 以上的组件,相对铭牌效率可能已经掉了十几个百分点;如果建模时仍按 25℃ 标准测试条件折算,p50 出力会被系统性高估,叠加到月度电量和电力市场申报里就是真金白银的偏差。组件温度不是修正项里的边角料,而是辐照-功率链路中物理上无法绕过的一环。这篇文章把温度损失的来龙去脉、两套经过同行验证的组件温度模型,以及如何在运梦气象 API 上把所需气象量取齐,一次讲透。读者对象是新能源行业的算法、资源评估与运营同行。
关键要点
- 组件温度每比 25℃ 标准条件高 1℃,晶硅出力约下降 0.3%–0.5%,工程常用 −0.35 至 −0.4%/℃;夏季高温不修正会系统性高估 p50。
- Faiman 模型用两个热损系数估温升,pvlib 默认 u0 = 25.0、u1 = 6.84 W/(m²·℃),已被 IEC 61853 采纳,适合缺乏逐型号参数时的稳健默认。
- Sandia SAPM 电池温度模型按封装与安装方式查表取系数(如玻璃/电池/聚合物开放支架 a = −3.56、b = −0.075、ΔT = 3℃),散热条件不同不能套用单一系数。
- NOCT 定义在 800 W/m²、20℃、1 m/s 风速下,主流组件约 45–48℃;可快速估算,但单点工况不能替代随气象逐时变化的 Faiman 或 SAPM 建模。
- 在运梦气象 API 用 downloadSync 一次取齐 rsds、tas、ws:历史回测用 era5,未来预测改 ger(德国气象局),两条链路共用同一套字段与温度模型。
背景与定位
本文核实并解读三篇业内公认的权威来源。
第一篇是 Faiman, D. (2008)《Assessing the outdoor operating temperature of photovoltaic modules》,发表于 Progress in Photovoltaics: Research and Applications,第 16 卷 307–315 页,DOI 10.1002/pip.813。这篇论文提出了被后来 IEC 61853 标准吸收的组件温度估算方法,是组件热模型领域引用最广的工作之一。
第二篇是 King, D. L., Boyson, W. E., Kratochvil, J. A. (2004)《Photovoltaic Array Performance Model》,Sandia National Laboratories 技术报告 SAND2004-3535。它系统给出了 Sandia 阵列性能模型(SAPM),其中的电池温度子模型是工程界沿用至今的经验式。
第三篇是 Holmgren, W. F., Hansen, C. W., Mikofski, M. A. (2018)《pvlib python: a python package for modeling solar energy systems》,发表于 Journal of Open Source Software,第 3 卷第 29 期第 884 篇,DOI 10.21105/joss.00884。pvlib 是社区维护的开源库,把上述两套温度模型连同辐照转置、单二极管模型等做成了可直接调用的参考实现,是验证自研链路的事实基准。
三篇放在一起,恰好覆盖了从「物理公式怎么写」到「代码怎么落地」的完整路径。
方法 / 它做了什么
要把辐照转成功率,组件温度是绕不开的中间变量,因为光伏的转换效率随温度上升而下降。两套模型解决的都是同一个问题:给定到达组件面的辐照、环境气温和风速,估算出此刻的组件(或电池)工作温度。
Faiman 模型借用了平板太阳能集热器分析里熟悉的 Hottel–Whillier–Bliss 形式,把组件相对环境的温升写成「吸收的辐照」除以「散热能力」。散热能力由两个经验热损系数描述:一个与风速无关(pvlib 默认 u0 = 25.0,单位 W/(m²·℃)),一个随风速线性增大(默认 u1 = 6.84,单位 W/(m²·℃·(m/s)))。这组默认值来自 Faiman 在内盖夫沙漠对 7 种硅组件、约 30.9° 倾角开放支架的实测拟合。该模型不区分电池温度与组件温度,结构简单、参数稀少,适合在没有逐型号热参数时做稳健估算。
Sandia SAPM 电池温度模型走的是另一条经验路线。它先用一个指数衰减式由辐照、气温和风速估出组件背板温度——温升随风速增大而指数衰减,由系数 a、b 控制;再加一个正比于辐照的小修正 ΔT,从背板温度推到电池结温(电池比背板略热)。系数按封装与安装方式查表:玻璃/电池/聚合物背板、开放支架取 a = −3.56、b = −0.075、ΔT = 3℃;玻璃/玻璃开放支架取 a = −3.47、b = −0.0594、ΔT = 3℃;贴墙或绝热背板因散热更差,系数明显不同。
拿到组件温度后,再用温度系数把效率折算回来。绝大多数晶硅组件的最大功率温度系数为负,每升高 1℃ 出力下降约 0.3%–0.5%,工程上常用 −0.35% 到 −0.4%/℃ 这一档。铭牌还会给出 NOCT(标称工作电池温度),即在 800 W/m² 辐照、20℃ 气温、1 m/s 风速下的电池温度,主流组件通常落在约 45–48℃。把组件温度减去 25℃ 标准温度,乘以温度系数,就是相对铭牌效率的功率折减比例。
关键结论
- 晶硅组件最大功率温度系数在多数评测口径下为 −0.3% 到 −0.5%/℃,工程常用 −0.35 至 −0.4%/℃。这意味着夏季电池温度比标准的 25℃ 高出 35℃ 时,仅温度一项就可能压低出力十几个百分点,不修正会系统性高估 p50。
- Faiman 模型用两个热损系数刻画散热:pvlib 默认 u0 = 25.0 W/(m²·℃)、u1 = 6.84 W/(m²·℃·(m/s)),源自 7 种硅组件在内盖夫沙漠开放支架的实测拟合。该方法已被 IEC 61853 标准采纳,可作为缺乏逐型号参数时的稳健默认。
- Sandia SAPM 电池温度模型的系数随封装与安装方式查表:玻璃/电池/聚合物开放支架 a = −3.56、b = −0.075、ΔT = 3℃;玻璃/玻璃开放支架 a = −3.47、b = −0.0594、ΔT = 3℃。安装散热条件(开放支架 vs. 贴墙/绝热)对结果影响显著,不能套用单一系数。
- NOCT 是定义在 800 W/m²、20℃ 气温、1 m/s 风速下的标称电池温度,主流组件约 45–48℃。它是快速估算的便利指标,但其单一风速与辐照点远不能覆盖真实工况,精细建模仍应回到 Faiman 或 SAPM 这类随气象逐时变化的模型。
- 上述结论均为典型值与默认参数,具体到某型号、某气候带需用现场实测重新标定;不同来源给出的系数存在量级一致但数值不同的情况,落地前应明确所采用的口径。
对新能源 / 运梦平台的意义
对光伏功率预测:温度修正是特征侧的硬通货。把气温与风速喂进 Faiman 或 SAPM 估出组件温度,再用温度系数折减,预测在高温时段的偏差会明显收窄;纯数据驱动模型若不显式提供温度相关特征,往往在夏季正午系统性偏高。
对光伏资源评估与 p50/p90:长时序电量评估若忽略温度损失,年发电量会被高估,进而推高项目收益测算的乐观程度。用历史再分析逐时重建组件温度,能让 p50 更贴近真实、p90 的下界更可信。
对电网与功率申报:高温叠加高辐照的午间时段,恰是出力被温度压制最明显、也最影响电力市场申报与调度的时段。把温度损失建进出力曲线,申报偏差和考核风险都能下降。
在运梦平台上,历史回测取历史再分析数据、未来出力预测取德国气象局预报数据,两条链路共用同一套字段与解析逻辑,组件温度模型可以一次写好、训练与推理复用。
在运梦气象 API 上手
下面用同步下载接口 downloadSync 一次性取齐组件温度建模所需的辐照、气温与风速。历史回测用 era5(历史再分析),未来出力预测把 dataSourceId 改为 ger(德国气象局预报,覆盖未来约 7 天)。返回统一 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-07-01 00:00", # 格式 yyyy-MM-dd HH:mm
"etime": "2022-07-31 23:00",
"timezone": "8", # 必填,东八区时区偏移
"fields": ["rsds", "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"] # 地表水平总辐射 W/m²
tas = data["tas"] # 气温 ℃
ws = data["ws"] # 风速 m/s
# Faiman 思路估组件温度(POA 简化为 GHI,正式建模应先转置到组件面)
u0, u1 = 25.0, 6.84
gamma = -0.0037 # 温度系数 -0.37%/℃,按型号标定
for i in range(min(3, len(t))):
t_mod = tas[i] + ghi[i] / (u0 + u1 * ws[i]) # 组件温度估算
derate = 1 + gamma * (t_mod - 25.0) # 相对铭牌的温度折减
print(f"{t[i]} 组件温度≈{t_mod:.1f}℃ 温度折减系数≈{derate:.3f}")
else:
print("请求失败:", result["msg"], result.get("errorCode"))
正式建模时,应先用 Perez 或 Hay-Davies 把水平辐照转置到组件倾斜面(POA),再以 POA 辐照代入温度模型,最后叠加污渍与衰减折减。字段口径与单位以数据要素说明为准,接入细节见 API 参考文档。
常见问题
光伏组件温度每升高 1℃ 功率下降多少?
绝大多数晶硅组件的最大功率温度系数为负,每升高 1℃ 出力下降约 0.3%–0.5%,工程上常用 −0.35% 到 −0.4%/℃ 这一档。夏季电池温度比标准 25℃ 高出 35℃ 时,仅温度一项就可能压低出力十几个百分点。
Faiman 模型和 Sandia SAPM 模型有什么区别?
Faiman 模型借用 Hottel–Whillier–Bliss 形式,用两个热损系数(pvlib 默认 u0 = 25.0、u1 = 6.84)刻画散热,参数稀少、不区分电池与组件温度,适合缺乏逐型号参数时的稳健估算。Sandia SAPM 走经验路线,先由指数衰减式估背板温度、再加正比于辐照的修正推到电池结温,系数按封装与安装方式查表。
NOCT 是什么?能直接用来估组件温度吗?
NOCT 是标称工作电池温度,定义在 800 W/m² 辐照、20℃ 气温、1 m/s 风速下,主流组件约 45–48℃。它是快速估算的便利指标,但单一风速与辐照点远不能覆盖真实工况,精细建模仍应回到 Faiman 或 SAPM 这类随气象逐时变化的模型。
用运梦气象 API 做组件温度建模需要取哪些气象量?
需要辐照、气温与风速三个字段(rsds、tas、ws),用 downloadSync 接口一次性取齐。历史回测把 dataSourceId 设为 era5(历史再分析),未来出力预测改为 ger(德国气象局预报,覆盖未来约 7 天),两条链路共用同一套字段与解析逻辑。
历史回测和未来预测能共用同一套组件温度模型吗?
可以。在运梦平台上历史回测取历史再分析数据、未来出力预测取德国气象局预报数据,两条链路共用同一套字段与解析逻辑,组件温度模型可以一次写好、训练与推理复用。
引用与原文
- 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
- King, D. L., Boyson, W. E., & Kratochvil, J. A. (2004). Photovoltaic Array Performance Model (SAND2004-3535). Sandia National Laboratories. https://www.osti.gov/biblio/919131
- Holmgren, W. F., Hansen, C. W., & Mikofski, M. A. (2018). pvlib python: a python package for modeling solar energy systems. Journal of Open Source Software, 3(29), 884. https://doi.org/10.21105/joss.00884