Reference Volt App
The Volt app is an HIL tested reference app to demonstrate the capabilities of OpenDSO using its services, UI apps and OpenFMB data models. The app is developed in C++, and contanerized using Docker.
The aim of the reference app is to demonstrate voltage regulation on a feeder by solely controlling triple-single-phase voltage regulators nearest to feeder substation, denoted as feeder head.
Operation and modes
Every 3 seconds, the volt app tracks the line to ground voltage on each phase from all of the devices on the feeder dowstream of the selected voltage regulator to determine the minimum voltage on the feeder. Using the minimum value, an algorithm checks to see if stepping a voltage regulator up or down would bring the voltage within a desired voltage band. This process is then repeated every 3 seconds, moving at most one tap per update cycle until the optimized tap value is set for voltage regulator phase.
The algorithm to control the voltage regulator is as follows: the minimum voltage for the phase is compared to a certain voltage band centered around a setpoint. If the feeder's minimum voltage for the phase is less than the lower boundary of the voltage band, it issues a tap up operation to the selected phase's voltage regulator. Similarly, if the minimum voltage on the feeder for the phase exceeds the upper boundary of the voltage band, the selected phase's voltage regulator is tapped down.
The voltage band is determined from the voltage regulator parameters denoted in the CIM model. The setpoint around which the threshold band is centered is determined by the mode of operation.
The app offers two modes of operation for voltage regulation:
- Setpoint mode - The user defines the set point voltage on a 120V base.
- CVR mode (Conservative Voltage Regulation)- The set point for the entire circuit is set to the voltage of the device identified as the head of the feeder. The voltage is maintained in the threshold band of the head of the feeder.
By default, the application starts in setpoint mode, with the setpoint at 120V. These settings can be modified in the UI under application settings for the Volt app:

Development details
The volt app leverages several aspects of the OpenDSO/OpenFMB framework;
- Topology OpenDSO services are used to learn about the circuit topology and their electrical connectedness
- OpenFMB data model is used for obtaining device reading and status, and issuing controls
- Communications between services and devices in a distributed way using NATS topics for OpenFMB and OpenDSO services on a NATS bus
Circuit topology information
The volt app derives the electrical model of the circuit and the state of their electrical connectedness (i.e. topology) from the OpenDSO topology services.
Upon start up of the application or receiving a topology change in the circuit (eg. circuit reconfiguration for service restoration) from the topology services, the following are identified:
-
Head of the feeder device and voltage regulator closest downstream the head of the feeder
-
Electrically connected groups which include the head of the feeder
-
Devices downstream the voltage regulator selected. The phase voltages of these devices are subscribed using OpenFMB and the minimum voltage per phase is tracked.
Parameters for the selected voltage regulator are obtained from the topology services as well to obtain a voltage band.
Parameters and Voltage Band
The parameters for the voltage band are based on the selected voltage regulator. The topology services provide the following parameters for the voltage regulator:
- steps: The number of steps in both directions that are available.
- normal: The normal step, or step that the unit will be set to by default.
- svi: The percentage each step will alter the voltage by.
The voltage band in per unit notation is determined as follows:
Delta = Setpoint * SVI/100
Voltage Band = [Setpoint - Delta, Setpoint + Delta]
Algorithm Flowchart
Every 3 seconds, the following algorithm described in the flowchart is executed.