Overview

Through a series of industry centric meetings and workshops, the U.S. Department of Energy Office of Electricity Delivery and Energy Reliability (DOE-OE) gathered input from utilities throughout the United States on their experiences in implementing, or planning to implement, ADMS. The results of these meetings are documented in a February 2015 report titled Voices of Experience: Insights into Advanced Distribution Management Systems.

The report documents the potential benefits to utilities in implementing ADMS applications, and underscores the need for more affordability, a timely path for deploying ADMS, and the development and deployment of ADMS applications. The high cost and amount of time required for ADMS deployment and application development was highlighted.

In response to these needs, DOE-OE has established an ADMS program with this project specifically tasked with developing an open-source, standards based ADMS application development platform - GridAPPS-D.

Conceptual Design Summary

A conceptual design for GridAPPS-D was created at the beginning of the project. The conceptual design is summarized below. The full design document may be downloaded from this link - GridAPPS-D Conceptual Design

This document provides a high level, conceptual view of the platform and provides related background and contextual information. This document is intended to both educate readers about the technical work of the project and to serve as a point of reference for the project team. The document will be updated as the project progresses.

Architecture

A conceptual architecture for the system has five key functional elements as shown in Figure 1:

  1. Tools help developers enhance the functionality of their applications. Examples might include off-line power flow, optimization tool boxes, state estimators, statistical processing, etc.
  2. I/O allows convenient access to the power system model and data through standards-based queries and messages. Conversely, applications can send control signals to the simulator using standard message schemas.
  3. Development utilities include loggers, debuggers, access control, test managers, user interface toolkits, and other application support functions.
  4. Data bus is based on industry standards like IEC 61968 and 61970 (i.e. the Common Information Model), plus more to be identified.
  5. Distribution simulator represents the power system operating in real time. Initially, this will be GridLAB-D, but future versions may include EPRI’s OpenDSS, ns-3 for communications, and other federated co-simulators.

Figure 1 also shows the relationships between GridAPPS-D, the ADMS application developer and commercial tools. Two different classes of data flow are shown:

  1. Control and configuration data are shown with dashed lines; this allows the application developer to manage the platform.
  2. Data flowing as a part of an application are shown with solid lines.

For more detailed information about the architecture and design, see UML from the Functional Specification

conceptual_design

Figure 1: GridAPPS-D provides a method for developers (top) to run their new applications on a real-time simulator with extensive modeling and tool support (heavy box). GridAPPS-D is built around standard data models like the CIM (center). It readily interfaces to existing software products (right), which may also 1) use components of GridAPPS-D and 2) supplement or replace the built-in distribution simulator (bottom), facilitating the deployment of new ADMS applications to existing software products.

Definition of Terms

Process Manager - Process Manager keeps track of all the processes running on the platform. These processes may include simulators, requests, applications and other managers. It is also the starting point for a request received by the platform.

Configuration Manager - It receives simulation configuration request from Process Manager and parses it to build the necessary configuration files.

Data Manager - The data manager accesses the database to build the model files used by the simulator.

Simulation Manager - The simulation manager launches the simulator and other required applications such as the FNCS bridge, FNCS, and the VoltVar application. It is in charge of managing the timing of the simulation and reporting output from the simulation out to the simulation status topic.

FNCS-GOSS Bridge - Serves as a bridge between FNCS and Simulation Manager.

FNCS - FNCS is a network co-simulator used to communicate between simulator and FNCS-GOSS bridge

Platform - Refers to GridAPPS-D platform.

RC1 - Release Cycle 1.

Simulation - A real world distribution system currently done by GridLAB-D

Simulator - In current release GridLAB-D serves as the simulator.

VoltVar Application -

Vizualization - A web-based visualization application is developed in RC1 to view power system model with real time values from simulation result.

GOSS - Grid Optics Software System is a middleware architecture designed as a prototype future data analytics and integration platform

GridLAB-D - GridLAB-D is a distribution level powerflow simulator. It acts as the real world distribution system in GridAPPS-D.

Power System Model - IEEE 8500 model is used in RC1.

Model - See Power System Model

CIM - Common Information Model is a standard for representing electrical network and exchange information.

References

