Single Array PV System¶
This tutorial explores the pvlib.pvsystem module. The module has
functions for importing PV module and inverter data and functions for
modeling module and inverter performance.
- systemdef
- Angle of Incidence Modifiers
- Sandia Cell Temp correction
- Sandia Inverter Model
- Sandia Array Performance Model
- DeSoto Model
- Single Diode Model
This tutorial has been tested against the following package versions: * pvlib 0.3.0 * Python 3.5.1 * IPython 3.2 * Pandas 0.18.0
It should work with other Python and Pandas versions. It requires pvlib >= 0.3.0 and IPython >= 3.0.
Authors: * Will Holmgren (@wholmgren), University of Arizona. 2015, March 2016.
# built-in python modules
import os
import inspect
import datetime
# scientific python add-ons
import numpy as np
import pandas as pd
# plotting stuff
# first line makes the plots appear in the notebook
%matplotlib inline
import matplotlib.pyplot as plt
# seaborn makes your plots look better
try:
import seaborn as sns
sns.set(rc={"figure.figsize": (12, 6)})
except ImportError:
print('We suggest you install seaborn using conda or pip and rerun this cell')
# finally, we import the pvlib library
import pvlib
import pvlib
from pvlib import pvsystem
systemdef¶
pvlib can import TMY2 and TMY3 data. Here, we import the example
files.
pvlib_abspath = os.path.dirname(os.path.abspath(inspect.getfile(pvlib)))
tmy3_data, tmy3_metadata = pvlib.tmy.readtmy3(os.path.join(pvlib_abspath, 'data', '703165TY.csv'))
tmy2_data, tmy2_metadata = pvlib.tmy.readtmy2(os.path.join(pvlib_abspath, 'data', '12839.tm2'))
pvlib.pvsystem.systemdef(tmy3_metadata, 0, 0, .1, 5, 5)
{'albedo': 0.1,
'altitude': 7.0,
'latitude': 55.317,
'longitude': -160.517,
'name': '"SAND POINT"',
'strings_per_inverter': 5,
'modules_per_string': 5,
'surface_azimuth': 0,
'surface_tilt': 0,
'tz': -9.0}
pvlib.pvsystem.systemdef(tmy2_metadata, 0, 0, .1, 5, 5)
{'albedo': 0.1,
'altitude': 2.0,
'latitude': 25.8,
'longitude': -80.26666666666667,
'name': 'MIAMI',
'strings_per_inverter': 5,
'modules_per_string': 5,
'surface_azimuth': 0,
'surface_tilt': 0,
'tz': -5}
Angle of Incidence Modifiers¶
angles = np.linspace(-180,180,3601)
ashraeiam = pd.Series(pvsystem.ashraeiam(.05, angles), index=angles)
ashraeiam.plot()
plt.ylabel('ASHRAE modifier')
plt.xlabel('input angle (deg)')
<matplotlib.text.Text at 0x1112e4828>
angles = np.linspace(-180,180,3601)
physicaliam = pd.Series(pvsystem.physicaliam(4, 0.002, 1.526, angles), index=angles)
physicaliam.plot()
plt.ylabel('physical modifier')
plt.xlabel('input index')
<matplotlib.text.Text at 0x10fdcd240>
plt.figure()
ashraeiam.plot(label='ASHRAE')
physicaliam.plot(label='physical')
plt.ylabel('modifier')
plt.xlabel('input angle (deg)')
plt.legend()
<matplotlib.legend.Legend at 0x10434b2b0>
Sandia Cell Temp correction¶
PV system efficiency can vary by up to 0.5% per degree C, so it’s
important to accurately model cell and module temperature. The
sapm_celltemp function uses plane of array irradiance, ambient
temperature, wind speed, and module and racking type to calculate cell
and module temperatures. From King et. al. (2004):
The \(a\), \(b\), and \(\Delta T\) parameters depend on the
module and racking type. The default parameter set is
open_rack_cell_glassback.
sapm_celltemp works with either scalar or vector inputs, but always
returns a pandas DataFrame.
# scalar inputs
pvsystem.sapm_celltemp(900, 5, 20) # irrad, wind, temp
| temp_cell | temp_module | |
|---|---|---|
| 0 | 43.509191 | 40.809191 |
# vector inputs
times = pd.DatetimeIndex(start='2015-01-01', end='2015-01-02', freq='12H')
temps = pd.Series([0, 10, 5], index=times)
irrads = pd.Series([0, 500, 0], index=times)
winds = pd.Series([10, 5, 0], index=times)
pvtemps = pvsystem.sapm_celltemp(irrads, winds, temps)
pvtemps.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x10f9bbcc0>
Cell and module temperature as a function of wind speed.
wind = np.linspace(0,20,21)
temps = pd.DataFrame(pvsystem.sapm_celltemp(900, wind, 20), index=wind)
temps.plot()
plt.legend()
plt.xlabel('wind speed (m/s)')
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x110799828>
Cell and module temperature as a function of ambient temperature.
atemp = np.linspace(-20,50,71)
temps = pvsystem.sapm_celltemp(900, 2, atemp).set_index(atemp)
temps.plot()
plt.legend()
plt.xlabel('ambient temperature (deg C)')
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x11078d4e0>
Cell and module temperature as a function of incident irradiance.
irrad = np.linspace(0,1000,101)
temps = pvsystem.sapm_celltemp(irrad, 2, 20).set_index(irrad)
temps.plot()
plt.legend()
plt.xlabel('incident irradiance (W/m**2)')
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x1108734e0>
Cell and module temperature for different module and racking types.
models = ['open_rack_cell_glassback',
'roof_mount_cell_glassback',
'open_rack_cell_polymerback',
'insulated_back_polymerback',
'open_rack_polymer_thinfilm_steel',
'22x_concentrator_tracker']
temps = pd.DataFrame(index=['temp_cell','temp_module'])
for model in models:
temps[model] = pd.Series(pvsystem.sapm_celltemp(1000, 5, 20, model=model).ix[0])
temps.T.plot(kind='bar') # try removing the transpose operation and replotting
plt.legend()
plt.ylabel('temperature (deg C)')
<matplotlib.text.Text at 0x1108afa20>
snlinverter¶
inverters = pvsystem.retrieve_sam('sandiainverter')
inverters
| ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_ | ABB__MICRO_0_25_I_OUTD_US_240_240V__CEC_2014_ | ABB__MICRO_0_3HV_I_OUTD_US_208_208V__CEC_2014_ | ABB__MICRO_0_3HV_I_OUTD_US_240_240V__CEC_2014_ | ABB__MICRO_0_3_I_OUTD_US_208_208V__CEC_2014_ | ABB__MICRO_0_3_I_OUTD_US_240_240V__CEC_2014_ | ABB__PVI_3_0_OUTD_S_US_Z_M_A__208_V__208V__CEC_2014_ | ABB__PVI_3_0_OUTD_S_US_Z_M_A__240_V__240V__CEC_2014_ | ABB__PVI_3_0_OUTD_S_US_Z_M_A__277_V__277V__CEC_2014_ | ABB__PVI_3_6_OUTD_S_US_Z_M__208_V__208V__CEC_2014_ | ... | Yes!_Solar_Inc___ES5000__240V__240V__CEC_2009_ | Yes!_Solar_Inc___ES5300__208V__208V__CEC_2009_ | Yes!_Solar_Inc___ES5300__240V__240V__CEC_2009_ | Zhejiang_Yuhui_Solar_Energy_Source__Replus_250A_240V__CEC_2012_ | Zhejiang_Yuhui_Solar_Energy_Source__Replus_250B_208V__CEC_2012_ | Zigor__Sunzet_2_TL_US_240V__CEC_2011_ | Zigor__Sunzet_3_TL_US_240V__CEC_2011_ | Zigor__Sunzet_4_TL_US_240V__CEC_2011_ | Zigor__Sunzet_5_TL_US_240V__CEC_2011_ | Zigor__SUNZET4_USA_240V__CEC_2011_ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Vac | 208.000000 | 240.000000 | 208.000000 | 240.000000 | 208.000000 | 240.000000 | 208.000000 | 240.000000 | 277.000000 | 208.000000 | ... | 240.000000 | 208.000000 | 240.000000 | 2.400000e+02 | 208.000000 | 240.000000 | 240.000000 | 240.000000 | 240.000000 | 240.000000 |
| Paco | 250.000000 | 250.000000 | 300.000000 | 300.000000 | 300.000000 | 300.000000 | 3000.000000 | 3000.000000 | 3000.000000 | 3600.000000 | ... | 4900.000000 | 4600.000000 | 5300.000000 | 2.251900e+02 | 213.830000 | 2110.000000 | 3180.000000 | 4160.000000 | 5240.000000 | 4030.000000 |
| Pdco | 259.522050 | 259.552697 | 312.523347 | 312.022059 | 311.714554 | 311.504961 | 3147.009528 | 3125.758222 | 3110.342942 | 3759.288140 | ... | 5135.584132 | 4829.422409 | 5571.180956 | 2.348419e+02 | 225.563055 | 2191.825129 | 3313.675805 | 4342.409314 | 5495.829926 | 4267.477069 |
| Vdco | 40.242603 | 39.982246 | 45.259429 | 45.495009 | 40.227111 | 40.136095 | 313.429286 | 340.842937 | 389.986270 | 309.948254 | ... | 275.000000 | 275.000000 | 274.900000 | 2.846843e+01 | 28.632617 | 399.207333 | 389.513254 | 388.562050 | 386.082539 | 302.851707 |
| Pso | 1.771614 | 1.931194 | 1.882620 | 1.928591 | 1.971053 | 1.991342 | 18.104122 | 19.866112 | 22.720135 | 24.202212 | ... | 29.358943 | 26.071506 | 28.519033 | 1.646711e+00 | 1.845029 | 30.843703 | 31.265046 | 31.601704 | 32.450808 | 37.372766 |
| C0 | -0.000025 | -0.000027 | -0.000049 | -0.000035 | -0.000036 | -0.000031 | -0.000009 | -0.000007 | -0.000006 | -0.000005 | ... | -0.000006 | -0.000006 | -0.000006 | -3.860000e-07 | -0.000121 | -0.000004 | -0.000006 | -0.000004 | -0.000005 | -0.000009 |
| C1 | -0.000090 | -0.000158 | -0.000241 | -0.000228 | -0.000256 | -0.000289 | -0.000012 | -0.000025 | -0.000044 | 0.000002 | ... | 0.000020 | 0.000024 | 0.000019 | -3.580000e-04 | -0.000533 | -0.000077 | -0.000095 | -0.000079 | -0.000097 | -0.000029 |
| C2 | 0.000669 | 0.001480 | 0.000975 | -0.000224 | -0.000833 | -0.002110 | 0.001620 | 0.001050 | 0.000036 | 0.001730 | ... | 0.001870 | 0.002620 | 0.001630 | -1.350000e-02 | 0.025900 | 0.000502 | 0.000261 | 0.000213 | -0.000251 | 0.002150 |
| C3 | -0.018900 | -0.034600 | -0.027600 | -0.039600 | -0.039100 | -0.049500 | -0.000217 | -0.000471 | -0.001550 | 0.001140 | ... | -0.000276 | 0.000468 | -0.000371 | -3.350684e+01 | -0.066800 | -0.003260 | -0.001960 | -0.001870 | -0.002340 | -0.001900 |
| Pnt | 0.020000 | 0.050000 | 0.060000 | 0.060000 | 0.020000 | 0.050000 | 0.100000 | 0.100000 | 0.200000 | 0.100000 | ... | 0.500000 | 0.500000 | 0.500000 | 1.700000e-01 | 0.170000 | 0.250000 | 0.250000 | 0.200000 | 0.200000 | 0.190000 |
| Vdcmax | 65.000000 | 65.000000 | 79.000000 | 79.000000 | 65.000000 | 65.000000 | 600.000000 | 600.000000 | 600.000000 | 600.000000 | ... | 600.000000 | 600.000000 | 600.000000 | 5.500000e+01 | 55.000000 | 500.000000 | 500.000000 | 500.000000 | 500.000000 | 600.000000 |
| Idcmax | 10.000000 | 10.000000 | 10.500000 | 10.500000 | 10.000000 | 10.000000 | 20.000000 | 20.000000 | 20.000000 | 32.000000 | ... | 25.000000 | 25.000000 | 25.000000 | 1.400000e+01 | 14.000000 | 14.600000 | 22.000000 | 28.000000 | 35.300000 | 20.000000 |
| Mppt_low | 20.000000 | 20.000000 | 30.000000 | 30.000000 | 30.000000 | 30.000000 | 160.000000 | 160.000000 | 160.000000 | 120.000000 | ... | 200.000000 | 200.000000 | 200.000000 | 2.200000e+01 | 22.000000 | 150.000000 | 150.000000 | 150.000000 | 150.000000 | 240.000000 |
| Mppt_high | 50.000000 | 50.000000 | 75.000000 | 75.000000 | 50.000000 | 50.000000 | 530.000000 | 530.000000 | 530.000000 | 530.000000 | ... | 550.000000 | 550.000000 | 550.000000 | 4.500000e+01 | 45.000000 | 450.000000 | 450.000000 | 450.000000 | 450.000000 | 480.000000 |
14 rows × 1799 columns
vdcs = pd.Series(np.linspace(0,50,51))
idcs = pd.Series(np.linspace(0,11,110))
pdcs = idcs * vdcs
pacs = pvsystem.snlinverter(inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'], vdcs, pdcs)
#pacs.plot()
plt.plot(pacs, pdcs)
plt.ylabel('ac power')
plt.xlabel('dc power')
<matplotlib.text.Text at 0x10f87e8d0>
Need to put more effort into describing this function.
SAPM¶
The CEC module database.
cec_modules = pvsystem.retrieve_sam('cecmod')
cec_modules
| BEoptCA_Default_Module | Example_Module | 1Soltech_1STH_215_P | 1Soltech_1STH_220_P | 1Soltech_1STH_225_P | 1Soltech_1STH_230_P | 1Soltech_1STH_235_WH | 1Soltech_1STH_240_WH | 1Soltech_1STH_245_WH | 1Soltech_1STH_FRL_4H_245_M60_BLK | ... | Zytech_Solar_ZT275P | Zytech_Solar_ZT280P | Zytech_Solar_ZT285P | Zytech_Solar_ZT290P | Zytech_Solar_ZT295P | Zytech_Solar_ZT300P | Zytech_Solar_ZT305P | Zytech_Solar_ZT310P | Zytech_Solar_ZT315P | Zytech_Solar_ZT320P | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BIPV | Y | Y | N | N | N | N | N | N | N | N | ... | N | N | N | N | N | N | N | N | N | N |
| Date | 12/17/2008 | 4/28/2008 | 10/7/2010 | 10/4/2010 | 10/4/2010 | 10/4/2010 | 3/4/2010 | 3/4/2010 | 3/4/2010 | 1/14/2013 | ... | 12/23/2014 | 12/23/2014 | 12/23/2014 | 12/23/2014 | 12/23/2014 | 12/23/2014 | 12/23/2014 | 12/23/2014 | 12/23/2014 | 12/23/2014 |
| T_NOCT | 65 | 65 | 47.4 | 47.4 | 47.4 | 47.4 | 49.9 | 49.9 | 49.9 | 48.3 | ... | 46.4 | 46.4 | 46.4 | 46.4 | 46.4 | 46.4 | 46.4 | 46.4 | 46.4 | 46.4 |
| A_c | 0.67 | 0.67 | 1.567 | 1.567 | 1.567 | 1.567 | 1.635 | 1.635 | 1.635 | 1.668 | ... | 1.931 | 1.931 | 1.931 | 1.931 | 1.931 | 1.931 | 1.931 | 1.931 | 1.931 | 1.931 |
| N_s | 18 | 18 | 60 | 60 | 60 | 60 | 60 | 60 | 60 | 60 | ... | 72 | 72 | 72 | 72 | 72 | 72 | 72 | 72 | 72 | 72 |
| I_sc_ref | 7.5 | 7.5 | 7.84 | 7.97 | 8.09 | 8.18 | 8.54 | 8.58 | 8.62 | 8.81 | ... | 8.31 | 8.4 | 8.48 | 8.55 | 8.64 | 8.71 | 8.87 | 8.9 | 9.01 | 9.12 |
| V_oc_ref | 10.4 | 10.4 | 36.3 | 36.6 | 36.9 | 37.1 | 37 | 37.1 | 37.2 | 38.3 | ... | 45.1 | 45.25 | 45.43 | 45.59 | 45.75 | 45.96 | 46.12 | 46.28 | 46.44 | 46.6 |
| I_mp_ref | 6.6 | 6.6 | 7.35 | 7.47 | 7.58 | 7.65 | 8.02 | 8.07 | 8.1 | 8.06 | ... | 7.76 | 7.87 | 7.97 | 8.07 | 8.16 | 8.26 | 8.36 | 8.46 | 8.56 | 8.66 |
| V_mp_ref | 8.4 | 8.4 | 29 | 29.3 | 29.6 | 29.9 | 29.3 | 29.7 | 30.2 | 30.2 | ... | 35.44 | 35.62 | 35.8 | 35.94 | 36.16 | 36.32 | 36.49 | 36.66 | 36.81 | 37 |
| alpha_sc | 0.003 | 0.003 | 0.007997 | 0.008129 | 0.008252 | 0.008344 | 0.00743 | 0.007465 | 0.007499 | 0.006167 | ... | 0.004014 | 0.004057 | 0.004096 | 0.00413 | 0.004173 | 0.004207 | 0.004284 | 0.004299 | 0.004352 | 0.004405 |
| beta_oc | -0.04 | -0.04 | -0.13104 | -0.13213 | -0.13321 | -0.13393 | -0.13653 | -0.1369 | -0.13727 | -0.13635 | ... | -0.14428 | -0.14476 | -0.14533 | -0.14584 | -0.14635 | -0.14703 | -0.14754 | -0.14805 | -0.14856 | -0.14907 |
| a_ref | 0.473 | 0.473 | 1.6413 | 1.6572 | 1.6732 | 1.6888 | 1.6292 | 1.6425 | 1.6617 | 1.6351 | ... | 1.8102 | 1.8147 | 1.82 | 1.8227 | 1.8311 | 1.8443 | 1.849 | 1.8573 | 1.8649 | 1.8737 |
| I_L_ref | 7.545 | 7.545 | 7.843 | 7.974 | 8.094 | 8.185 | 8.543 | 8.582 | 8.623 | 8.844 | ... | 8.324 | 8.41 | 8.487 | 8.552 | 8.642 | 8.805 | 8.874 | 8.995 | 9.107 | 9.218 |
| I_o_ref | 1.943e-09 | 1.943e-09 | 1.936e-09 | 2.03e-09 | 2.126e-09 | 2.332e-09 | 1.166e-09 | 1.325e-09 | 1.623e-09 | 5.7e-10 | ... | 1.24e-10 | 1.23e-10 | 1.22e-10 | 1.17e-10 | 1.22e-10 | 1.31e-10 | 1.3e-10 | 1.35e-10 | 1.38e-10 | 1.44e-10 |
| R_s | 0.094 | 0.094 | 0.359 | 0.346 | 0.334 | 0.311 | 0.383 | 0.335 | 0.272 | 0.421 | ... | 0.567 | 0.553 | 0.544 | 0.539 | 0.521 | 0.516 | 0.507 | 0.496 | 0.488 | 0.476 |
| R_sh_ref | 15.72 | 15.72 | 839.4 | 751.03 | 670.65 | 462.56 | 1257.84 | 1463.82 | 724.06 | 109.31 | ... | 341.66 | 457.29 | 687.16 | 2344.16 | 2910.76 | 552.2 | 1118.01 | 767.45 | 681.89 | 603.91 |
| Adjust | 10.6 | 10.6 | 16.5 | 16.8 | 17.1 | 17.9 | 8.7 | 9.8 | 11.6 | 6.502 | ... | 5.554 | 5.406 | 5.197 | 4.792 | 5.033 | 5.548 | 5.373 | 5.578 | 5.711 | 5.971 |
| gamma_r | -0.5 | -0.5 | -0.495 | -0.495 | -0.495 | -0.495 | -0.482 | -0.482 | -0.482 | -0.453 | ... | -0.431 | -0.431 | -0.431 | -0.431 | -0.431 | -0.431 | -0.431 | -0.431 | -0.431 | -0.431 |
| Version | MM106 | MM105 | MM107 | MM107 | MM107 | MM107 | MM107 | MM107 | MM107 | NRELv1 | ... | NRELv1 | NRELv1 | NRELv1 | NRELv1 | NRELv1 | NRELv1 | NRELv1 | NRELv1 | NRELv1 | NRELv1 |
| PTC | 48.9 | 48.9 | 189.4 | 194 | 198.5 | 203.1 | 205.1 | 209.6 | 214.1 | 217.7 | ... | 248 | 252.6 | 257.3 | 261.9 | 266.5 | 271.2 | 275.8 | 280.5 | 285.1 | 289.8 |
| Technology | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | Mono-c-Si | ... | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si | Multi-c-Si |
21 rows × 13953 columns
cecmodule = cec_modules.Example_Module
cecmodule
BIPV Y
Date 4/28/2008
T_NOCT 65
A_c 0.67
N_s 18
I_sc_ref 7.5
V_oc_ref 10.4
I_mp_ref 6.6
V_mp_ref 8.4
alpha_sc 0.003
beta_oc -0.04
a_ref 0.473
I_L_ref 7.545
I_o_ref 1.943e-09
R_s 0.094
R_sh_ref 15.72
Adjust 10.6
gamma_r -0.5
Version MM105
PTC 48.9
Technology Multi-c-Si
Name: Example_Module, dtype: object
The Sandia module database.
sandia_modules = pvsystem.retrieve_sam(name='SandiaMod')
sandia_modules
| Advent_Solar_AS160___2006_ | Advent_Solar_Ventura_210___2008_ | Advent_Solar_Ventura_215___2009_ | Aleo_S03_160__2007__E__ | Aleo_S03_165__2007__E__ | Aleo_S16_165__2007__E__ | Aleo_S16_170__2007__E__ | Aleo_S16_175__2007__E__ | Aleo_S16_180__2007__E__ | Aleo_S16_185__2007__E__ | ... | Panasonic_VBHN235SA06B__2013_ | Trina_TSM_240PA05__2013_ | Hanwha_HSL60P6_PA_4_250T__2013_ | Suniva_OPT300_72_4_100__2013_ | Canadian_Solar_CS6X_300M__2013_ | LG_LG290N1C_G3__2013_ | Sharp_NDQ235F4__2013_ | Solar_Frontier_SF_160S__2013_ | SolarWorld_Sunmodule_250_Poly__2013_ | Silevo_Triex_U300_Black__2014_ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Vintage | 2006 | 2008 | 2009 | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | 2007 (E) | ... | 2013 | 2013 | 2013 | 2013 | 2013 | 2013 | 2013 | 2013 | 2013 | 2014 |
| Area | 1.312 | 1.646 | 1.646 | 1.28 | 1.28 | 1.378 | 1.378 | 1.378 | 1.378 | 1.378 | ... | 1.26 | 1.63 | 1.65 | 1.93 | 1.91 | 1.64 | 1.56 | 1.22 | 1.68 | 1.68 |
| Material | mc-Si | mc-Si | mc-Si | c-Si | c-Si | mc-Si | mc-Si | mc-Si | mc-Si | mc-Si | ... | a-Si / mono-Si | mc-Si | mc-Si | c-Si | c-Si | c-Si | mc-Si | CIS | mc-Si | c-Si |
| Cells_in_Series | 72 | 60 | 60 | 72 | 72 | 50 | 50 | 50 | 50 | 50 | ... | 72 | 60 | 60 | 72 | 72 | 60 | 60 | 172 | 60 | 96 |
| Parallel_Strings | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ... | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| Isco | 5.564 | 8.34 | 8.49 | 5.1 | 5.2 | 7.9 | 7.95 | 8.1 | 8.15 | 8.2 | ... | 5.8738 | 8.8449 | 8.5935 | 8.5753 | 8.6388 | 9.8525 | 8.6739 | 2.0259 | 8.3768 | 5.771 |
| Voco | 42.832 | 35.31 | 35.92 | 43.5 | 43.6 | 30 | 30.1 | 30.2 | 30.3 | 30.5 | ... | 52.0042 | 36.8926 | 36.8075 | 44.2921 | 43.5918 | 39.6117 | 36.8276 | 112.505 | 36.3806 | 68.5983 |
| Impo | 5.028 | 7.49 | 7.74 | 4.55 | 4.65 | 7.08 | 7.23 | 7.38 | 7.53 | 7.67 | ... | 5.5383 | 8.2955 | 8.0822 | 7.963 | 8.1359 | 9.2473 | 8.1243 | 1.8356 | 7.6921 | 5.383 |
| Vmpo | 32.41 | 27.61 | 27.92 | 35.6 | 35.8 | 23.3 | 23.5 | 23.7 | 23.9 | 24.1 | ... | 43.1204 | 29.066 | 29.2011 | 35.0837 | 34.9531 | 31.2921 | 29.1988 | 86.6752 | 28.348 | 55.4547 |
| Aisc | 0.000537 | 0.00077 | 0.00082 | 0.0003 | 0.0003 | 0.0008 | 0.0008 | 0.0008 | 0.0008 | 0.0008 | ... | 0.0005 | 0.0004 | 0.0004 | 0.0006 | 0.0005 | 0.0002 | 0.0006 | 0.0001 | 0.0006 | 0.0003 |
| Aimp | -0.000491 | -0.00015 | -0.00013 | -0.00025 | -0.00025 | -0.0003 | -0.0003 | -0.0003 | -0.0003 | -0.0003 | ... | -0.0001 | -0.0003 | -0.0003 | -0.0002 | -0.0001 | -0.0004 | -0.0002 | -0.0003 | -0.0001 | -0.0003 |
| C0 | 1.0233 | 0.937 | 1.015 | 0.99 | 0.99 | 0.99 | 0.99 | 0.99 | 0.99 | 0.99 | ... | 1.0015 | 1.0116 | 1.0061 | 0.999 | 1.0121 | 1.0145 | 1.0049 | 1.0096 | 1.0158 | 0.995 |
| C1 | -0.0233 | 0.063 | -0.015 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | ... | -0.0015 | -0.0116 | -0.0061 | 0.001 | -0.0121 | -0.0145 | -0.0049 | -0.0096 | -0.0158 | 0.005 |
| Bvoco | -0.1703 | -0.133 | -0.135 | -0.152 | -0.152 | -0.11 | -0.11 | -0.11 | -0.11 | -0.11 | ... | -0.1411 | -0.137 | -0.1263 | -0.155 | -0.1532 | -0.1205 | -0.1279 | -0.3044 | -0.1393 | -0.1913 |
| Mbvoc | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Bvmpo | -0.1731 | -0.135 | -0.136 | -0.158 | -0.158 | -0.115 | -0.115 | -0.115 | -0.115 | -0.115 | ... | -0.1366 | -0.1441 | -0.1314 | -0.1669 | -0.1634 | -0.1337 | -0.1348 | -0.2339 | -0.1449 | -0.184 |
| Mbvmp | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| N | 1.174 | 1.495 | 1.373 | 1.25 | 1.25 | 1.35 | 1.35 | 1.35 | 1.35 | 1.35 | ... | 1.029 | 1.2073 | 1.0686 | 1.0771 | 1.0025 | 1.0925 | 1.0695 | 1.2066 | 1.226 | 1.345 |
| C2 | -0.76444 | 0.0182 | 0.0036 | -0.15 | -0.15 | -0.12 | -0.12 | -0.12 | -0.12 | -0.12 | ... | 0.2859 | -0.07993 | -0.2585 | -0.355 | -0.171 | -0.4647 | -0.2718 | -0.5426 | -0.09677 | 0.3221 |
| C3 | -15.5087 | -10.758 | -7.2509 | -8.96 | -8.96 | -11.08 | -11.08 | -11.08 | -11.08 | -11.08 | ... | -5.48455 | -7.27624 | -9.85905 | -13.0643 | -9.39745 | -11.9008 | -11.4033 | -15.2598 | -8.51148 | -6.7178 |
| A0 | 0.9281 | 0.9067 | 0.9323 | 0.938 | 0.938 | 0.924 | 0.924 | 0.924 | 0.924 | 0.924 | ... | 0.9161 | 0.9645 | 0.9428 | 0.9327 | 0.9371 | 0.9731 | 0.9436 | 0.9354 | 0.9288 | 0.9191 |
| A1 | 0.06615 | 0.09573 | 0.06526 | 0.05422 | 0.05422 | 0.06749 | 0.06749 | 0.06749 | 0.06749 | 0.06749 | ... | 0.07968 | 0.02753 | 0.0536 | 0.07283 | 0.06262 | 0.02966 | 0.04765 | 0.06809 | 0.07201 | 0.09988 |
| A2 | -0.01384 | -0.0266 | -0.01567 | -0.009903 | -0.009903 | -0.012549 | -0.012549 | -0.012549 | -0.012549 | -0.012549 | ... | -0.01866 | -0.002848 | -0.01281 | -0.02402 | -0.01667 | -0.01024 | -0.007405 | -0.02094 | -0.02065 | -0.04273 |
| A3 | 0.001298 | 0.00343 | 0.00193 | 0.0007297 | 0.0007297 | 0.0010049 | 0.0010049 | 0.0010049 | 0.0010049 | 0.0010049 | ... | 0.002278 | -0.0001439 | 0.001826 | 0.003819 | 0.002168 | 0.001793 | 0.0003818 | 0.00293 | 0.002862 | 0.00937 |
| A4 | -4.6e-05 | -0.0001794 | -9.81e-05 | -1.907e-05 | -1.907e-05 | -2.8797e-05 | -2.8797e-05 | -2.8797e-05 | -2.8797e-05 | -2.8797e-05 | ... | -0.0001118 | 2.219e-05 | -0.0001048 | -0.000235 | -0.0001087 | -0.0001286 | -1.101e-05 | -0.0001564 | -0.0001544 | -0.0007643 |
| B0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ... | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| B1 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | -0.002438 | ... | -0.01053 | -0.00261 | -0.007861 | -0.006801 | -0.00789 | -0.0154 | -0.00464 | -0.0152 | -0.00308 | -0.006498 |
| B2 | 0.0003103 | 0.00031 | 0.00031 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | 0.0003103 | ... | 0.001149 | 0.0003279 | 0.0009058 | 0.0007968 | 0.0008656 | 0.001572 | 0.000559 | 0.001598 | 0.0004053 | 0.0006908 |
| B3 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | -1.246e-05 | ... | -4.268e-05 | -1.458e-05 | -3.496e-05 | -3.095e-05 | -3.298e-05 | -5.525e-05 | -2.249e-05 | -5.682e-05 | -1.729e-05 | -2.678e-05 |
| B4 | 2.11e-07 | 2.11e-07 | 2.11e-07 | 2.11e-07 | 2.11e-07 | 2.11e-07 | 2.11e-07 | 2.11e-07 | 2.11e-07 | 2.11e-07 | ... | 6.517e-07 | 2.654e-07 | 5.473e-07 | 4.896e-07 | 5.178e-07 | 8.04e-07 | 3.673e-07 | 8.326e-07 | 2.997e-07 | 4.322e-07 |
| B5 | -1.36e-09 | -1.36e-09 | -1.36e-09 | -1.36e-09 | -1.36e-09 | -1.36e-09 | -1.36e-09 | -1.36e-09 | -1.36e-09 | -1.36e-09 | ... | -3.556e-09 | -1.732e-09 | -3.058e-09 | -2.78e-09 | -2.918e-09 | -4.202e-09 | -2.144e-09 | -4.363e-09 | -1.878e-09 | -2.508e-09 |
| DTC | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ... | 2.03 | 3.03 | 2.55 | 2.58 | 3.2 | 3.05 | 3.27 | 3.29 | 3.19 | 3.13 |
| FD | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ... | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| A | -3.35 | -3.45 | -3.47 | -3.56 | -3.56 | -3.56 | -3.56 | -3.56 | -3.56 | -3.56 | ... | -3.7489 | -3.5924 | -3.5578 | -3.7566 | -3.6024 | -3.4247 | -3.7445 | -3.6836 | -3.73 | -3.6866 |
| B | -0.1161 | -0.077 | -0.087 | -0.075 | -0.075 | -0.075 | -0.075 | -0.075 | -0.075 | -0.075 | ... | -0.1287 | -0.1319 | -0.1766 | -0.156 | -0.2106 | -0.0951 | -0.149 | -0.1483 | -0.1483 | -0.104 |
| C4 | 0.9974 | 0.972 | 0.989 | 0.995 | 0.995 | 0.995 | 0.995 | 0.995 | 0.995 | 0.995 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| C5 | 0.0026 | 0.028 | 0.012 | 0.005 | 0.005 | 0.005 | 0.005 | 0.005 | 0.005 | 0.005 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| IXO | 5.54 | 8.25 | 8.49 | 5.04 | 5.14 | 7.8 | 7.85 | 8 | 8.05 | 8.1 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| IXXO | 3.56 | 5.2 | 5.45 | 3.16 | 3.25 | 4.92 | 5.08 | 5.18 | 5.39 | 5.54 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| C6 | 1.173 | 1.067 | 1.137 | 1.15 | 1.15 | 1.15 | 1.15 | 1.15 | 1.15 | 1.15 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| C7 | -0.173 | -0.067 | -0.137 | -0.15 | -0.15 | -0.15 | -0.15 | -0.15 | -0.15 | -0.15 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| Notes | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | Source: Sandia National Laboratories Updated 9... | ... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2013. Mo... | Source: CFV Solar Test Lab. Tested 2014. Mo... |
42 rows × 523 columns
sandia_module = sandia_modules.Canadian_Solar_CS5P_220M___2009_
sandia_module
Vintage 2009
Area 1.701
Material c-Si
Cells_in_Series 96
Parallel_Strings 1
Isco 5.09115
Voco 59.2608
Impo 4.54629
Vmpo 48.3156
Aisc 0.000397
Aimp 0.000181
C0 1.01284
C1 -0.0128398
Bvoco -0.21696
Mbvoc 0
Bvmpo -0.235488
Mbvmp 0
N 1.4032
C2 0.279317
C3 -7.24463
A0 0.928385
A1 0.068093
A2 -0.0157738
A3 0.0016606
A4 -6.93e-05
B0 1
B1 -0.002438
B2 0.0003103
B3 -1.246e-05
B4 2.11e-07
B5 -1.36e-09
DTC 3
FD 1
A -3.40641
B -0.0842075
C4 0.996446
C5 0.003554
IXO 4.97599
IXXO 3.18803
C6 1.15535
C7 -0.155353
Notes Source: Sandia National Laboratories Updated 9...
Name: Canadian_Solar_CS5P_220M___2009_, dtype: object
Generate some irradiance data for modeling.
from pvlib import clearsky
from pvlib import irradiance
from pvlib import atmosphere
from pvlib.location import Location
tus = Location(32.2, -111, 'US/Arizona', 700, 'Tucson')
times_loc = pd.date_range(start=datetime.datetime(2014,4,1), end=datetime.datetime(2014,4,2), freq='30s', tz=tus.tz)
ephem_data = pvlib.solarposition.get_solarposition(times_loc, tus.latitude, tus.longitude)
irrad_data = clearsky.ineichen(times_loc, tus.latitude, tus.longitude)
#irrad_data.plot()
aoi = irradiance.aoi(0, 0, ephem_data['apparent_zenith'], ephem_data['azimuth'])
#plt.figure()
#aoi.plot()
am = atmosphere.relativeairmass(ephem_data['apparent_zenith'])
# a hot, sunny spring day in the desert.
temps = pvsystem.sapm_celltemp(irrad_data['ghi'], 0, 30)
Now we can run the module parameters and the irradiance data through the SAPM function.
sapm_1 = pvsystem.sapm(sandia_module, irrad_data['dni']*np.cos(np.radians(aoi)),
irrad_data['dhi'], temps['temp_cell'], am, aoi)
sapm_1.head()
| i_sc | i_mp | v_oc | v_mp | p_mp | i_x | i_xx | effective_irradiance | |
|---|---|---|---|---|---|---|---|---|
| 2014-04-01 00:00:00-07:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 2014-04-01 00:00:30-07:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 2014-04-01 00:01:00-07:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 2014-04-01 00:01:30-07:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 2014-04-01 00:02:00-07:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
def plot_sapm(sapm_data):
"""
Makes a nice figure with the SAPM data.
Parameters
----------
sapm_data : DataFrame
The output of ``pvsystem.sapm``
"""
fig, axes = plt.subplots(2, 3, figsize=(16,10), sharex=False, sharey=False, squeeze=False)
plt.subplots_adjust(wspace=.2, hspace=.3)
ax = axes[0,0]
sapm_data.filter(like='i_').plot(ax=ax)
ax.set_ylabel('Current (A)')
ax = axes[0,1]
sapm_data.filter(like='v_').plot(ax=ax)
ax.set_ylabel('Voltage (V)')
ax = axes[0,2]
sapm_data.filter(like='p_').plot(ax=ax)
ax.set_ylabel('Power (W)')
ax = axes[1,0]
[ax.plot(sapm_data['effective_irradiance'], current, label=name) for name, current in
sapm_data.filter(like='i_').iteritems()]
ax.set_ylabel('Current (A)')
ax.set_xlabel('Effective Irradiance')
ax.legend(loc=2)
ax = axes[1,1]
[ax.plot(sapm_data['effective_irradiance'], voltage, label=name) for name, voltage in
sapm_data.filter(like='v_').iteritems()]
ax.set_ylabel('Voltage (V)')
ax.set_xlabel('Effective Irradiance')
ax.legend(loc=4)
ax = axes[1,2]
ax.plot(sapm_data['effective_irradiance'], sapm_data['p_mp'], label='p_mp')
ax.set_ylabel('Power (W)')
ax.set_xlabel('Effective Irradiance')
ax.legend(loc=2)
# needed to show the time ticks
for ax in axes.flatten():
for tk in ax.get_xticklabels():
tk.set_visible(True)
plot_sapm(sapm_1)
For comparison, here’s the SAPM for a sunny, windy, cold version of the same day.
temps = pvsystem.sapm_celltemp(irrad_data['ghi'], 10, 5)
sapm_2 = pvsystem.sapm(sandia_module, irrad_data['dni']*np.cos(np.radians(aoi)),
irrad_data['dhi'], temps['temp_cell'], am, aoi)
plot_sapm(sapm_2)
sapm_1['p_mp'].plot(label='30 C, 0 m/s')
sapm_2['p_mp'].plot(label=' 5 C, 10 m/s')
plt.legend()
plt.ylabel('Pmp')
plt.title('Comparison of a hot, calm day and a cold, windy day')
<matplotlib.text.Text at 0x10febe828>
SAPM IV curves¶
The IV curve function only calculates the 5 points of the SAPM. We will add arbitrary points in a future release, but for now we just interpolate between the 5 SAPM points.
import warnings
warnings.simplefilter('ignore', np.RankWarning)
def sapm_to_ivframe(sapm_row):
pnt = sapm_row.T.ix[:,0]
ivframe = {'Isc': (pnt['i_sc'], 0),
'Pmp': (pnt['i_mp'], pnt['v_mp']),
'Ix': (pnt['i_x'], 0.5*pnt['v_oc']),
'Ixx': (pnt['i_xx'], 0.5*(pnt['v_oc']+pnt['v_mp'])),
'Voc': (0, pnt['v_oc'])}
ivframe = pd.DataFrame(ivframe, index=['current', 'voltage']).T
ivframe = ivframe.sort_values(by='voltage')
return ivframe
def ivframe_to_ivcurve(ivframe, points=100):
ivfit_coefs = np.polyfit(ivframe['voltage'], ivframe['current'], 30)
fit_voltages = np.linspace(0, ivframe.ix['Voc', 'voltage'], points)
fit_currents = np.polyval(ivfit_coefs, fit_voltages)
return fit_voltages, fit_currents
sapm_to_ivframe(sapm_1['2014-04-01 10:00:00'])
| current | voltage | |
|---|---|---|
| Isc | 3.848214 | 0.000000 |
| Ix | 3.757784 | 25.754530 |
| Pmp | 3.425038 | 40.706316 |
| Ixx | 2.504497 | 46.107688 |
| Voc | 0.000000 | 51.509060 |
times = ['2014-04-01 07:00:00', '2014-04-01 08:00:00', '2014-04-01 09:00:00',
'2014-04-01 10:00:00', '2014-04-01 11:00:00', '2014-04-01 12:00:00']
times.reverse()
fig, ax = plt.subplots(1, 1, figsize=(12,8))
for time in times:
ivframe = sapm_to_ivframe(sapm_1[time])
fit_voltages, fit_currents = ivframe_to_ivcurve(ivframe)
ax.plot(fit_voltages, fit_currents, label=time)
ax.plot(ivframe['voltage'], ivframe['current'], 'ko')
ax.set_xlabel('Voltage (V)')
ax.set_ylabel('Current (A)')
ax.set_ylim(0, None)
ax.set_title('IV curves at multiple times')
ax.legend()
<matplotlib.legend.Legend at 0x11123b908>
desoto¶
The same data run through the desoto model.
photocurrent, saturation_current, resistance_series, resistance_shunt, nNsVth = (
pvsystem.calcparams_desoto(irrad_data.ghi,
temp_cell=temps['temp_cell'],
alpha_isc=cecmodule['alpha_sc'],
module_parameters=cecmodule,
EgRef=1.121,
dEgdT=-0.0002677) )
photocurrent.plot()
plt.ylabel('Light current I_L (A)')
<matplotlib.text.Text at 0x117c06160>
saturation_current.plot()
plt.ylabel('Saturation current I_0 (A)')
<matplotlib.text.Text at 0x117c5aac8>
resistance_series
0.094
resistance_shunt.plot()
plt.ylabel('Shunt resistance (ohms)')
plt.ylim(0,100)
(0, 100)
nNsVth.plot()
plt.ylabel('nNsVth')
<matplotlib.text.Text at 0x117c704a8>
Single diode model¶
single_diode_out = pvsystem.singlediode(cecmodule, photocurrent, saturation_current,
resistance_series, resistance_shunt, nNsVth)
single_diode_out
| i_mp | i_sc | i_x | i_xx | p_mp | v_mp | v_oc | |
|---|---|---|---|---|---|---|---|
| 2014-04-01 00:00:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:00:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:01:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:01:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:02:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:02:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:03:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:03:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:04:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:04:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:05:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:05:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:06:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:06:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:07:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:07:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:08:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:08:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:09:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:09:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:10:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:10:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:11:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:11:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:12:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:12:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:13:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:13:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:14:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 00:14:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| ... | ... | ... | ... | ... | ... | ... | ... |
| 2014-04-01 23:45:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:46:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:46:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:47:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:47:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:48:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:48:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:49:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:49:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:50:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:50:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:51:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:51:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:52:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:52:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:53:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:53:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:54:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:54:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:55:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:55:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:56:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:56:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:57:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:57:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:58:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:58:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:59:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-01 23:59:30-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
| 2014-04-02 00:00:00-07:00 | NaN | NaN | NaN | NaN | NaN | 0.022756 | 0.019739 |
2881 rows × 7 columns
single_diode_out['i_sc'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x117cde358>
single_diode_out['v_oc'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x10fe34908>
single_diode_out['p_mp'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x117cde080>