引言:光伏系统中的阴影挑战

光伏(PV)系统在设计和运行过程中,阴影遮挡是一个常见但极具破坏性的问题。即使是轻微的阴影,也可能导致整个组串的发电量显著下降。这主要是因为光伏组件通常串联使用,而阴影会导致“木桶效应”,即整串的输出电流受限于最差的组件。

精准计算阴影的影响和发电量损失,对于系统设计、设备选型、布局优化以及后期运维至关重要。本文将深入探讨光伏阴影的计算原理、关键公式、实际应用中的计算方法,并通过详细的示例说明如何量化阴影带来的损失。

1. 阴影对光伏系统的影响机制

在深入公式之前,我们需要理解阴影是如何影响光伏组件的。

1.1 局部阴影与功率损失

当光伏组件的一部分被阴影遮挡时,被遮挡的电池片产生的电流会减少。如果组件串联,整串的电流将被迫降低到被遮挡电池片的电流水平,导致未被遮挡的高效电池片也无法发挥全部性能。

1.2 热斑效应(Hot Spot)

更严重的是,被遮挡的电池片可能从发电单元转变为耗能单元,承受反向电压并发热。长期热斑会损坏组件,甚至引发火灾。现代组件通常配有旁路二极管(Bypass Diodes),当某串电池片被严重遮挡时,二极管导通,让电流绕过该部分,从而保护组件并减少功率损失。

2. 核心计算公式与原理

精准计算阴影影响通常涉及几何光学、辐照度模型和组件电气特性。以下是几个核心的计算公式和概念。

2.1 辐照度与阴影面积的关系(线性近似模型)

在初步估算中,我们常假设组件的功率损失与被遮挡的面积成正比。这是基于短路电流(Isc)与辐照度成正比的原理。

公式 1:功率损失百分比(简化版) $\( P_{loss} \approx \frac{A_{shaded}}{A_{total}} \times 100\% \)$

其中:

  • \(P_{loss}\):功率损失百分比
  • \(A_{shaded}\):被遮挡的面积
  • \(A_{total}\):组件总面积

注意:这只是一个非常粗略的估算。实际中,由于旁路二极管的存在和组件内部电路结构,损失往往比这个比例要大,尤其是在串联结构中。

2.2 基于单二极管模型的阴影计算(更精确)

为了更精确,我们需要使用光伏组件的单二极管模型(Single Diode Model)。其电流-电压(I-V)方程如下:

\[ I = I_{ph} - I_0 \left[ \exp \left( \frac{V + IR_s}{nV_t} \right) - 1 \right] - \frac{V + IR_s}{R_{sh}} \]

其中:

  • \(I\):组件输出电流
  • \(I_{ph}\):光生电流(与辐照度成正比)
  • \(I_0\):二极管反向饱和电流
  • \(V\):组件输出电压
  • \(R_s\):串联电阻
  • \(R_{sh}\):并联电阻
  • \(n\):二极管理想因子
  • \(V_t\):热电压 (\(kT/q\))

阴影的影响主要体现在 \(I_{ph}\) 上。如果组件部分被遮挡,\(I_{ph}\) 会降低。在串联电路中,电流受限于最小的 \(I_{ph}\)。

2.3 旁路二极管的影响计算

现代组件通常将60或72片电池片分为3个或更多子串,每个子串并联一个旁路二极管。

临界遮挡比(Critical Shading Ratio): 当某个子串的辐照度降低到一定程度,导致其产生的电流远小于其他子串时,旁路二极管导通。

假设组件有3个子串,每个子串额定电流为 \(I_{string}\)。如果子串1被遮挡,其电流降为 \(I_{shaded}\)。当 \(I_{shaded} < I_{string}\) 时,二极管导通,子串1被旁路。

新的组件电流 \(I_{module}\): $\( I_{module} = \min(I_{string\_2}, I_{string\_3}) \)$ (假设子串2和3未被遮挡)

功率损失计算: $\( P_{loss} = P_{STC} - (V_{mppt} \times I_{module}) \)\( (注:电压 \)V$ 变化较小,主要损失在电流上)

3. 实际案例分析:精准计算阴影损失

为了更直观地说明,我们通过一个实际案例来计算。

