Как мне получить рабочую точку конкретной ячейки при разомкнутом контуре модуля в pvmismatch?

#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?