PVLIB - мощность постоянного тока от облучения - простой расчет
Уважаемые пользователи и разработчики pvlib.
Я исследователь в области компьютерных наук, не особенно специалист по моделированию или моделированию солнечных батарей. Я заинтересован в использовании pvlib, так как мы пытаемся смоделировать работу небольшой солнечной панели, используемой для IoT-приложений, в частности характеристики панели следующие: максимальная эффективность 12,8%, Vmp = 5,82 В, размер = 225 × 155 × 17 мм.
Перед использованием pvlib один из моих соавторов написал код, который вычисляет облучение непосредственно из среднемесячных значений, рассчитанных с помощью PVWatt. Я не был очень доволен, поэтому мы начинаем использовать pvlib. В старом коде мощность и ток панели рассчитываются как:
W = Облучение * Размер панели (м ^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()
Код выше вычисляет старое излучение, используя зенитный угол. и вычислите значения ghi, используя clear_sky. Я не понимаю, нужно ли умножать значения в ghi на cos zenit или нет. В любом случае они в 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 ?
1 ответ
Мне не ясно, как вы пришли к своим ценностям для DIrradiance
или каковы единицы, поэтому я не могу комментировать несоответствия между значениями. Я предполагаю, что это какие-то ежемесячные данные, поскольку существует 12 значений. Если это так, вам нужно будет рассчитать ~ почасовые данные об освещенности pvlib, а затем интегрировать их для проверки согласованности.
Если ваш модуль будет наклонен, вам нужно будет преобразовать ваши ~ значения часового освещения GHI, DNI, DHI в освещенность плоскости массива (POA), используя модель транспонирования. irradiance.total_irrad
Функция - это самый простой способ сделать это.
Следующие шаги зависят от характеристик IV вашего модуля, остальной части схемы и от того, насколько точной должна быть модель.