[CIT1]W. H. Kersting, “Radial distribution test feeders,” in 2001 IEEE Power Engineering Society Winter Meeting. Conference Proceedings (Cat. No.01CH37194), 2001, pp. 908-912 vol.2.
[CIT2]R. F. Arritt and R. C. Dugan, “The IEEE 8500-node test feeder,” in IEEE PES T&D 2010, 2010, pp. 1-6.
[CIT3]M. E. Baran and H. Ming-Yung, “Volt/VAr control at distribution substations,” in IEEE Transactions on Power Systems, vol. 14, pp. 312-318, 1999.
[CIT4]V. Borozan, M. E. Baran, and D. Novosel, “Integrated volt/VAr control in distribution systems,” in 2001 IEEE Power Engineering Society Winter Meeting. Conference Proceedings (Cat. No.01CH37194), 2001, pp. 1485-1490 vol.3.
[CIT5]K. P. Schneider and J. C. Fuller, “Voltage control devices on the IEEE 8500 node test feeder,” in IEEE PES T&D 2010, 2010, pp. 1-6.
[CIT6]I. Gorton et al., “GridOPTICS(TM) A Novel Software Framework for Integrating Power Grid Data Storage, Management and Analysis,” in System Sciences (HICSS), 2013 46th Hawaii International Conference on, 2013, pp. 2167-2176.
[CIT7]S. Ciraci, J. Daily, J. Fuller, A. Fisher, L. Marinovici, and K. Agarwal, “FNCS: a framework for power system and communication networks co-simulation,” in Proceedings of the Symposium on Theory of Modeling & Simulation - DEVS Integrative, Tampa, Florida, 2014, pp. 1-8.
[CIT8]D. P. Chassin, J. C. Fuller, and N. Djilali, “GridLAB-D: An agent-based simulation framework for smart grids,” in Journal of Applied Mathematics, vol. 2014, no. 492320, pp. 1-12, 2014.

Release History

Version: Release Cycle 1 (RC1)

Release Date: May 2017

Version description: This is the first version for internal release of GridAPPS-D platform. This is not ready for public use yet.

Functional requirements covered in this release:

  • 102/202 Command Interface
  • 301 Real-time Simulation Data
  • 310 Hosted Application, but short-cutting the registration process (partial)
  • 401 Distribution Co-Simulator (partial)
  • 402 Process Manager (partial)
  • 404 Data Manager (partial)
  • 405 Simulation Manager (partial)
  • 406 Power System Model Manager (partial)
  • 413 Platform Manager (encapsulating 401 and 403-406)

Version: 2019.01.0

Release Date: January 2019

GridAPPS-D v2019.01.0 release contains following features/updates:

  1. Platform updates:

    • Simulation can run as fast as possible as well as real-time (every 3 seconds)
    • Simulation can run with houses if present in the model.
    • Following components can be controlled while the simulation is running:
      • Open or close capacitors
      • Open or close switches
      • Change tap setting for regulators
      • Changing control modes for regulators
      • Change inverter P & Q output
      • Set control modes for regulators and capacitors
    • Simulation request creates the input weather file.
    • gridappsd-python:
      • (@Craig: list out updates here)
    • cim2glm:
      • Optional house cooling load components
    • Single-phase power electronics and fuse ratings
    • Inverter parameters changed from rotating machines to power electronics
    • Solar and storage
    • Measurements exported to the circuit metadata (JSON file); SimObject identifies the corresponding GridLAB-D object
    • Supplemental scripts to populate feeder with measurements and houses
    • Rotating machines, only parameters essential for the UAF lab microgrid
    • In GridLAB-D export of loads, each node or triplex_node will have separate submeters for houses, PV inverters, battery inverters and rotating machines, i.e., not patterned after net metering
  2. Data updates:

    2.1 Power grid models:

    • Power grid models are stored in blazegraph database in its own docker container.
    • Following models are pre-loaded
      • EPRI_DPV_J1
      • IEEE123
      • IEEE13
      • R2_12_47_2
      • IEEE8500
      • IEEE123_pv
    • User can upload customized model (@Tara: attach readthedocs link)

    2.2 Weather:

    • Weather data in stored in InfluxDB using Proven.
    • InfluxDB has its own docker container with pre-loaded weather data.
    • API added to query weather data.
    • Feature added to create weather file for a simulation
    • Details of pre-loaded weather data in current release: (@Eric: meta-data details please)

    2.3 Simulation Input

    • Simulation input commands sent by applications/services are stored in InfluxDB using Proven.
    • API added to query input data.

    2.4 Simulation Output

    • Output from simulator is stored in InfluxDB using Proven.
    • API added to query output data.

    2.5 Logs

    • API added for query based on pre-defined filters or custom SQL string.
    • Changed logs to have epoch time format.
  3. Applications and Services:

