Python中PVLIB的Axis Tilt限制及背离赤道设置支持问询
PVLIB单轴跟踪器Axis Tilt正负值问题与澄清
我在查阅文档时,试图确定朝南阵列的Axis Tilt应设为正值还是负值,但PVLIB主文档未覆盖该内容,NREL出版物的说明也不够清晰。在tracking.single_axis的源代码注释中有如下说明:
# In [1] coordinates, axis_tilt is a rotation about the x-axis. # For a system with array azimuth (y-axis) oriented south, # the x-axis is oriented west, and a positive axis_tilt is a # counterclockwise rotation, i.e, lifting the north edge of the panel. # Thus, in [1] coordinate system, in the northern hemisphere a positive # axis_tilt indicates a rotation toward the equator, # whereas in the southern hemisphere rotation toward the equator is # indicated by axis_tilt<0. Here, the input axis_tilt is # always positive and is a rotation toward the equator.
核心疑问
Python的PVLIB是否不支持朝向背离赤道的Axis Tilt?考虑到光伏场地可能存在自然坡度,应该支持小的负值,我的理解是否正确?
测试结果
测试发现,负值和正值(如-5和5)的计算结果非常接近(差异<1%),且两者的POA辐照度均有所提升。我原本预期负值(朝向远离太阳的方向)会降低POA辐照度。
测试代码(美国威斯康星州麦迪逊市10月底)
import pvlib import pandas as pd import plotly.express as px # SITE DETAILS - Madison, WI lat=43 lon=-89 tz='US/Central' alt=100 # TRACKER DETAILS row_spacing = 5 mod_length = 2 axis_tilt = 0 # Not used in this case azimuth = 180 tracker_angle = 60 backtrack = False # # FILENAME FOR POA DATA # _filename = 'clearsky_poa.csv' # LIST OF AXIS TILT VALUES TO USE axis_tilt_values = [-5, -2.5, -1, 0, 1, 2.5, 5] # Create PVLIB location object location = pvlib.location.Location(lat, lon, tz, alt) # Create dt index times = pd.date_range('2023-10-30', '2023-10-31', freq='5T', tz=tz) # Get solar position & clearsky solar_position = location.get_solarposition(times=times) clearsky = location.get_clearsky(times=times) def basic_plot(df, title=""): fig = px.line(df, title=title) fig.update_layout(hovermode='x', modebar_add=['hoverclosest', 'hovercompare']) fig.update_traces(hovertemplate=None) return fig # ## TESTING MULTIPLE AXIS TILT SETTINGS ########### # Create Dataframe of different POAs for various axis_tilt angles poa_list = [] for i in axis_tilt_values: gcr = mod_length / row_spacing # Create tracker mount object tracker_mount = pvlib.pvsystem.SingleAxisTrackerMount(i, azimuth, tracker_angle, backtrack, gcr) # Calc tilt data tilt_df = tracker_mount.get_orientation(solar_azimuth=solar_position.azimuth, solar_zenith=solar_position.apparent_zenith) # Create Array object array = pvlib.pvsystem.Array(tracker_mount) # Calc POA poa = array.get_irradiance(solar_zenith=solar_position.zenith, solar_azimuth=solar_position.azimuth, dni=clearsky.dni, ghi=clearsky.ghi, dhi=clearsky.dhi) poa_list.append(poa.poa_global.rename(f'{str(i)}')) axis_tilt_variations = pd.concat(poa_list, axis='columns') # axis_tilt_variations.to_csv(_filename) fig = basic_plot(axis_tilt_variations, title='Utilizing different Axis Tilt settings') fig.show()
更新:澄清后的理解
感谢Kevin的澄清,我现在对axis_azimuth和axis_tilt的理解如下:
axis_azimuth以正北向东的度数计量,应指向下坡方向- 南北走向的水平阵列(
axis_tilt为0)的axis_azimuth可设为0或180 - 若场地存在坡度,需选择0-360范围内指向下坡的度数:
- 向北微斜1度的阵列:
axis_azimuth设为0、axis_tilt设为1 - 向南微斜1度的阵列:
axis_azimuth设为180、axis_tilt设为1
- 向北微斜1度的阵列:
内容的提问来源于stack exchange,提问作者GallopingNarwhal
相关产品推荐
相关产品推荐

