首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >辐照产生的PVLIB功率.简单计算

辐照产生的PVLIB功率.简单计算
EN

Stack Overflow用户
提问于 2017-07-06 15:09:44
回答 1查看 911关注 0票数 0

亲爱的pvlib用户和开发人员。

我是一名计算机科学的研究员,在太阳能电池板的模拟或建模方面并不是特别的专家。我对使用pvlib很感兴趣,因为我们试图模拟用于IoT应用的小型太阳能电池板的工作,特别是面板规格如下: 12.8%的效率,Vmp = 5.82V,尺寸= 225×155×17 mm。

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

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

在马德里,就像用PVWatt获得的那样,这就是我的合作者所使用的: DIrradiance = PVWatt,我正在试图理解pvlib计算的值是否类似于上面的值,即每个月平均每天的值。以及白天的生产曲线。我编写这篇文章是为了将pvlib与我们的旧模型进行比较:

代码语言:javascript
复制
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,代码现在看起来是这样的:

代码语言:javascript
复制
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的辐照度,我想用安培来计算输出:这只是

代码语言:javascript
复制
(poa*PANEL_EFFICIENCY*AREA) / VOLT_OUTPUT   ?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 18:43:44

我不清楚你是如何得到DIrradiance的值的,也不清楚单位是什么,所以我不能对这些值之间的差异进行太多的评论。我猜这是某种月度数据,因为有12个值。如果是这样,则需要计算~时pvlib辐照度数据,然后将其集成以检查一致性。

如果您的模块将倾斜,您将需要转换模型将您的~时辐照度GHI、DNI、DHI值转换为阵列(POA)辐照度平面。irradiance.total_irrad函数是最简单的方法。

接下来的步骤取决于模块的IV特性、电路的其余部分以及您需要的模型的精确程度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44952762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档