Skip to content

Commit 2e42a32

Browse files
Merge pull request #918 from PowerGridModel/feature/step-up-transformer-tap-changer-doc
Automatic tap changer step up transformer support: documentation
2 parents 279d0a9 + e7bb354 commit 2e42a32

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

docs/user_manual/calculations.md

+10-4
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ Power flow calculations that take the behavior of these regulators into account
626626

627627
##### Control logic for power flow with automatic tap changing
628628

629-
The following control logic is used:
629+
We provide the control logic used for tap changing. For simplicity, we demonstrate the case where the regulator control side and the transformer tap side are at different sides.
630630

631631
- Regulated transformers are ranked according to how close they are to {hoverxreftooltip}`sources <user_manual/components:source>` in terms of the amount of regulated transformers inbetween.
632632
- Transformers are regulated in order according to their ranks.
@@ -652,6 +652,7 @@ The following control logic is used:
652652
- Exploit the neighbourhood of all transformers (see {hoverxreftooltip}`user_manual/calculations:Initialization and exploitation of regulated transformers`)
653653
- Re-run the iteration in the above if any of the tap positions changed by the exploitation.
654654

655+
In the case where the control side of the regulator and the tap side of the transformer are at the same side, the control logic of taps will be reverted (see `user_manual/calculations:Initialization and exploitation of regulated transformers`).
655656
The exploitation of the neighbourhood ensures that the actual optimum is not accidentally missed due to feedback mechanisms in the grid.
656657

657658
```{note}
@@ -667,7 +668,6 @@ This assumption is reflected in the requirements mentioned in {hoverxreftooltip}
667668
```
668669

669670
```{note}
670-
The control logic assumes that the (compensated) control voltage decreases when the tap position increases.
671671
If the line drop compensation impedance is high, and the control side has generator-like behavior, then this assumption does not hold, and the calculation may diverge.
672672
Hence, this assumption is reflected in the requirements mentioned in {hoverxreftooltip}`user_manual/components:Line drop compensation`.
673673
```
@@ -679,10 +679,16 @@ Internally, to achieve an optimal regulated tap position, the control algorithm
679679
| strategy | initial tap position | exploitation direction | search method | description |
680680
| ----------------------------------------------------------------------------------------------------------- | -------------------- | ---------------------- | ------------- | ------------------------------------------------------------------------------------- |
681681
| {py:class}`TapChangingStrategy.any_valid_tap <power_grid_model.enum.TapChangingStrategy.any_valid_tap>` | current tap position | no exploitation | linear search | Find any tap position that gives a control side voltage within the `u_band` |
682-
| {py:class}`TapChangingStrategy.min_voltage_tap <power_grid_model.enum.TapChangingStrategy.min_voltage_tap>` | `tap_max` | step up | binary search | Find the tap position that gives the lowest control side voltage within the `u_band` |
683-
| {py:class}`TapChangingStrategy.max_voltage_tap <power_grid_model.enum.TapChangingStrategy.max_voltage_tap>` | `tap_min` | step down | binary search | Find the tap position that gives the highest control side voltage within the `u_band` |
682+
| {py:class}`TapChangingStrategy.min_voltage_tap <power_grid_model.enum.TapChangingStrategy.min_voltage_tap>` | voltage min tap | voltage down | binary search | Find the tap position that gives the lowest control side voltage within the `u_band` |
683+
| {py:class}`TapChangingStrategy.max_voltage_tap <power_grid_model.enum.TapChangingStrategy.max_voltage_tap>` | voltage min tap | voltage up | binary search | Find the tap position that gives the highest control side voltage within the `u_band` |
684684
| {py:class}`TapChangingStrategy.fast_any_tap <power_grid_model.enum.TapChangingStrategy.fast_any_tap>` | current tap position | no exploitation | binary search | Find any tap position that gives a control side voltage within the `u_band` |
685685

686+
| transformer configuration | voltage min tap | voltage min tap | voltage down | voltage up |
687+
| ---------------------------------------------- | --------------- | --------------- | ------------ | ---------- |
688+
| regulator control side != transformer tap side | `tap_max` | `tap_min` | step up | step down |
689+
| regulator control side == transformer tap side | `tap_min` | `tap_max` | step down | step up |
690+
691+
686692
##### Search methods used for tap changing optimization
687693

