# PV Array

Implement PV array modules

**Library:**Simscape / Electrical / Specialized Power Systems / Sources

## Description

The PV Array block implements an array of photovoltaic (PV) modules. The array is built of strings of modules connected in parallel, each string consisting of modules connected in series. This block allows you to model preset PV modules from the National Renewable Energy Laboratory (NREL) System Advisor Model (2018) as well as PV modules that you define.

The PV Array block is a five-parameter model using a light-generated current
source (I_{L}), diode, series resistance (Rs), and shunt resistance
(Rsh) to represent the irradiance- and temperature-dependent I-V characteristics of the
modules.

The diode I-V characteristics for a single module are defined by the equations

$${I}_{d}={I}_{0}\left[\mathrm{exp}\left(\frac{{V}_{d}}{{V}_{T}}\right)-1\right]$$

$${V}_{T}=\frac{kT}{q}\times nI\times Ncell$$

where:

I
_{d}
| Diode current (A) |

V
_{d}
| Diode voltage (V) |

I
_{0}
| Diode saturation current (A) |

nI
| Diode ideality factor, a number close to 1.0 |

k
| Boltzman constant = 1.3806e-23 J.K-1 |

q
| Electron charge = 1.6022e-19 C |

T
| Cell temperature (K) |

Ncell
| Number of cells connected in series in a module |

## Ports

### Input

`Ir`

— Control signal defining Irradiance applied to solar panels, W/m2

scalar in the range `[0, 1000]`

Control signal defining that irradiance applied to solar panels,
specified as a scalar in the range `[0, 1000]`

, in
W/m2.

`T`

— Control signal defining temperature of cells, degrees Celsius

scalar

Control signal defining temperature of cells, specified as a scalar, in degrees Celsius. The input can be a finite negative, zero, or positive value.

#### Dependencies

To enable this port, clear the **Robust discrete
model** parameter.

### Output

`m`

— Measurements

five-element vector

Measurements, returned as a five-element vector. You can select these signals using the
Bus Selector block in the Simulink^{®} library.

Signal | Signal Name | Definition |
---|---|---|

1 | V_PV | PV array voltage (V) |

2 | I_PV | PV array current (A) |

3 | I_diode | diode current (A) |

4 | Irradiance (W/m2) | Irradiance (W/m2) |

5 | Temperature (deg C) | Temperature (degrees C) |

### Conserving

`+`

— Positive terminal

specialized electrical

Specialized electrical conserving port associated with the positive terminal of the PV array.

`-`

— Negative terminal

specialized electrical

Specialized electrical conserving port associated with the negative terminal of the PV array.

## Parameters

### Parameters

`Parallel strings`

— Strings of series-connected modules connected in parallel

`40`

(default) | positive integer

Number of strings of series-connected modules that are connected in parallel.

`Series-connected modules per string`

— PV modules connected in series in each string

`10`

(default) | positive integer

Number of PV modules connected in series in each string.

`Display I-V and P-V characteristics of ...`

— Characteristics of one module or whole array

```
array @ 1000 W/m2 & specified
temperatures
```

(default) | ```
one module @ 25 deg.C & specified
irradiances
```

| ```
array @ 25 deg.C & specified
irradiances
```

Display the I-V and P-V characteristics of one module or of the whole array, for
variable irradiance or for variable temperatures. The selected
characteristics display when you click
**Plot**.

`Irradiances (W/m2)`

— Vector of irradiances

`[ 1000 500 100 ]`

(default) | vector of 1 or more elements

Vector of irradiances in W/m^{2}. The vector must have at least
one element. The **Plot** button will show I-V and
P-V module characteristics for every irradiance listed in the
vector.

#### Dependencies

To enable this parameter, set **Display I-V and P-V
characteristics of** to ```
one module @ 25
deg.C & specified irradiances
```

or
```
array @ 25 deg. C & specified
irradiances
```

.

`T_cell (deg. C)`

— Temperatures

`[ 45 25 ]`

(default) | vector of 1 or more elements

Vector of temperatures in degrees Celsius. The vector must have at least one element.
The **Plot** button will show I-V and P-V module
characteristics for every temperature operating point listed in the
vector.