3.1 案例场景设定

  • 组件规格:某品牌550W单晶硅组件,尺寸2278mm x 1134mm。
  • 组件结构:144片电池片(2x72),分为3个子串,每串48片,配有3个旁路二极管。
  • 阴影情况:组件底部约15%的面积被遮挡(例如由于前排组件的边缘投影)。
  • 环境条件:标准测试条件(STC),辐照度 1000 W/m²。

3.2 计算步骤

步骤 1:确定阴影覆盖的子串数量

组件高度为1134mm。底部15%的遮挡高度为: $\( H_{shaded} = 1134mm \times 15\% = 170.1mm \)$

假设组件垂直分为3个子串,每个子串高度约为 \(1134 / 3 = 378mm\)。 阴影覆盖了底部子串的全部(378mm > 170.1mm,实际上只覆盖了底部子串的一部分,但为了演示二极管效应,我们假设阴影刚好覆盖了底部子串的大部分,导致该子串电流大幅下降)。

关键点:旁路二极管的触发通常不是看面积,而是看电流差。如果底部子串的平均辐照度大幅下降,其电流将低于其他两串。

步骤 3:计算各子串电流(基于辐照度比)

假设未遮挡子串的辐照度为 1000 W/m²,电流为 \(I_{sc} = 13.5A\)。 被遮挡子串的平均辐照度降为 200 W/m²(假设阴影边缘散射,非全黑)。

根据电流与辐照度的线性关系: $\( I_{shaded} = 13.5A \times \frac{200}{1000} = 2.7A \)$

此时,未遮挡子串电流为 13.5A,被遮挡子串为 2.7A。 由于串联电路电流一致,若无二极管,整串电流将被拉低至 2.7A。

步骤 4:引入旁路二极管后的计算

由于 \(I_{shaded} (2.7A)\) 远小于未遮挡子串的电流,且组件内部并联结构特性,旁路二极管导通,电流绕过被遮挡子串。

组件总电流: $\( I_{total} = I_{string\_1} + I_{string\_2} \)\( \)\( I_{total} = 13.5A + 13.5A = 27A \)$ (注:这里假设组件内部是3个子串并联输出,或者理解为二极管导通后,被遮挡子串不贡献电流,其余两串正常工作。实际组件端子输出电流是各并联支路之和)。

功率计算:

  • 无阴影时:\(P = 550W\) (假设 \(V_{mp} \approx 41V\), \(I_{mp} \approx 13.4A\))。
  • 有阴影(二极管旁路):
    • 电压 \(V\) 基本保持不变(约41V)。
    • 电流 \(I\) 损失了1/3(因为1个子串被旁路)。
    • \(I_{new} \approx 13.4A \times (2/3) = 8.93A\)。
    • \(P_{new} \approx 41V \times 8.93A = 366W\)。

发电量损失: $\( Loss = \frac{550 - 366}{550} \times 100\% = 33.4\% \)$

结论:即使只有底部15%的面积被遮挡,如果导致一个子串被旁路,功率损失可能高达33%。这就是为什么阴影计算如此重要。

4. 软件模拟与工程计算工具

在实际工程中,手动计算复杂阴影是不现实的。我们通常使用软件工具。

4.1 PVsyst 中的阴影损失模型

PVsyst 是光伏行业最常用的模拟软件。它使用“视图因子(View Factor)”和“透射率”模型。

PVsyst 的线性损失系数: 软件会计算一个遮挡系数 \(K\): $\( E_{shad} = E_{global} \times (1 - K) \)\( 其中 \)K$ 是基于太阳位置和障碍物几何形状计算出的线性损失系数。

更复杂的矩阵模型: PVsyst 还使用“远场遮挡矩阵”和“近场遮挡矩阵”,考虑散射辐射和反照率。

4.2 编程计算示例(Python)

如果我们想自己编写脚本来计算简单的串联组件阴影损失,可以使用以下逻辑:

import math

