You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

硕士论文开发中pvlib/feedinlib报错:'PVSystem'无'racking_model'属性

问题排查:AttributeError: 'PVSystem' object has no attribute 'racking_model'

问题描述

在硕士论文研究中使用pvlib与feedinlib工具时触发错误:AttributeError: 'PVSystem' object has no attribute 'racking_model'。代码参考官方示例编写,查阅pvlib文档确认racking_model是PVSystem的属性且有默认值,排查后发现辐照数据绘制环节运行正常,错误出在计算feedin的步骤。

完整代码

from feedinlib import era5
import cdsapi
import matplotlib.pyplot as plt
import pvlib
from feedinlib import Photovoltaic
from feedinlib import get_power_plant_data
from shapely.geometry import Point
from pvlib import pvsystem


# 获取组件数据
module_df = get_power_plant_data(dataset='SandiaMod')
# 打印前四个组件
module_df.iloc[:, 1:5]

# 获取逆变器数据
inverter_df = get_power_plant_data(dataset='cecinverter')
# 打印前四个逆变器
inverter_df.iloc[:, 1:5]

system_data = {
    'module_name': 'Advent_Solar_Ventura_210___2008_',  # 数据库中的组件名称
    'inverter_name': 'ABB__MICRO_0_25_I_OUTD_US_208__208V_',  # 数据库中的逆变器名称
    'azimuth': 180,
    'tilt': 30,
    'albedo': 0.2,
}
pv_system = Photovoltaic(**system_data) # 注释内容为直接创建PVSystem的示例代码


latitude = 52.4
longitude = 13.5
# location = Point(longitude,latitude)

# 设置起止日期(结束日期包含在数据下载时间段内)
start_date, end_date = '2015-01-01', '2015-02-01'
# 设置下载变量集
variable = 'pvlib'

era5_netcdf_filename = 'ERA5_weather_data.nc'

area = [longitude, latitude] # 发电位置

pvlib_df = era5.weather_df_from_era5(
    era5_netcdf_filename='ERA5_weather_data.nc',
    lib='pvlib', area=area)

# matplotlib inline
pvlib_df.loc[:, ['dhi', 'ghi']].plot(title='辐照强度')
plt.xlabel('时间')
plt.ylabel('辐照强度 $W/m^2$');


feedin = pv_system.feedin(
    weather=pvlib_df,
    location=(latitude, longitude))


# matplotlib inline
feedin.plot(title='光伏出力')
plt.xlabel('时间')
plt.ylabel('功率 W');

排查思路与解决方案

1. 版本兼容性问题

feedinlib与pvlib版本不匹配是常见诱因:

  • 执行pip show pvlib feedinlib查看当前版本
  • 参考feedinlib官方版本兼容说明,调整至匹配的版本组合(比如feedinlib较新版本可能依赖pvlib>=0.9.0,而旧版pvlib的PVSystem类无racking_model属性)

2. 手动指定racking_model参数

尝试在system_data中显式添加该参数,使用pvlib默认值:

system_data = {
    'module_name': 'Advent_Solar_Ventura_210___2008_',
    'inverter_name': 'ABB__MICRO_0_25_I_OUTD_US_208__208V_',
    'azimuth': 180,
    'tilt': 30,
    'albedo': 0.2,
    'racking_model': 'open_rack'  # pvlib默认值
}

3. 手动初始化PVSystem实例

绕过feedinlib的Photovoltaic封装,直接创建pvlib的PVSystem实例再传入:

# 手动获取组件和逆变器参数
module_params = module_df.loc['Advent_Solar_Ventura_210___2008_']
inverter_params = inverter_df.loc['ABB__MICRO_0_25_I_OUTD_US_208__208V_']

# 创建PVSystem实例
pvlib_system = pvsystem.PVSystem(
    surface_tilt=30,
    surface_azimuth=180,
    module_parameters=module_params,
    inverter_parameters=inverter_params,
    albedo=0.2,
    racking_model='open_rack'
)

# 初始化Photovoltaic
pv_system = Photovoltaic(pv_system=pvlib_system)

内容的提问来源于stack exchange,提问作者Tycho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:46:30