#### Dependencies

To enable this parameter, set **Display I-V and P-V
characteristics of** to ```
array @ 1000 W/m2
& specified temperatures
```

.

`Module`

— User-defined or preset PV module

`User-defined`

(default) | `A10Green Technology A10J-S72-175`

| `A10Green Technology A10J-S72-180`

| `A10Green Technology A10J-S72-185`

| `A10Green Technology A10J-M60-220`

| ...

Select `User-defined`

or a preset PV module from the NREL
System Advisory Model database. Over 10,000 modules are listed from main
manufacturers, sorted in alphabetical order. The NREL database includes
manufacturer datasheets measured under standard test conditions (STC),
where the irradiance is 1000 W/m^{2} and the
temperature is 25 degrees Celsius.

**Note**

In releases earlier than R2021a, the module list includes
manufacturer modules that are no longer present in the list. If you
use one of these modules, the block sets the
**Module** parameter to
`User-defined`

and does not change the
module data parameter values.

When you select a module, these parameters are updated with data from the NREL database:

**Cells per module (Ncell)****Open circuit voltage Voc (V)****Short-circuit current Isc (A)****Voltage at maximum power point Vmp (V)****Current at maximum power point Imp (A)****Temperature coefficient of Voc (%/deg.C)****Temperature coefficient of Isc (%/deg.C)**

The function computes these five corresponding model parameters using an optimization function and displays them on the right side of the dialog box.

**Light-generated current IL (A)****Diode saturation current I0 (A)****Diode ideality factor****Shunt resistance Rsh (ohms)****Series resistance Rs (ohms)**

When you select `User-defined`

, enter your own specifications
for the module data parameters. When you apply the changes, the function
computes the five model parameters.

`Maximum Power (W)`

— Power at maximum power point

`213.15`

(default) | positive scalar

Power obtained at the maximum power point. The maximum power is
calculated as *Pmax* = *Vmp* x
*Imp*, where:

*Pmax*is the value of the**Maximum Power (W)**parameter.*Vmp*is the value of the**Voltage at maximum power point Vmp (V)**parameter.*Imp*is the value of the**Current at maximum power point Imp (A)**parameter.

This parameter is read-only.

`Cells per module (Ncell)`

— Cells per module

`60`

(default) | positive integer

Number of cells per module.

`Open circuit voltage Voc (V)`

— Voltage when circuit open

`36.3`

(default) | positive scalar

Voltage at 25 degrees Celsius obtained when array terminals are left open.

`Short-circuit current Isc (A)`

— Current when short circuited

`7.84`

(default) | positive scalar

Current at 25 degrees Celsius obtained when array terminals are short circuited.

`Voltage at maximum power point Vmp (V)`

— Maximum power point voltage

`29`

(default) | positive scalar

Voltage at maximum power point.

`Current at maximum power point Imp (A)`

— Maximum power point current

`7.35`

(default) | positive scalar

Current at maximum power point.

`Temperature coefficient of Voc (%/deg.C)`

— Variation of *Voc* as function of temperature

`-0.36099`

(default) | scalar

Defines variation of *Voc* as a function of
temperature. The open-circuit voltage at temperature
*T* is obtained as

* Voc _{T}
* =

*Voc*(1 +

*beta_Voc*(

*T*–25)),

where *Voc* is the open-circuit voltage at 25 degrees C,
*VocT* is the open-circuit voltage at temperature
*T* (in degrees C), *beta_Voc* is
the temperature coefficient (in %/degrees C), and *T*
is the temperature in degrees C.

`Temperature coefficient of Isc (%/deg.C)`

— Variation of *Isc* as function of temperature

`0.102`

(default) | positive scalar

Defines variation of *Isc* as a function of
temperature. The short-circuit current at temperature
*T* is obtained as

* Isc _{T}
* =

*Isc*(1 +

*alpha_Isc*(

*T*–25)),

where *Isc* is the short-circuit current at 25
degrees C, *IscT* is the short-circuit current at
temperature *T* (in degrees C),
*alpha_Isc* is the temperature coefficient (in
%/degrees C) and *T* is the temperature in degrees
C.