class PVModule:
    def __init__(self, v_oc, i_sc, v_mp, i_mp, num_substrings=3):
        self.v_oc = v_oc
        self.i_sc = i_sc
        self.v_mp = v_mp
        self.i_mp = i_mp
        self.num_substrings = num_substrings
        self.substrings = [{'irradiance': 1000} for _ in range(num_substrings)]

    def apply_shading(self, shaded_indices, irradiance_reduction):
        """
        模拟部分子串被遮挡
        :param shaded_indices: 被遮挡的子串索引列表
        :param irradiance_reduction: 辐照度减少比例 (0.0 - 1.0)
        """
        for idx in shaded_indices:
            self.substrings[idx]['irradiance'] *= (1 - irradiance_reduction)

    def calculate_output(self):
        """
        计算考虑旁路二极管后的输出
        假设:如果子串辐照度低于阈值,二极管导通,该子串不贡献电流
        """
        # 计算每个子串的电流 (假设电流与辐照度成正比)
        currents = []
        for sub in self.substrings:
            # 电流比例 = 当前辐照度 / 1000
            ratio = sub['irradiance'] / 1000
            current = self.i_mp * ratio
            currents.append(current)
        
        # 简化模型:旁路二极管逻辑
        # 如果某个子串电流远低于其他子串(例如低于平均值的80%),则被旁路
        # 这里我们做一个更保守的计算:取所有子串电流的最小值作为串联电路的限制
        # 但考虑到现代组件是并联子串,我们计算有效总电流
        
        # 逻辑修正:对于并联子串(通过旁路二极管隔离),有效电流是未被旁路子串的电流之和
        # 临界点:通常当子串电压无法维持时,二极管导通。
        # 在工程简化中,常认为当某子串被遮挡导致其电流 < 其他子串时,该子串被旁路。
        
        # 这里采用最简单的逻辑:如果子串被遮挡,其贡献为0(二极管导通)
        # 否则贡献全值。
        
        valid_currents = []
        for i, sub in enumerate(self.substrings):
            # 假设阈值:辐照度低于300W/m^2,二极管导通
            if sub['irradiance'] < 300:
                print(f"子串 {i+1} 二极管导通,电流被旁路")
                continue
            valid_currents.append(self.i_mp * (sub['irradiance'] / 1000))
        
        total_current = sum(valid_currents)
        
        # 功率计算 (假设电压恒定,简化计算)
        # 实际上电压会随电流变化微小变动,这里忽略
        power = self.v_mp * total_current
        return power, total_current

# --- 案例模拟 ---
# 550W组件参数
module = PVModule(v_oc=49.5, i_sc=13.8, v_mp=41.2, i_mp=13.35, num_substrings=3)

print(f"初始功率: 550W")

# 场景:底部子串(索引2)被遮挡,辐照度降至 200 W/m^2
module.apply_shading([2], 0.8) # 降低80%

p_out, i_out = module.calculate_output()
print(f"遮挡后功率: {p_out:.2f}W")
print(f"遮挡后电流: {i_out:.2f}A")
print(f"功率损失率: {(550 - p_out)/550 * 100:.2f}%")

代码解释: 这段代码模拟了一个3子串组件。当底部子串被遮挡,辐照度降至200W/m²时,软件逻辑判断该子串电流过低,触发旁路二极管。计算结果显示,功率损失约为33.3%,与我们之前的理论计算一致。

5. 减少阴影损失的策略

了解了计算公式后,我们可以通过以下方式减少损失:

  1. 优化排布:使用“排布设计软件”(如PVsyst)模拟全年阴影,确保冬至日前后排组件不遮挡后排。
  2. 使用优化器(DC Optimizers):
    • 优化器安装在每块组件背面,可以独立控制每块组件的电压和电流。
    • 原理:优化器让每块组件始终工作在最大功率点(MPPT),即使某块被遮挡,也不会拉低整串电压。
    • 计算公式: $\( P_{total} = \sum_{i=1}^{N} P_{MPPT\_i} \)\( 相比于串联电路的 \)P{total} = V{string} \times \min(I_{modules})$,优化器方案能挽回绝大部分损失。
  3. 选用带多路旁路二极管的组件:增加二极管数量(如每20-24片电池片一个二极管),可以减少单点阴影影响的范围。
  4. 定期清洗与巡检:清除鸟粪、积灰等导致的局部阴影。

6. 总结

光伏阴影计算并非简单的面积比例计算,它涉及组件内部的电气特性(单二极管模型)和旁路二极管的保护机制。

  • 核心公式:关注 \(I_{ph}\)(光生电流)的变化,以及 \(I_{module} = \sum I_{valid\_substrings}\) 的逻辑。
  • 关键发现:局部阴影可能导致整串被旁路,造成高达1/3甚至更多的功率损失。
  • 解决方案:通过几何计算规避阴影,或使用优化器技术解耦组件间的电气连接,是解决阴影问题的最有效手段。

通过本文提供的公式、案例和代码示例,您应该能够更精准地评估光伏项目中的阴影风险,并制定相应的优化策略。