1

我正在尝试使用 pvmismatch 来计算部分阴影 144 半电池模块内的阴影电池中消耗的功率。请参阅下面的工作示例,该示例基于我在 github 上以前的 pvmismatch 问题中找到的示例。

使用部分阴影设置模块(单元 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()
4

1 回答 1

0

感谢您使用pvmismatch!要在 PV 模块处于开路状态时获得阴影电池中的功率耗散,请使用属性Vsubstr&Isubstr通过插值电流为零的 IV 曲线来找到 PV 模块子串的开路电压:

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 模块中每个块的电流,因此我们可以手动添加这些单元。如果您有兴趣,这将是一个不错的 PR。

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 曲线,其中包括阴影单元。我们知道开路电压是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 好吗?

于 2020-12-20T07:31:33.953 回答