`Light-generated current IL (A)`

— Current for one module under STC

no default

Current for one module under STC, flowing out of the controllable current source that models the light-generated current. An optimization function determines this parameter to fit the module data. This parameter is read-only.

`Diode saturation current I0 (A)`

— Saturation current of diode

no default

Saturation current of the diode modeling the PV array for one module under STC. An optimization function determines this parameter to fit the module data. This parameter is read-only.

`Diode ideality factor`

— Ideality factor of diode modeling PV array

no default

Ideality factor of the diode modeling the PV array. An optimization function determines this parameter to fit the module data. This parameter is read-only.

`Shunt resistance Rsh (ohms)`

— Shunt resistance of the model

no default

Shunt resistance of the model for one module under STC. An optimization function determines this parameter to fit the module data. This parameter is read-only.

`Series resistance Rs (ohms)`

— Series resistance of the model

no default

Series resistance of the model for one module under STC. An optimization function determines this parameter to fit the module data. This parameter is read-only.

### Advanced

`Robust discrete model`

— Iterate to resolve algebraic loop

`off`

(default) | `on`

When selected, the robust solver iterates to resolve the algebraic
loop in the internal diode model. The maximum number of iterations is
specified in the **Preferences** tab of the
powergui block, in the **Solver details for
nonlinear elements** section. For real-time applications,
you may need to limit the number of iterations. The robust solver is the
recommended method for discretizing the PV Array model. When selected,
the cell temperature is specified by the **Cell temperature, in
deg.C. (input 2 is disabled)** parameter, and the
**T** port is hidden.

When cleared, the algebraic loop is controlled by the **Break
algebraic loop in internal model** parameter.

For more information on what method to use in your application, see Simulating Discretized Electrical Systems.

#### Dependencies

To enable this parameter, set the **Simulation
type** parameter of the powergui block
to `Discrete`

.

`Cell temperature, in deg.C. (input 2 is disabled)`

— Specify cell temperature

`25`

(default)

Specify the cell temperature in degrees Celsius.

#### Dependencies

To enable this parameter, select **Robust discrete
model**.

`Break algebraic loop in internal model`

— Break algebraic loop of internal diode model

`on`

(default) | `off`

Select to break the algebraic loop of the internal diode model. In
discrete models, the parameter is visible only if the **Robust
discrete model** parameter is cleared.

If you use the block in a continuous system, the algebraic loop is cut by using a first-order filter.

If you use the block in a discrete system, the algebraic loop is cut
by using a one-simulation-step time delay. This approach can cause
numerical oscillations if the sample time of the simulation is too
large. For example, a PV Array block connected to an average model of
power converter can run with a sample time as large as
`50e-6`

seconds. In this case, the algebraic loop
is required to get an iterative, accurate solution for the highly
nonlinear diode characteristics. If the sample time of the simulation is
small, such as `1e-6`

seconds for a PV Array block
connected to a detailed power electronic converter using real switches
and a 5 kHz PWM inverter, select this parameter to speed up simulation
and get accurate resolution.

#### Dependencies

To enable this parameter, clear **Robust discrete
model**.

`Break loop time constant (s)`

— Time constant of filter block that breaks algebraic loop

`1e-6`

(default) | positive scalar

When the **Break algebraic loop in internal model**
parameter is selected, the algebraic loop is cut by using a first-order
filter when the simulation is continuous. If you use the block in a
discrete system, the algebraic loop is cut by using a
one-simulation-step time delay.

#### Dependencies

To enable this parameter, select **Break algebraic loop in internal
model** and, in the powergui block, set
**Simulation type** to
`Continuous`

.

`Measurement filter time constant (s)`

— Measurement filters

`5e-5`

(default) | positive scalar

When the **Break algebraic loop in internal model**
parameter is cleared, measurement filters are used inside the
measurement output, m, for the PV array voltage (signal 1) and PV array
current (signal 2).

#### Dependencies

To enable this parameter, clear **Robust discrete model** and
**Break algebraic loop in internal
model**.

## Extended Capabilities

### C/C++ Code Generation

Generate C and C++ code using Simulink® Coder™.

## Version History

**Introduced in R2015a**

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

# Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)