N7 Grid Simulation using Smart Meter Data

Derrick Oswald

Motivation:

• smart meter data:
• 15 minute measurements
• 50 houses per transformer service area
• 5000 service areas
• 96×50×5000 = 24 million/day
• low voltage network: 1-10GB CIM file (uncompressed)

Use-cases:

• which transformers can service these customers
• what if every tenth house gets a Tesla
• can the infrastructure support another apartment building

Architecture

Processes

• Ingest – head-end-system smart meter data into Cassandra
• CIM Generation – generation of network snapshot CIM files
• Topological Analysis – node/breaker to bus/branch & islands
• Export – export topological islands (transformer service areas)
• Baseline simulation – generate time series for everything
• Project/use-case simulation

Ingest

CIM Generation

CIMReader

Topological Analysis

CIM Export

Baseline Simulation

Generate Players

• identify loads using Spark query for EnergyConsumer
• query Cassandra to create “player” files (CSV) for loads from smart meter data
• conversion from energy ⇒ power (×4)
• back shift one 15 minute period
• output time stamp and complex value at 15 minute intervals
• time-series duration based on CIM cadence

Player Query

Spark SQL Query
select c.ConductingEquipment.Equipment.PowerSystemResource.IdentifiedObject.mRID mrid, 'energy' type, concat(c.ConductingEquipment.Equipment.PowerSystemResource.IdentifiedObject.mRID, '_load') name, t.TopologicalNode parent, 'constant_power' property, 'Watt' unit, n.TopologicalIsland island from EnergyConsumer c, Terminal t, TopologicalNode n where c.ConductingEquipment.Equipment.PowerSystemResource.PSRType == 'PSRType_HouseService' and c.ConductingEquipment.Equipment.PowerSystemResource.IdentifiedObject.mRID = t.ConductingEquipment and t.TopologicalNode = n.IdentifiedObject.mRID
Query Result Fragment
mrid type name parent property unit island HAS160 energy HAS160_load HAS160_topo constant_power Watt TRA173_terminal_2_island HAS166 energy HAS166_load HAS166_topo constant_power Watt TRA161_TRA162_terminal_2_island HAS23 energy HAS23_load HAS23_topo constant_power Watt TRA161_TRA162_terminal_2_island HAS49 energy HAS49_load HAS49_fuse_topo constant_power Watt TRA153_terminal_2_island …
GridLAB-D .glm Fragment
… object load { name "HAS160_load_object"; parent "HAS160_topo"; phases AN; nominal_voltage 400.0V; }; object player { name "HAS160_load"; parent "HAS160_load_object"; property "constant_power_A"; file "input_data/HAS160_load.csv"; }; …

Recorders

• Spark queries for “recorder” files for:
· PowerTransformer (N7) apparent power (VA)
· PowerTransformer (N7) current (A)
· BusbarSection (container PSRType_DistributionBox) voltage (V)
· BusbarSection (container PSRType_DistributionBox) apparent power (VA)
· EnergyConsumer (house service) voltage (V)
· EnergyConsumer (house service) apparent power (VA)
· ACLineSegment (N7) current (A)
• after simulation, read recorders, insert into Cassandra
• aggregate over 1, 3 and 24 hours
• time-to-live, 15 minute values “live” a year, daily values forever

Recorder Query

Spark SQL Query
select concat (p.ConductingEquipment.Equipment.PowerSystemResource.IdentifiedObject.mRID, '_power_recorder') name, p.ConductingEquipment.Equipment.PowerSystemResource.IdentifiedObject.mRID mrid, p.ConductingEquipment.Equipment.PowerSystemResource.IdentifiedObject.mRID parent, 'power' type, 'power_out' property, 'VA' unit, n.TopologicalIsland island from PowerTransformer p, Terminal t, TopologicalNode n where t.ConductingEquipment = p.ConductingEquipment.Equipment.PowerSystemResource.IdentifiedObject.mRID and t.ACDCTerminal.sequenceNumber > 1 and t.TopologicalNode = n.IdentifiedObject.mRID
Query Result Fragment
name mrid parent type property unit island TRA168_power_recorder TRA168 TRA168_TRA169 power power_out VA TRA168_TRA169_terminal_2_island TRA180_power_recorder TRA180 TRA180 power power_out VA TRA180_terminal_2_island …
GridLAB-D .glm Fragment
… object transformer { name "TRA168_TRA169"; phases AN; from "MUI4786_topo"; to "PIN2448_topo"; configuration "_1260kVA16000$400V590e-5+396e-4jΩ"; }; object recorder { name "TRA168_power_recorder"; parent "TRA168_TRA169"; property "power_out_A"; interval "900"; file "output_data/TRA168_power_recorder.csv"; }; …

Postprocessing

• events are business rules for “problem” conditions
• include a severity for color coding at the client
· node voltage deviations ±6% at any time, severity 1
· node voltage deviations ±10% at any time, severity 2
· edge current exceeding 75% for 14 consecutive hours, severity 1
· edge current exceeding 90% for 3 consecutive hours, severity 2
· edge current exceeding 110% at any time, severity 2
· transformer power exceeding 75% for 14 consecutive hours, severity 1
· transformer power exceeding 90% for 3 consecutive hours, severity 2
· transformer power exceeding 110% at any time, severity 2
• save events in Cassandra tagged by transformer service area
• coincidence/diversity factor, load factor, responsibility factor

Dashboard

Use-case: N-1

Use-case: Future DER

Use-case: New Consumer

Summary

• provides distribution level simulation with:
· Apache Spark
· Apache Cassandra
· CIM
· smart meter data
• uses topological partitioning
• performs baseline load-flow simulation
• allows project/use-cases:
· N-1
· new distributed energy resources
· new consumer