3.1 Viz

  • User can select to run simulation at real-time or as fast as possible
  • User can select to add houses in the simulation
  • User can open or close switches and capacitors by clocking on them
  • Cleaner display of log messages while simulation is running
  • User can query simulation logs after simulation is done.
  • Toggle switches open/close
  • Querying logs through Viz (still working on this)
  • Bug fixes
    • fixed the stomp client in Viz,
    • added missing capacitor labels
    • redirect non-root urls to root (localhost:8080)

3.2 Sample application: (@Craig/Andy: please review/add)

  • Source code at https://github.com/GRIDAPPSD/gridappsd-sample-app
  • Sample app runs in its own container
  • Register with gridapps-d platform when platform start.
  • Re-register automatically if platform restart.
  • Redundant log messages removed.
  • Works with user selected model instead of hard-coded ones.

3.3 State Estimator (TODO: @Andrew)

3.4 RDRD(WSU) (TODO: @Anamika/Shiva)

3.5 DER Dispatch (@TODO: @Jeff)

3.6 VVO (@TODO: @Brandon)

  1. Source Code:
  1. Docker Container:

GridAPPS-D creates and starts following docker containers:

Version: 2019.02.0

Release Date: Feb 2019

  1. Fixed Bugs:
  • PROVEN - It can now store simulation input and output which can scale for IEEE8500 model.
  • PROVEN - It can store data with real-time simulation run.
  • PROVEN - Increased max data limit to unlimited.
  • FNCS Goss Bridge - Corrected the timestamp format in simulation logs.
  1. New Features:
  • Viz - User can query log data from MySQL using Viz menu.
  • Viz - Added menu to operate switches.
  • FNCS GOSS bridge can do execute pause, resume and stop operations for simulation.
  • Update PROVEN docker container for automated builds.
  1. Source Code:
  1. Docker Container:

GridAPPS-D creates and starts following docker containers:

Version 2019.03.0

  1. Bugs Fixed

    • Sending a command to change set point to the PV inverter has no effect.
    • Time series query return no data after simulation run.
    • Viz: Switch operations not working on Firefox browser. Time on x-axis on plots is not displayed correctly.
  2. New Features

    • GridAPPS-D – VOLTTRON initial interface created. https://github.com/VOLTTRON/volttron/tree/rabbitmq-volttron/examples/GridAPPS-DAgent
    • Fault injection: Simulator can receive faults. Fault schema created in Test Manager. Workflow for fault processing documented on readthedocs.
    • Viz: Created menu for capacitors, regulators.
    • Proven: Facilitates direct disclosure of JSON messages to Proven via Hazelcast or REST; eliminating need for the proven-message library. Improved throughput and scalability for Proven’s data disclosure component. Disclosed data is now distributed or staged across the cluster to be used by future JET processing pipelines.
  3. Documentation

    • CIM100 documented
    • Steps added for creating and testing an application
    • Updated documentation on Simulation API
  4. Source Code

Version 2019.06.0

  1. Bugs Fixed

    • Updated configuration, power grid model and simulation API for CIM100 and app evaluation features addition.
    • All logs are being published to topic instead of queue.
    • Fixed TypError bug in gridappsd-sensor-service.
  2. New Features

    • Communication outages: Platform supports input and/or output outage request with simulation for all or some selected power grid components. Outages are initiated and removed at the requested start and end time.
    • Fault injection: Platform can receive faults with simulation request and forwards them to co-simulator.
    • Viz UI updated: Input form added for communication outage and fault parameter selection. Input form moved from single page to separate tabs.
    • CIM version update: Updated CIM version to CIM100. Added support for Recloser and Breaker in model parsing.
    • New methods in Python wrapper: Capability added in gridappsd-python to start, stop and run a simulation directly from python using yaml or json.
    • Sample app container move to Python 3.6 as default. Updated gridappsd-sample-app to use updated container.
    • Debug scripts added: Added scripts in gridappsd-docker to run platform, co-simulator and simulator in separate terminals for debugging purposes.
    • Sensor service in available in gridappsd container by default. Sensor service is no longer required to be added in gridappsd container via docker-compose file.
    • Default log level is changed from DEBUG to ERROR for limiting the amount of log messages on terminal.
    • Breaking API change - Simulation input and output topics changed in gridappsd-python from FNCS_INPUT_TOPIC to SIMULATION_INPUT_TOPIC and FNCS_OUTPUT_TOPIC to SIMULATION_OUTPUT_TOPIC.
    • Breaking API change - Simulation request return a json with simulation id and list of events with their uuids instead of just simulation id.
  3. Documentation

    • Using GridAPPS-D documentation section updated for new UI input form with communication outages and faults selection.
  4. Source Code

