pvperfsolar performance modeling

Reference / Inverter efficiency

Model option

Sandia, with voltage terms

The Sandia inverter model with its voltage terms, from the inverter's Sandia block or fitted from its curves

Inputs used: inverter.partload_fractions, inverter.voltage_curve_v, Max. efficiency, Power threshold

Method

The method is the Sandia inverter model of King and co-workers. At the DC voltage of the timestep, the reference DC power, the start power and the curvature each change linearly with the voltage away from the reference voltage V_dco (1), and the AC output is quadratic in the DC input above the start power (2). The start power is held within half and twice P_so. At or below P_so the inverter does not start and the output is zero; between P_so and the start power the output is negative. The clip at the nameplate belongs to the operating-limit step, and the night consumption is the block's own P_nt. When the timestep has no array voltage, as when a battery discharges at night, the reference voltage is used.

Where the parameters come from. First, the inverter's Sandia block: P_aco, P_dco, V_dco, P_so, C0 to C3 and P_nt. Every inverter of the CEC library carries it, from the CEC inverter database, and an inverter given in JSON may carry it too, with P_aco equal to its AC nameplate. Otherwise the parameters are derived from the inverter's efficiency curves by the Sandia procedure, with P_aco the AC nameplate and P_nt the night consumption. With curves at two or more test voltages, as an OND file has: for each voltage a least-squares quadratic of the AC output against the DC input over that curve's points (3); the DC input at which that quadratic reaches the nameplate, and the one at which it is zero, give that voltage's reference DC power and start power (4); V_dco is the middle test voltage, and straight lines of the three per-voltage values against the voltage difference give P_dco, P_so, C0 and the coefficients C1 to C3 (5). With a single part-load curve, or curves whose voltages do not differ, steps (3) and (4) run on that one curve and C1 to C3 are zero (6). With no curve, or fewer than three points, the law is a straight line from the power threshold to the nameplate at the maximum efficiency (7). The run's warnings name the source it used: the Sandia block, a fit from N curves, a fit from one curve, or flat.

The math

  1. Voltage terms
  2. AC output
  3. Fit, step 1: a quadratic per test voltage
  4. Fit, step 2: reference and start power per test voltage
  5. Fit, step 3: lines against the voltage
  6. Fit from one curve
  7. No curve
