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

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:53:10