Advanced Distribution Models
The distribution system models we've looked at thus far have been perfectly adequate for evaluating many common smart grid scenarios but they have relatively simple architectures. In this next section of the tutorial, we'll look at how to include a number of additional components can be modeled in GridLAB-D™ that allow the construction of more realistic electrical distribution systems--systems that are much more similar to what is in use today.
Voltage Regulators
One of the great challenges for distribution system design is managing voltage under the wide range of loading conditions a distribution feeder experiences over a daily and annual load patterns. ANSI C.84 is the most commonly used in the United States and it defines the acceptable range of voltages based on location in the system with the most stringent being at the service entrance to the customers, nominally 114 V to 126 V, with a range of +/- 5% of the nominal 120 V.
One of the primary tools used to manage voltage is the voltage regulator. Simply defined, a voltage regulator is a transformer with the ability to adjust (within a limited range) its turns ratio. This allows changes in the input voltage to the regulator to be compensated for to produce a relatively constant output voltage at a target value. For example, a voltage regulator may be placed at a point in the distribution system where the voltage tends to be low under early evening load, say 116 V. This would be the input voltage to the regulator and the regulator may be set to give an output voltage of 124 V. In this same scenario, consider what happens in the early morning when the load is much lower and the voltage on the line rises to 120 V. If this was just a transformer with a fixed turns ratio, the output voltage would rise to over 128 V, outside of the acceptable ANSI band. Instead, the regulator adjusts its turns ratio and produces the same output of 124V.
A voltage regulator changes its turns ratio by mechanically switching between a number of taps on the secondary coil of the transformer, shorting out portions of the winding and changing the number of effective turns on the secondary. There are a limited number of tap positions built into the regulator so the range and resolution of the tap changes is fixed and relatively limited. The lifetime of the regulator is often dictated by the number of tap changes it makes. One goal when designing and operating a distribution system is therefore to reduce the number of tap changes and thus reduce replacement and maintenance costs of the regulators.
To be effective, a voltage regulator needs some kind of input signal to use as a reference as it makes adjustments throughout the day. The simplest signal source would be the voltage on the output of the regulator with tap changes to keep the voltage within specification. Using this strategy is generally not very effective because the voltage drop downstream of the regulator is not accounted for. Ideally the output voltage on the regulator would be on the high side of the ANSI band to allow as much acceptable voltage drop as possible before another voltage regulator would have to be added to the system.
Similarly, targeting a fixed output voltage fails to take into account the loading on the circuit. When the loads are lighter the voltage regulator need not adjust up as much due to the lower voltage drop on the downstream line. When the load is heavier, these additional adjustments are necessary to maintain the voltage with the ANSI specification.
Because of this variability, it is common that voltage regulators contain a small, simple model circuit (called a line-drop compensator) internal to the device that seeks to replicate the loading of the line downstream of the device. The output voltage of the regulator is applied to the line-drop compensator and based on its output voltage, the voltage regulator adjusts to bring the line-drop compensator output voltage to a specified target value. Typically the line-drop compensator is a simple series combination of a generic resistance and reactance value.
Example - Voltage Regulators with Line-Drop Compensators
To demonstrate the operation of the voltage regulator, we start where we left off with the battery and solar PV model. Relatively speaking, this is a small model with very light loads and if this was the system in a real-life scenario, we wouldn't need to bother with a voltage regulator. So, to make the situation more interesting, two changes were made to the model:
-
The line lengths between the houses were increased by a factor of ten, and
-
The resistance of the overhead lines were increased by a factor of ten.
Both of these changes will result in greater voltage drops for relatively small currents, which will make the operation of the voltage regulator more important.
Opening up dist_sys_voltage_regulator_ldc shows these two changes to the model, the addition of a voltage regulator at the head of the feeder (the substation), and an extra recorder to monitor the voltages down branch 1 and the tap position of the voltage regulator. Looking at the configuration for the regulator we see:
object regulator_configuration {
name reg_config;
connect_type 1;
band_center 122.000;
band_width 2.0;
time_delay 15.0;
raise_taps 16;
lower_taps 16;
current_transducer_ratio 1;
power_transducer_ratio 58;
compensator_r_setting_A 1.5;
compensator_x_setting_A 3.0;
CT_phase "ABC";
PT_phase "ABC";
regulation 0.10;
Control LINE_DROP_COMP;
control_level INDIVIDUAL;
Type B;
tap_pos_A 0;
tap_pos_B 0;
tap_pos_C 0;
}
To understand all of these setting requires more time and space than we have here but the model used in GridLAB-D™ is based on that set-out in Kersting. Without trying to dig into the details, we can look at through these settings and get a general idea of how the regulator is set-up to work.
-
band_center 122.000shows that the target voltage is 122 volts (on a 120V basis). -
band_width 2.0shows that we have a +/- 1V tolerance on the 122V target before the regulator operates. -
time_delay 15.0shows we are modeling a 15 second time delay every time the regulator actuates. That is, it will take 15 seconds between measuring a need to make a tap change and the tap change going into effect and changing the output voltage. -
raise_taps 16,lower_taps 16shows there are a total of 32 tap positions the regulator has to operate over -
regulation 0.10indicates that a 10% change will occur from neutral (tap position 0) to the extreme lower or upper positions (tap position +/- 16). -
compensator_r_setting_A 1.5, compensator_x_setting_A 3.0are the most important. They show that the modeled effective impedance to the end of the line results in a voltage drop of \(0.1 + j0.1\) volts (on a 120V basis). The units on this are a bit odd but they are very practical; rather than having to measure or calculate the effective impedance to the end of the line, a simple measurement at that point can be used directly to define the settings for the line-drop compensator.
Running the model shows there are some problems, though. Looking at "voltage_data.csv" shows that when the simulation starts, the voltage regulator is producing an acceptable voltage for all three residences, roughly 122 V. In the afternoon when the load increases the voltage drop on the line also increases and we start seeing lower voltages, down to 116V on the very last house in the branch. During this period, the voltage regulator does not respond, indicating the modeled impedance in the line-drop compensator is set too low. That is, when the load in the circuit increases, the voltage drop modeled by the line-drop compensator is too little and causing the regulator to believe that no response is needed.
To correct this, let's just guess at new values for the line-drop compensator and re-run the simulation.
...
compensator_r_setting_A 0.8;
compensator_x_setting_A 0.8;
...
Re-running this simulation shows that the regulator does a much better job of responding the to changing loading conditions on this branch of the feeder and adjusts as the load changes, corresponding to the air-conditioners switching on and off.
Example - Voltage Regulators with Voltage Sensing
With communication systems becoming a more common part of electrical distribution systems, new techniques of handling the setting of voltage regulation have arrived. Namely, rather than modeling and estimating the voltage at the end of the line, why not just measure it and send that information back to the voltage regulator? GridLAB-D™ support just such an operational mode.
Open up dist_sys_voltage_regulator_sense.glm and take a look at how the voltage regulator is configured.
object regulator {
name substation_reg;
phases "ABC";
sense_node "b1m3_house_meter";
from substation_meter;
to feeder_meter;
configuration reg_config;
}
object regulator_configuration {
name reg_config;
connect_type 1;
band_center 122.000;
band_width 2.0;
time_delay 15.0;
raise_taps 16;
lower_taps 16;
CT_phase "A";
PT_phase "A";
regulation 0.10;
Control REMOTE_NODE;
control_level BANK;
Type B;
tap_pos_A 0;
tap_pos_B 0;
tap_pos_C 0;
}
The regulator itself now defines a sense_node which, as you might guess, is the node at which the voltage will be measured for regulation purposes. The regulator_configuration object is simpler, with no more compensator settings, and control is set to REMOTE_NODE instead of LINE_DROP_COMP. Note that the CT_phase, PT_phase, and control_level have also been changed to eliminate some extraneous warnings about voltages in phase B and C where there is no load in this system. The example systems we've been using are massively unbalanced which in the real-world would be a serious problem but in simulation, is something we can safely ignore.
Running this model produces the following warning in the console:
WARNING [2009-08-08 11:26:03 PDT] : b1m1_house - house:23 is outside of ANSI standards (voltage = 106 percent of nominal 120/240)
WARNING [2009-08-09 04:30:00 PDT] : last warning message was repeated 127 times
As the message indicates, the first house in branch 1 has a voltage that is slightly too high. Opening up "voltage_data.csv" shows this is the case, particularly in the afternoon under heavier loading.
This is not an unexpected result as we are targeting a nominal voltage at the end of the line, which we might expect could make the voltage at the beginning of the line too high. In this case, a simple fix would be to change our sense node so that we regulate the middle of the line to a nominal value; the end of the line will be slightly lower and the beginning slightly higher but everybody will stay within an acceptable voltage range.
In the regulator object change the sense node to
...
sense_node "b1m2_house_meter";
...
and re-run the simulation. The result: no warnings and "voltage_data.csv" confirms that all three residential voltages are much closer to nominal.
Capacitors
Capacitors are another common device used to help manage the voltage on the distribution system. Particularly during summer days with air-conditioners presenting a high inductive load to the system, a significant portion of the current flowing over the distribution lines is reactive. The default source of this reactive current comes from the substation, which can lead to non-trivial voltage drops as the reactive current travels to and from the reactive loads in the distribution system. Capacitors can provide an alternative source of reactive power closer to the loads, thereby reducing the magnitude of the current flowing from the substation and generally improving the voltage profile of the feeder.
GridLAB-D™ provides the ability to add capacitors to the distribution system and to also control when they are switched into and out of the feeder. There are a few different control modes defined for the capacitor, including manual control constantly in or out or the ability to be switched using a schedule or player, or by voltage-based or reactive power based (VAR) switches. Like the voltage regulator, the capacitors can either be switched individually or on a per-phase basis.
Example - Voltage-based capacitor switching
Open up dist_sys_capacitor.glm and take a look at the capacitor that has been added to the model.
object capacitor {
phases ABC;
name b1m3_capacitor;
pt_phase ABC;
parent branch_1_meter_3;
phases_connected ABC;
control VOLT;
voltage_set_low 6900.0;
voltage_set_high 7100.0;
capacitor_A 10.0 kVAr;
capacitor_B 10.0 kVAr;
capacitor_C 10.0 kVAr;
control_level INDIVIDUAL;
switchA OPEN;
switchB OPEN;
switchC OPEN;
time_delay 2.0;
dwell_time 10;
nominal_voltage 7216.88;
}
We can see that the control mode has been set to VOLT and that this 10 kVAR capacitor (per phase) has been parented to branch_1_meter_3 at the end of the branch 1 line. Since the remote_sense property has not been specified, the capacitor will use its own local voltage to determine when to switch; in this case when the voltage falls below 6900 V it will switch in and when it rises above 7100 V it will switch out. The time_delay is used to model the amount of time it will take to switch once it has been commanded (2 seconds in this case), and the dwell_time requires the switching condition to be met for the specified period of time (10 seconds) before the switching operation is commanded. These set the time between when the switching condition is met and set when the switching will take place, in this case twelve seconds.
Running this model in GridLAB-D™ produces "voltage_data.csv" (among others) which contains a record of the capacitor switch state and the measured voltage at the branch_1_meter_3 node. As shown in Figure 1, when the voltage drops below 6900 V the capacitor switches in, then the voltage rises, and then the capacitor switches out and the voltage drops. We can also see the delay caused by the time_delay and dwell_time parameter values.

