我想使用 pvlib 库来计算单轴跟踪系统的辐照度 POA 数据。
从文档中可以看出,通过创建一个 pvlib.tracking.SingleAxisTracker 类(使用适当的元数据),然后调用 get_irradiance 方法,这似乎是可能的。
我已经这样做了:
HSAT = SingleAxisTracker(axis_tilt=0,
axis_azimuth=167.5,
max_angle=50,
backtrack=True,
gcr=0.387)
然后,我使用我刚刚创建的 SingleAxisTracker 的 HSAT 实例的 get_irradiance 方法,期望它使用我刚刚输入的元数据来计算此水平单轴跟踪器的 POA 数据:
hsat_poa = HSAT.get_irradiance(surface_tilt=0,
surface_azimuth=167.5,
solar_zenith=sz,
solar_azimuth=sa,
dni=dni,
ghi=ghi,
dhi=dhi,
airmass=None,
model='haydavies')
但是,当我绘制hsat_poa时,我得到的看起来像是固定倾斜系统的POA数据。
当我查看源代码时,我注意到SingleAxisTracker.get_irradiance方法最终调用了 location.total_irrad() 方法,该方法仅返回固定倾斜系统的 POA 数据。
我是否需要提供HSAT系统的下行surface_tilt数据?我假设 pvlib 对 HSAT 系统进行建模,并将根据 SingleAxisTracker 类实例化中提供的参数为我生成surface_tilt值。但事实似乎并非如此。
所以我的问题是,pvlib 是否需要跟踪器角度作为输入来计算单轴跟踪器系统的 POA 数据,或者它可以根据axis_tilt、max_angle和回溯等元数据对跟踪器角度本身进行建模?
原来 pvlib.tracking.singleaxis() 是缺失的环节。
这将决定单轴跟踪系统的旋转角度。
tracker_data = pvlib.tracking.singleaxis(solar_position['apparent_zenith'],
solar_position['azimuth'],
axis_tilt=MOUNTING_TILT,
axis_azimuth=MOUNTING_AZIMUTH,
max_angle=MAX_ANGLE,
backtrack=True,
gcr=MOUNTING_GCR)
然后像这样使用tracker_data
:
hsat_poa_model_tracker = HSAT.get_irradiance(surface_tilt=tracker_data['surface_tilt'],
surface_azimuth=tracker_data['surface_azimuth'],
solar_zenith=solar_position['apparent_zenith'],
solar_azimuth=solar_position['azimuth'],
dni=dni,
ghi=ghi,
dhi=dhi,
airmass=None,
model='haydavies')
将计算单轴跟踪器的 POA 数据。
在这个 jupyter 笔记本中找到了答案: http://nbviewer.jupyter.org/github/pvlib/pvlib-python/blob/master/docs/tutorials/tracking.ipynb
它能否根据元数据对跟踪器角度本身进行建模,例如
axis_tilt
、max_angle
和backtrack
?
PVLIB的ModelChain
将做到这一点。有关将ModelChain
与SingleAxisTracker
一起使用的示例,请参阅光伏功率预测文档。