Skip to content

Commit

Permalink
Merge pull request #3128 from craig8/2030_5_anew
Browse files Browse the repository at this point in the history
2030 5 anew
  • Loading branch information
craig8 authored Nov 8, 2023
2 parents 0794cdf + 804bed4 commit f2f2da0
Show file tree
Hide file tree
Showing 78 changed files with 13,641 additions and 38,015 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ node_modules
applications
.cache
.idea
.vscode/
/env/
/Agents/*/{build,dist}/
/Agents/*.egg
Expand Down Expand Up @@ -38,3 +39,4 @@ rabbitmq-server.download.tar.xz
/docs/source/volttron_api/
*ecobee_*.json
.env*
dist/
Original file line number Diff line number Diff line change
@@ -1,118 +1,36 @@
.. _IEEE-2030_5-Agent:

=====================
IEEE 2030.5 DER Agent
=====================
===========================
IEEE 2030.5 EndDevice Agent
===========================

The IEEE 2030.5 Agent (IEEE2030_5 in the VOLTTRON repository) implements a IEEE 2030.5 server that receives HTTP
`POST`/`PUT` requests from IEEE 2030.5 devices. The requests are routed to the IEEE 2030.5 Agent over the VOLTTRON
message bus by VOLTTRON's Master Web Service. The IEEE 2030.5 Agent returns an appropriate HTTP response. In some
cases (e.g., DERControl requests), this response includes a data payload.
The IEEE 2030.5 Agent (IEEE_2030_5 in the VOLTTRON repository) acts as an IEEE 2030.5 EndDevice (client). This
agent establishes a secure connection to a TLS-enabled 2030.5 server and discovers its capabilities. It verifies
the server's identity based on the Registration function set and uses the FunctionSetAssignments function set to
determine the appropriate DERProgram to run. The agent regularly checks for changes in default controls and
active DERControls and responds accordingly. It also listens to one or more subscriptions to the VOLTTRON message
bus for information (points) to POST/PUT to the 2030.5 server.

The IEEE 2030.5 Agent maps IEEE 2030.5 resource data to a VOLTTRON IEEE 2030.5 data model based on SunSpec, using block
numbers and point names as defined in the SunSpec Information Model, which in turn is harmonized with 61850. The data
model is given in detail below.
You can access the agent code, README, and demo from `IEEE_2030_5 Agent <https://github.com/VOLTTRON/volttron/tree/develop/services/core/IEEE_2030_5/>`_.

Each device's data is stored by the IEEE 2030.5 Agent in an `EndDevice` memory structure. This structure is not
persisted to a database. Each `EndDevice` retains only the most recently received value for each field.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Common Smart Inverter Profile (CSIP)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The IEEE2030_5 Agent exposes RPC calls for getting and setting EndDevice data.
This agent is not a fully compliant CSIP client, meaning it does not support all of the function sets
within the CSIP Profile of 2030.5. It provides the following function sets:

- End Device
- Time
- Distributed Energy Resources
- Metering
- Metering Mirror

VOLTTRON IEEE 2030.5 Device Driver
----------------------------------
As time goes on it is likely that this list will be extended through user supported additions and project needs.

The :ref:`IEEE 2030.5 device driver <IEEE-2030_5-Driver>` is a new addition to VOLTTRON Platform Driver Agent's
family of standard device drivers. It exposes ``get_point``/``set_point calls`` for IEEE 2030.5 EndDevice fields.
################
2030.5 Reference
################

The IEEE 2030.5 device driver periodically issues IEEE2030_5 Agent RPC calls to refresh its cached representation of
EndDevice data. It issues RPC calls to IEEE2030_5Agent as needed when responding to ``get_point``, ``set_point`` and
``scrape_all`` calls.


Field Definitions
^^^^^^^^^^^^^^^^^

These field IDs correspond to the ones in the IEEE 2030.5 device driver's configuration file, ``ieee2030_5.csv``.
They have been used in that file's "Volttron Point Name" column and also in its "Point Name" column.

================= ============================= ==================================================== ======= ======
Field ID IEEE 2030.5 Resource/Property Description Units Type
================= ============================= ==================================================== ======= ======
b1_Md device_information Model (32 char lim). string
mfModel
b1_Opt device_information Long-form device identifier (32 char lim). string
lfdi
b1_SN abstract_device Short-form device identifier (32 char lim). string
sfdi
b1_Vr device_information Version (16 char lim). string
mfHwVer
b113_A mirror_meter_reading AC current. A float
PhaseCurrentAvg
b113_DCA mirror_meter_reading DC current. A float
InstantPackCurrent
b113_DCV mirror_meter_reading DC voltage. V float
LineVoltageAvg
b113_DCW mirror_meter_reading DC power. W float
PhasePowerAvg
b113_PF mirror_meter_reading AC power factor. % float
PhasePFA
b113_WH mirror_meter_reading AC energy. Wh float
EnergyIMP
b120_AhrRtg der_capability Usable capacity of the battery. Ah float
rtgAh Maximum charge minus minimum charge.
b120_ARtg der_capability Maximum RMS AC current level capability of the A float
rtgA inverter.
b120_MaxChaRte der_capability Maximum rate of energy transfer into the device. W float
rtgMaxChargeRate
b120_MaxDisChaRte der_capability Maximum rate of energy transfer out of the device. W float
rtgMaxDischargeRate
b120_WHRtg der_capability Nominal energy rating of the storage device. Wh float
rtgWh
b120_WRtg der_capability Continuous power output capability of the inverter. W float
rtgW
b121_WMax der_settings Maximum power output. Default to WRtg. W float
setMaxChargeRate
b122_ActWh mirror_meter_reading AC lifetime active (real) energy output. Wh float
EnergyEXP
b122_StorConn der_status CONNECTED=0, AVAILABLE=1, OPERATING=2, TEST=3. enum
storConnectStatus
b124_WChaMax der_control Setpoint for maximum charge. This is the only W float
opModFixedFlow field that is writable with a set_point call.
b403_Tmp mirror_meter_reading Pack temperature. C float
InstantPackTemp
b404_DCW PEVInfo Power flow in or out of the inverter. W float
chargingPowerNow
b404_DCWh der_availability Output energy (absolute SOC). Wh float
availabilityDuration Calculated as (availabilityDuration / 3600) * WMax.
b802_LocRemCtl der_status Control Mode: REMOTE=0, LOCAL=1. enum
localControlModeStatus
b802_SoC der_status State of Charge %. % WHRtg float
stateOfChargeStatus
b802_State der_status DISCONNECTED=1, INITIALIZING=2, CONNECTED=3, enum
inverterStatus STANDBY=4, SOC PROTECTION=5, FAULT=99.
================= ============================= ==================================================== ======= ======


Revising and Expanding the Field Definitions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The IEEE 2030.5-to-SunSpec field mappings in this implementation are a relatively thin subset of all possible
field definitions. Developers are encouraged to expand the definitions.

The procedure for expanding the field mappings requires you to make changes in two places:

1. Update the driver's point definitions in ``services/core/PlatformDriverAgent/platform_driver/ieee2030_5.csv``
2. Update the IEEE 2030.5-to-SunSpec field mappings in ``services/core/IEEE2030_5Agent/ieee2030_5/end_device.py`` and
``__init__.py``

When updating VOLTTRON's IEEE 2030.5 data model, please use field IDs that conform to the SunSpec
block-number-and-field-name model outlined in the SunSpec Information Model Reference (see the link below).

View the :ref:`IEEE 2030.5 agent specification document <IEEE-2030_5-Specification>` to learn more about IEEE 2030.5 and
the IEEE 2030.5 agent and driver.


.. toctree::

ieee-2030_5-specification
`IEEE 2030.5 Standards <https://standards.ieee.org/ieee/2030.5/5897/>`_
`IEEE_2030_5 Agent <https://github.com/VOLTTRON/volttron/tree/develop/services/core/IEEE_2030_5/>`_
Loading

0 comments on commit f2f2da0

Please sign in to comment.