PVLIB - 辐照直流功率 - 简单计算
PVLIB - DC Power From Irradiation - Simple Calculation
尊敬的 pvlib 用户和开发人员。
我是一名计算机科学研究员,并不是特别擅长太阳能电池板的模拟或建模。我对使用 pvlib 很感兴趣,因为
我们正在尝试模拟用于物联网的小型太阳能电池板的工作原理
应用程序,特别是面板规格如下:
12.8% 最大效率,Vmp = 5.82V,尺寸 = 225 × 155 × 17 mm。
在使用 pvlib 之前,我的一位合作者编写了一段代码来计算
直接从用 PVWatt 计算的平均月度值计算辐照度。
我不是很满意,所以我们开始使用 pvlib。
在旧代码中,我们将面板的功率和电流计算为:
W = 辐照度 * PanelSize(m^2) * 效率
A = W / Vmp
使用 PVWatt 在马德里获得的辐照度,这是
我的合作者使用了什么:
辐照度 = (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()
上面的代码使用天顶角计算了旧的辐照度。并使用 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 上的辐照度,我想计算以安培为单位的输出:它只是
(poa*PANEL_EFFICIENCY*AREA) / VOLT_OUTPUT ?
我不清楚您如何得出 DIrradiance
的值或单位是什么,因此我无法评论这些值之间的差异。我猜这是某种月度数据,因为有 12 个值。如果是这样,您需要计算~每小时 pvlib 辐照度数据,然后对其进行积分以检查一致性。
如果您的模块会倾斜,您需要使用换位模型将每小时辐照度 GHI、DNI、DHI 值转换为阵列平面 (POA) 辐照度。 irradiance.total_irrad
函数是最简单的方法。
接下来的步骤取决于您的模块的 IV 特性、电路的其余部分以及您需要模型的精度。
尊敬的 pvlib 用户和开发人员。
我是一名计算机科学研究员,并不是特别擅长太阳能电池板的模拟或建模。我对使用 pvlib 很感兴趣,因为 我们正在尝试模拟用于物联网的小型太阳能电池板的工作原理 应用程序,特别是面板规格如下: 12.8% 最大效率,Vmp = 5.82V,尺寸 = 225 × 155 × 17 mm。
在使用 pvlib 之前,我的一位合作者编写了一段代码来计算 直接从用 PVWatt 计算的平均月度值计算辐照度。 我不是很满意,所以我们开始使用 pvlib。 在旧代码中,我们将面板的功率和电流计算为:
W = 辐照度 * PanelSize(m^2) * 效率 A = W / Vmp
使用 PVWatt 在马德里获得的辐照度,这是 我的合作者使用了什么: 辐照度 = (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()
上面的代码使用天顶角计算了旧的辐照度。并使用 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 上的辐照度,我想计算以安培为单位的输出:它只是
(poa*PANEL_EFFICIENCY*AREA) / VOLT_OUTPUT ?
我不清楚您如何得出 DIrradiance
的值或单位是什么,因此我无法评论这些值之间的差异。我猜这是某种月度数据,因为有 12 个值。如果是这样,您需要计算~每小时 pvlib 辐照度数据,然后对其进行积分以检查一致性。
如果您的模块会倾斜,您需要使用换位模型将每小时辐照度 GHI、DNI、DHI 值转换为阵列平面 (POA) 辐照度。 irradiance.total_irrad
函数是最简单的方法。
接下来的步骤取决于您的模块的 IV 特性、电路的其余部分以及您需要模型的精度。