This document provides a detailed overview of the methodology used to detect irradiance sensor shading caused by row-to-row shading in single-axis tracking systems. The purpose is to detect the affected sensor, the period during which the sensor is subject to shading, and - where an associated sensor is available - to reconstruct a corrected irradiance during the shaded period. An image from a case study is shown in Figure 1.

The purpose of this document is to provide insights into the methodology employed, giving confidence in Performance+'s reliability and accuracy. The document covers the full process, from data preparation to shading detection and the final irradiance correction.

Chapter 1 outlines the data preparation and the conditions under which the algorithm runs, while Chapter 2 describes the row-to-row shading detection logic and the subsequent irradiance correction.

Figure 1 - Shaded sensor on single-axis tracking system

Figure 1: Shaded sensor on single-axis tracking system

The purpose of this logic is to detect instances such as the one shown in Figure 1, where the bottom irradiance sensor is shaded due to row-to-row shading.

1. Data preparation

The job runs on the racking-group level to evaluate the selected plane-of-array (POA) irradiance sensor data. We source 30 days of data in order to run the algorithm. The following datasets are prepared and loaded to execute the algorithm:

  • Selected POA irradiance dataset (after basic data cleaning)
  • Clear-day flags based on sensor or site-wide clear-sky detection
  • Modelled clear-sky global horizontal irradiance (ghi_cs)
  • Remaining available irradiance datasets with the same orientation as the inverter (after basic data cleaning)

For the algorithm to run, the following conditions have to be satisfied:

  1. Site is a single-axis-tracking (SAT) site
  2. Existence of an assigned irradiance sensor
  3. Minimum of 10 days of selected POA irradiance dataset available, where a day counts as available only if more than 80% of its daytime datapoints pass the data-quality checks
  4. At least 1/3 (30%) of the available days are clear-sky days

2. Row-to-row shading detection

The basis for row-to-row shading detection are typical daily profiles of the daily irradiance patterns. We create daily profiles for the modelled clear-sky global horizontal irradiance (ghi_cs) as well as for the measured POA irradiance source. We use the 90th percentile (P90) of the daily profiles for both datasets and additionally the 75th percentile (P75) for the measured POA dataset. A daily profile overlays the daily datasets of the same source across the sourced period and creates a summarized function. An example is shown in Figure 2. The functions are normalized against their maximum values so that they share the same scale.

Figure 2 - P75 and P90 daily irradiance profiles together with GHI_CS

Figure 2: P75 and P90 daily irradiance profiles together with GHI_CS

The next step is to detect morning and/or evening shading instances based on the irradiance and clear-sky irradiance trends (see the morning and evening periods in Figure 2). The following filters are applied to differentiate the morning and evening datasets:

  • Both: filter the dataset for a minimum irradiance threshold of 5% of the normalized ghi_cs irradiance
  • Morning: filter data where the clear-sky irradiance (ghi_cs) is increasing, up to the point where the measured P90 POA profile reaches its maximum (to exclude midday fluctuations)
  • Evening: filter data where the clear-sky irradiance (ghi_cs) is decreasing, from the point where the measured P90 POA profile starts to decrease

Shading is detected where the normalized clear-sky irradiance profile (ghi_cs) is larger than or equal to the normalized measured POA P75 profile. A detected morning or evening period is only kept if it spans at least one hour. Based on this logic, we detect morning shading for the sensor depicted in Figure 2.

Due to the nature of averaging data using the typical daily profile, this detector identifies time periods across the whole sourced window. Because of that, we additionally apply a daily adaptive expansion of the shading zones. If shading has been detected using the typical daily profiles, we expand or shorten the shading periods for individual days by detecting large jumps (stemming from the transition between shaded and non-shaded instances) in the irradiance dataset and adjusting the daily time period accordingly. A large jump is defined as an irradiance datapoint of at least 200 W/m^2 that is also at least twice the previous value, evaluated within a +/-30-minute window around the shading-block boundary. Furthermore, an individual shaded datapoint must have an irradiance below 25% of the maximum value and above a minimum irradiance threshold of 0.5 W/m^2.

Finally, where a valid correction is available, the shaded POA datapoints are replaced with a corrected irradiance. The correction is computed by transposing the site-wide median GHI (across all reliable sensors) to the shaded sensor's plane of array using the racking group's tracker model. At shaded timestamps, the original POA reading is overwritten with this transposed value; all non-shaded timestamps keep their original readings. The output is flagged per timestamp with a shading flag (1 = shading detected, 0 = no shading).

The shading-corrected irradiance is then used downstream throughout Performance+, feeding into all subsequent analytics that rely on the affected sensor so that row-to-row shading no longer distorts the results.