#python
#python
Вопрос:
Я пытаюсь использовать pvmismatch для вычисления мощности, рассеиваемой в заштрихованной ячейке в частично заштрихованном модуле из 144 полуэлементов. Смотрите рабочий пример ниже, основанный на примерах, которые я нашел в предыдущих выпусках pvmismatch на github.
Настройка модуля с частичным затенением (ячейка 0 настроена на получение 50% освещенности) работает нормально. Теперь мне нужно определить рабочую точку заштрихованной ячейки, когда модуль находится в состоянии короткого замыкания. Было бы неплохо иметь ту же информацию и для того, когда модуль находится в MPP.
Кто-нибудь может подсказать мне, как это сделать?
import numpy as np
from pvmismatch.pvmismatch_lib import (pvcell, pvconstants, pvmodule,
pvstring, pvsystem)
import pandas as pd
from matplotlib import pyplot as plt
plt.ion()
v_bypass = np.float64(-0.3) # [V] trigger voltage of bypass diode
cell_area = np.float64(252/2)
halfcell144_bypass3 = pvmodule.crosstied_cellpos_pat([24, 24, 24], 2, partial=True)
pv_mod = pvmodule.PVmodule(cell_pos = halfcell144_bypass3, pvcells = None, pvconst
= None, Vbypass = v_bypass, cellArea = cell_area)
pv_mod.setSuns([0.5], cells = [0])
f = pv_mod.plotMod()
Комментарии:
1. Для справки проблема с половиной ячейки здесь: github.com/SunPower/PVMismatch/issues/118
Ответ №1:
Спасибо за использование pvmismatch! Чтобы получить мощность, рассеиваемую в заштрихованной ячейке, когда PV-модуль находится в разомкнутой цепи, используйте атрибуты Vsubstr
amp; Isubstr
, чтобы найти напряжение разомкнутой цепи подстроки PV-модуля путем интерполяции кривой IV, где ток равен нулю:
Voc_substr0 = np.interp(0.0, np.flip(pv_mod.Isubstr[0]), np.flip(pv_mod.Vsubstr[0])) # flip so x increases monotonically
Это напряжение первой подстроки, но токи в сумме равны нулю. AFAIK нет атрибутов, которые возвращали бы ток для каждого блока в частично связанном PV-модуле, поэтому мы можем сложить эти ячейки вручную. Это был бы хороший пиар, если вам интересно.
Vblock = pv_mod.Vcell[0]
Iblock = pv_mod.Icell[0]
for idx in range (1, 24): # first 24 cells
Vblock = no.interp(Iblock, np.flip(pv_mod.Icell[idx]), np.flip(pv_mod.Vcell[idx])) # flip so x increases
Теперь у нас есть кривая IV 1-го блока в 1-й подстроке, которая включает заштрихованную ячейку. Мы знаем , что напряжение разомкнутой цепи Voc_substr0
равно . Интерполируйте снова, чтобы получить ток этого блока, который может быть ненулевым, так что сумма двух блоков равна нулю.
Ioc_substr0 = np.interp(Voc_substr0, Vblock, Iblock)
Наконец, все ячейки в этом блоке несут этот ток. Интерполируйте мощность ячейки заштрихованной ячейки
Pcell0 = np.interp(Ioc_substr0, np.flip(pv_mod.Icell[0]), np.flip(pv_mod.Pcell[0])
Работает ли это??? В любом случае, чтобы повторить с mpp, используйте mpp_idx = np.argmax(pv_mod.Pmod)
, чтобы получить индекс, ближайший к максимальной мощности модуля, затем повторите все выше, за исключением того, что ток pv_mod.Imod[mpp_idx]
вместо 0.0 ok?