Power Flow Solution: Island Creation
When allowing dynamic slack bus assignment, the choice of the island slack bus is managed in Simulator by internally maintaining a list of buses the user has identified as slack buses while in Edit Mode. Electrical islands are then dynamically determined from the system topology. As branch statuses are changed, this list of islands (and slack buses) will automatically change .
The process used to build islands and choose the island slack buses is described as follows.
Step 1: Build the Islands
Islands are determined by going through the topology of the power system and building groups of buses that are connected by closed AC branches in the system (DC branches don’t count here). Each group of buses all connected by AC branches will be considered an Island by PowerWorld Simulator. The case information display in the Model Explorer showing the of islands. This list of islands however will only show islands that are energized or islands with more than 1 bus. Note there are also fields that can be added to the list of Islands which show the number of generators, loads or switched shunts in the island which can be useful information to know.
Step 2 : Choose Slack Bus for each Island
After these island bus groups are determined simulator will then determine which bus to choose as a slack bus. Part of the user-input for a bus is a field called Slack which can be set to YES or NO via an AUX file. You can also change this parameter of the Bus Edit Mode Dialog by checking the appropriate check box. If an island has exactly one user-identified slack bus, then that is used as the slack. If an island has greater than one user-identified slack bus, then the user-identified slack bus which has the largest maximum generator MW output is used as the slack bus. If an island has no user-identified slack buses, then Simulator will attempt to pick one of the buses in the island as the slack bus.
When picking a slack at this point we then look at another user-input integer field for a bus called SlackPriority (SlackPriority was added in Version 19, build on March. 17, 2016). Normally SlackPriorityare all zero, so this doesn’t matter, but if a user enters positive integer values, then we choose the buses within the island that have the highest positive integer only and consider them using the following rules.
From the list of candidate buses, the five criteria listed below are used. If buses are found that meets all five criteria, then of those buses the one with the largest maximum generator MW limit will be used. If no bus is found which meets these criteria, then of the buses that meet the first three criteria, the one with the largest maximum generator MW limit will be used. Again, if no bus is found, the first two criteria are used and so on. Under no circumstance will a generator set to any kind of wind power control mode be selected as an island slack bus.
Generator regulates a bus in this island
At least one generator at the bus is set to AVR = YES
The sum of the Maximum MW limits for generators at the bus is less than 5,000 MW (if there is more, these are probably a fictitious MW limits)
Generators at the bus regulate their terminal bus (this will be required by the slack bus anyway). However, if another bus with generation that does not regulate its terminal bus is available and this other bus has a maximum MW output that is 5 times higher, it will be chosen.
There is only one generator at the bus (it is just easier for the user to keep track of then). However, if another bus with multiple generators is available and this other bus has a maximum MW output that is 5 times higher, it will be chosen.
As a last resort, if no generator is picked as a slack but the island has a generator that is regulating a bus outside the island, then that generator is set to regulate its own terminal.
Step 3 : Ensure that the island is considered viable
If the slack chosen in Step 2 was not user-specified (Slack = YES), then we do some checks to ensure the island is viable. We do not do these checks if Slack was chosen because the user has already indicated that these are good slack buses so we don’t restrict their choice as a slack as much.
(Has at least one bus with closed load of nominal MW in per unit > 0.001)
OR (Has at least one bus with closed load of nominal Mvar in per unit > 0.001)
OR (Has a DC tie to another island).
(Has more than 1 bus)
OR [Has a DC tie to another island]
If the island does not pass these tests then the slack choice is discarded and the island is considered not viable.
Step 4 : Ensure that the island has enough controllable generation (Note: This step is only done during Contingency Analysis when the option "Prevent new island without enough controllable generation" is chosen. See the help on Contingency Options Basics for more information)
This new step that can be optionally used in contingency analysis was added in Version 19, Build on January 9, 2017
This step is only done during a contingency analysis solution when the option "Prevent new island without enough controllable generation" is chosen. The goal of this option is to ensure that the MW controls specified for generators in the island have a reasonable chance of actually meeting the load and losses in the island. If the estimate shows that the slack bus chosen for the island in Step 2 above will likely end up operating well outside of its Minimum and Maximum MW output then the slack choice is discarded and the island is considered not viable. Also note that this is only done if the estimate load MW in the island is less than 50% of the total load in the case. This check on load MW is done to ensure that this additional check is only done on smaller islands created by the contingency and is not applied to the largest island in the case.
To perform this, the following calculation across all buses in the Island are done.
- GenControllableMWMax = sum of generator MWMax of generators which are both Online=YES and (AGC=YES or it is slack bus)
- GenControllableMWMin = sum of generator MWMin of generators which are both Online=YES and (AGC=YES or it is slack bus)
- GenNotControllabeMW = sum of generator MW of generators which are both Online=YES and (AGC=NO and it is not slack bus)
- LoadMW = sum of load MW of online loads (see **note below)
- ShuntMW = sum of bus, switched, and line shunt actual online MWs (see **note below)
- LossMW = sum of loss on devices inside the island (see **note below)
In addition we calculate a value across all loads in the case
- LoadMWCase = sum of load MW of all online loads in the entire case
From these values we do the following calculations
- MaxDeviation = 0.01*LoadMW, but bound MaxDeviation so that it must be between 10% and 100% of the Contingency Options Make-up Power Tolerance (AGCToleranceMVA)
- ControlNeeded = LoadMW + ShuntMW + LossMW – GenNotControllableMW
- If (ControllNeeded – GenControllableMWMax) then Deviation = ControllNeeded – GenControllableMWMax
Else if (ControllNeeded < GenControllableMWMin) then Deviation = ControllNeeded – GenControllableMWMin
Else Deviation := 0- If (abs(Deviation) > MaxDeviation)
AND
(LoadMW < 0.1*LoadMWCase)
Then consider the island to not be viable and discard the slack bus choice from Step 2.
**Note: the calculation of LoadMW, ShuntMW and most importantly LossMW assume that the existing system bus voltage and angle values represent a reasonable power flow solution. Remember that these island checks are being done before a power flow solution is attempted so we cannot rely on reasonable bus voltages and angles always. This works in the contingency analysis tool because we can relay on the pre-contingency reference state having reasonable voltage and angles. This would not work well in other situations where a reasonable guess at Loss MW could not be made. This is why this option is limited to use in the contingency analysis tool.