688694
Given the discrete nature of the finite tap ranges, we use the following search methods to find the next tap position along the exploitation direction.

docs/user_manual/components.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -804,19 +804,19 @@ The actual grid state is not changed after calculations are done.
804804

805805
#### Input
806806

807-
| name | data type | unit | description | required | update | valid values |
808-
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------------------------------------------------------------------------- | :--------------------------: | :------: | :---------------: |
809-
| `control_side` | {py:class}`BranchSide <power_grid_model.enum.BranchSide>` if the regulated object is a {hoverxreftooltip}`user_manual/components:transformer` and {py:class}`Branch3Side <power_grid_model.enum.Branch3Side>` if it the regulated object is a {hoverxreftooltip}`user_manual/components:Three-Winding Transformer` | - | the controlled side of the transformer | &#10024; only for power flow | &#10060; | |
810-
| `u_set` | `double` | volt (V) | the voltage setpoint (at the center of the band) | &#10024; only for power flow | &#10004; | `>= 0` |
811-
| `u_band` | `double` | volt (V) | the width of the voltage band ($=2*\left(\Delta U\right)_{\text{acceptable}}$) | &#10024; only for power flow | &#10004; | `> 0` (see below) |
812-
| `line_drop_compensation_r` | `double` | ohm (Ω) | compensation for voltage drop due to resistance during transport (see [below](#line-drop-compensation)) | &#10060; default `0.0` | &#10004; | `>= 0` |
813-
| `line_drop_compensation_x` | `double` | ohm (Ω) | compensation for voltage drop due to reactance during transport (see [below](#line-drop-compensation)) | &#10060; default `0.0` | &#10004; | `>= 0` |
807+
| name | data type | unit | description | required | update | valid values |
808+
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------------------------------------------------------------------------- | :--------------------------: | :------: | :--------------------------------------------------------------: |
809+
| `control_side` | {py:class}`BranchSide <power_grid_model.enum.BranchSide>` if the regulated object is a {hoverxreftooltip}`user_manual/components:transformer` and {py:class}`Branch3Side <power_grid_model.enum.Branch3Side>` if it the regulated object is a {hoverxreftooltip}`user_manual/components:Three-Winding Transformer` | - | the controlled side of the transformer | &#10024; only for power flow | &#10060; | `control_side` should be the relatively further side to a source |
810+
| `u_set` | `double` | volt (V) | the voltage setpoint (at the center of the band) | &#10024; only for power flow | &#10004; | `>= 0` |
811+
| `u_band` | `double` | volt (V) | the width of the voltage band ($=2*\left(\Delta U\right)_{\text{acceptable}}$) | &#10024; only for power flow | &#10004; | `> 0` (see below) |
812+
| `line_drop_compensation_r` | `double` | ohm (Ω) | compensation for voltage drop due to resistance during transport (see [below](#line-drop-compensation)) | &#10060; default `0.0` | &#10004; | `>= 0` |
813+
| `line_drop_compensation_x` | `double` | ohm (Ω) | compensation for voltage drop due to reactance during transport (see [below](#line-drop-compensation)) | &#10060; default `0.0` | &#10004; | `>= 0` |
814814

815815
The following additional requirements exist on the input parameters.
816816

817-
- The automatic tap changer algorithm currently only supports tap changers connected at HV side of the transformer. Hence, the rated voltage of the node at the `tap_side` must be greater than or equal to the rated voltage of the node at the other side of transformer.
818817
- Depending on the resultant voltage being transformed, the voltage band must be sufficiently large: At zero line drop compensation if the expected resultant voltages are in the proximity of the rated transformer voltages, it is recommended to have the $u_{band} >= \frac{u_2}{1+ u_1 / \text{tap}_{\text{size}}}$
819818
- The line drop compensation is small, in the sense that its product with the typical current through the transformer is much smaller (in absolute value) than the smallest change in voltage due to a change in tap position.
819+
- The `control_side` of a transformer regulator should be on the relatively further side to a source in the connected grid.
820820

821821
These requirements make sure no edge cases with undefined behavior are encountered. Typical real-world power grids already satisfy these requirements and they should therefore not cause any problems.
822822

0 commit comments

Comments
 (0)