Storage Element: 1 Purpose
Storage Element: 1 Purpose
Storage Element
Celso Rocha, Jouni Peppanen, Paulo Radatz, Matthew Rylander, Roger Dugan
1 Purpose
This technical note describes the modelling and dispatch modes of the Storage element implemented
in 2019.
2 Why?
OpenDSS Storage element has passed through a major update in 2019. This technical note has been
elaborated mainly to explain the new features, but also to expand the previous Storage documentation
[1] with a comprehensive description of the model. The new features are:
Addition of a built-in inverter model, including losses and capability curve;
Idling losses block has been moved from the grid interface to the DC side of the inverter;
Possibility to be controlled by an InvControl control element in a similar way to PVSystem
element, including the possibility of being controlled simultaneously by a StorageController and
an InvControl;
Addition of new state variables to aid in the understanding of the operation of the element;
Besides the aforementioned features, it is worth commenting that the Storage source code has been
formulated for better compatibility with InvControl and PVSystem implementation, facilitating fu-
ture implementations of smart inverter functionalities in the InvControl source code, which are ap-
plicable to both PVSystem and Storage elements.
3 Brief Introduction
The Storage element can operate either in standalone mode or be controlled by a StorageController
[2], responsible for commanding its active power dispatch, and/or an InvControl [3], responsible for
limiting its active power dispatch and/or requesting reactive power according to different functions.
The Storage model is developed based on the old Storage model, which in turn was originally de-
veloped based on the Generator element model. Thus, both the new and the old Storage models
have inherited some of the features from the Generator model such as a built-in energy meter and
an interface to user-written DLLs.
The Storage element can be used in a Snapshot power flow to simply compute the power flow for
a selected state of the Storage element. In that case, you would simply set the state and then
solve. However, the strength of the model is in time-varying simulation modes. The model supports
Daily, Yearly and DutyCycle modes. Daily or Yearly modes are intended for analyzing energy-related
issues over a period of time with time step sizes from several minutes to one hour. DutyCycle mode
1
May 31, 2020
is intended for studying the effectiveness of energy storage to compensate for short-term second-scale
power variations, e.g., during cloud transients affecting solar PV generation.
As follows, the general Storage model is firstly presented and its operation in charging, discharging
and idling states is explained. Next, different ways to manage energy storage dispatch are summa-
rized. Then, all available standalone or “self-dispatch” modes are introduced and a summary of the
Storage state variables is provided. Then, all “self-dispatch” are illustrated with several examples.
Last, all the available Storage model properties are listed.
4 Modelling
The Storage element is a Power Conversion Element (PCE), which, at a high level, is modelled as a
constant power load during charging and as a generator that can inject power into the grid during
discharging, always subjected to its power rating and it stored energy capacity. The general model
is illustrated in Figure 1.
kW, kvar
DC
AC
State Ch/Dch
Inverter Losses
Idling Ideal Stored
Grid
Losses Storage Energy
2
May 31, 2020
Idling Losses: represent storage self-depletion losses and auxiliary loads (e.g. A/C, control and
communication equipment, etc.), which are supplied by the same inverter as the energy storage
medium/battery. When in discharging state, the self-depletion losses and auxiliary loads are
supplied by the ideal storage, increasing the power that actually discharges the element. When
in charging state, they are supplied by the inverter and act to slow the charging of the ideal
storage. In idling state, they are supplied by the grid through the inverter. Note that AC
auxiliary loads, which are not supplied by the same inverter as the storage medium/battery,
can be modeled by a load object connected in parallel to the Storage element.
5 Operation
This section demonstrates the power flow and losses within the element during the operation in each
of the three possible states.
The power flow within the Storage element is performed from the interface with the grid to the
ideal storage component. First the active power at the interface with the grid, kW and kvar are
determined. Then, all the losses (inverter, idling and charging/discharging losses) are subtracted,
with the net effect of reducing the power that actually charges/discharges the ideal storage. The power
flow within the Storage element is calculated identically in all OpenDSS solution modes (static, daily,
yearly, duty) as described in the following subsections. The power flow within the Storage element
at simulation time instant t is calculated based on the power at the Storage element grid interface
obtained from the final power flow solution (power flow executed in the last control iteration) at
simulation time instant t. For time-varying simulations, OpenDSS assumes this flow is constant over
the time interval until next time instant t + ∆t, where ∆t is the time step size selected. The following
nomenclature is used:
Pin [t]: power flowing into the storage at t when it is either in charging or idling states;
Pout [t]: power flowing out of the storage or into the grid at t when it is in discharging state;
Pidl : constant idling losses;
ηinv [t]: inverter efficiency at t;
ηch : charging efficiency;
ηdch : discharging efficiency;
E[t]: energy stored at t;
3
May 31, 2020
ch
Plosses,inv [t] = Pin [t] × (1 − ηinv [t]) (1)
The power at the DC side of the storage inverter, Pin [t] × ηinv [t], supplies the idling losses Pidl . The
charging losses are calculated analogous to the storage inverter losses:
ch
Plosses,tot [t] = Lossesch
inv [t] + Pidl + Plosses,ch [t] (3)
ch
and the power that effectively charges the ideal storage, Pef f [t], is determined by
ch
Pef f [t] = (Pin [t] × ηinv [t] − Pidl ) × ηch (4)
or, equivalently,
ch ch
Pef f [t] = Pin [t] − Plosses,tot [t] (5)
The energy stored at the next simulation time step, t + ∆t, is given by:
ch
E[t + ∆t] = E[t] + Pef f [t] × ∆t
4
May 31, 2020
Pin + jQin Pin × ηinv Pin × ηinv − Pidl (Pin × ηinv − Pidl ) × ηch
DC
AC
Ch/Dch
Inverter Losses
Pidl Idling Ideal Stored
Grid
Losses Storage Energy
Figure 2: The Internal Power Flow of the Storage Element during Charging State
dch 1
Plosses,inv [t] = Pout [t] × −1 (6)
ηinv [t]
The ideal storage supplies the power at the DC side of the inverter along with the idling losses and
the discharging losses. The discharging losses are given by:
Pout [t] 1
Plosses,dch [t] = + Pidl × −1 (7)
ηinv [t] ηdch
dch dch
Plosses,tot [t] = Plosses,inv [t] + Pidl + Plosses,dch [t] (8)
dch
and the power that effectively discharges the ideal storage, Pef f [t], is determined by
or, equivalently,
dch dch
Pef f [t] = Pout [t] + Plosses,tot [t] [W ] (10)
Therefore, the energy stored at the following time step, t + ∆t, is given by:
dch
E[t + ∆t] = E[t] − Pef f [t] × ∆t
5
May 31, 2020
AC
Ch/Dch
Inverter Losses
Pidl Idling Ideal Stored
Grid
Losses Storage Energy
Figure 3: The Internal Power Flow of the Storage Element during Discharging State
Pidl
ηinv + jQin Pidl 0 0
DC
AC
Ch/Dch
Inverter Losses
Pidl Idling Ideal Stored
Grid
Losses Storage Energy
Figure 4: The Internal Power Flow of the Storage Element during Idling State
6 Dispatch Modes
The Storage element has several different dispatch modes, i.e., different ways to control the operation
of a Storage element. The dispatch modes can be divided into self-dispatch modes and other dispatch
modes. In self-dispatch modes, a Storage element determines its own operation. In the other dispatch
3
In practice, this is how storage systems operate. Typically, the storage systems maintain a certain SOC, which
means that some charging is done to account for the self-depletion and auxiliary loads supplied by the same inverter.
6
May 31, 2020
7
May 31, 2020
energy storage systems may require the element to charge during high voltage scenarios. Thus, the
InvControl element could also be added as a mean to control the active power dispatch of a storage
element under VW function. However, this functionality has not been implemented yet. Currently,
the curve specified for VW function can only limit the active power dispatch to a value as low as
zero.
This technical note focuses on the self-dispatch modes, for both active and reactive powers. For more
information on the modes/functions available in StorageController and InvControl elements, see [2]
and [3].
Three of the five active power self-dispatch modes: Default, LoadLevel and Price, are commanded by
two triggers: one for charging, named ChargeT rigger, and the other for discharging, DischargeT rigger.
In general, a Storage element operates in a given state until one of the following events happens:
The stored energy, kW hstored, reaches the element’s rated capacity kW hRated when in charg-
ing state. In this case, the element automatically goes to idling state;
The stored energy reaches its minimum reserve, %reserve, when in discharging state. In this
case, the element automatically goes to idling state;
A trigger is activated. In this case, the storage automatically goes to the state determined by
the respective trigger, i.e., if ChargeT rigger has been activated, the storage goes to charging
state, whereas if the DischargeT rigger has been activated, the storage goes to discharging
state;
The user manually sets a new state: this can be done either through the parameter state or
kW ;
The storage receives a request from a StorageController element to operate in a specific state;
For the last three cases above, the element only operates in the selected/requested state if there is
enough energy stored/left. In other words, a given state and charge/discharge rate can always be
requested from a storage element but the storage operation may be limited among other things by
the storage energy capacity and the storage inverter operating limits (the inverter capability curve or
limit active power output and VW functions). The following subsections introduce the self-dispatch
modes.
6.1 Default
In this mode, the triggers follow the specified loadshape corresponding to the present solution mode
(properties daily, yearly and dutycycle). When the value of the loadshape is greater than the value
specified in DischargeT rigger, the storage discharges at a constant power, defined by %Discharge.
The discharging continues until either the SOC reaches %reserve or the value from the curve assumes
a value less than DischargeT rigger. Analogously, when the value of the loadshape is less than the
specified ChargeT rigger, the storage charges until either it is fully charged or the loadshape value
becomes greater than DischargeT rigger. Besides that, time criteria, if active, has priority over the
triggers. Time criteria is defined by the property T imeChargeT rigger, which corresponds to the
time of the day when the storage charging is activated, even if the value from the specified loadshape
is not less than ChargeT rigger. This mechanism can be utilized, e.g., to charge the storage at the
beginning of the day, when the demand is low, to ensure that the storage is fully charged to be
8
May 31, 2020
discharged during the rest of the day. By default, T imeChargeT rigger is active and equal to 2
(2am). To disable this feature, assign any negative value to this property.
In this mode, the triggers follow the specified loadshape corresponding to the present solution mode
(properties daily, yearly and dutycycle). Whenever the value from the curve is greater than the value
specified in DischargeT rigger, the storage discharges at a constant power, defined by %Discharge.
The discharging continues until either the SOC reaches %reserve or the value from the curve assumes
a value less than DischargeT rigger. In a similar way, whenever the value from the curve is less than
the specified ChargeT rigger the element charges until either it is fully charged or the curve assumes
a value greater than DischargeT rigger. Besides the aformentioned rules, there is another criteria
that, when active, has priority over the triggers. It is a time criteria and it is defined by the property
T imeChargeT rigger. It corresponds to the time of the day when the storage charging is activated,
even if the value from the specified loadshape is not less than ChargeT rigger. This mechanism
is normally utilized to charge the storage at the beginning of the day, when the demand is low,
to ensure that the element is fully charged for operation during the rest of the day. By default,
T imeChargeT rigger is active and equal to 2 (2am). To disable this feature, assign any negative
value to his property.
6.2 Follow
As the name suggests, in this mode, storage charging and discharging follow a loadshape until the
storage is either fully charged or discharged. As in the Default mode, the specified loadshape must
correspond to the present solution mode (properties daily, yearly and dutycycle). For positive
values, the storage is set to discharge and for negative values it is set to charge. A zero value sets
the element to idling state. Contrary to the Default mode, the charging and discharging rates are
variable and determined by the multiplication of the rated active power of the element, kW rated,
and the multipliers from the loadshape.
9
May 31, 2020
through a loadshape object that must be assigned to either def aultdaily or def aultyearly global
properties, depending on the solution mode being considered.
The commands used for defining the aforementioned properties are illustrated below.
// P r i c e S h a p e o b j e c t d e f i n i t i o n
New P r i c e S h a p e . P r i c e i n t e r v a l =1 n p t s =24
˜ p r i c e = [ 7 5 , 68 , 67 , 69 , 71 , 75 , 75 , 80 , 80 , 8 0 , 9 0 , 9 0 , 90 , 9 5 , 9 5 , 9 5 ,
105 , 105 , 110 , 110 , 110 , 90 , 90 , 90]
// A s s i g n i n g a g l o b a l p r i c e c u r v e t o t h e s i m u l a t i o n
Set p r i c e c u r v e = Price
// A s s i g n i n g a s p e c i f i c g l o b a l p r i c e
S e t p r i c e s i g n a l = 100 ! u s e t h i s when you d e s i r e t o
! manually a s s i g n a g l o b a l p r i c e
// A s s i g n i n g a g l o b a l l o a d s h a p e t o t h e s i m u l a t i o n
S e t d e f a u l t d a i l y = ‘ ‘ MyDailyLoadShapeName ’ ’ ! t h i s w i l l be c o n s i d e r e d i n
! a d a i l y mode s i m u l a t i o n
S e t d e f a u l t y e a r l y = ‘ ‘ MyYearlyLoadShapeName ’ ’ ! t h i s w i l l be c o n s i d e r e d i n
! a y e a r l y mode s i m u l a t i o n
! Optional
Set loadmult = pernunitvalue ! loadmult g l o b a l property a l s o a p p l i e s
! t o l o a d s h a p e s a s s i g n e d t o d e f a u l t d a i l y and d e f a u l t y e a r l y
6.4 External
In this mode, the storage state and dispatch values are defined by an external StorageController
control element. When a StorageController takes control over a storage element, this mode is auto-
matically activated for the storage element. Using StorageController enables further control modes
discussed in [2].
The External mode is also utilized when the user wants to take more direct control over the storage
operation, which can be done through the properties state, kW , kvar, %Charge, %Discharge. The
External mode should be selected when there is an external algorithm controlling these properties,
which is usually done through COM interface, but could also be performed by scripting the simulation
from a script file.
10
May 31, 2020
whereas a negative power factor means reactive and active powers flowing in opposite directions.
Hence, depending on the Storage element operating state, the constant PF mode can cause the
Storage element to either generate or absorb reactive power .
In constant kvar mode, the reactive power requested through kvar is decoupled from the active
power. The sign convention is the same as for active power, i.e., a positive kvar means power flowing
out of the element (var generation) and a negative kvar means power flowing into the element (var
absorption).
Note that the active and reactive powers are subject to the inverter capability curve and other limiting
functions. Thus, the actual powers at the Storage grid interface may differ from the requested ones.
For more information, see [3] and [5].
7 State Variables
Table 2 lists all the state variables of the Storage element. The state variables can be monitored by
setting a monitor for the Storage element in mode 3.
11
May 31, 2020
8 Examples
In this section, several examples are presented to show the operation of the storage element in each
of the self-dispatch modes listed in Table 1. For simplicity, a small circuit containing a single storage
connected to a voltage source will be utilized, as shown in Figure 5.
In the first example, 8.1, several aspects of the model operation will be described in details. In the
following examples, the focus will be given to the aspects related to the storage dispatch itself.
A
1
2
Circuit 3 Storage
4
0
12
May 31, 2020
! I n v e r t e r E f f i c i e n c y Curve
New XYCurve . E f f n p t s=4 x a r r a y = [ . 1 .2 .4 1.0] yarray =[.86 .9 .93 .97]
Set v o l t a g e b a s e s = [ 0 . 4 8 ]
Calcvoltagebases
S e t mode=D a i l y
Solve
The storage element operation is discussed below in detail for the different time periods:
1am - 2am : The storage SOC is 50% (250 kWh) and the storage is operating in idling state
(initial state) absorbing the power necessary to supply its idling losses and associated inverter
losses. No state change is requested as the dispatch curve is greater than ChargeT rigger and
less than DischargeT rigger;
2am - 6am : At 2am, the dispatch curve becomes less than ChargeT rigger, so the storage
changes to charging mode charging at the rated power, kW Rated;
6am - 11am : At 6am, the charging is ceased as the dispatch curve exceeds the ChargeT rigger;
11am - 5pm : At 11am, the storage starts to discharge at rated power, kW Rated, as the
13
May 31, 2020
500
Dispatch Curve Charge Trigger Discharge Trigger
1
400
Loadshape Multiplier
Stored Energy [kWh]
0.8
300
0.6
200 0.4
0.2
100
Stored Energy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
10
Output Power Inverter Losses
Input Power Idling Losses 9
50 Ch/Dch Losses
Total Losses 8
6
5
4
0 3
2
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
dispatch curve exceeds the DischargeT rigger. At 5pm, the discharging is suspended as the
stored energy reaches its reserve level (100 kW, 20% of kW hRated) even though the dispatch
curve stays above DischargeT rigger;
5pm - 12am : The element stays in idling state;
14
May 31, 2020
Note that the storage total losses 2-6am are different to the storage total losses 11am-5pm even
though the power at the storage grid interface is equal between these two periods (but with different
directions). This fact is in agreement with the storage element internal power flow discussed in
sections 5.1 and 5.2. In charging state, the power at the input of the charging losses block is
equal to the power at the grid interface, 50 kW, minus the inverter and idling losses, whereas in
discharging state, the power at the input of the discharging losses block is the sum of the output
power, the inverter and idling losses and the discharging losses itself, according to equations 2 and
7, respectively. The inverter losses also differ between charging and discharging states but less than
the charging/discharging losses.
As ηch e ηdisch have not been specified, both are equal to their default value 90%. The idling losses
are 2% of the rated power, which is equal to 1kW. Consider two time instants: one with the storage
charging and second with the storage discharging. Following the equations shown in section 5, the
storage losses during these two time instants can be described as shown below.
In charging state, the inverter efficiency (based on the inverter efficiency curve) for 50kW power at
the grid interface is ηinv ∼
= 0.968 (extracted from the report exported from monitor in mode 3). The
losses are given by:
ch
Pef f = 50 − 7.346 = 42.654 kW
In discharging state, the inverter efficiency curve (based on the inverter efficiency curve) for 50kW
power at the grid interface is ηinv ∼
= 0.972 (extracted from the report exported from monitor in mode
3). The losses are given by:
1
Lossesdch
inv = 50 × − 1 = 1.444 kW
ηinv
50 1
Lossesdch = +1 × − 1 = 5.827 kW
ηinv 0.9
Lossesdch
tot = 1.444 + 5.827 + 1 = 8.271 kW
ch
Pef f = 50 + 8.271 = 58.271 kW
We encourage the user to run the script of this example and to export the state variables from
monitor “Mon Storage1 State” to verify these results.
15
May 31, 2020
! I n v e r t e r E f f i c i e n c y Curve
New XYCurve . E f f n p t s=4 x a r r a y = [ . 1 .2 .4 1.0] yarray =[.86 .9 .93 .97]
Set v o l t a g e b a s e s = [ 0 . 4 8 ]
Calcvoltagebases
S e t mode=D a i l y
Solve
Note that a negative dispatch value means power flowing into the storage, i.e., charging state, and a
positive value means power flowing out of the storage, i.e., discharging state. Note also the similarity
of the dispatch curve and the storage powers at the grid interface. As presented in section 6.2, in
follow mode, the charge and discharge rates are determined as a product of the dispatch curve value
and the storage rated power, kW Rated. For instance, at 3am, the multiplier is -1, so the storage
charges at its rated power, 50 kW . At 3pm, a mutiplier of 0.5 leads the element to discharge at 25
kW.
To force the element to go to idling state, just specify a multiplier equal to 0. Finally, it is worth
mentioning again that the storage operation will follow the dispatch curve only if there is still enough
energy capacity left. For instance, at 10pm, the multiplier would lead the storage to discharge at 25
kW . However, at this time step, kW hstored has already reached the reserve value (100 kW), so the
element goes to idling state.
16
May 31, 2020
500
Dispatch Curve
1
400
Loadshape Multiplier
Stored Energy [kWh]
0.5
300
0
200 −0.5
100 −1
Stored Energy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
Output Input
50
Power [kW]
25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
17
May 31, 2020
New P r i c e S h a p e . P r i c e i n t e r v a l =1 n p t s =24
˜ p r i c e = [ 7 5 , 68 , 67 , 69 , 71 , 75 , 75 , 80 , 80 , 8 0 , 9 0 , 9 0 , 90 , 9 5 , 9 5 , 9 5 ,
105 , 105 , 110 , 110 , 110 , 90 , 90 , 90]
! I n v e r t e r E f f i c i e n c y Curve
New XYCurve . E f f n p t s=4 x a r r a y = [ . 1 .2 .4 1.0] yarray =[.86 .9 .93 .97]
Set v o l t a g e b a s e s = [ 0 . 4 8 ]
Calcvoltagebases
S e t p r i c e c u r v e=P r i c e
S e t mode=D a i l y
Solve
400
100
Stored Energy [kWh]
300 90
US$/MWh
80
200
70
Price Curve
60
100 Dischage Trigger
Stored Energy Charge Trigger
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
Figure 10: Stored Energy, Price Curve and Triggers in Example 8.3
18
May 31, 2020
50 Output
Input
Power [kW]
−50
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
! I n v e r t e r E f f i c i e n c y Curve
New XYCurve . E f f n p t s=4 x a r r a y = [ . 1 .2 .4 1.0] yarray =[.86 .9 .93 .97]
Set v o l t a g e b a s e s = [ 0 . 4 8 ]
Calcvoltagebases
S e t mode=D a i l y
S e t s t e p s i z e =1h
// I d l e s i n t h e f i r s t two h o u r s
// 1am=2am
S e t number=2
19
May 31, 2020
Solve
// I d l e s f o r t h e next 10 h o u r s
// 8am=5pm
Ed it S t o r a g e . S t o r a g e 1 s t a t e=i d l i n g
S e t number= 10
Solve
// I d l e s f o r t h e l a s t two h o u r s
// 11pm=12am
Ed it S t o r a g e . S t o r a g e 1 s t a t e=i d l i n g
S e t number= 2
Solve
40
Output
Input
30
Power [kW]
20
10
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
From 3am to 7am, the element is set to charge with a charging rate of 80%, 40 kW. Both are specified
20
May 31, 2020
directly through state and %charge properties. This could also be accomplished by setting kW to
-40. From 6pm to 10pm, the element is set to discharge with 50 kW through kW property. In the
other time intervals, the element is set to idling state.
Figure 13 shows the active and reactive powers at the interface with the grid. Note that because of
the negative power factor, the reactive power has an opposite sign to the active power. Figure 16
shows the PQ plane with the resulting operating points throughout the simulation. All points are
over the constant -0.9 power factor line, even during idling state.
40
30
Power [kW]
20
10
−10
−20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
21
May 31, 2020
1 Qgen (pu)
.8
kVA
.6 kWRated
.4 kvarMax
.2
kvarMaxAbs
Operating Region
Pgen (pu) PF = -0.9
-1 -.8 -.6 -.4 -.2 .2 .4 .6 .8 1
-.2 Operating Points
-.4
-.6
-.8
-1
Figure 14: PQ Plane with Inverter Capability Curve and Operating Points under Constant PF Mode
40
30
Power [kW]
20
10
−10
−20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Time [hours]
22
May 31, 2020
1 Qgen (pu)
.8
kVA
.6 kWRated
.4 kvarMax
.2
kvarMaxAbs
Operating Region
Pgen (pu) kvar = 0.4 pu
-1 -.8 -.6 -.4 -.2 .2 .4 .6 .8 1
-.2 Operating Points
-.4
-.6
-.8
-1
Figure 16: PQ Plane with Inverter Capability Curve and Operating Points under Constant kvar
Mode
23
May 31, 2020
9 List of properties
Table 3 lists all the available properties of the storage element. Some of them are referenced in
Figures 17 and 18.
Property Description
Number of Phases, this Storage element. Power is evenly divided
(1) phases
among phases.
Bus to which the Storage element is connected. May include specific
(2) bus1
node specification.
Nominal rated (1.0 per unit) voltage, kV, for Storage element. For
2- and 3-phase Storage elements, specify phase-phase kV. Otherwise,
(3) kv specify actual kV across each branch of the Storage element. If wye
(star), specify phase-neutral kV. If delta or phase-phase connected,
specify phase-phase kV.
(4) conn { wye | LN | delta | LL }. Default is wye.
Get/set the requested kW value. Final kW is subjected to the inverter
ratings. A positive value denotes power coming OUT of the element,
(5) kW which is the opposite of a Load element. A negative value indicates the
Storage element is in Charging state. This value is modified internally
depending on the dispatch mode.
Get/set the requested kvar value. Final kvar is subjected to the inverter
(6) kvar
ratings. Sets inverter to operate in constant kvar mode.
Get/set the requested PF value. Final PF is subjected to the inverter
ratings. Sets inverter to operate in constant PF mode. Nominally, the
power factor for discharging (acting as a generator). Default is 1.0.
(7) pf Enter a negative value for leading power factor (when kW and kvar
have opposite signs). A positive power factor signifies kw and kvar at
the same direction.
Indicates the inverter nameplate capability (in kVA). Used as the base
(8) kVA
for Dynamics mode and Harmonics mode values. See Figure 18.
Cut-in power as a percentage of inverter kVA rating. It is the minimum
DC power necessary to turn the inverter ON when it is OFF. Must be
(9) %CutIn greater than or equal to %CutOut. Defaults to 0, which means that
the inverter state will be always ON for this element. See Figure 18.
Cut-out power as a percentage of inverter kVA rating. It is the mini-
mum DC power necessary to keep the inverter ON. Must be less than
(10) %CutOut or equal to %CutIn. Defaults to 0, which means that, once ON, the
inverter state will be always ON for this element. See Figure 18.
Continues on next page
24
May 31, 2020
25
May 31, 2020
26
May 31, 2020
27
May 31, 2020
AC
State Ch/Dch
Inverter Losses
Idling Ideal Stored
Grid %IdlingkW
Losses Storage Energy
kWhrated, kWhstored,
%stored, %reserve
Figure 17: General Model of the Storage Element with Mapping of Properties and Internal Compo-
nents
28
May 31, 2020
Qgen (pu)
1
.8
kVA
.6 %CutIn/%CutOut
%PminNoVars
.4
%PminkvarMax
.2
kWRated
kvarMax
Pgen (pu) kvarMaxAbs
-1 -.8 -.6 -.4 -.2 .2 .4 .6 .8 1 Operating Region
-.2
Op. Region (W Only)
-.4
Op. Region (Night)
-.6
-.8
-1
29
May 31, 2020
10 References
[1] R. Dugan and D. Montenegro, “Opendss storage element and storagecontroller element,” EPRI,
OpenDSS Tech. Note, October 2019.
[2] C. Rocha, J. Peppanen, P. Radatz, M. Rylander, and R. Dugan, “Storagecontroller element,”
EPRI, OpenDSS Tech. Note, November 2019.
[3] P. Radatz, W. Sunderman, and C. Rocha, “Opendss pvsystem and invcontrol element models,”
EPRI, OpenDSS Tech. Note, November 2019.
[4] IEEE Standard for Interconnection and Interoperability of Distributed Energy Resources with
Associated Electric Power Systems Interfaces, Std., April 2018.
[5] C. Rocha, P. Radatz, J. Peppanen, M. Rylander, and R. Dugan, “Inverter modelling,” EPRI,
OpenDSS Tech. Note, 2019.
30