Skip to content

feat: Add documantation for OpenDSS node type #105

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: node-opendss
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions docs/node/nodes/opendss.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
---
hide_table_of_contents: true
---

# OpenDSS

OpenDSS is an electric power distribution system simulator (DSS) designed to support distributed energy resource (DER) grid integration and grid modernization.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a link to the OpenDSS website please?

This node type run OpenDSS within VILLASnode and enabled VILLASnode to send and receive data to OpenDSS.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This node type run OpenDSS within VILLASnode and enabled VILLASnode to send and receive data to OpenDSS.
This node-type runs OpenDSS within VILLASnode and enables VILLASnode to exchange data with OpenDSS.


## Prerequisites
This node type requires OpenDSS shared library.
Comment on lines +10 to +11
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Prerequisites
This node type requires OpenDSS shared library.
## Prerequisites
This node-type requires OpenDSS shared library.

The documentation for compiling the library can be found on [OpenDSS documentation website](https://opendss.epri.com/OpenDSSC.html).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The documentation for compiling the library can be found on [OpenDSS documentation website](https://opendss.epri.com/OpenDSSC.html).
The documentation for compiling the library can be found in the [OpenDSS documentation](https://opendss.epri.com/OpenDSSC.html).


## Implementation

The Implementation of this node type is limited to only sending the data to set the values of certain element including:

- **Load:** Voltage(kV), Active Power(kW), Apparent Power(kVA), Power Factor(Pf)
- **Generator:** Voltage(kV), Active Power(kW), Apparent Power(kVA), Power Factor(Pf)
- **ISource:** Current(Amps), Phase angle(AngleDeg), Frequency(f)

For the output, VILLASnode will read the data from monitor element for each time step.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For the output, VILLASnode will read the data from monitor element for each time step.
For the output, VILLASnode will read the data from a monitor element for each time step.

The data input and output data needed to be transported by [`path`](../config/paths.md) and additional node.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence is gramatically wrong. I fail to understand it.



Comment on lines +24 to +25
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

The source code of the node-type is available here:
https://github.com/VILLASframework/node/blob/master/lib/nodes/opendss.cpp

## Configuration {#config}

For input data the name, element type and type of data are needed to be provived.
However, for output data only the name of the monitor element is needed.

import ApiSchema from '@theme/ApiSchema';

<ApiSchema id="node" example pointer="#/components/schemas/opendss" />

## Example

``` url="external/node/etc/examples/nodes/opendss.conf" title="node/etc/examples/nodes/opendss.conf"
node = {
opendss_node = {
type = "opendss"

#Path to OpenDSS file
file_path = "OpenDSS_file/sample.DSS"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we incorporate the OpenDSS example model into the VILLASnode repo and add a link here?


format = "villas.human"

# Example input configuration. Input data will be used to set Active power and power factor
# of load element name load1 and Active power of the generator element name gen1.
# Element name are deleared in OpenDSS file.
# Available input type and data:
# - load: kV, kW, kVA, Pf
# - generator: kV, kW, kVA, Pf
# - isource: Amps, AngleDeg, f
in = {
list = (
{name = "load1", type = "load", data = ("kW", "Pf")},
{name = "gen1", type = "generator", data = ("kW")}
)
}

# Example output configuration. Output data will be read from monitor name load1_power and load1_v.
# Monitor name are decleared in OpenDSS file
out = {
list = ["load1_power", "load1_v"]
}
}

udp_node = {
type = "socket"

layer = "udp"

format = "villas.human"

in = {
address = "*:12000"
},
out = {
address = "127.0.0.1:12001"
}
}

file_node1 = {
type = "file"

uri = "load.dat"

in = {
epoch_mode = "direct"
epoch = 10
rate = 2
buffer_size = 0
}
}
}

paths = (
{
# Get input for file node type
in = "file_node1"
out = "opendss_node"
hooks = ( { type = "print" } )
},
{
# Output to udp node type
in = "opendss_node",
out = "udp_node"
hooks = ( { type = "print" } )
}
)
```