Version 2019.07.0

  1. Bugs Fixed

    • Time series query filter are updated in the API as well documentation.

    • Selecting houses is now working with the simulation.

    • Following bugs resolved for Viz

      • Line name is not based on previously selected values.
      • Removing a selected app-name closes input form
      • Change Event Id to Event tag
      • Change attribute to a multi-value select box
      • Help-text ‘Add input item’ does not go away on CommOutage tab
      • Object mrid is not correct for multiple phases selection.
    • Pos added for load break switches

  2. New Features

    • Platform now stores input and output from services and applications output/input in time series data store.

    • Simulation can run with new 9500 node model

    • Support for synchronous machines added in CIM model in blazegraph.

    • End-to-end fault injecting and processing pipeline is now working.

    • Powergrid api added to query object id, object dictionary and object measurements.

    • New keys added in glm file to support faults.

    • Viz can display plot for new 9500 model.

    • Added log api in gridappsd-python

    • Measurement for switch positions for all models

    • Explicit setting for manual mode in reg and capacitora in the RegulatingControl.mode attribute.

    • GridAPPS base constainer has folowwing changes

      • Switch to openjdk
      • New version of fncs
      • CZMQ_VERSION changeed to 4.2.0
      • ZMQ_VERSION changes to 4.3.1
      • GridLAB-D switched from feature/1146 to develop
  3. Source Code

Version 2019.08.0

  1. New Features

    • Viz added capability to select power/voltage/tap measurments for custom plotting
    • Control attributes are back for Capacitors
    • Added Voltage Violation service that publishes list of measurement ids with per unit voltages that are out of range every 15 minutes
    • Viz added display for Voltage Violation service output
    • Viz can display Lot/Long coordinated for 9500 node model.
    • Breaking Change: JSON format for timeseries query response is flattend out
    • Resolved 500 Internal server error for storing simulation input.
    • Houses are created and uploaded to Blazegraph for 123 node model
    • Additonal column process_type added for logs to distinguish process id for simulation
  2. Source Code

Version 2019.08.1

  1. New Features

    • Viz: Change simulation pause button to start button when simulation completes.
    • Bug fix: Simulation id dropdown is not showing selected id in Browse-data-logs.
    • Bug fix: Timeseries queries returning same object multiple times.
    • Bug fix: Weather file containes only 10 minute data even if simulation duration is longer.
  2. Source Code

Version 2019.09.1

  1. New Features

    • BREAKING CHANGE: Measurements in simulation output message changed from array to dictionary.
    • Simulation are now working for 9500 model with houses.
    • Added missing measurement in blazegraph for houses.
    • Voltage violation service and Viz app updated to work with new simulation output format.
    • Faults are working with 9500 model.
    • Viz app: User can select services and their input parameters in simulation request form.
    • Viz app: Y-axis label corrected if plot value is same during the simulation run.
    • Simulation request API updated to take user input parameters for services.
    • Timezone corrected for pre-loaded weather data.
    • Operational limit set on the power grid models in blazegraph.
  2. Source Code

Version 2019.10.0

  1. New Features

    • Alarms service created. It publishes alarm whenver a switch or capacitor is opened or closed. It is added as a pre-requisite for sample app.
    • Load profile data pre-loaded in timeseries data store InfluxDB.
    • Load profile file ieeezipload.player is created dynamically based on simulation start time and duration.
    • API updated in platform and Proven to query load profile data.
    • Timeseries API updated to accept timestamps in seconds instead of micro or nanosecond.
    • Timeseries API updated to accept query filters in an array instead of single value.
    • Viz app: User can search and highlight objects on network by name and mrid.
    • Viz app: User can re-center network graph.
    • Viz app: Displays alarms in a saperate tab when simulation is running. Notifies when a new alarm is received in alarm tab.
    • Viz app: User can upload scheduled commands json file with communication outage and faults.
    • Viz app: Switches are displayed as closed/opened based on simulation output value.
    • Viz app: Display image for switches are changes to green/red squares and moved between nodes.
    • Bug fixes in DSS configuration.
    • GridLAB-D updated to latest develop version.
    • OpenDSSCmd updated to 1.2.3.
    • Powergrid models - Updated Generator.dss to include kVA for generators.
    • Added kva base to glm file, so setting kw=0 does not make the kva base also 0.
    • Internal house loads added. Schedule file is created for simulation when useHouses=true.
    • Sensor service bugs fixed.
    • API added to export Vnom opendss file.
  2. Source Code

