Voltage Conditioning Dialog

 

The Voltage Conditioning Tool and Dialog were added in Version 23. This tool is available under on the Tools Ribbon Tab, on the Power Flow Tools Ribbon Group.

 

The Voltage Conditioning tool can be used to change the generator voltage set points in your case to approximately match various Substation or Bus voltage targets that you configure, and also move switched shunts in your case to meet these same targets. The Voltage Conditioning tool dialog is shown in the image below. The dialog is divided in the following sections.

 

Case Voltage Target Tab

The fundamental object for Voltage Conditioning Tool is the CaseVoltageTarget which is used to define the target range for voltages at the buses in the case. There can be 8 different targets specified marked as A, B, C, D, E, F, G and H. These objecsts are edited on the Case Voltage Target is described in detail below.

Case Voltage Target Tool Options (at top of the dialog)

There are a options related to how the tool is run which are defined in the CaseVoltageTargetTool object. These options are described in the sections below, but they can also be set at the top of the dialog under options for Impedance Threshold, Transmission Nom kV, and so on.

Target Regions Tab

Buses and Substations in the case can be assigned to a CaseVoltageTargetRegion object. These objects are described below, but their purpose is only to specify which target (A, B, C, D, E, F, G, or G) should be used from the CaseVoltageTarget object.

Substation, Bus, Shunt, and Transformer Tap Tabs

These tabs provide case information displays with default columns associated with the Voltage Conditioning tool. These specified fields are described below as well.

Perform Voltage Conditioning Button

Clicking the Perform Voltage Conditioning button will perform the process of voltage conditioning. This is described in great detail at the end of this help topic. Also clicking this button is the same as running the Auxiliary File script command VoltageConditioning;.

Save to AUX

Click this button to open options to save all options related to voltage conditioning to an Auxiliary File.

 

 

CaseVoltageTarget

The CaseVoltageTarget object is used to specify the target voltages for the power system. A CaseVoltageTarget can be specified either at a specific bus or at a Nominal kV level of a specific substation. Thus the primary keys for the object are unusual as both Bus and Substation are key fields, but only one of them will be entered, while the other will be blank.

Bus: A string that specifies the bus at which the target is given. The string may be entered either as the bus Number (primary key), Name_NomkV (secondary key), or one of the labels of the bus. Thus the string could be either "12345", "My Bus Name_230.00" or "My Bus label".

Substation: If a Bus is not specified then the CaseVoltageTarget applies to all buses in the specified substation at the Nominal kV entered in the NomkV field.

NomkV: If a bus is specified, NomkV will show the Nominal kV of the bus. If the Substation is specified, Nom kV is a key field and used to determine which buses inside the substation to apply the voltage target to.

Voltage Targets and Deadbands: There are 8 voltage targets and also a deadbands for both up and down directions. These targets and deadbands can be specified in either PU (per unit) or in kV.

More detailed descriptions of the fields are in the following table.

Field

Type

Type

Bus

String

(KEY Field)

A bus to which this desired voltage target applies. The identifiers used are determined by the BusIdentifier field of the CaseVoltageTargetTool object. If this is specified, then the Substation is ignored.

Substation

String

(KEY Field)

Substation to which this desired voltage target applies (used only if Bus is empty). The identifiers used are determined by the SubIdentifier field of the CaseVoltageTargetTool object

NomkV

Single Float

(KEY Field)

Nominal kV of the buses inside a substation that should be considered. If the Bus field is specified however, this will return the nominal kV of the Bus and the value will not be enterable.

Description

String

An extra string for the user to describe this entry.

BandUpkV

BandUpPU

Single Float

Voltage deviation in kV or per unit above the voltage target that is considered acceptable (must be a positive value). Internally a value is stored in per unit, so editing using the kV values will set the per unit value equal to the entered value divided by the NomkV field.

BandDownkV

BandDownPU

Single Float

