如何从PVlib确定奇怪的每小时光伏输出功率曲线的问题

时间:2019-06-17 11:06:06

标签: python timezone-offset pvlib solar

我使用pvlib的每小时PV功率在早晨异常高,而在晚上异常低。高峰似乎转移到了早晨。 这是随机一天的输出功率,带有相应的辐照度数据(W / m2):

  Time  | AC Power [kW] | GHI | DHI | DNI |  
 -------|---------------|-----|-----|-----|

  6:00  |             0 |   4 |   1 |   0 |  
  7:00  |            22 | 161 |  66 | 589 |  
  8:00  |            29 | 390 | 153 | 608 |  
  9:00  |            35 | 592 | 220 | 629 |  
  10:00 |            37 | 754 | 262 | 654 |  
  11:00 |            36 | 830 | 283 | 635 |  
  12:00 |            34 | 874 | 291 | 638 |  
  13:00 |            31 | 894 | 292 | 668 |  
  14:00 |            24 | 828 | 280 | 659 |  
  15:00 |            15 | 695 | 251 | 631 |  
  16:00 |             5 | 514 | 198 | 601 |  
  17:00 |             3 | 299 | 128 | 550 |  
  18:00 |             1 |  74 |  39 | 430 |

可以看出,功率实际上与辐照度数据不匹配,并且似乎移到了更早的时间。必须提到的是,辐照度数据是模拟的GHI和DHI和计算的DNI。系统的最大交流输出为40 kW,受逆变器限制。

您知道为什么会这样吗?我是否监督明显的事情? 我试图更改时区声明,但未更改任何内容。我还尝试将倾斜角度从5更改为45,这怪异地导致了更高的PV输出功率。这种宽容绝对不是这种情况。 谢谢,堆!

这是我的PVlib模型的代码:

'''
TMY_Dataframe creation --> uses function from tmyDataImport Module
'''

tmy_df=ti.tmyData('DHI.csv','Weather.csv',highres=False)



"""
Location declaration
"""
lat_ref=0.20
long_ref=35
tz_ref='Africa/Nairobi'
alt_ref=1155.0

loc=Location(latitude=lat_ref, longitude=long_ref, tz=tz_ref, 
altitude=alt_ref)

"""
PVSystem declaration
"""

cec_modules = pvlib.pvsystem.retrieve_sam('CECMod')
#    sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')
cec_inverters=pvlib.pvsystem.retrieve_sam('cecinverter')

tilt_ref=5
azi_ref=180 #South
alb_ref=None
surf_type_ref='grass'
mod_ref=None
mod_para_ref=cec_modules['Trina_Solar_TSM_325PD14']
mod_p_str_ref=19
str_p_inv_ref=1
inv_ref=None
inv_para_ref=cec_inverters['Fronius_USA__IG_Plus_5_0_1_UNI__240V__240V__CEC_2018_']
rack_ref='open_rack_cell_glassback'
losses_ref=None

pvsyst=PVSystem(surface_tilt=tilt_ref, surface_azimuth=azi_ref, albedo=alb_ref, surface_type=surf_type_ref, 
         module=mod_ref, module_parameters=mod_para_ref, modules_per_string=mod_p_str_ref, strings_per_inverter=str_p_inv_ref, 
         inverter=inv_ref, inverter_parameters=inv_para_ref, racking_model=rack_ref, losses_parameters=losses_ref)


"""
ModelChain declaration
"""

pvsys_ref=pvsyst
loc_ref=loc
orient_strat_ref=None
sky_mod_ref='ineichen'
transp_mod_ref='haydavies'
sol_pos_mod_ref='nrel_numpy'
airm_mod_ref='kastenyoung1989'
dc_mod_ref='cec'
ac_mod_ref=None
aoi_mod_ref='physical'
spec_mod_ref='no_loss'
temp_mod_ref='sapm'
loss_mod_ref='no_loss'

moch=ModelChain(system=pvsys_ref, location=loc_ref, orientation_strategy=orient_strat_ref,
           clearsky_model=sky_mod_ref, transposition_model=transp_mod_ref, solar_position_model=sol_pos_mod_ref,
           airmass_model=airm_mod_ref, dc_model=dc_mod_ref, ac_model=ac_mod_ref, aoi_model=aoi_mod_ref, 
           spectral_model=spec_mod_ref, temp_model=temp_mod_ref, losses_model=loss_mod_ref)


moch.run_model(times=tmy_df.index, weather=tmy_df)

ac_power=moch.ac*8/1000

ac_power = ac_power.reset_index(drop=False)
ac_power = ac_power.rename(columns={0: "PV Power [kW]"})
ac_power.loc[(ac_power['PV Power [kW]'] < 0, 'PV Power [kW]')]=0
ac_power.to_csv('pvPower.csv')

1 个答案:

答案 0 :(得分:0)

我解决了= D。 问题出在TMY文件中。当我在tmyData()函数中创建时间戳时,我没有指定tz = pytz.timezone('Africa / Nairobi'),这显然默认情况下将其设置为UTC。现在,功率输出很有意义。

干杯Axel