Version 2019.12.0

  1. New Features

    • Updated and documented MRID UUID generator to ensure compliance with UUID 4
    • Integrate DNP3 service with GridAPPS-D container
    • Created API to get user role based on login
    • Added a user for testmanager to distinguish between simulation commands and alarms
    • Removed hardcoded corrdinate identifcation from Viz
    • Added capability to change model state before starting a simulation.
    • Added feature on UI to upload a file with faults and comunication output
    • Created user login page on UI
    • Added light/dark toggle themeon UI
    • Wrote a SWING_PQ node for each potential island in power grid model.
    • Fixed issues for app eveluations as reported by app developers or evluation team
    • Updated ci/cd scripts for repositories to support travis.ci updates
  2. Source Code

Version 2020.01.0

  1. New Features

    • Alarms are varified before publishing.
    • Fixed floating switches issue on Viz app.
    • Release process documeted at gridappsd-docker-build repository readme
    • Created an automated, repeatable way to upload data in blazegraph
    • Documented model state update for starting a simulation
  2. Source Code

Version 2020.02.0

  1. New Features

    • Alarms status is published as Open/Close instead of 0/1.
    • Added resume/pause-at API for simulation.
    • Added the EnergyConsumer.p attribute as a writable property in the FNCS GOSS Bridge
    • Fixed floating switches issue on Viz app.
    • Added units on the plots.
    • Viz allow user to go to nodes by clicking on plots.
    • Labels added for overlapping line on Viz plots.
    • Operator login issue resolved.
    • First integration test added in gridappsd-testing repo.
  2. Source Code

Version 2020.03.0

  1. New Features

    • Viz app can display lines and nodes with power outage.
    • Changes are made in Viz app to start and show data from State Estimator service.
    • Viz app can render battery nad solar panel shapes.
    • Fixes are made to support no player file in simulation config.
    • Timestamp display added for voltage violation on Viz.
    • Viz can start and subscribe to State-Estimator service.
    • Integration tests created for simulation api.
  2. Source Code

Version 2020.04.0

  1. New Features

    • Updated Cim2GLM library version to 18.0.3
    • Added Configuration handler for generating limits.json file
    • Increased web socket message size
    • Corrected issue where phase count is incorrect for phase s1, s2 loads
    • Corrected json parse method for TimeSeriesRequest class.
    • Viz app: Updated to use simulation timestamp for voltage violation instead of current time.
    • Viz app: Show “Simulation starting” message before simulation is started and hide the Pause/Stop buttons.
    • Powergrid model: Added scripts and *uuid.dat files to maintain persistent mRID values
    • Powergrid model: Supporting OverheadLineUnbalanced, ganged regulators and unknown spacings for 1-phase and 2-phase line.
    • Integration testing infrastructure create with PyTest and Travis.
  2. Source Code

Version 2020.05.0

  1. New Features

    • Updated YBus export to include model_id as parameter
    • Made changed to work with multiple load profiles measurements in InfluxDB.
    • Corrected issue of no player file if schedule name is not passed in request.
    • Fix stomp client initialization problem for Viz app on firefox where it was getting stuck in connecting state for a long time.
    • Testing summary added to integration testing.
    • Integration tests added for power grid and simulation API.
    • AWS summary web page added for integration testing report.
  2. Source Code

Version 2020.07.0

  1. New Features

    • Updated opendss to version 1.2.11
    • Added PAUSEd to ProcessStatus list to resolve testing issue.
      • Updated TestManager to include comparing expected results between output of 2 simulations.
      • Updated TestManager to include comparing currently running simulation to result of previously ran simulation.
    • Added a new setting to Viz UI that allows toggling logging.
    • Fixed the problem in Viz where unselecting selected services didn’t remove them from the simulation configuration object
    • Powergrid model: Bumped mysql-connector-java from 5.1.40 to 8.0.16 in /CIM/cim-parser
    • More integration tests added for power grid and simuation API.
    • Integration tests added for alarms and timeseries API.
  2. Source Code

Contact Us

GridAPPS-D team can be reached at gridappsd@pnnl.gov