Voltage deviation in kV or per unit below the voltage target that is considered acceptable (must be a negative value). Internally a value is stored in per unit, so editing using the kV values will set the per unit value equal to the entered value divided by the NomkV field.

ErrorkV

ErrorPU

Single Float

(Calculated)

This fields looks at all buses that are using this CaseVoltageTarget, so for Subsation/NomkV type of Target it may be multiple buses. Over all these buses, this returns the largest magnitude deviation from the voltage band. Buses with voltages inside the band are treated as having an error of 0.0000.

TargetkVA

...

TargetkVH

TargetPUA

...

TargetPUH

Single Float

Specify a voltage target in either kV or per unit to use depending on the TargetActive being “A”, “B”, … , “H”

Internally the values are stored in per unit, so editing using the kV values will set the per unit value equal to the entered value divided by the NomkV field.

An example use could be as follows

TargetA = High load times during the Summer

TargetB = Medium load times during the Summer

TargetC = Low load times during the Summer

TargetD = High load time during Winter

TargetE = Medium load times during Winter

TargetF =Low load times during Winter

TargetG and TargetH are not used

 

CaseVoltageTargetTool

The CaseVoltageTargetTool represents all the options associated with the Case Voltage Target tool. These options can be edited at the top of the Voltage Conditioning dialog box.

Field

Type

Type

TargetActive

String

User enters A, B, C, D, E, F, G, or H

BusIdentifier

String

Specify which identifier to use when showing the bus in the CaseVoltageTarget objects either Number, Name_NomkV, or Label

SubIdentifier

String

Specify which identifier to use when showing the substation in the CaseVoltageTarget objects either Number, Name_NomkV, or Label

ShuntTransformerWeight

String

A weight to bias shunts to move before transformers

MinSensitivityShunt

String

Minimum dV/dB sensitivity to consider for moving a shunt

MinSensitivityTap

String

Minimum dVbus/dTap sensitivity to consider for moving a tap ratio

TransmissionNomkV

String

When searching from a generator terminal to find the closest transmisson level bus, this is the threshold nominal kV of a bus that is considered transmission level

StopSearchImpedanceThresh

String

When searching from a generator terminal to find the closest transmisson level bus, this is the threshold impedance that will indicate we have found a significant system device

MaxIterations

String

How many device moves to do before giving up (oscillation check)

IncludeShunts

String

YES or NO. Set to YES to allow processing of switched shunts as well.

IncludeTaps

String

YES or NO. This is not presently used.

These options can also be set using the object CaseVoltageTargetTool_Value instead in an AUX file that looks like the following.

CaseVoltageTargetTool_Value (Option,Value)

{

"TargetActive" "A"

"BusIdentifier" "Number"

"SubIdentifier" "Name"

"ShuntTransformerWeight" "1"

"MinSensitivityShunt" "1"

"MinSensitivityTap" "0.3"

"TransmissionNomkV" "40"

"StopSearchImpedanceThresh" "0.001"

"MaxIterations" "100"

"IncludeShunts" "NO"

"IncludeTaps" "NO"

}

 

CaseVoltageTargetRegion (Determining the TargetActive as A, B, ... H)

Every bus and substation in the power system case can be assigned to a CaseVoltageTargetRegion. This will be used to specify which buses and substations belong to regions representing different time-zones.

Field

Type

Type

Name

String

(KEY Field)

Name of the CaseVoltageTargetRegion

TargetActive

String

TargetActive: A, B, C, D, E, F, G, or H

This is which of the targets to use for a CaseVoltageTarget

Each bus and substation in the power system model can be assigned to a CaseVoltageTargetRegion using a new field CaseVoltageTargetRegion. A bus will determine the TargetActive field to use based on the following order of precedence.

1. Use CaseVoltageTargetRegion with the Bus

2. If not assigned with Bus, Use CaseVoltageTargetRegion with the Substation to which Bus belongs

3. If still not assigned, follow the TargetActive field of the CaseVoltageTargetTool object.

 