AV=Pdco (1+C1x),BV=Pso (1+C2x),CV=C0 (1+C3x),x=V−Vdco(1)A_V = P_{dco}\,(1 + C_1 x),\qquad B_V = P_{so}\,(1 + C_2 x),\qquad C_V = C_0\,(1 + C_3 x),\qquad x = V - V_{dco} \tag{1} Pac={(PacoAV−BV−CV (AV−BV))(Pdc−BV)+CV (Pdc−BV)2Pdc>BV0Pdc≤BV(2)P_{ac} = \begin{cases} \left(\dfrac{P_{aco}}{A_V - B_V} - C_V\,(A_V - B_V)\right)(P_{dc} - B_V) + C_V\,(P_{dc} - B_V)^2 & P_{dc} > B_V \\ 0 & P_{dc} \le B_V \end{cases} \tag{2} Pac≈adPdc2+bdPdc+cd(least squares over the points of the curve at Vd)(3)P_{ac} \approx a_d P_{dc}^2 + b_d P_{dc} + c_d \quad\text{(least squares over the points of the curve at } V_d\text{)} \tag{3} Pdc,d=−bd+bd2−4ad(cd−Paco)2ad,Pso,d=−bd+bd2−4adcd2ad(4)P_{dc,d} = \frac{-b_d + \sqrt{b_d^2 - 4a_d(c_d - P_{aco})}}{2a_d},\qquad P_{so,d} = \frac{-b_d + \sqrt{b_d^2 - 4a_d c_d}}{2a_d} \tag{4} Pdc,d=β0+β1xd,Pso,d=γ0+γ1xd,ad=δ0+δ1xd,xd=Vd−Vdco;Pdco=β0, C1=β1β0, Pso=γ0, C2=γ1γ0, C0=δ0, C3=δ1δ0(5)P_{dc,d} = \beta_0 + \beta_1 x_d,\quad P_{so,d} = \gamma_0 + \gamma_1 x_d,\quad a_d = \delta_0 + \delta_1 x_d,\quad x_d = V_d - V_{dco};\qquad P_{dco} = \beta_0,\ C_1 = \frac{\beta_1}{\beta_0},\ P_{so} = \gamma_0,\ C_2 = \frac{\gamma_1}{\gamma_0},\ C_0 = \delta_0,\ C_3 = \frac{\delta_1}{\delta_0} \tag{5} Pdco=Pdc,1,Pso=Pso,1,C0=a1,C1=C2=C3=0,Vdco=the nominal voltage(6)P_{dco} = P_{dc,1},\quad P_{so} = P_{so,1},\quad C_0 = a_1,\quad C_1 = C_2 = C_3 = 0,\quad V_{dco} = \text{the nominal voltage} \tag{6} Pdco=Pacoηmax,Pso=Pthr,C0=C1=C2=C3=0(7)P_{dco} = \frac{P_{aco}}{\eta_{max}},\quad P_{so} = P_{thr},\quad C_0 = C_1 = C_2 = C_3 = 0 \tag{7}

where

Symbol Meaning Unit
AVA_V the DC input that gives the nameplate at voltage VV W
BVB_V the start power at voltage VV W
CVC_V the curvature at voltage VV 1/W
PdcoP_{dco} the DC input that gives the nameplate at VdcoV_{dco} W
PsoP_{so} the DC power that starts the inversion at VdcoV_{dco} W
C0C_0 the curvature of the AC output against the DC input at VdcoV_{dco} 1/W
C1C_1 the linear change of PdcoP_{dco} with the DC voltage 1/V
C2C_2 the linear change of PsoP_{so} with the DC voltage 1/V
C3C_3 the linear change of C0C_0 with the DC voltage 1/V
VV the DC voltage of the timestep V
VdcoV_{dco} the reference DC voltage V
PacP_{ac} the AC output before the operating limits W
PacoP_{aco} the AC nameplate W
PdcP_{dc} the DC input W
ad,bd,cda_d, b_d, c_d the quadratic, linear and constant coefficients at test voltage VdV_d —
VdV_d a test voltage of the efficiency curves V
Pdc,dP_{dc,d} the DC input at which the quadratic reaches the nameplate W
Pso,dP_{so,d} the DC input at which the quadratic is zero W
β0,β1\beta_0, \beta_1 the intercept and slope of the least-squares line of Pdc,dP_{dc,d} —
γ0,γ1\gamma_0, \gamma_1 the intercept and slope of the line of Pso,dP_{so,d} —
δ0,δ1\delta_0, \delta_1 the intercept and slope of the line of ada_d —
xdx_d the test voltage less the middle test voltage VdcoV_{dco} V
Pdc,1,Pso,1,a1P_{dc,1}, P_{so,1}, a_1 steps 1 and 2 on the single curve —
ηmax\eta_{max} the inverter's maximum efficiency —
PthrP_{thr} the inverter's power threshold W

References

  1. King, Gonzalez, Galbraith & Boyson 2007, Performance Model for Grid-Connected Photovoltaic Inverters, Sandia report SAND2007-5036
  2. Bower, Whitaker, Erdman, Behnke & Fitzgerald 2004, Performance Test Protocol for Evaluating Inverters Used in Grid-Connected Photovoltaic Systems, Sandia National Laboratories
  3. California Energy Commission, Solar Equipment Lists: inverters, with the Sandia model parameters as distributed in the NREL System Advisor Model library (CEC Inverters.csv)
  4. pvlib-python 0.16.1 source code (github.com/pvlib/pvlib-python), reference implementation: pvlib/inverter.py, sandia() and fit_sandia()

API

inverter.efficiency_interpolation = sandia_voltage, inverter.sandia

Symbols follow the symbol registry.