PVLIB - 来自辐照的直流电 - 简单计算

时间:2017-07-06 15:09:45

标签: pvlib solar

亲爱的pvlib用户和软件。

我是计算机科学的研究员,并不是太阳能电池板模拟或建模方面的专家。我对使用pvlib感兴趣 我们正在尝试模拟用于物联网的小型太阳能电池板的工作 应用程序,特别是面板规范如下: 最大效率为12.8%,Vmp = 5.82V,尺寸= 225×155×17 mm。

在使用pvlib之前,我的一位合作者编写了一个计算代码的代码 用PVWatt计算的平均月值直接照射。 我不是很满意,所以我们开始使用pvlib。 在旧代码中,我们将面板的功率和电流计算为:

W =辐照* PanelSize(m ^ 2)*效率 A = W / Vmp

马德里的辐照,是用PVWatt获得的,这是 我的合作者使用了什么:     DIrradiance =(2030.0,2960.0,4290.0,5110.0,5950.0,7090.0,7200.0,6340.0,4870.0,3130.0,2130.0,1700.0) 我试图了解pvlib是否计算出与上述值类似的值,作为每个月一天的平均值。和白天的生产曲线。 我写这篇文章是为了比较pvlib和旧模型:

import math
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt 
import pandas as pd
import pvlib
from pvlib.location import Location

def irradiance(day,m):
    DIrradiance =(2030.0,2960.0,4290.0,5110.0,5950.0,
                 7090.0,7200.0,6340.0,4870.0,3130.0,2130.0,1700.0)
    madrid = Location(40.42, -3.70, 'Europe/Madrid', 600, 'Madrid')
    times = pd.date_range(start=dt.datetime(2015,m,day,00,00), 
                      end=dt.datetime(2015,m,day,23,59), 
                      freq='60min')
    spaout = pvlib.solarposition.spa_python(times, madrid.latitude, madrid.longitude)
    spaout = spaout.assign(cosz=pd.Series(np.cos(np.deg2rad(spaout['zenith']))))
    z = np.array(spaout['cosz'])
    return z.clip(0)*(DIrradiance[m-1])

madrid = Location(40.42, -3.70, 'Europe/Madrid', 600, 'Madrid')
times = pd.date_range(start = dt.datetime(2015,8,15,00,00),
                  end = dt.datetime(2015,8,15,23,59), 
                  freq='60min')

old = irradiance(15,8)              # old model
new = madrid.get_clearsky(times)    # pvlib irradiance 
plt.plot(old,'r-')                  # compare them.
plt.plot(old/6.0,'y-')             # old seems 6 times more..I do not know why
plt.plot(new['ghi'].values,'b-')
plt.show()

上面的代码使用zenit角度计算旧辐照度。并使用clear_sky计算ghi值。我不明白ghi中的值是否也必须乘以zenit的cos值。无论如何 它们小了6倍。最后我想要的是 面板(DC)输出的功率和电流,无需任何逆变器,和 我们并不是真的对它的建模感兴趣,但至少对它来说 有一个合理的曲线。我们能够从面板中捕获安培 生成,我们想比较测量值的值 屋顶上的面板,其值由pvlib计算。

任何有关这方面的帮助都会非常适合。感谢

抱歉,由于我想将所有代码移到pvlib,我对我以前的型号不太关心。我按照你的建议,我正在使用irradiance.total_irrad,代码现在看起来像这样:

madrid = Location(40.42, -3.70, 'Europe/Madrid', 600, 'Madrid')
times = pd.date_range(start=dt.datetime(2015,1,1,00,00), 
                  end=dt.datetime(2015,1,1,23,59), 
                  freq='60min')
ephem_data = pvlib.solarposition.spa_python(times, madrid.latitude, 
madrid.longitude)
irrad_data = madrid.get_clearsky(times)
AM = atmosphere.relativeairmass(ephem_data['apparent_zenith'])
total = irradiance.total_irrad(40, 180,
        ephem_data['apparent_zenith'], ephem_data['azimuth'],
        dni=irrad_data['dni'], ghi=irrad_data['ghi'],
        dhi=irrad_data['dhi'], airmass=AM,
        surface_type='urban')
poa = total['poa_global'].values

现在,我知道POA上的辐照度,我想用Ampere计算输出:它只是

(poa*PANEL_EFFICIENCY*AREA) / VOLT_OUTPUT   ?

1 个答案:

答案 0 :(得分:1)

我不清楚你是如何得出DIrradiance的价值或单位是什么的,所以我不能过多地评价价值之间的差异。我猜它是某种月度数据,因为有12个值。如果是这样,您需要计算〜每小时pvlib辐照度数据,然后将其整合以检查一致性。

如果您的模块倾斜,您需要使用换位模型将〜小时辐照度GHI,DNI,DHI值转换为阵列平面(POA)辐照度。 this guidelines函数是最简单的方法。

接下来的步骤取决于模块的IV特性,电路的其余部分以及模型的准确性。