Volt Var Controller Object
The volt_var_control object coordinates select regulator and capacitor objects on the system. Using voltage measurements at node object points, the volt var control tries to maintain a desired voltage. In addition to voltage measurements, the volt var control utilizes a power measurement at a link object to determine how to switch various capacitor objects on the system in and out of service. Due to differences in the timing of power calculations in the Forward-Back Sweep (FBS) and Newton-Raphson (NR) powerflow solvers, capacitors may switch at slightly different intervals for the same system. The overall control behaves the same in both solver methods, but this difference in capacitor timing may result in different final operating points.
The volt_var_control object synopsis is provided below:
module powerflow;
class volt_var_control {
enumeration {STANDBY=0, ACTIVE=1} control_method;
double capacitor_delay[s];
double regulator_delay[s];
double desired_pf;
bool pf_signed;
double d_max;
double d_min;
object substation_link;
set {C=4, B=2, A=1} pf_phase;
char1024 regulator_list;
char1024 capacitor_list;
char1024 voltage_measurements;
char1024 minimum_voltages;
char1024 maximum_voltages;
char1024 desired_voltages;
char1024 max_vdrop;
char1024 high_load_deadband;
char1024 low_load_deadband;
}
| Property name | Type | Unit | Description |
|---|---|---|---|
| control_method | enumeration | none | IVVC activated or in standby |
| capacitor_delay | double | s | Default capacitor time delay – overridden by local definitions |
| regulator_delay | double | s | Default regulator time delay – overridden by local definitions |
| desired_pf | double | none | Desired power-factor magnitude at the substation transformer or regulator |
| pf_signed | bool | none | Designation of leading or lagging desired for desired_pf |
| d_max | double | none | Scaling constant for capacitor switching on – typically 0.3-0.6 |
| d_min | double | none | Scaling constant for capacitor switching off – typically 0.1-0.4 |
| substation_link | object | none | Substation link, transformer, or regulator to measure power factor |
| pf_phase | set | none | Phase to include in power factor monitoring (A,B,C) |
| regulator_list | char1024 | none | List of voltage regulators for the system, separated by commas |
| capacitor_list | char1024 | none | List of controllable capacitors on the system, separated by commas |
| voltage_measurements | char1024 | none | List of voltage measurement devices, separated by commas |
| minimum_voltages | char1024 | none | Minimum voltages allowed for feeder, separated by commas |
| maximum_voltages | char1024 | none | Maximum voltages allowed for feeder, separated by commas |
| desired_voltages | char1024 | none | Desired operating voltages for the regulators, separated by commas |
| max_vdrop | char1024 | none | Maximum voltage drop between feeder and end measurements for each regulator, separated by commas |
| high_load_deadband | char1024 | none | High loading case voltage deadband for each regulator, separated by commas |
| low_load_deadband | char1024 | none | Low loading case voltage deadband for each regulator, separated by commas |
Default
A minimum implementation is:
object volt_var_control {
regulator_list reg_1, reg_2, ..., reg_n;
capacitor_list cap_1, cap_2, ..., cap_n;
}
Example
A typical implementation could look simmilar to the following.
object volt_var_control {
name IVVC37;
control_method ACTIVE;
capacitor_delay 10.0;
regulator_delay 5.0;
desired_pf 0.98;
d_max 0.8;
d_min 0.1;
substation_link "SubTransNode-799";
regulator_list "reg799-781,regnode799-U0081";
capacitor_list "CapNode_A,CapNode_B";
voltage_measurements "load829,1,load841,1,load825,1,U0029,2,U0041,2,U0025,2";
minimum_voltages 2500.0;
maximum_voltages 3000.0;
desired_voltages 2600.0;
}