Bus and Substation: CaseVoltageTargetRegion and CaseVoltageTargetRegionUsed

Every bus and substation in the power system has an string field named CaseVoltageTargetRegion. This string refers to the name of the CaseVoltageTargetRegion to which the bus or substation is assigned. This field can be set to blank to indicate that no region is assigned. The bus also have a field named CaseVoltageTargetRegionUsed which will return its own CaseVoltageTargetRegion, or if this is not specified it will return the respective field of the substation to which the bus is assigned, or if the subtation is also unassigned it will return a blank.

 

Gen, Branch, and Shunt: ConditioningAvailable

The objects Gen, Branch, and Shunt have a field called ConditioningAvailable which is available under a folder Voltage Conditioning Tool in the typical list of fields. This field is a YES/NO field and will indicate if the object is available for modification during the Voltage Conditioning Tool process. Generators may change their voltage setpoints and Shunt objects may change their Mvar values in order to help achieve the case voltage targets.

 

Gen: ConditioningRegBus

It is expected that for many users the CaseVoltageTargets will be centered around specifying desired voltages for the transmission level buses in the system. This means case voltage targets will be created for transmission level voltages such as 69, 115, 138, 161, 230, 345, and 500 kV systems. The generators in power system models are sometimes configured to regulate the voltage at their terminal bus (typically 0.300 kV – 40.0 kV). This presents a problem for how to map the desired transmission voltage schedules into the voltage setpoints in the generator power system cases.

To overcome this, PowerWorld Corporation has added a new search to find the closest high voltage transmission bus to the terminal of the generator in hopes of finding the transmission bus that may have the voltage schedule that the generator can be used to enforce. The results of this search can be seen by adding the new field ConditioningRegBus to a generator case information display (see Configuring the Case Information Displays). The ConditioningRegBusfield search is done using a breadth-first search beginning at the terminal of the generator and looking outward for a bus that has a nominal voltage greater than or equal to CaseVoltageTargetTool.TransmissionNomkV. Once such a bus is found, the algorithm continues searching across buses that have an impedance less than or equal to CaseVoltageTargetTool.StopSearchImpedanceThresh. This second part of the search is done to look beyond various near zero-impedance branches for the main part of the substation.

As an example, consider the following figure showing a large group of generators at a complicated substation and how they are connected to the 500 kV subnet through various switching devices. The 2 generators in the upper left corner are configured to regulate bus 26209 which is past a breaker and disconnect in series with each generator. The tool will continue searching until it reaches bus 26102 which has a nominal voltage of 500 kV. (Another note, we ignore any buses that we determine are internal “star” buses of three-winding transformers such as bus 26213 in the example below. This is done regardless of the Nominal Voltage assigned to the star bus.) Once the search reaches bus 26102 it then continues to search outward until it finds a branch with an impedance larger than CaseVoltageTargetTool.StopSearchImpedanceThresh. In this example the search will terminate when it reaches bus 26131 which connects to an transmission line with a larger series X value. The ConditioningRegBus is then set to the primary bus in this 500 kV SuperBus which in this example is bus 26104

Gen: ConditioningVoltSetkV and ConditioningVoltSetkVTol

Finally there are 4 new fields of the Gen object named ConditioningVoltSetkV, ConditioningVoltSet, ConditioningVoltSetTolkV and ConditioningVoltSetTol.

These fields show the following. The ConditioningRegBus is determined. A search looking for a CaseVoltageTarget object that has been assigned to this particular Bus. If that is not found, then we instead look for a CaseVoltageTarget object that is assigned to the same substation and nominal kV as the ConditioningRegBus. If we do not find a CaseVoltageTarget object that meets either of these, then these 4 fields will be shown as a blank string. If a CaseVoltageTarget object is found, then these 4 fields are populated based on the calculation described shortly.

