Documente Academic
Documente Profesional
Documente Cultură
Jason Fuller
Electricity Infrastructure Technical Group Manager
Pacific Northwest National Laboratory
Open-source, time-series simulation of an operating smart grid, from the substation to individual end-use loads & distributed
energy resources, in unprecedented detail
1) power flow 2) control systems
Simultaneously solves 3) retail markets 4) electromechanical dynamics
April 12, 2018 5) end-use load behavior in tens of thousands of buildings and devices
GridLAB-D Capabilities
Performs time-series simulations
Seasonal effects (days to years)
Midterm dynamic behavior (secs to hrs)
System dynamics (milliseconds)
Simulates control system interactions
Device- and system-level controls
Market interactions
• Dynamic simulation can include time series (timestep greater than 1 second)
• For this presentation, quasi-steady state simulation is defined as having a timestep at 1 second or greater
– Sequence of powerflow states coupling other behaviors, such as multi-state load models
– Focused typically on 1-minute or longer range – behavioral and diurnal dynamics
• For this presentation, dynamic simulation is defined as having a timestep less than 1 second
– Sequence of powerflow states coupling differential equations
– Focused mainly on 0.5 ms to 50 ms range – electromechanical dynamics
GridLAB-D Architecture
Core responsibilities
Integrates models
Markets
Manages memory & CPUs
Events
Communications Coordinates time
Behavior Handles stochastic requirements
GridLAB Buildings
Telemetry Core Synchronizes updates (ranks)
Weather
Coordinates variable sharing
Analysis Power System Manages convergence
Controls Protection Tracks numerical stability
Measures system performance
Debugs module behavior
9
Running a Simulation
12
module powerflow;
• Defines the initial conditions of module residential;
module tape;
each agent object triplex_meter {
phases AS;
• Defines the relationships nominal_voltage 120 V;
name my_meter1;
object house {
• Sets the run-time parent my_meter1;
name my_house1;
floor_area random.normal(1500,300) sf;
• Defines which parameters to }
heating_setpoint 70.0 degF;
Outputs
Note: I added a couple metering points and added a climate object.
• Must be defined
– Does NOT automatically record every
variable at every timestep
• Typically CSVs
– Most often a time series of data channels
– Some aggregation and reporting
– Can also be pushed to databases (or
external connections)
• XML “dump” can be used to pull the
entire system state simultaneously
• Collectors can aggregate similar
properties from across many agents
15
Input Parameters
• Fixed, static parameters
• Randomized over a population
• Driven by a time-series input
– Player
– Shape
– Schedule
– External Source
• Once properly randomized (and diversified), we can build a
load shape most of us are more familiar with…
Power (kW)
Power (kW)
0
2
4
6
8
10
12
0
5
10
15
20
25
30
35
40
45
50
0:00
0:00
1:00
1:00
2:00
2:00
3:00
3:00
1 Home
4:00
8 Homes
4:00
5:00
5:00
6:00 6:00
7:00 7:00
8:00 8:00
9:00 9:00
10:00 10:00
11:00 11:00
12:00 12:00
13:00 13:00
14:00 14:00
15:00 15:00
16:00 16:00
17:00 17:00
18:00 18:00
19:00 19:00
20:00 20:00
21:00 21:00
22:00 22:00
23:00 23:00
Power (kW)
Power (kW)
0
100
150
200
250
300
350
400
450
50
50
0
100
150
200
250
300
350
400
450
0:00
0:00
1:00
1:00
2:00
2:00
3:00
3:00
4:00
4:00
Loadshape
5:00
5:00
100 Homes
6:00
6:00
7:00
7:00
8:00
8:00
9:00
9:00
10:00
10:00
Example of Adding Agents
11:00 11:00
12:00 12:00
13:00 13:00
14:00 14:00
15:00 15:00
16:00 16:00
17:00 17:00
18:00 18:00
19:00 19:00
20:00 20:00
21:00 21:00
22:00 22:00
23:00 23:00
16
17
behaviors
VA
3000
2000
1000
0
0:00 4:48 9:36 14:24 19:12 0:00
Time
18
module powerflow;
module residential;
module tape;
object triplex_meter {
phases AS;
nominal_voltage 120 V;
name my_meter1;
}
object house {
parent my_meter1;
name my_house1;
floor_area random.normal(1500,300);
heating_setpoint 70.0 degF;
}
object recorder{
parent my_house1;
property air_temperature;
file theat_record.csv;
interval 60 s;
}
19
We try to help…
• Model creation, conversion, and execution scripts are available
– A number are available on GridLAB-D repository (primarily Python)
– Some are located in other open-source tools (e.g., TESP, OMF, etc.)
60
1,200 kW
59
58
57
4 6 8 10
Time (sec)
Improving Controls
Population Distributions Time-Dependent Behaviors
Total Delta of Bill with RTP & Demand Response versus Fixed (Unintended Interactions)
50000 $200.00
40000
$150.00
30000
$100.00
Annual Energy Consumption (kWh)
20000
$50.00
10000
Annual Energy
0 $-
Delta Annual Bill
Poly. (Delta Annual Bill)
-10000
$(50.00)
-20000
$(100.00)
-30000
$(150.00)
-40000
-50000 $(200.00)
11
21
31
41
51
61
71
81
91
101
111
121
131
141
151
161
171
181
191
201
211
221
231
241
251
261
271
281
291
1
Further Information
Video Tutorials, Walkthrough, and Other Good Information
https://www.gridlabd.org/started.stm
GitHub Links
Contact: https://github.com/gridlab-d/gridlab-d
Jason Fuller
jason.fuller@pnnl.gov Wiki
Frank Tuffner http://gridlab-d.shoutwiki.com/wiki/Main_Page
francis.tuffner@pnnl.gov
SourceForge Forums (Help Questions)
https://sourceforge.net/p/gridlab-d/discussion
Users’ Publications
http://gridlab-d.shoutwiki.com/wiki/Publications