The TargetActive is determined based either on the CaseVoltageTargetRegion to which the ConditioningRegBus has been assigned or based on the global option stored in the CaseVoltageTargetTool.TargetActive. This will determine which Target to use (A, B, … H). With this information, these 4 fields will then be populated with the following calculations.

These calculations will give what PowerWorld would expect a generator’s VoltSet and VoltSetTol value should be changed to when being used in the Case Voltage Conditioning Tool. The additional arithmetic is necessary because PowerWorld’s Voltage Tolerance (VoltSetTol) is a single value that applies to both the upward and downward tolerance.

 

Use the Case Voltage Target Tool

To perform voltage conditioning either click the button Perform Voltage Conditioning on this dialog, or run the script command named VoltageConditioning;

The following process with the objective of conditioning voltages in the case is done when performing voltage conditioning.

  1. Ensure that the existing case has an initial solved power flow solution

  2. Iterate through all generators in the case to build a list of generators that meet the following criteria

    1. ConditioningAvailable = YES.

    2. ConditioningRegBus is populated (this will be true for all buses with Online = NO)

    3. Using ConditioningRegBus, look up a ConditioningVoltSet from the table of CaseVoltageTarget objects. Only include generators that return a value for ConditioningVoltSet. Remember this will look for a CaseVoltageTarget assigned to the bus first and if one is not found it will look for a CaseVoltageTarget assigned to the ConditioningRegBus substation and nominal kV.

  3. A list of generators meeting these requirements is built and then the following information is Cached before the process is begun

    1. CACHE_RegBus = RegBus

    2. CACHE_AVR = AVR (the YES/NO field)

    3. CACHE_VoltSetTol = VoltSetTol

  4. With this cached, Simulator then runs through all the generators in the list created in the previous step and applies the following assignments to those generators.

    1. RegBus = ConditioningRegBus

    2. AVR = YES

    3. VoltSet = ConditioningVoltSet

    4. VoltSetTol = ConditioningVoltSetTol

  5. A new power flow solution is solved which will use the voltage schedules and tolerances specified.

  6. Look through all the Switched Shunt objects that are marked as ConditioningAvailable = YES which are regulating a bus which is outside of its CaseVoltageTarget range (based on the target and deadbands). Also make sure moving the shunt up or down will not cause the shunt to move all the way across the target range and result it begin outside of the target range on the other side. Among these shunts choose the one with the largest dV/dB (which is at least CaseVoltageTargetTool.MinSensitivityShunt) and move this shunt by one step up or down.

    1. While iterating through these changed for repeated power flow solution, also keep track of subsequent changes in the direction of a shunt move. If a shunt changes directions multiple time it may be locked in this process and stop participating

    2. For example, a shunt may start at 20 Mvar and on subsequent iterations through this step it may move up to 40 MVar, up to 60 MVar. This would not cause the oscillation counter to increase. However, if the shunt then moved back down to 40 Mvar, the oscillation counter would be incremented by 1. After the oscillation counter for an individual shunt reaches 3 then it will be locked for the duration of that VoltageConditioning process.

  7. Go to Step 5 and repeat until no more shunt moves are found. Keep repeating until no more shunt moves are done.

  8. Using the final solved solution with the setpoints and tolerance, reset back to the original regulation settings (but with a new setpoint). Do this by setting the following

    1. AVR = CACHE_AVR

    2. RegBus = CACHE_RegBus

    3. VoltSetTol = CACHE_VoltSetTol

    4. Set VoltSet to match the new operating point. If a the CACHE_VoltSetTol is 0.0, then this just means VoltSet = RegBus.Vpu

      Otherwise use the following logic

      If Mvar >= MvarMax Then VoltSet = RegBus.Vpu-VoltSetTol

      else if Mvar <= MvarMin Then VoltSet = RegBus.Vpu+VoltSetTol

      else VoltSet = RegBus.Vpu+VoltSetTol–2*VoltSetTol/(MvarMax-MvarMin)*(Mvar–MvarMin)