From b88c27e23e18caeadc7d202c9e1d874cdc4b6f15 Mon Sep 17 00:00:00 2001 From: "martin.moraga" Date: Wed, 14 Feb 2024 12:03:15 +0100 Subject: [PATCH] improve documentation of hydro and steam Turbines and Governos Signed-off-by: martin.moraga --- .../images/ExciterStatic.drawio.svg | 310 ++--- .../images/HydroGovernor.drawio.svg | 455 ++++++++ .../images/HydroGovernor.jpg | Bin 11787 -> 0 bytes .../images/HydroGovernor_split.drawio.svg | 716 ++++++++++++ .../images/HydroTurbine.drawio.svg | 197 ++++ .../images/HydroTurbine.jpg | Bin 6470 -> 0 bytes .../images/HydroTurbine_split.drawio.svg | 279 +++++ .../images/SteamGovernor.drawio.svg | 622 ++++++++++ .../images/SteamGovernor.jpg | Bin 18140 -> 0 bytes .../images/SteamGovernor_split.drawio.svg | 764 +++++++++++++ .../images/SteamGovernor_windup.drawio.svg | 1015 +++++++++++++++++ .../images/SteamTurbine.drawio.svg | 558 +++++++++ .../images/SteamTurbine.jpg | Bin 20218 -> 0 bytes .../Synchronous Generator Regulators/index.md | 245 +++- .../Signal/HydroTurbineGovernor.h | 17 +- .../include/dpsim-models/Signal/PSS1A.h | 6 +- .../Signal/SteamTurbineGovernor.h | 59 +- .../Base_ReducedOrderSynchronGenerator.cpp | 46 +- dpsim-models/src/Signal/ExciterStatic.cpp | 14 +- dpsim-models/src/Signal/HydroTurbine.cpp | 5 +- .../src/Signal/HydroTurbineGovernor.cpp | 35 +- dpsim-models/src/Signal/PSS1A.cpp | 13 +- dpsim-models/src/Signal/SteamTurbine.cpp | 8 +- .../src/Signal/SteamTurbineGovernor.cpp | 110 +- .../src/Signal/TurbineGovernorType1.cpp | 17 +- dpsim/src/pybind/SignalComponents.cpp | 7 +- ...derSG_VBR_SMIB_Fault_withControllers.ipynb | 4 +- ...derSG_VBR_SMIB_Fault_withControllers.ipynb | 4 +- 28 files changed, 5152 insertions(+), 354 deletions(-) create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor.drawio.svg delete mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor.jpg create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor_split.drawio.svg create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine.drawio.svg delete mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine.jpg create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine_split.drawio.svg create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor.drawio.svg delete mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor.jpg create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor_split.drawio.svg create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor_windup.drawio.svg create mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamTurbine.drawio.svg delete mode 100644 docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamTurbine.jpg diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/ExciterStatic.drawio.svg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/ExciterStatic.drawio.svg index f754aecb10..307ffd55b8 100644 --- a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/ExciterStatic.drawio.svg +++ b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/ExciterStatic.drawio.svg @@ -1,52 +1,52 @@ - + - - - - - - - - + + + + + + + + -
+
- - - - - + + + + + - + - + - + - + - + - + @@ -62,69 +62,69 @@
- + $$\frac{1}... - - - - + + + + -
+
- - - - - - + + + + + + - + - + - + - + - + - + - + - + - + - + @@ -138,40 +138,40 @@
- + $$\frac{1+... - - - - + + + + -
+
- - - + + + - + - + - + @@ -183,33 +183,33 @@
- + $$e_{... - + -
+
- - + + - + - + @@ -221,43 +221,43 @@
- + $$v_{... - - - + + + -
+
- - - - + + + + - + - + - + - + @@ -269,56 +269,56 @@
- + $$v_{... - + -
+
- - - - - - - + + + + + + + - + - + - + - + - + - + - + @@ -332,27 +332,27 @@
- + $$\frac{K_... - + -
+
- + - + @@ -362,55 +362,55 @@
- + $$-$$ - - - - - + + + + + -
+
- - - - - - + + + + + + - + - + - + - + - + - + @@ -422,51 +422,51 @@
- + $$e_{... - + -
+
- - - - - - + + + + + + - + - + - + - + - + - + @@ -478,33 +478,33 @@
- + $$e_{... - + -
+
- - + + - + - + @@ -516,37 +516,37 @@
- + $$v_{... - + -
+
- - - + + + - + - + - + @@ -558,33 +558,33 @@
- + $$v_{... - + -
+
- - + + - + - + @@ -596,7 +596,7 @@
- + $$v_{... diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor.drawio.svg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor.drawio.svg new file mode 100644 index 0000000000..5a5948fa0b --- /dev/null +++ b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor.drawio.svg @@ -0,0 +1,455 @@ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\De... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{K(... + +
+
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$p$$ + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p^{... + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor.jpg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroGovernor.jpg deleted file mode 100644 index 5a6714dc008f81f5297863ab3574cb1223de4d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11787 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 + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\De... + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$x_{... + +
+
+ + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$x_{... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{T_... + +
+
+ + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{T_... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p^{... + +
+
+
+ + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine.drawio.svg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine.drawio.svg new file mode 100644 index 0000000000..e6a47ce76f --- /dev/null +++ b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine.drawio.svg @@ -0,0 +1,197 @@ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{(1... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{... + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine.jpg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/HydroTurbine.jpg deleted file mode 100644 index 5a7648168b55685dba49dc7636dbfa32a4b0b87a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6470 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 + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$x_{... + +
+
+ + + + + + + +
+
+
+ -2 +
+
+
+
+ + -2 + +
+
+ + + + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$3$$ + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{... + +
+
+ + + + +
+
+
+ 3 +
+
+
+
+ + 3 + +
+
+
+ + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor.drawio.svg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor.drawio.svg new file mode 100644 index 0000000000..541ad327d9 --- /dev/null +++ b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor.drawio.svg @@ -0,0 +1,622 @@ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\De... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{K(... + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\dot{P... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\dot{P... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$p$$ + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$-$$ + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor.jpg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor.jpg deleted file mode 100644 index 9e9aae5c34d9e20eda071a1959d3bf010de6fca6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18140 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 + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\De... + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\dot{P... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\dot{P... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$p$$ + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$-$$ + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{T_... + +
+
+ + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{T_... + +
+
+ + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor_windup.drawio.svg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor_windup.drawio.svg new file mode 100644 index 0000000000..856aa30b0c --- /dev/null +++ b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamGovernor_windup.drawio.svg @@ -0,0 +1,1015 @@ + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\De... + +
+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\dot{P... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\dot{P... + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$p$$ + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$-$$ + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{T_... + +
+
+ + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{T_... + +
+
+ + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$P_{m,m... + +
+
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$-$$ + +
+
+ + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$K_{bc}$$ + +
+
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\do... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p^{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + $$-$$ + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamTurbine.drawio.svg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamTurbine.drawio.svg new file mode 100644 index 0000000000..2afab5f26b --- /dev/null +++ b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamTurbine.drawio.svg @@ -0,0 +1,558 @@ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$\frac{1}... + +
+
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$F_{HP}$$ + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$F_{IP}$$ + +
+
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$F_{LP}$$ + +
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + $$p_{... + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamTurbine.jpg b/docs/hugo/content/en/docs/Models/Synchronous Generator Regulators/images/SteamTurbine.jpg deleted file mode 100644 index b2f5635e8497d38daa59071898b2e6bd578d1fcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20218 zcmeIacU)85wk{kgq7;!{q(~DL5s@Z{L`6VEK)TW*B3(d`5^4mbH>oNhktQG|(h-43 zm)^USgx(WM2$1qE-+k^rufBVqyZ8Bh=ezfhFR<1R!pxd$%sIw0#(2h9kjKcgpwstM z)m1^qjvWI%2EIV#Nsuy#l7iyrH}IkYzNt@8Q&Uk<)6&o!KS57RPftfnN5^oA`82~R zrc-our`b<4v9PkSvC%VfaI&*RFpsO z8W`;d{2fHaM9nN9dFwcfjs=aN3+vT@xQr7*w@Vt>bo(*FQcqk1Ptvk;aB^{roD)5N z;i9yRtlTwu1?4*`s%m%D@9F6q7#cl%WNi7=%G$=(&i;j)yN4&#%RA^*a7buactm_c zVp8&(x9?Iiv$AtO=H}&pDlIFosI02~Qq$Pf+|t_iy}e^#aAtddg$K z=20?%z#yVtX2f~W|FPrs`z+C%bEvhOr!wP{U(%k>{D1k#whXvQXF3|~FM#(!EylY` zFgdW-XuiG1_u7EZs0oyPU3o4L7Li@w-`u{A(1mQrLu)mE3z*gYpd~z^U6; z-mCfFbw1#BI5L2G@9d}8geqDU8Sj5B!7Ma{`7AWXE4>`q4}#euDDjg9W)~-oO&Ba< zJ3rdLR=0BXkL&oPO`wtKwue;OG~8f$P&2rtBxq+?0ke4h?YU6Bfjz3L57!JYvP0i8Q@#GKy72hc(nP*CgPfg8ThBh>ILeTAANhSx z#Bpk67!9LRv_gxEHX9?FAl#;EdC*YR%9!mzgV?k7vRW;Mw;7e5FjXAfxV2?IRQS+U z^5O8u6^$e^s3|kQTR*yQ^?YWj^j~)?TN+e8^7wkd-7d9T-O$iB#xU;69CWl43KA?V zn=Uk3H0@LLz=kA}d^X7|1iX+jfBySY%1E@Fv2Ppnd^vyJH_362xMEaYD0fyzV zj06Q@l0SdN!qilKc#iVfBl8kpsY}}>tt&hXUFtV>3~Fy2nfso>hSXVP*nv+=*C`te zS(`XGT-#4hQN5)kJf zzr;P(g>5akq@N@vx=$(J!#iX{*P2tD3Q!Qr6UF6qa`#K1(Zd4*Ox>$%p8jd=~% zFL2=9W2G4KG^Xwvedby#V&HMgb_>xa{5T;rq9*=4H z$^k`ruHlc12PqTs+_yQMLc6>qPc#OYqmGn}J5h)UWwcYcMAV+2pGDc=@J2|KU#Nf-BF=xH_*ah4wa#mACN))a`*r;DA0fmnoIos zUW`f(0HO7NO0Mr?57}8GgU-R`c@jv@|E|JXKqE{BrD7Cckhtyn56_W7r@@$eNP=ta z+#GV_T^^LCLFmzdA`RMyYwl|>w>T|y~Y2i!h5PEyA+Un`^e)!z|W_d(C)#LM~AO)jtctvc}lz~YTf_3NPC0zW$*qJ}p)GO|rpI))*}l!->hYam(iR*zL<#y#QqcbgWK z=Y*4lgt~-s+4lCLUvc|=y5&ga(I+t#AwpZQOHu#05B3xuro@Qtjr7&|;A;=uzoNQ_ z(`Bm~%tFyn0Uz4(mEx<{VP`<}r|^sQK^VS-V!UUQ?1;GtmIaz?7@gWZ%#h|0Vj8cu znRTE_!{cof6?@w_+lym^8W9@`V<)jgi^UblAiZiYgj+$R*+qU?G*mdKi17WGBIuMyuX02CjR}LSNYLby7tQ( zZr{Z#&es;C+A@!bZjWE}Sa@4i=VP$+YWHim>*%BE!HvaX@h7&AYur0qqi&t$8$auB zFvo3O>(5RaN@Irfw{&56#?NTw zMN(__xg1?1BO;?dJ_obk1ZGjBD}cgUaIdGK{;NW`q<1(f%J+aPd0Bk*Or=;8@(D4e zEp+clU3yK^<|YPLh*RRhIv8iR=bH#zdp7rivv-rw6I~^_l#xNrWKgKA692$6l9Ur>BwjGw?JYsfio5oN zs^zqjMI8L?iynu@-5V;|jxUzIgqVdcfC8`FLL~XK6COmOdDisjZ?)UabqBgVwYZ5D8ZqN z46>R6>(pQ_=b+ykj;|vKMxS~MD+;q1SnuDylkI(An~Ozggw6@?w88uyp0+&K5n_V8xXiCc& zPPBwoCO@Wlwtd37lfLrS9^2m1PndXQ9Qvxf$V7i|@606UWrXzh;((pei`$T65r-`0 zfdA)F<&&zrCkH{p<}G#KtE={>=P-uy$!Uj~vkdNi->p+tHObp2M(PK(r%Sa_+ZHEZ zYxV>2-xCYbl$T?B>ZZCP+}5wcCPK}sbMt?Dc!4+c0FS$d6(xP+fE`{MEi_6X4THCx zkj$|4W1c{W(d}*lo3?|6`&%2pLM4?}(EN%_c+YDnO+{D}0vky7CO({ac*5N(w zuV*aA%3fBF3Eg*>?=%`WrkrWd7?aKCxw5KCb#&ij-B>1p^11F!VVi5{I_|{fzKnad zf@wK^m!}GkVDEeG-gCE6aCH=MY7@u2L21QeVjD}AC-hzAFAthdo636?=U65PN2v?L z2PwXK8;i9k=E%#dPnFe3J}@mAJD(X5ANUW}lB)PR`c0F#6gv0SrkmMKncAp3l~sL@ zHSMmZWtXIPWmB3Zu{}@BZ`Zoq&2m0pOr4K13qOetZA`s0sAz-I=;ax2YBm?d)D$M% z&3Y+PaqaO~+eH%@>ls|$;9lfcB3K0jj;@F{Y)=+T<=j;Z{}2~qAZ$nbDgK0FdZ^4s zO3?jEsZ=Yq>J#@J1R9gqPqtCYV7JyQG6^~ZNZXl+H%e!}4sMlCM&bwcf-mzB)2)N8 zf-|YF+>9QP8m!9kE}zq2p{@9&BFg4Bf$Ss{y67ja+&dlV2v#0Ei}#s>Mf(d6%4mlf z8j^T0$?vb!RARC@D9{@Dx4N9&W~l{S-UkWY@HVPzqE+V3JbOpyWx+Sff$YrM)ruU$ z_5zVo6W#|OGd#cg-Hte4$N-%FwS3^u<7(l!d?2iJ$0v|MkLi#^c83wMb|Bb?AIL$% z!8p)Y01K>ZJ|nlJkegN?s4KR_URu91F>4f&j77zfFE3%IfGo6$_2!zp7ic`1w#C4Pdk0y))?K-Uet-0XeJ|CLM~%-l=aHXrdv?C^pEyakOfUR&7V zjM7hv@chY9y!|UQ>OP?8*O7j^c|mb*L$3?*SW)yJEihDcgL52f(p2^l@2i+}Nx`1=`z?OgSgfx)VnR3H-+n8L-zSK~%_~ z9HEoQ>6^HTi~QG)bPK=j34ZZPT6fY=Vb%M$2|NTG<{(Bi6oZ6J7``jE_ogx)jS`oh z?2JCQP_zUUj?w+j>&5dDMtewG?@cT~&R@XTklKiV!l-ncy_ML1>kBwyT7V9E_9GT& zSv3YmFA&uEwOKkzY(|E}1h*m|&6>dq{xJU2TZK+plG@HLXmvB;+gJ1h<*D?My!8^$ zSkzVoi68IKh*NONDZrPKG-NdIJz}!Bqq!x~o)*ljDwd76L`#Hm!^0|$7&+|}Zq&cG zYq&qWgu(AF;GH6-D9HlBL5|(1t zri^z1^sTz*W#(^`>PPi`MigOXw_Rxq4Sp~Bd1R@3MCoK5z6hIue#SwP#d^frWKE4v zP8i#IHz&W&tSkL$#Sy5%S1|%CvE(EGI~sU^d<#}YqI7)u0l*o?W|10=VWc<_6Z`^J zuQ~nLNG(k!)V%5bkUNZZwJ2AOFZWVdNoM1YBJ!+o@WURpI`0ZBo1LaAb7?tD*hMFc zJAX%Pwad{22kzTzzci1;&NS1FKU&&3g!ZRuQSmObJ2C%FGO!Ey^ zj0~dnf;HAKhA0VQartQN(+}}Y>I07DN7ptcwTH^R=Ht(lqM{;0xu~yXA*T^)g-Uf{ z_C3}JMy>q?C0*hNf7WSVG5n(fXsRkccJ9EPjw2vTW9D?{CCwUrT`q5?K!+6s{r4Rx zOeIJPS+zA=ZVS62Nl)kro-2s zu9@xHTyzt?X1m4T0hy2SYSAiuawNF~7={q(9;6vgxUdK;T!z(=;PRm(ac?6xwqC$^ z3Uaq}N|P~c!RUR`?F+8Q)oEE@j2Tg5wr~;n2CVWoBc&^SiUO#woopjkgN}tt6~P}r;E-V?jf>a>>hwj=HFTu0HT8(;jFbFy;~m)8H$>i(DS9jxJs0k$c( z0e-~4O9l}+Wc=tLilpH-(mD8X*g9+wuuT2o@jx=jE4FuA9^i)<()e2>PPAala6^4= znksu5ek_e7p7e)HrSU$d(?3|=CkU7(MP0rLfT;1-p7=vjkE`!F%<)K=eT~`BU=z%} zKy{#Nr0<*A0zIci=ep@@wQh4FPk4#e9--xV%2Jctu>VE7bQy(~<`*k9X055tPfLXE z)W67*{#vuyWh*&IQSIfXkT?>a{wUACFa2C49*os)#r&`>om`%H-x3?TD7*Q&OXz91 z?~nE!7BPi+HhyvU85+`swP{&wRm84OyBiUrI*?iE;OMLoFchuQr0)(5TY8DxkA?_3H%{j9lewbDbLwx{Z^04K< z?8#HOCzihlem`N8By=#~!{7vXe=_Jm9KsD=7y0S_nT=9>wfZ09hmRiH^05uUDjxUM z%6*tJE9y@8VH{i8MZr+kYP85y=KEo{$6>(#^mmRqo7U%d`LS0A0cLG9-l!aroGWlZ z26=y#wBPgB0RkDF?$9@vAO(t&$ntuIRmcevH&n^zk>lp8en@Zr&7J$W5!_MwvrtYC zznAeRx{|u>;pN&9Sy-b;N9nIcG&-aXtU-E^Wk&WX=VG+`%O6U2YFV!$yUT1(yfAO@ z!>nH4isbf;;WtRE3rUiF$DXF6h?xFfyzO)}S+BzPmUSi=%picb%35UyPsFbdn6JL^ z&aRSU%9M}yqK~?g^+6Pr?h;^naS0-=kY=+H)q=EvvBY0_;YBtPLV!&|*G3gZ0XXUb@cAbkQPiD;)hH8m37M|v-rG3MZpKzKMaS!a|4k5GY3Z9{HF*8a)B_5xgry_OQV%FB6G$qRGMP#@>j!#4OG=H z>l+Omh7!CwNprA^+x+7KZ%AA~n0WRxe{}+qC>#G(fV81U&>?($JXN69p9Wd~awG$V zp=N>z)MyQpZY_&ZJBJX*6~gg?i+G;sCW@50#aM4QdIhIaFuC$)SgJ*zl$sI4QR z6Avj{Z_3Qe!pqVskqpH@BjS^lnQrf-Y5D{wotZhae7zFfn(p0f)xMv0${|$WZKqXh z;~kQUqyWuon-~oecfRcAXU|}H>y7^KnY&d_x%I!bEU0cQRv$DWJD!g#n;7wLdjjP0 z*gG<)3So{wO$jnGE+;GaI&nEZjsfB6ss)2-D08)fBDU?`o8W4KsQB@j-+-iVaBb9s znGC8WgXrW7?p@ZYa`OomKf9t~YW;7=vZk+chkjXAHOKReQvp@=gc&#^A+d6N=j!J_HqDjskQ3;}c1(=YR#t;1}rt~N3``U?*` zzkb&T>Y_syTQkS}tDL>!gRg z^`-TP37ZbNnGrh+qN3fR9&Xv0g@F<0^Eq`?SV4b2^dL#ntLG^@6^)Lh2@2S@Foev8 zj!#zqg)7w?nC2K%<;)pz5}D?HEC|kIfkB-TA|Sr>oClR@@FLOWQh34%`*F{ z_{;k9R>n^l&$_d%%X*ZIo2XIUV?RG6czzkgNs*gb8$Oh;J3XK|`SrTxi8jr=yGC{+f%+IG>m#S++W)FnV<}{dn!GT z8yOVt%eHEPO=9Do9?*5_=uI)Ue*=?>DPmo{J)+T>*@71%igW zOM;*}` zg+2fm2mQ0-Dg60pq%Q#f@!i<3q$ULzDfI)wE@6`!>l_5$epD|98?(^{u+NQcR1I(7 z$3aSr5+&T_8wcEwK=q#u@z!&dk>?9Gm#A>rnl~rQPT?C1C}Qd2NT>A%h&r zAea%s{>xL`ot?{z!E8Xrdh&QGK*Zu^_V-||vG}{vGl0XdB!iFzB=ik-AKM{-NynpIo#}_R{=>TLUTQ$#^lX%AsO`R ziozOieI$c=iB&`*1p8_Jjm3-q{Vup_eEz>nG-Rp81z@#{SQ2L|a^4m(P47S(m>edZE76C$)- za1m7!5nUzLrLKfRu;Zo3Ad%ELPhtpw)I_;k=7ax`Zz_((d^(gMUf|TmzrIll0FUzX zKLOa^D5Yw61e~K*2IHv=#E4tgWhL{;RprSGNvd-44~N4HzIQSOq*t`B%v6LniR+=+ zQ)fG!nJ?8$=Y1*FvAY)NFU0yk;O?Pllad3I!KKm8QKUw zWVHYwZW|WulO)1#4rBzqE3jE@Letm)NgwL@>kxiSD?i{;mUTi&fMX%ajQJ|#v9pNa z!^-d+Xpnher~U{+u(Y&H-_9yt{nTm4n;tRr>6M)NrU*q1tc>WM4L4s+JK@_k>zScL}SxqohloAk&_hm5>0alw} z3&f*W@M=Ij8U@}bX=4$tnZHb92fL_vS$nJ#C74eJMW_Owbo_bcc4ElJK-=tQh69(g z;3Q;7ApBA1vs>pIqi}4ymuB3EVoO_NsU&r+G9U##2drO~ikpx3Fed3n;g7<(uSowz zEy>`A+XcYv%F6~T<~qOo<<+%;+N|Gs_t=x99SwrUj%)!z-kX=Bf&W0rpBnJwY_X(- zHnR#BFcoY*8qY!c26WSC^Lh-kkwK9Xh6Vup%ewdYjCM5*$*XD`kqEPK9uGqG#?;e8 zHB3hc*Lg_=FqH;SX*!#@rCmO5HJYC+H3KQqy}J3Z_CtiSDf!l z%vW#OQFBz#AVk@m=qc2%=uZUyJBw;{#0}|)W%zC3vwq#mx{e5?I)G}214P?5_(5n% z4j~US^V|OZHm$=C&ROefKbASQSH3D(_WcHK>oQ;s!U~K0$K4&A3fJgOIw%H?Rb3A_ zXSNr!ti)TlYKQW%*;v~+UK}cuY!_}!OE5EYg#)#X`Bc0f zslgC_C?ZyXxahoJW^QxGp9;#q!3!|fMvW3jT$4cM@*~1Kc9RwZnYd0;MZALGq^d{> zn&x}_KiEd~h!e5BJCZ-SeO|~_(l{S~Db_inp4Qeo+j>p|iPdd-;ar^;=lf=Mc688S zr)mR;Fh#^>`H9g0VU@{;pd?}HM1Ueq$rEO`6xhheQc^4A#ANO(fxqE~#IG3PgWmkff)278k+h1Em^ZjQ%wBGA zdCNc%qE;+V!-dCH>LjmI(d~qUF_weT0qm?Lkl-Bd6W+fGB7@d-hLF3T2I?{tVskk2 zJ95j?rY2*}yyH|aURHN>d3qF5YcktQNOq2%!Ep@&erJl>=l(y4$MgSJ^-SfTx>m|X z82-FxSdlbrJlAm0S!7!fdn&^sv-Z7*n)r~lAwlpFgV%69P$h{5^C+EO=08>ZMi*n$ zbOKzyRguTj&Y1S?68o9}>c{$}Z!A#}`-m8R+P&Uzr7L*Le7h=d*OhwCk)8sWRh~1T z?R*-l8L~k;7hF}L#gnZQd&rl*EQM=2cAgw1E4Tr(GrU*N4&J}nGh}{M)9PHp(8$%& ziao_OLt>uv8XXiUxgS5$!4OCSu}!B}b=tWPMx!MXTZBYiqD`-eliI(XHE`6!|^?u#2e)0O;0&|t7j+3VegPGi9|SS7CHshH2{@PGJw&v*-00qv$Hd&X`mlDOmpH;D_J3GZ)(rZuSbj_(ew!_l?EjxEnO!bDgFNTztG7@T$r^XYf=1HMd(s8AO z>sA9_?J(}>V?mRk8uy1YpxIN`iY;4a*nGuiZ#bw75N;JstZ*2&$30V-Tz?eh6E=fe_Z>E0`!4Qde55Hk%kO*CG+Mt%|-oV_atC zE>F*pcYjk1P@v!aZuh-qwN7wVwgY9XlVO?0GFvCeB)8LC^oz5S@F{Wm5B>qgU-$b z3ViS22zL%h8})$XVyrzMw%iZ7*}bnlQ143&e`<)=D|`)Gv>IwtbW1({b%hM7(cg<* zeW8sn*@b27D(oW8|FwL31?F9U7HIbj^PiaJ#;bgA;HS47+>}8wJJj5d>nORJZRpaG zWAHvk-LidxMr%$mm*%84i*}NEH@JBK@vVOk_Pbw)YOh;jb8iB~vl1Sn*O&bkW!b@D2tK`<*hb-E@9gPn+6i(;EHp z2S3Y!10ybWGMCxQBJu=@Buk+_8Rcqko@MOhEiNu;LZ?w}V0PkzbOi6-GrIqj^8IkP%+WaV>W3{VsP+cnegO9eKH};nC3Kr( z84q&~jTW6ZfK-W^52FHanPFJ2QA)^jFeIHC<@39JD669W)F7TC=CpQq;P{W{*H$1I zV0x0^GGH^*nb5MPeFmkt0u%A>uL>KF88M%isCWXUhKw@8vUFL`e`%cncb8p+@xU`i zjCy7&LjD8iy5+(ytwT;$5ZZ_Mh}Ln1xZ52*(YjY&6kos63fJ$Z=DMa6+k~ zw3bs(row&0UMz}m;5U{VV&5PaV&5}RPjJ2Z*}f`M%hb4GyZQPTzL zA72%47H4Mz#VU~v8U%2G{K^(sXWOsITpXyYYsj^39nk|Ocjy#Ym#lt#aL2!54sx6m z*0_kD3WDR`KV&52Hr$KFtRjHGB1fQiE?^^3N5wVucgm0-JmudAJ1*h$@k?sszPMt~ z(>P?M^DS#pVXO>*Mf4mPJyNg(S0VVv$Ux-o#UEtQ>>`jn#TxY`8o=x* zXNK_-kjEL#5WK75e6R*N5)U43(l>MW$R^b7D@1yxiQ&g6v$>OG;)B8K>y(x@l<%7c z>T5nGWy&XCmD0nNB8%FS`4W@TwBIAGU=(&>21OmLWs|qCuF6Nd!-_PWlR0*#u_Y?) z*7JLaEU^})pLlHaH$2w6z^zOM zwO)XsZvBAu-^Xr|7y#RwW19n4^ltFm<(NPK{Dv%sVR>54i>!?FTc~i`#*j{l}!g@;dddrz-Ytyysie?pdF6e$Tyil)JgaV^ehf z?0%Iz692%He^*b@hYSk33&Xd_ItN@eX&unOg4a^fmwjF9G2muD z%Er_0g_IRq5);N9lmt9YGzu!*4N7jy1_)7@h?E61R(Pg_h88Oc`bxp?VDHoA{;)rE zsTeBSJ?OmTC=5+vzE7bheEb_a>GhV#S4E7k%mC-CuPycw7{^}$NUF3~#Q)9fW3-u) zC=}ZtV(`Y`W#A39O|d0-Fp`>Z0o#d=-C)a|TE@M`YxNfr&U_>$Q!CRXoOB3{igJWW zjxO?~xg!c@vHO7pu}^mCr(i70BPos99wRmP_p#!GsG9~4Bb`Jk2jcHKttkUd0Kqga zKwFAL8xk)aN(Mz4WkA)Mx>1g&c;)vrl^;nagP#qHJQDTm(&9?e=dq!T2`tIRx6eWy z-A(cpEm3=w1I6q;B+E~?nFp+|J!kykvLHCgtN&~q*`EoI8@XAcdQ zE2TVFg@5L}z(Yx%v*z$QIOSSOAxRjkl_UfW)zL0nQ7ALH)m-NR@{(VJSZn_DuKvVu z*sw+$ zKq^hug$<2Tw6j6OL%DO>!cx$zRrOU^>Z2PSSK&z`w`+?f8|EFi(u`J5^X*nERj}^x zXv)91U^*ZzzyZxd&y1^)PLe?q4O_u3D>eI3?ngJgakJCY4X7#gq76&ePZ>8ScTRsg z<}`0q%0KS(4c4_k*Gu55B7<1WC#$BTE127!Je^!R(=_N^?rS4QU?H7U61Sh0t;bfD zJN9SAck8ycgZ895>Qtks-8T_RY{Eeng?@?==rJm`-AFxqblEDIh zsTv`*?IjRn^MH4SOrA)(W1+B_dxX*mh+EW!zF^vXFKJFdNMuB0M<@yS)1PM*hQd}_1|zF9s;Ix91np~Gj9&T}e#U=+K%pB#y)`zDJE zF1b1VR;0@Tbo%(URv*1m=EdYTz%u?e$(z3;1Q>PO^v?*fOyb2-DT(wytGI6K^th@f z-0JR@`1G`u-k`4&r2y_RV+FJ=#Qz#Tw++lx@t*STVEOe&(l;E|6=EXuP21TslNBA2 zTCz1t{sweGL_)-+*P@q0>VU_Hpu2f@s*r31M;oT=%0C>~m$PTno;HnwNCxJkK#hoi zrgM(syHfpjH%8ob{4I%sdkl}wzmyTRy8QcS9>h$z!Qp zo5N^iDSrdv6hV=g?#~WwYe7C8*z4xdt{u8ualMR(R%uk|I#=4P1zRFLMzTdSsm)K~ z#W?s^P-JC%`349e+cf}`qzC-+9NXA3oK;Z>ttq?zU_enXb2XV==b%bX))TA2b28BL zy4dL~P#RoWvjSg$qHDO- zbbLwPvQ2Nx{ML~Lti8ln4RFn8!xh|D#m1D4Vo9TbqkaYl*sgUZ(H*u)APMyPBhWGc zx(~V9@sv2bK?wp4s`CvN9wTH|K50j*f>6lZ4A)|{4CuW#<2-Ju@r)6#Nq~YkA14sR z`bb=`b~#KgF|g=o9Hv(_UHtHec16mP&+9zhL_J$V4jxbiDo?CxK9+WKzkyE@NLo>6 z>fhzMAb>)(L%_Sps|!LF5|G+^JMbdESWGWYWI%}r&!UQ1sESdv&bI(X*S8gL3fio8 zl>}eEC5)Y@Pn=Y*nl4YajEL899m`c^?$2sA!I^xXP$P)?D*|!Ftr75%xNkv`f4i$M z2k}EaA2epE`Hezi{aNhCp;u)bcS8=?()BvOKfmhoV|2N-*ZW`wmuZG%u0J+M3I%Al zenzt|{$Q33Q=Z-UB!E0(cR^nn`r;K|rqSt(R}V9 zda)>xq!2Leve1@6g#+Wp4JGtwPx24VGpbL6BWmU?&&J%^XWKc-8Z?&bu)y=!#NS2Z zbLQR&N4;FGDW}S4y(#p4F4h zN~(&ctHb&3rJJi-i(c|h!6CxntkTGkk;*}P5APPV>D?y=1JVVN`!pazC#|GTuii+G zuxYARn;6iO#SC;vrQZN-BpXb4^5$=oA^$$vBMc2LWdI?=$Yrw1PLimVQ@T)NBAd`u zwJm(Q?ED?;?Xa*@t7DVX^`ZCxbZ75zywt;yb!ng2)8-E+rLlG%u(jfc^smerMVIZy zY3kp{Nc<+vqy3o^>$_j5JOPT`%69(grNgOG9`D&ET>=fh0?iodQ8_WK2=+up7J#KT z6wI38w&k_-RLL*y%w11NE17uFpwr^zyb+FpE7uNoVJC=X%_Q)sTl7im>NDN7CyugD z@84Qz6XLNv_pxL2W~x(ndR8vsOpxKJXa1M)0~pciBc(Fub5euXLW+L}K;X&4&{~FB zc;HnBe?fI=GU(JKM8%PJqq!$}WUgIX{G@O&)e>CSYq7@GUj%9hqeFxXV$UUrhCZCN z@AP4+082vlGAfC)YUUpX%WqX$Lq$=A({w{NH86Jkn`VlK1f-Dh*BINuw9N-4`83$# z5g?S#0sw$%#awJ)Zm8Vx-k{;&g0Pyqr9wB0Wl*T@t%lu#0o>uB4;NhC*Bm2`Y?hd? zZ1A>f%`LFIo6a$0v$N~d8#O%b#2W7ncWL|I7(|2Ilo>D zbWc8s0eowYVbc1lf>D8@roGz=&=t8reAGnyAZ>BJCjHV(X-{&88sXgZjinexWl_A5 zGiDTZIT}+lO_cuPytyfJvZZ@rG1p^Ms`u=Jh)1dYH+2H~Xg6*j4HhJSJXfL8DR0Ir znWc3K3l#Q^B=dePwEkx|gs$9_^v@Cq2%6gfJGeN*ja-+r0hq%Fqm@R%z5>IS*8RnO zZ8TD=9jEpRZWmk%P^akNH^yn>@0KGDPa4B!_5gZ*y(M?!Zyi>>D#hBVij%k~yyz!_ zH^wxby$WmU&poioC0s3ZpF{VnP>88y((R}i)l&`w(qiJbdo==ibq{&(5miNMLMFef zDP;hCg;E+oWtSbW@>^osN2EV$w#G(8sv__f(ApL4GMSIOIKgmOy6Vnd7J4EK&d(M9?+qclnYclAV7aCv$z;3&=9^)gtf-#$cuhe z?49jx@R_PWpBe|vQm&ZtuWwJY4b=*uzALI& z@nvDDqb6|qGE)iaH*%KVYLv&b5yy2s@c3y6(-lTIr zJ2^*!%{alDDww*mj%&-a=+;4AN10t4RWXqJa)lIQ#uU|Pd>YXW(BgDVA zA+>4(8>bqve*w6o4KVg<8G!pY06wV^(06%u$g7DafgiceDao8}*HYP5^t4x#Zde|s z#g7y^j*~+B)&`Q}ymd#@-G6qjv&m@VF+eg?>_{kRCxf2G9>~Fu0nEfT*s^LJ#Ncs_ zUn^`W6?PHZJAU1G5O^TLrkA2koLH_^1En^%qVjFa>vk8O=7ykS7lck;H;6uxntbb| zt6&s?&z+S39{0gEHO(-ww8`RZZilRn3~G>?Pla&dwoZ|tBK5aIKz?E)NR;3Ja#_R< zC~l4ZtXuseeX)t@l&1JQ_e}aLV?uoZ8F0CtIW;zx9dcUbhXXw~3ozbd+kb~EDs|s! zzf}@H>i(;~0bK}x(r9+->(4snWQ$}9)L7G%=N6uSm_0<-!hmHf8=itUJJPjI3uCo$ zxVo&BZ9A-)@k-~@{d@CP#rM8?0smWK`=tiY3v7!454pe__|!1|b3 zL%gyBS(_xNE7gR&V;Hg4_3@;M{x3h(TYl~6XKB!2)Gb(^JNPwtZyem3qw=FlM@mJF zas>#qAV5%8>I-lVpYOoCjPicD-O)JzQRBt;EcAfiXzpDL$aViA__l8S zPj#I}9tx~2ryLC8@>8zE!r;fUlSZx$wsds$d;=+l&Zq2N;YM?0BX^Tupus?exHz|; zX~;89L#8&IDw00u?jv5g;A^vSap^9t_G$hC10}%o7=MFAt=|+9q0}|=&QmdWcI%rT z4CNfHXi+?cAK~@jXN6Q|dD#$S#Bmx`woKLUK4-<8kZx8lfe@09>4%0% zC#~c^ial~d&S@qzbDLOl|A&*w?bvw2lVFqJF!N`wuizf;)v8hw>hNQRgWu63=$%PZ zmFFCd3a_0nG+7ca4i=03U@5^B1BFfo8RE?FTOEAvs`}6Ntbf=g{P(WmXn;*fjsWdA zv-tOdPZ8{jeyl0XymISS)32UfoYDkc#)Ih73CA9RF#u@Of|u_Aeip-Hgy=UZRDrH= zNBfSyDa}P*Jc(%n1jN%5ATH6;ICRv4L{*`whjPB3u$Pw>YfN zB_^dPz9IpdeDVm&_{S=$0}M7ClSO)^3B>TnTD*yDrOi*6OA93G;{Jt2g^!f*@8BRl zj8@tQI`jO$*a%<>zh0Tu&w&Z(2C~}!jME3I1$?)D9q{X?0Si<6|Lo#RB%q2h3kg+d zPJxFiO60C^Y~Ok85c%--m)i{yOM@4|0%myL3$}$h@ --- In DPSim, synchronous generator control systems are solved separately from the electric network. The outputs of the electric network (active and reactive power, node voltages, branch currents and rotor speed of synchronous generators) at time $k- \Delta t$ are used as the input of the controllers to calculate their states at time $k$. Because of the relatively slow response of the controllers, the error in the network solution due to the time delay $\Delta t$ introduced by this approach is negligible. @@ -12,7 +13,7 @@ In DPSim, synchronous generator control systems are solved separately from the e $$ v_{ref}(t) = v_{ref,0} + v_{pss}(t) $$ -where $v_{ref,0}$ is initialized after the power flow computations and $v_{pss}(t)$ is the output of the (optional) PSS connected to the exciter. The output of the exciter systems is the induced emf by the field current $v_{ef}$. +where $v_{ref,0}$ is initialized after the power flow computations and $v_{pss}(t)$ is the output of the (optional) PSS connected to the exciter. The output of the exciter systems is the induced emf by the field current at $t=k + \Delta t$: $v_{ef}(k + \Delta t)$ (sometimes the alternative notation $e_{fd}(k + \Delta t)$ is used). ### IEEE Type DC1 exciter model
@@ -207,14 +208,17 @@ Then, the set of differential equations are discretized using forward euler in o $$ v_r(k + \Delta t) = v_r(k) + \frac{\Delta t}{T_R} ( v_h(k) - v_r(k) ), $$ +$$ + v_{in}(k) = v_{ref}(k) - v_{r}(k), +$$ $$ X_b(k + \Delta t) = \frac{\Delta t}{T_{b}} (v_{in}(k) - x_{b}(k)) + x_{b}(k), $$ $$ - v_e(k + \Delta t) = K_{a} (C_{b} x_{b}(k + \Delta t) + C_{a} v_{in} (k + \Delta t)) , + v_e(k) = K_{a} (C_{b} x_{b}(k) + C_{a} v_{in} (k)) , $$ $$ - e_{fd}(k + \Delta t) = \frac{\Delta t}{T_{e}}(v_{e(k)} - e_{fd}(k)) + e_{fd}(k). + e_{fd}(k + \Delta t) = \frac{\Delta t}{T_{e}}(v_{e}(k) - e_{fd}(k)) + e_{fd}(k). $$ To consider the saturation of $e_{fd}$ there are two different implementations, which is automatically selected depending of value of the parameter $K_{bc}$: @@ -266,19 +270,19 @@ v_{ref}(t=0) = v_{in}(t=0) - v_{r}(t=0) $$ ## Power Systen Stabilizer (PSS) -PSS is a controller of synchonous generators used to enhance damping electromechanical oscillations. The input of the PSS implemented in DPSim is the rotor speed of the machine. The PSS output is a signal used to modify the reference voltage of the AVR. At present, only one PSS is implemented in DiPSim which is a simplified version of the IEEE PSS1A type model. +PSS is a controller of synchonous generators used to enhance damping electromechanical oscillations. The input of the PSS implemented in DPSim is the rotor speed of the machine. The PSS output $v_{pss}$ at time $t=k$ is a signal used as the input of the AVR to calculate the field voltage at $t=k+\Delta t$, $v_{fd}(k+\Delta t)$. At present, only one PSS is implemented in DiPSim which is a simplified version of the IEEE PSS1A type model. ### IEEE PSS1A type PSS
DC1_exciter -
Fig. 3: Control diagram of the PSS Type 1
+
Fig. 6: Control diagram of the PSS Type 1
Adapted from: Milano, Power System Modelling and Scripting
-The control diagram of this PSS is depicted in Fig. 3. It includes a washout filter and two lead-lag blocks and is described by the following set of differential equations: +The control diagram of this PSS is depicted in Fig. 6. It includes a washout filter and two lead-lag blocks and is described by the following set of differential equations: $$ T_w \frac{d}{dt} v_1(t) = -(K_w \omega (t) + v_1(t)), $$ @@ -296,13 +300,13 @@ where $\omega (t)$ is the input signal of the PSS (rotor speed) and $v_{pss}(t)$ The set of differential equations are discretized using forward euler in order to solve it numerically, which leads to the following set of algebraic equations: $$ - v_1(k+1) = v_1(k) - \frac{\Delta t}{T_w} (K_w \omega (k) + v_1(k)), + v_1(k + \Delta t) = v_1(k) - \frac{\Delta t}{T_w} (K_w \omega (k) + v_1(k)), $$ $$ - v_2(k+1) = v_2(k) + \frac{\Delta t}{T_2} ((1-\frac{T_1}{T_2})(K_w \omega (k) + v_1(k)) - v_2(k)), + v_2(k + \Delta t) = v_2(k) + \frac{\Delta t}{T_2} ((1-\frac{T_1}{T_2})(K_w \omega (k) + v_1(k)) - v_2(k)), $$ $$ - v_3(k+1) = v_3(k) + \frac{\Delta t}{T_4} ((1-\frac{T_3}{T_4})(v_2(k) + \frac{T_1}{T_2}(K_w \omega (k) + v_1(k))) - v_{pss}(k)), + v_3(k + \Delta t) = v_3(k) + \frac{\Delta t}{T_4} ((1-\frac{T_3}{T_4})(v_2(k) + \frac{T_1}{T_2}(K_w \omega (k) + v_1(k))) - v_{pss}(k)), $$ $$ v_{pss}(k) = v_3(k) + \frac{T_3}{T_4} (v_2(k) + \frac{T_1}{T_2} (K_w \omega (k) + v_1(k))) @@ -328,20 +332,22 @@ where $\omega(k=0)$ is calculated after the power flow analysis and after the in ## Turbine Governor Models -In DPsim there are two type of Turbine Governor implementations. The *Turbine Governor Type 1* implements both, the turbine and the governor, in one component. In difference to that, Steam Turbine and Steam Turbine Governor are implemented as two separate classes, therefore the objects are created separately. Steam/Hydro Turbine and Steam/Hydro Turbine Governor are two blocks that has to be connected in series. +In DPsim there are two types of Turbine Governor implementations. The *Turbine Governor Type 1* implements both, the turbine and the governor, in one component. In difference to that, Steam Turbine and Steam Turbine Governor are implemented as two separate classes, therefore the objects are created separately. Steam/Hydro Turbine and Steam/Hydro Turbine Governor are two blocks that has to be connected in series. + +The input of the turbine governos models is the mechanical omega at time $t=k-\Delta t$ and the output is the mechanical power at time $t=k$. This variable is the used by the SG to predict the mechanical omega at time $t=k+\Delta t$. ### Turbine Governor Type 1
DC1_exciter -

Fig. 4: Control diagram of the turbine governor type 1
+

Fig. 7: Control diagram of the turbine governor type 1
Source: Milano, Power System Modelling and Scripting

-This model includes a governor, a servo and a reheat block. The control diagram of this governor is depicted in Fig. 4 and it is described by the following set of differential-algebraic equations: +This model includes a governor, a servo and a reheat block. The control diagram of this governor is depicted in Fig. 7 and it is described by the following set of differential-algebraic equations: $$ p_{in}(t) = p_{ref} + \frac{1}{R} (\omega_{ref} - \omega(t)), $$ @@ -361,78 +367,241 @@ where $\omega (t)$ is the input signal and $\tau_{m}(t)$ is the output signal of The set of differential equations are discretized using forward euler in order to solve it numerically, which leads to the following set of algebraic equations: $$ - p_{in}(k) = p_{ref} + \frac{1}{R} (\omega_{ref} - \omega(k)), + p_{in}(k-\Delta t) = p_{ref} + \frac{1}{R} (\omega_{ref} - \omega(k-\Delta t)), +$$ +$$ + x_{g1}(k) = x_{g1}(k-\Delta t) + \frac{\Delta t}{T_s} (p_{in}(k-\Delta t) - x_{g1}(k-\Delta t)), +$$ +$$ + x_{g2}(k) = x_{g2}(k-\Delta t) + \frac{\Delta t}{T_c} ((1 - \frac{T_3}{T_c}) x_{g1}(k-\Delta t) - x_{g2}(k-\Delta t)), +$$ +$$ + x_{g3}(k) = x_{g3}(k-\Delta t) + \frac{\Delta t}{T_5} ((1 - \frac{T_4}{T_5}) (x_{g2}(k-\Delta t) + \frac{T_3}{T_c} x_{g1}(k-\Delta t)) - x_{g3}(k-\Delta t)), +$$ +$$ + \tau_m(k) = x_{g3}(k) + \frac{T_4}{T_3} (x_{g2}(k) + \frac{T_3}{T_c} x_{g1}(k)), +$$ +Since the values of all variables for $t=k-\Delta t$ are known, $\tau_m(k)$ can be easily calculated using the discretised equations, which is carried out in the `preStep` function of the generator connected to each governor. Then, $\tau_m(k)$ is used to approximate the mechanical differential equations of the generator at time $k+\Delta t$. + +### Steam Governor +
+
+ DC1_exciter +

Fig. 8: Control diagram of the steam turbine governor
+ Adapted from [7] +
+
+
+
+ +The control diagram of this model is depicted in Fig. 8. This model gets as input the frequency (rotational speed of the generator) deviation $\Delta\omega$ from the norminal frequency (normally $50 Hz$ or $60 Hz$) and gives the target value $p_{gv}$ to the turbine. $p_{ref}$ is the mechanical power that is produced at nominal frequency. The governor is implemented as a controller $\frac{K(1+sT_2)}{(1+sT_1)}$, where $K=1/R$ and $R$ it the droop coefficient, and a PT1 lag element with embedded limiters before and after the integrator. To avoid unnecessary dead beat behavior, complex transfer functions, with more then one pole and zero, are represented as a sum of multiple PT1 elements connected in parallel, via partial fracture decomposition, which leads to the control diagram depicted in Fig. 9. + +
+
+ DC1_exciter +

Fig. 9: Control diagram of the steam turbine governor
+
+
+
+
+ +Analog to the static exciter model, this model is implemented using a anti windup strategy as shown in Fig. 10. +
+
+ DC1_exciter +

Fig. 10: Control diagram of the steam turbine governor with anti windup strategy
+
+
+
+
+ +Finally, the discretized equations using forward euler of this model are given by: +$$ + \Delta \omega (k- \Delta t) = \omega_{ref} - \omega (k- \Delta t), +$$ +$$ + p_{1}(k) = p_{1}(k- \Delta t) + \frac{\Delta t}{T_{1}} (\Delta \omega (k- \Delta t) \cdot \frac{T_{1} - T_{2}}{T_{1}} - p_{1}(k- \Delta t)), +$$ +$$ + p(k - \Delta t) = \frac{1}{R} (p_{1}(k - \Delta t) + \Delta \omega(k- \Delta t) \cdot \frac{T_{2}}{T_{1}}), +$$ +$$ + \dot{p}(k-\Delta t) = \frac{1}{T_{3}}(p(k- \Delta t) + p_{ref} - p_{gv}(k- \Delta t)) - K_{bc} (P_{gv}^{*}(k- \Delta t) - P_{gv}(k- \Delta t)), +$$ +$$ + p_{gv}^{*}(k) = p_{gv}^{*}(k- \Delta t) + \Delta t \cdot \dot{p}(k- \Delta t), $$ + +and + +$$ +p_{gv}(k) = p_{gv}^{*}(k) \quad \quad if \quad \quad P_{m, min} <= p_{gv}^{*}(k) <= P_{m, min}, \\ +p_{gv}(k) = P_{m, max} \quad \quad if \quad \quad p_{gv}^{*}(k) > P_{m, max}, \\ +p_{gv}(k) = P_{m, min} \quad \quad if \quad \quad p_{gv}^{*}(k) > P_{m, min}. +$$ + +If $T1==0$ the equation for $p_{1}(k)$ is skipped and the equation for $p(k)$ is calculated as follows: +$$ + p(k - \Delta t) = \frac{1}{R} (\Delta \omega(k - \Delta t) + \frac{T_{2}}{\Delta t} (\Delta \omega(k - \Delta t) - \Delta \omega(k - 2\Delta t) )). $$ - x_{g1}(k+1) = x_{g1}(k) + \frac{\Delta t}{T_s} (p_{in}(k) - x_{g1}(k)), + +The initial values of all variables, which are used in the first simulation step, are calculated assuming that the simulation starts in the steady. This is equivalent to assume that all derivative are equal to zero and that $\Delta \omega(t=0)=0$, which leads to: + $$ + p_{1}(t=0) = 0, $$ - x_{g2}(k+1) = x_{g2}(k) + \frac{\Delta t}{T_c} ((1 - \frac{T_3}{T_c}) x_{g1}(k) - x_{g2}(k)), $$ + p(t=0) = 0, $$ - x_{g3}(k+1) = x_{g3}(k) + \frac{\Delta t}{T_5} ((1 - \frac{T_4}{T_5}) (x_{g2}(k) + \frac{T_3}{T_c} x_{g1}(k)) - x_{g3}(k)), $$ + p_{ref} = p_{gv}(t=0), $$ - \tau_m(k+1) = x_{g3}(k+1) + \frac{T_4}{T_3} (x_{g2}(k+1) + \frac{T_3}{T_c} x_{g1}(k+1)), $$ -Since the values of all variables for $t=k$ are known, $\tau_m(k+1)$ can be easily calculated using the discretised equations, which is carried out in the `preStep` function of the generator connected to each governor. Then, $\tau_m(k)$ is used to approximate the mechanical differential equations of the generator at time $k+1$. The valueof $\tau_m(k+1)$ is stored and used to approximate the machanical variables of the generator at time $k+2$, and so on. + p_{gv}^{*}(t=0) = p_{gv}(t=0), +$$ ### Steam Turbine -**Note 1**: In the step function of each PT1 lag element the integrator $\frac{1}{s}$ is simulated with Forward Euler Method, it the output value for $k$ calculated in the previous step and following the Forward Euler formula calculate the value for $k+1$. To avoid unnecessary dead beat behavior, complex transfer functions, with more then one pole and zero, are represented as a sum of multiple PT1 elements connected in parallel, via partial fracture decomposition. Parallel blocks are discretized separately with the same time step. +
+
+ Steam Turbine +

Fig. 9: Control diagram of the steam turbine
+ Adapted from [7] +
+
+
+
+ +The control diagram of this model is depicted in Fig. 9. It receives as input signal from the Steam Governor $p_{gv}$ and as output gives the mechanical power $p_{m}$ to a synchronous generator. Steam Turbine is divided in high-pressure, intermediate-pressure and low-pressure stages. Each of them is modeled as a first order lag element with time constants $T_{CH}, T_{RH}, T_{CO}$. If a time constant is chosen to be equal to zero, the according lag element is deactivated. The total turbine mechanical power is a sum of powers provided by each stage, each fraction can be modeled with corresponding gain-factors $F_{HP}, F_{IP}, F_{LP}$. Note that the sum of gain-factors should be equal to one $F_{HP}+F_{IP}+F_{LP} = 1$. The discretized equations of this model using forward euler are given by the following equations: -More information on below governors and turbines can be found in the book "Handbook of Electrical Power System Dynamics: Modeling, Stability, and Control", linked below in references. +$$ + p_{hp}(k) = p_{hp}(k - \Delta t) + \frac{\Delta t}{T_{CH}} (p_{gv}(k - \Delta t) - p_{hp}(k - \Delta t)), +$$ +$$ + p_{ip}(k) = p_{ip}(k - \Delta t) + \frac{\Delta t}{T_{RH}} (p_{hp}(k - \Delta t) - p_{ip}(k - \Delta t)), +$$ +$$ + p_{lp}(k) = p_{lp}(k - \Delta t) + \frac{\Delta t}{T_{CO}} (p_{ip}(k - \Delta t) - p_{lp}(k - \Delta t)), +$$ +$$ + p_{m}(k) = F_{FP} \cdot p_{hp}(k) + F_{ip} \cdot p_{ip}(k) + F_{LP} \cdot p_{lp}(k) +$$ + +The initial values of all variables, which are used in the first simulation step, are calculated assuming that the simulation starts in the steady. This is equivalent to assume that all derivative are equal to zero, which leads to: +$$ + p_{hp}(t=0) = p_{gv}(t=0), +$$ +$$ + p_{ip}(t=0) = p_{hp}(t=0), +$$ +$$ + p_{lp}(t=0) = p_{iv}(t=0), +$$ +$$ + p_{m}(t=0) = F_{FP} \cdot p_{hp}(t=0) + F_{ip} \cdot p_{ip}(t=0) + F_{LP} \cdot p_{lp}(t=0) +$$ -**Steam Turbine** receives as input signal from Steam Turbine Governor $p_{gv}$ and as output gives the mechanical power $p_{m}$ to a synchronous generator. Steam Turbine is divided in high-pressure, intermediate-pressure and low-pressure stages. Each of them is modeled as a first order lag element with time constants $T_{CH}, T_{RH}, T_{CO}$. If a time constant is chosen to be equal to zero, the according lag element is deactivated. The total turbine mechanical power is a sum of powers provided by each stage, each fraction can be modeled with corresponding gain-factors $F_{HP}, F_{IP}, F_{LP}$. Note that the sum of gain-factors should be equal to one $F_{HP}+F_{IP}+F_{LP} = 1$. +### Hydro Turbine Governor
- DC1_exciter -

Fig. 4: Diagram of the steam turbine
- Source: A. Roehder, B. Fuchs, J. Massman, M. Quester, A. Schnettler, "Transmission system stability assessment within an integrated grid development process" + Hydro Governor +

Fig. 11: Control diagram of a hydro turbine governor
+ Adapted from [7]

-### Steam Turbine and Steam Turbine Governor -**Steam turbine governor** get as input the frequency (rotational speed of the generator) deviation $\Delta\omega$ from set-frequency ($50 Hz$ or $60 Hz$) and gives target value $p_{gv}$ to the turbine , $p_0$ is mechanical power that is produced at set-frequency. The governor is implemented as a controller $\frac{K(1+sT_2)}{(1+sT_1)}$, where $K=1/R$ with $R$-droop coefficient, and a PT1 lag element with embedded limiters before and after the integrator. The Controller is Simulated as a gain parallel to a PT1 element $\frac{K(1+sT_2)}{(1+sT_1)}=K(\frac{T_2}{T_1}+\frac{T_1-T_2}{T_1} \frac{1}{1+sT_1})$. For safety reasons in the governor output signal is limited to the range [0 pu, 1 pu]. +Hydro Turbine Governor get as input the frequency (rotational speed of the generator) deviation $\Delta\omega$ from the nominal frequency (normally $50 Hz$ or $60 Hz$) and gives the target value $p_{gv}$ to the turbine , $p_{ref}$ is mechanical power that is produced at nominal frequency. The controller transfer function is defined as $K\frac{1+sT_2}{(1+sT_1)(1+sT_3)}$, where $K=\frac{1}{R}$ and $R$ is the droop coefficient. The transfer function can be split into two PT1 blocks as shown in Fig. 12.
- DC1_exciter -

Fig. 4: Control diagram of the steam turbine governor
- Source: A. Roehder, B. Fuchs, J. Massman, M. Quester, A. Schnettler, "Transmission system stability assessment within an integrated grid development process" + Hydro Governor split +

Fig. 12: Control diagram of a hydro turbine governor

+The discretized equations of this model using forward euler are given by the following equations: +$$ + x_{1}(k) = x_{1}(k - \Delta t) + \frac{\Delta t}{T_{1}} (\Delta \omega(k - \Delta t) - x_{1}(k - \Delta t)), +$$ +$$ + x_{2}(k) = x_{2}(k - \Delta t) + \frac{\Delta t}{T_{3}} (\Delta \omega(k - \Delta t) - x_{2}(k - \Delta t)), +$$ +$$ + p^{*}_{gv}(k) = \frac{1}{R}(A \cdot x_{1}(k) + B \cdot x_{2}(k)) + p_{ref}, +$$ + +where +$$ +A = \frac{T_{1}-T_{2}}{T_{1}-T_{3}}, \quad \quad B = \frac{T_{2}-T_{3}}{T_{1}-T_{3}}, +$$ + +and + +$$ +p_{gv}(k) = p_{gv}^{*}(k) \quad \quad if \quad \quad P_{m, min} <= p_{gv}^{*}(k) <= P_{m, min}, \\ +p_{gv}(k) = P_{m, max} \quad \quad if \quad \quad p_{gv}^{*}(k) > P_{m, max}, \\ +p_{gv}(k) = P_{m, min} \quad \quad if \quad \quad p_{gv}^{*}(k) > P_{m, min}. +$$ + +The initial values of all variables, which are used in the first simulation step, are calculated assuming that the simulation starts in the steady. This is equivalent to assume that all derivative are equal to zero and that $\Delta \omega(t=0)=0$, which leads to: + +$$ + x_{1}(t=0) = 0, +$$ +$$ + x_{2}(t=0) = 0, +$$ +$$ + p_{ref} = p_{gv}(t=0), +$$ +$$ + p_{gv}^{*}(t=0) = p_{gv}(t=0), +$$ + ### Hydro Turbine -**Hydro Turbine** receives as input signal from Hydro Turbine Governor $p_{gv}$ and as output gives the mechanical power $p_{m}$ to a synchronous generator. The transfer function is specified by water starting time parameter $T_{w}$. The transfer function is a sum of two parallel blocks $\frac{1-sT_w}{1+0.5sT_w}=-2+\frac{3}{1+0.5sT_w}$ which is discretized separately.
- DC1_exciter -

Fig. 4: Diagram of a hydro turbine
- Source: A. Roehder, B. Fuchs, J. Massman, M. Quester, A. Schnettler, "Transmission system stability assessment within an integrated grid development process" + DC1_exciter +

Fig. 12: Diagram of a hydro turbine
+ Adapted from [7]

-### Hydro Turbine Governor -**Hydro Turbine Governor** get as input the frequency (rotational speed of the generator) deviation $\Delta\omega$ from set-frequency ($50 Hz$ or $60 Hz$) and gives target value $p_{gv}$ to the turbine , $p_0$ is mechanical power that is produced at set-frequency. The controller transfer Function is defined as $K\frac{1+sT_2}{(1+sT_1)(1+sT_3)}=K(\frac{T_1-T_2}{T_1-T_3} \frac{1}{1+sT_1} + \frac{T_2-T_3}{T_1-T_3} \frac{1}{1+sT_3})$, where $K=\frac{1}{R}$ and $R$ is the droop coefficient. Two parallel PT1 blocks are discretized separately, their outputs are weighted by according factors and added. The disadvantage of the parallel block representation is the error the time constants are equal, that is why is should it must apply $T_1 \neq T_2$. The sum of both blocks, the output $p_{gv}$ is limited to the range [0pu, 1pu]. +The control diagram of this model is depicted in Fig. 12. It receives as input signal from Hydro Turbine Governor $p_{gv}$ and as output gives the mechanical power $p_{m}$ to a synchronous generator. The transfer function is specified by water starting time parameter $T_{w}$ and can be represented as the sum of two parallel blocks as shown in Fig. 13.
- DC1_exciter -

Fig. 4: Control diagram of a hydro turbine governor
- Source: A. Roehder, B. Fuchs, J. Massman, M. Quester, A. Schnettler, "Transmission system stability assessment within an integrated grid development process" + DC1_exciter +

Fig. 13: Diagram of a hydro turbine
+ Adapted from [7]

+The equations modelling this governor are discretized using forward euler and are given by the following equations: +$$ + x_{1}(k) = x_{1}(k - \Delta t) + \frac{\Delta t}{0.5 \cdot T_{W}} (p_{gv}(k - \Delta t) - x_{1}(k - \Delta t)), +$$ +$$ + p_{m}(k) = 3 x_{1}(k) - 2 p_{gv}(k), +$$ + +The initial values of the variables, which are used in the first simulation step, are calculated assuming that the simulation starts in the steady. This is equivalent to assume that all derivative are equal to zero, which leads to: +$$ + x_{1}(t=0) = p_{gv}(t=0), +$$ +$$ + p_{m}(t=0) = p_{gv}(t=0). +$$ + ## References - [1] "IEEE Recommended Practice for Excitation System Models for Power System Stability Studies," in IEEE Std 421.5-2016 (Revision of IEEE Std 421.5-2005) , vol., no., pp.1-207, 26 Aug. 2016, doi: 10.1109/IEEESTD.2016.7553421. - [2] F. Milano, “Power system modelling and scripting,” in Power System Modelling and Scripting. London: Springer-Verlag, 2010, ISBN: 978-3-642-13669-6. doi: 10.1007/978-3-642-13669-6. diff --git a/dpsim-models/include/dpsim-models/Signal/HydroTurbineGovernor.h b/dpsim-models/include/dpsim-models/Signal/HydroTurbineGovernor.h index 3db539a2e2..c196415c22 100644 --- a/dpsim-models/include/dpsim-models/Signal/HydroTurbineGovernor.h +++ b/dpsim-models/include/dpsim-models/Signal/HydroTurbineGovernor.h @@ -50,22 +50,25 @@ namespace Signal { //Setpoint for mechanical Power (pu) Real mPref; - // Delta Omega = Omega_ref-Omega_meas at k + // Delta Omega = Omega_ref-Omega_meas at k and at k-1 Real mDelOm; + Real mDelOm_prev; - // State Variable of T1 PT1 at k + // State Variable of T1 PT1 at k and at k-1 Real mX1; - // State Variable of T1 PT1 at k+1 - Real mX1_next; + Real mX1_prev; - // State Variable of T3 PT1 at k + // State Variable of T3 PT1 at k and at k-1 Real mX2; - // State Variable of T3 PT1 at k+1 - Real mX2_next; + Real mX2_prev; // The outpur of the Governor at k Real mPgv; + /// Auxiliar variables + Real mCa; + Real mCb; + public: /// explicit HydroTurbineGovernor(const String & name) : SimSignalComp(name, name) { } diff --git a/dpsim-models/include/dpsim-models/Signal/PSS1A.h b/dpsim-models/include/dpsim-models/Signal/PSS1A.h index 3c53abc452..1ae58970d3 100644 --- a/dpsim-models/include/dpsim-models/Signal/PSS1A.h +++ b/dpsim-models/include/dpsim-models/Signal/PSS1A.h @@ -69,6 +69,10 @@ namespace Signal { Real mVs_prev; /// Real mOmega_prev; + /// + Real mActivePower_prev; + /// + Real mVh_prev; protected: /// State Variables @@ -78,7 +82,7 @@ namespace Signal { Real mV2; /// Output of the second phase compensation block Real mV3; - /// PSS output + /// PSS output at t=k Real mVs; public: diff --git a/dpsim-models/include/dpsim-models/Signal/SteamTurbineGovernor.h b/dpsim-models/include/dpsim-models/Signal/SteamTurbineGovernor.h index cad13326f3..e1ec06075f 100644 --- a/dpsim-models/include/dpsim-models/Signal/SteamTurbineGovernor.h +++ b/dpsim-models/include/dpsim-models/Signal/SteamTurbineGovernor.h @@ -21,26 +21,29 @@ namespace Signal { public: /// Droop, the value 1/K in the controller K(1+sT_2) - Real R; + Real R = 0; /// T_1 related to the differentiator in the controlle K(1+sT_2)/(1+sT_1) - Real T1; + Real T1 = 0; /// T_2 related to the differentiator in the controlle K(1+sT_2) - Real T2; + Real T2 = 0; /// Time constant T_3 of the actuator in the Governor - Real T3; + Real T3 = 0; // ### Physical constraints ### /// Maximum growth rate - Real dPmax; + Real dPmax = 0; /// Minimum decay rate - Real dPmin; + Real dPmin = 0; /// Maximum mechanical power(pu) - Real Pmax; + Real Pmax = 0; /// Minimum mechanical power (pu) - Real Pmin; + Real Pmin = 0; /// Setpoint for omega (pu). It is adviced to choose Om_ref=1 - Real OmRef; + Real OmRef = 0; + + /// Proportional gain of anti-Windup + Real Kbc = 0; }; /// Steam turbine governor, where Omega_ref, P_ref are constant and T_1=0 @@ -58,30 +61,26 @@ namespace Signal { /// Setpoint for mechanical Power (pu) Real mPref; - /// ### Variables at time step k-1 ### - Real mDelOm_prev; - - // ### Variables at time step k ### - /// Delta Omega = Omega_ref-Omega_meas at k + // ### State Variables ### + /// Delta Omega = Omega_ref-Omega_meas at t=k, t=k-1 and t=k-2 Real mDelOm; - /// Variable after the rate limiter and before integrator at k - Real mDelPgv; - /// The outpur of the Governor at k - Real mPgv; - /// Windup variable + Real mDelOm_prev; + Real mDelOm_2prev; + /// Windup variable at t=k and t=k-1 Real mP1; - /// Windup variable + Real mP1_prev; + /// p at time t=k-1 Real mP; - /// Windup variable - Real mPlim_in; - - // ### Variables at time step k+1 ### - /// The outpur of the PT1 with limiters at k+1 (Governor output) - Real mPgv_next; - /// - Real mP1_next; - /// - Real mPlim_in_next; + /// Derivative of Pgv at time k-1 + Real mDerPgv; + /// The output of the Governor at k before the limiter + Real mPgvLim; + /// The output of the Governor at k after the limiter + Real mPgv; + + /// Auxiliar variables + Real mCa; + Real mCb; public: /// diff --git a/dpsim-models/src/Base/Base_ReducedOrderSynchronGenerator.cpp b/dpsim-models/src/Base/Base_ReducedOrderSynchronGenerator.cpp index 4df96c3e75..7876a9d7ca 100644 --- a/dpsim-models/src/Base/Base_ReducedOrderSynchronGenerator.cpp +++ b/dpsim-models/src/Base/Base_ReducedOrderSynchronGenerator.cpp @@ -477,12 +477,6 @@ void Base::ReducedOrderSynchronGenerator::initializeFromNodesAndTermina // set initial interface voltage (**mIntfVoltage)(0,0) = mInitVoltage * mBase_V_RMS; - // set initial value of current - (**mIntfCurrent)(0,0) = mInitCurrent * mBase_I_RMS; - - // set initial interface voltage - (**mIntfVoltage)(0,0) = mInitVoltage * mBase_V_RMS; - SPDLOG_LOGGER_DEBUG(this->mSLog, "\n--- Initialization from power flow ---" "\nInitial Vd (per unit): {:f}" @@ -526,7 +520,8 @@ template <> void Base::ReducedOrderSynchronGenerator::mnaCompPreStep(Real time, Int timeStepCount) { mSimTime = time; - // update governor variables + // Calculate mechanical torque at t=k + // input is omega at time t=k, output is mech. torque at time t=k if (mHasTurbine && mHasGovernor) { mMechTorque_prev = **mMechTorque; **mMechTorque = mTurbine->step(mGovernor->step(**mOmMech, mTimeStep), mTimeStep); @@ -536,22 +531,28 @@ void Base::ReducedOrderSynchronGenerator::mnaCompPreStep(Real time, Int **mMechTorque = mGovernor->step(**mOmMech, mTimeStep); } - // calculate mechanical variables at t=k+1 with forward euler + // Calculate electrical torque at t=k **mPower = Complex((**mVdq)(0,0) * (**mIdq)(0,0) + (**mVdq)(1,0) * (**mIdq)(1,0), (**mVdq)(1,0) * (**mIdq)(0,0) - (**mVdq)(0,0) * (**mIdq)(1,0)); **mElecTorque = (**mPower).real(); //**mElecTorque = (**mPower).real() / **mOmMech; - **mOmMech = **mOmMech + mTimeStep * (1. / (2. * mH) * (mMechTorque_prev - **mElecTorque)); - **mThetaMech = **mThetaMech + mTimeStep * (**mOmMech * mBase_OmMech); - **mDelta = **mDelta + mTimeStep * (**mOmMech - 1.) * mBase_OmMech; - - // update exciter and PSS variables + + // calculate v_pss at time k + // inputs are: mOmMech, mElecTorque, mVdq at time t=k if (mHasPSS) mVpss = mPSS->step(**mOmMech, **mElecTorque, (**mVdq)(0,0), (**mVdq)(1,0), mTimeStep); + + // calculate e_fd at time k+1, inputs are at t=k if (mHasExciter) { mEf_prev = **mEf; **mEf = mExciter->step((**mVdq)(0,0), (**mVdq)(1,0), mTimeStep, mVpss); } + + // calculate mechanical variables at t=k+1 with forward euler + **mOmMech = **mOmMech + mTimeStep * (1. / (2. * mH) * (mMechTorque_prev - **mElecTorque)); + //**mOmMech = **mOmMech + mTimeStep * (1. / (2. * mH) * (mMechTorque_prev - **mElecTorque) / **mOmMech); + **mThetaMech = **mThetaMech + mTimeStep * (**mOmMech * mBase_OmMech); + **mDelta = **mDelta + mTimeStep * (**mOmMech - 1.) * mBase_OmMech; stepInPerUnit(); (**mRightVector).setZero(); @@ -562,7 +563,8 @@ template <> void Base::ReducedOrderSynchronGenerator::mnaCompPreStep(Real time, Int timeStepCount) { mSimTime = time; - // update governor variables + // Calculate mechanical torque at t=k + // input is omega at time t=k, output is mech. torque at time t=k if (mHasTurbine && mHasGovernor) { mMechTorque_prev = **mMechTorque; **mMechTorque = mTurbine->step(mGovernor->step(**mOmMech, mTimeStep), mTimeStep); @@ -572,22 +574,28 @@ void Base::ReducedOrderSynchronGenerator::mnaCompPreStep(Real time, Int ti **mMechTorque = mGovernor->step(**mOmMech, mTimeStep); } - // calculate mechanical variables at t=k+1 with forward euler + // Calculate electrical torque at t=k **mPower = Complex((**mVdq0)(0,0) * (**mIdq0)(0,0) + (**mVdq0)(1,0) * (**mIdq0)(1,0), (**mVdq0)(1,0) * (**mIdq0)(0,0) - (**mVdq0)(0,0) * (**mIdq0)(1,0)); **mElecTorque = (**mPower).real(); //**mElecTorque = (**mPower).real() / **mOmMech; - **mOmMech = **mOmMech + mTimeStep * (1. / (2. * mH) * (mMechTorque_prev - **mElecTorque)); - **mThetaMech = **mThetaMech + mTimeStep * (**mOmMech * mBase_OmMech); - **mDelta = **mDelta + mTimeStep * (**mOmMech - 1.) * mBase_OmMech; - // update exciter and PSS variables + // calculate v_pss at time k + // inputs are: mOmMech, mElecTorque, mVdq at time t=k if (mHasPSS) mVpss = mPSS->step(**mOmMech, **mElecTorque, (**mVdq0)(0,0), (**mVdq0)(1,0), mTimeStep); + + // calculate e_fd at time k+1, inputs are at t=k if (mHasExciter) { mEf_prev = **mEf; **mEf = mExciter->step((**mVdq0)(0,0), (**mVdq0)(1,0), mTimeStep, mVpss); } + + // calculate mechanical variables at t=k+1 with forward euler + **mOmMech = **mOmMech + mTimeStep * (1. / (2. * mH) * (mMechTorque_prev - **mElecTorque)); + //**mOmMech = **mOmMech + mTimeStep * (1. / (2. * mH) * (mMechTorque_prev - **mElecTorque) / **mOmMech); + **mThetaMech = **mThetaMech + mTimeStep * (**mOmMech * mBase_OmMech); + **mDelta = **mDelta + mTimeStep * (**mOmMech - 1.) * mBase_OmMech; stepInPerUnit(); (**mRightVector).setZero(); diff --git a/dpsim-models/src/Signal/ExciterStatic.cpp b/dpsim-models/src/Signal/ExciterStatic.cpp index 6f12c19d92..55ce856267 100644 --- a/dpsim-models/src/Signal/ExciterStatic.cpp +++ b/dpsim-models/src/Signal/ExciterStatic.cpp @@ -66,7 +66,7 @@ void ExciterStatic::initialize(Real Vh_init, Real Ef_init) { mVin = mVe / (mCa + mCb); /// Initial reference value - mVref = mVin - mVr; + mVref = mVin + mVr; /// Initial value for auxilar state variable mXb = mVin; @@ -77,10 +77,10 @@ void ExciterStatic::initialize(Real Vh_init, Real Ef_init) { "\nExciter type: ExciterStatic" "\nInitially set excitation system initial values:" "\ninit Vh: {:e}" - "\ninit Ef: {:e}", + "\ninit Ef: {:e}" "\nCalculated set poit and auxilary state variables:" "\nVref : {:e}" - "\nXb : {:e}", + "\nXb : {:e}" "\nVin = {:e}", mVh, mEfd, mVref, mXb, mVin); @@ -103,15 +103,13 @@ Real ExciterStatic::step(Real mVd, Real mVq, Real dt, Real Vpss) { mVr = mVh; /// Compute Vin at time k - mVin = mVref - mVr + Vpss; + mVin = mVref - mVr_prev + Vpss; /// Compute Xb at time k+1 using euler forward mXb = mXb_prev + (mVin - mXb_prev) * dt / mParameters->Tb; - // Compute Efd at time k+1 using euler forward - mVe = mVin * mCa + mXb * mCb - mParameters->Kbc * (mEfd - mEfdLim); - - //Integrator for T_e time constant !with! Wind-up + // Compute Efd at time k using euler forward + mVe = mVin * mCa + mXb_prev * mCb - mParameters->Kbc * (mEfd - mEfdLim); mEfd = mEfd + (dt / mParameters->Te) * (mParameters->Ka * mVe - mEfd); if (mEfd > mParameters->MaxEfd) mEfdLim = mParameters->MaxEfd; diff --git a/dpsim-models/src/Signal/HydroTurbine.cpp b/dpsim-models/src/Signal/HydroTurbine.cpp index a66cc20a6b..b3db18ccbb 100644 --- a/dpsim-models/src/Signal/HydroTurbine.cpp +++ b/dpsim-models/src/Signal/HydroTurbine.cpp @@ -42,9 +42,12 @@ void HydroTurbine::initialize(Real Pminit) { Real HydroTurbine::step(Real Pgv, Real dt){ // the values pre calculated in the previous step are now actual values mX1 = mX1_next; + // Caltulating the value of the only state variable for the next step (integration) using the current - mX1_next = 2 * dt/mParameters->Tw * (Pgv-mX1) + mX1; + mX1_next = 2 * dt / mParameters->Tw * (Pgv - mX1) + mX1; + // Output is the value Pm(k) = -2*Pgv(k)+X1(k) mPm = 3 * mX1 - (2 * Pgv); + return mPm; } diff --git a/dpsim-models/src/Signal/HydroTurbineGovernor.cpp b/dpsim-models/src/Signal/HydroTurbineGovernor.cpp index 57e0529af0..95d4cd3246 100644 --- a/dpsim-models/src/Signal/HydroTurbineGovernor.cpp +++ b/dpsim-models/src/Signal/HydroTurbineGovernor.cpp @@ -28,6 +28,14 @@ void HydroTurbineGovernor::setParameters(std::shared_ptrname() << " has to be HydroGorvernorParameters!" << std::endl; throw CPS::TypeException(); } + // FIXME: Ein problem entsteht bei der Zerlegung wenn T1=t3 (gleiche polstellen, es muss eine andere Zerlegung benutzt werden) + if (mParameters->T1==mParameters->T3) { + SPDLOG_LOGGER_ERROR(mSLog, "T1 can not be equal to T3!!!"); + throw CPS::Exception(); + } + + mCa = (mParameters->T1 - mParameters->T2) / (mParameters->T1 - mParameters->T3); + mCb = (mParameters->T2 - mParameters->T3) / (mParameters->T1 - mParameters->T3); } void HydroTurbineGovernor::initialize(Real Pref){ @@ -36,10 +44,11 @@ void HydroTurbineGovernor::initialize(Real Pref){ mPgv=Pref; mPref=Pref; mDelOm = 0; + mDelOm_prev = 0; mX1 = 0; - mX1_next = 0; + mX1_prev = 0; mX2 = 0; - mX2_next = 0; + mX2_prev = 0; SPDLOG_LOGGER_INFO(mSLog, "Hydro Governor initial values: \n" "\nPref: {:f}" @@ -57,24 +66,20 @@ void HydroTurbineGovernor::initialize(Real Pref){ } Real HydroTurbineGovernor::step(Real Omega, Real dt){ - // FIXME: Ein problem entsteht bei der Zerlegung wenn T1=t3 (gleiche polstellen, es muss eine andere Zerlegung benutzt werden) - // TODO: move cA and cB to initialize() to avoid recomputation in each simulation step - const Real cA = (mParameters->T1 - mParameters->T2) / (mParameters->T1 - mParameters->T3); - const Real cB = (mParameters->T2 - mParameters->T3) / (mParameters->T1 - mParameters->T3); - - //Calculation of frequency deviation - mDelOm=mParameters->OmRef-Omega; + // write the values that were calculated in the previous step + mDelOm_prev = mDelOm; + mX1_prev = mX1; + mX2_prev = mX2; - // Set the values of state variables calculated in last step as atual values for k - mX1=mX1_next; - mX2=mX2_next; + // Calculate the input of the governor for time step k + mDelOm = mParameters->OmRef - Omega; // Calculation State variables for k+1 with integrators - mX1_next= mX1 + dt / mParameters->T1 * (mDelOm - mX1); - mX2_next= mX2 + dt / mParameters->T3 * (mDelOm - mX2); + mX1 = mX1_prev + dt / mParameters->T1 * (mDelOm_prev - mX1_prev); + mX2 = mX2_prev + dt / mParameters->T3 * (mDelOm_prev - mX2_prev); // Output of the governor before limiter, values from k are used to caltulate output Pgv(k) - mPgv = mPref + 1. / mParameters->R * ( mX1 * cA + mX2 * cB); + mPgv = mPref + 1. / mParameters->R * ( mX1 * mCa + mX2 * mCb); if (mPgv>mParameters->Pmax) mPgv = mParameters->Pmax; diff --git a/dpsim-models/src/Signal/PSS1A.cpp b/dpsim-models/src/Signal/PSS1A.cpp index 07bd42299f..9deab23429 100644 --- a/dpsim-models/src/Signal/PSS1A.cpp +++ b/dpsim-models/src/Signal/PSS1A.cpp @@ -55,6 +55,7 @@ void Signal::PSS1A::initialize(Real omega, Real activePower, Real Vd, Real Vq) { mVs = mV3 + (mParameters->T3 / mParameters->T4) * (mV2 + (mParameters->T1 / mParameters->T2) * (mParameters->Kw * omega + mParameters->Kp * activePower + mParameters->Kv * Vh + mV1)); mOmega_prev = omega; + mActivePower_prev = activePower; SPDLOG_LOGGER_INFO(mSLog, "\nInitial values: " @@ -67,24 +68,28 @@ void Signal::PSS1A::initialize(Real omega, Real activePower, Real Vd, Real Vq) { } Real Signal::PSS1A::step(Real omega, Real activePower, Real Vd, Real Vq, Real dt) { + // inputs are omega, Vd, Vq at and activePower at time k // Voltage magnitude calculation Real Vh = sqrt(pow(Vd, 2.) + pow(Vq, 2.)); + mVh_prev = Vh; - // + // update variables at t=k-1 mV1_prev = mV1; mV2_prev = mV2; mV3_prev = mV3; mVs_prev = mVs; // compute state variables at time k using euler forward - mV1 = mV1_prev - dt / mParameters->Tw * (mParameters->Kw * mOmega_prev + mParameters->Kp * activePower + mParameters->Kv * Vh + mV1_prev); - mV2 = mV2_prev + dt / mParameters->T2 * (mA * (mParameters->Kw * mOmega_prev + mParameters->Kp * activePower + mParameters->Kv * Vh + mV1_prev) - mV2_prev); - mV3 = mV3_prev + dt / mParameters->T4 * (mB * (mV2_prev + (mParameters->T1 / mParameters->T2) * (mParameters->Kw * mOmega_prev + mParameters->Kp * activePower + mParameters->Kv * Vh + mV1_prev)) - mV3_prev); + mV1 = mV1_prev - dt / mParameters->Tw * (mParameters->Kw * mOmega_prev + mParameters->Kp * mActivePower_prev + mParameters->Kv * mVh_prev + mV1_prev); + mV2 = mV2_prev + dt / mParameters->T2 * (mA * (mParameters->Kw * mOmega_prev + mParameters->Kp * mActivePower_prev + mParameters->Kv * mVh_prev + mV1_prev) - mV2_prev); + mV3 = mV3_prev + dt / mParameters->T4 * (mB * (mV2_prev + (mParameters->T1 / mParameters->T2) * (mParameters->Kw * mOmega_prev + mParameters->Kp * mActivePower_prev + mParameters->Kv * mVh_prev + mV1_prev)) - mV3_prev); // mVs = mV3 + (mParameters->T3 / mParameters->T4) * (mV2 + (mParameters->T1 / mParameters->T2) * (mParameters->Kw * omega + mParameters->Kp * activePower + mParameters->Kv * Vh + mV1)); mOmega_prev = omega; + mActivePower_prev = activePower; + mVh_prev = Vh; // check limints of mVs if (mVs > mParameters->Vs_max) diff --git a/dpsim-models/src/Signal/SteamTurbine.cpp b/dpsim-models/src/Signal/SteamTurbine.cpp index db80b4e86b..63ab307048 100644 --- a/dpsim-models/src/Signal/SteamTurbine.cpp +++ b/dpsim-models/src/Signal/SteamTurbine.cpp @@ -67,21 +67,21 @@ Real SteamTurbine::step(Real Pgv, Real dt) { // Calculate next values of state variables of turbine with forward euler high pressure if(mParameters->Tch == 0) - mPhp=Pgv; + mPhp = Pgv; else - mPhp_next= mPhp + dt/mParameters->Tch *(Pgv - mPhp); + mPhp_next= mPhp + dt / mParameters->Tch * (Pgv - mPhp); // intermidiat pressure if (mParameters->Trh == 0) mPip = mPhp; else - mPip_next=mPip + dt / mParameters->Trh * (mPhp - mPip); + mPip_next = mPip + dt / mParameters->Trh * (mPhp - mPip); // lower pressure if (mParameters->Tco == 0) mPlp = mPip; else - mPlp_next=mPlp + dt / mParameters->Tco *(mPip - mPlp); + mPlp_next = mPlp + dt / mParameters->Tco *(mPip - mPlp); // Output mPm = mPhp * mParameters->Fhp + mPip * mParameters->Fip + mPlp * mParameters->Flp; diff --git a/dpsim-models/src/Signal/SteamTurbineGovernor.cpp b/dpsim-models/src/Signal/SteamTurbineGovernor.cpp index 9ede27ddf1..c649274e0e 100644 --- a/dpsim-models/src/Signal/SteamTurbineGovernor.cpp +++ b/dpsim-models/src/Signal/SteamTurbineGovernor.cpp @@ -11,6 +11,10 @@ void SteamTurbineGovernor::setParameters(std::shared_ptr(parameters)){ mParameters = params; + if (mParameters->T2==0){ + SPDLOG_LOGGER_ERROR(mSLog, "The parameter T2 can not be equal to zero!"); + throw CPS::Exception(); + } SPDLOG_LOGGER_INFO(mSLog, "\nSteam Governor parameters:" "\nOmRef: {:e}" @@ -21,11 +25,13 @@ void SteamTurbineGovernor::setParameters(std::shared_ptrOmRef, mParameters->R, - mParameters->T1, mParameters->T2, - mParameters->T3, mParameters->dPmax, mParameters->dPmin, - mParameters->Pmax, mParameters->Pmin); + mParameters->T1, mParameters->T2, mParameters->T3, + mParameters->dPmax, mParameters->dPmin, + mParameters->Pmax, mParameters->Pmin, + mParameters->Kbc); mSLog->flush(); } else { std::cout << "Type of parameters class of " << this->name() << " has to be SteamGorvernorParameters!" << std::endl; @@ -35,21 +41,25 @@ void SteamTurbineGovernor::setParameters(std::shared_ptr=0 && Pref<=1) { - // Steady state at O equal to Om_ref (50Hz/60HZ) + // Steady state at t=0 equal to Om_ref (50Hz/60HZ) mPref = Pref; + mDelOm = 0; mDelOm_prev = 0; - mDelOm = 0; - mP1=0; - mP1_next=0; - mP=0; - mDelPgv = 0; - mPgv = Pref; - mPgv_next = Pref; - mPlim_in = Pref; - mPlim_in_next = Pref; + mDelOm_2prev = 0; mP1 = 0; - mP1_next = 0; + mP1_prev = 0; mP = 0; + mDerPgv = 0; + mPgvLim = Pref; + mPgv = Pref; + + if (mParameters->T1 == 0) { + mCa = 0; + mCb = 0; + } else { + mCa = mParameters->T2 / mParameters->T1; + mCb = (mParameters->T1 - mParameters->T2) / mParameters->T1; + } SPDLOG_LOGGER_INFO(mSLog, "\nSteam Governor initial values:" @@ -57,7 +67,7 @@ void SteamTurbineGovernor::initialize(Real Pref) { "\nDelOm: {:f}" "\nDelPgv: {:f}" "\nPgv: {:f}", - mPref, mDelOm, mDelPgv, mPgv); + mPref, mDelOm, mDerPgv, mPgv); mSLog->flush(); } else { SPDLOG_LOGGER_INFO(mSLog, @@ -69,56 +79,42 @@ void SteamTurbineGovernor::initialize(Real Pref) { Real SteamTurbineGovernor::step(Real Omega, Real dt) { - // WIndup is implemented to compare the models to IAEW. If no windup is desired set Kbc=0 - const Real cKbc=10; - - const Real cA=mParameters->T2/mParameters->T1; - const Real cB=(mParameters->T1 - mParameters->T2) / mParameters->T1; - // write the values that were calculated in the previous step + mDelOm_2prev = mDelOm_prev; mDelOm_prev = mDelOm; - mPgv = mPgv_next; - mPlim_in = mPlim_in_next; - mP1 = mP1_next; + mP1_prev = mP1; // Calculate the input of the governor for time step k - mDelOm = mParameters->OmRef-Omega; + mDelOm = mParameters->OmRef - Omega; // Transfer function 1/R (1+sT2)/(s+T1) = 1/R (T2/T1 + (T1-T2)/T1 *1/(1+sT1)) = P(s)/delOm(s) - if(mParameters->T1==0) { - mP = (1/mParameters->R) * (mDelOm + (mParameters->T2/dt) * (mDelOm-mDelOm_prev)); + if (mParameters->T1 == 0) { + mP = (1 / mParameters->R) * (mDelOm_prev + (mParameters->T2 / dt) * (mDelOm_prev - mDelOm_2prev)); } else { - mP1_next = mP1+(dt/mParameters->T1) * (mDelOm*cB-mP1); - mP = (1/mParameters->R) * (mP1+mDelOm * cA); + mP1 = mP1_prev + (dt / mParameters->T1) * (mDelOm_prev * mCb - mP1_prev); + mP = (1 / mParameters->R) * (mP1_prev + mDelOm_prev * mCa); } - // Calculate thee input of integrator in PT1 via values of controller and output of governor - mDelPgv = (mPref + mP - mPgv) / mParameters->T3; - if (mDelPgvdPmin) - mDelPgv = mParameters->dPmin; - if(mDelPgv>mParameters->dPmax) - mDelPgv = mParameters->dPmax; - - // Calculating output of PT1 actuator, the output of the governor, without windup - /* - mPgv_next = dt * mDelPgv + mPgv; - if(mPgv_nextPmin) - mPgv_next = mParameters->Pmin; - if(mPgv_next>mParameters->Pmax) - mPgv_next = mParameters->Pmax; */ - - // Calculating output of PT1 actuator, the output of the governor, including windup - - mPlim_in_next = dt *(mDelPgv - cKbc*(mPlim_in - mPgv)) + mPlim_in; - if(mPlim_in_nextPmin){ - mPgv_next = mParameters->Pmin; - } - else if(mPlim_in_next>mParameters->Pmax){ - mPgv_next = mParameters->Pmax; - } - else{ - mPgv_next=mPlim_in_next; - } + // Calculate the input of integrator + mDerPgv = 1. / mParameters->T3 * (mPref + mP - mPgv); + // TODO: use module of Pgv? + if (mDerPgv < mParameters->dPmin) + mDerPgv = mParameters->dPmin; + if(mDerPgv > mParameters->dPmax) + mDerPgv = mParameters->dPmax; + mDerPgv = mDerPgv - mParameters->Kbc * (mPgvLim - mPgv); + + // Calculate PgvLim (before the limiter) + // use Pgv instead? + mPgvLim = mPgvLim + dt * mDerPgv; + + // Calculating output of the governor + if (mPgvLim < mParameters->Pmin) + mPgv = mParameters->Pmin; + else if (mPgvLim > mParameters->Pmax) + mPgv = mParameters->Pmax; + else + mPgv = mPgvLim; return mPgv; } diff --git a/dpsim-models/src/Signal/TurbineGovernorType1.cpp b/dpsim-models/src/Signal/TurbineGovernorType1.cpp index 565f7278a9..d9e1ef7757 100644 --- a/dpsim-models/src/Signal/TurbineGovernorType1.cpp +++ b/dpsim-models/src/Signal/TurbineGovernorType1.cpp @@ -56,30 +56,31 @@ void TurbineGovernorType1::initialize(Real PmRef) { } Real TurbineGovernorType1::step(Real Omega, Real dt) { - - /// update state variables at time k-1 + /// output is Tm at t=k + + /// update state variables at time k mXg1_prev = mXg1; mXg2_prev = mXg2; mXg3_prev = mXg3; - /// Input of speed relay + /// Input of speed relay at t=k Real Pin = mPmRef + (mParameters->OmRef - Omega) / mParameters->R; if (Pin>mParameters->Pmax) Pin = mParameters->Pmax; if (PinPmin) Pin = mParameters->Pmin; - /// Governor + /// update Governor state variable at time k+1 mXg1 = mXg1_prev + dt / mParameters->Ts * (Pin - mXg1_prev); - /// Servo + /// update Servo state variable at time k+1 mXg2 = mXg2_prev + dt / mParameters->Tc * ((1 - mParameters->T3 / mParameters->Tc) * mXg1_prev - mXg2_prev); - /// Reheat + /// update reheat state variable at time k+1 mXg3 = mXg3_prev + dt / mParameters->T5 * ((1- mParameters->T4 / mParameters->T5) * (mXg2_prev + mParameters->T3 / mParameters->Tc * mXg1_prev) - mXg3_prev); - /// Mechanical torque - mTm = mXg3 + mParameters->T4 / mParameters->T5 * (mXg2 + mParameters->T3 / mParameters->Tc * mXg1); + /// Mechanical torque at time k + mTm = mXg3_prev + mParameters->T4 / mParameters->T5 * (mXg2_prev + mParameters->T3 / mParameters->Tc * mXg1_prev); return mTm; } diff --git a/dpsim/src/pybind/SignalComponents.cpp b/dpsim/src/pybind/SignalComponents.cpp index 5e115bca53..3babd64f56 100644 --- a/dpsim/src/pybind/SignalComponents.cpp +++ b/dpsim/src/pybind/SignalComponents.cpp @@ -116,8 +116,8 @@ void addSignalComponents(py::module_ mSignal) { py::class_, CPS::Base::GovernorParameters>(mSignal, "TurbineGovernorType1Parameters", py::multiple_inheritance()) .def(py::init()) - .def_readwrite("Pmax", &CPS::Signal::TurbineGovernorType1Parameters::Pmax) - .def_readwrite("Pmin", &CPS::Signal::TurbineGovernorType1Parameters::Pmin) + .def_readwrite("Tmax", &CPS::Signal::TurbineGovernorType1Parameters::Pmax) + .def_readwrite("Tmin", &CPS::Signal::TurbineGovernorType1Parameters::Pmin) .def_readwrite("R", &CPS::Signal::TurbineGovernorType1Parameters::R) .def_readwrite("T3", &CPS::Signal::TurbineGovernorType1Parameters::T3) .def_readwrite("T4", &CPS::Signal::TurbineGovernorType1Parameters::T4) @@ -144,7 +144,8 @@ void addSignalComponents(py::module_ mSignal) { .def_readwrite("dPmin", &CPS::Signal::SteamGorvernorParameters::dPmin) .def_readwrite("Pmax", &CPS::Signal::SteamGorvernorParameters::Pmax) .def_readwrite("Pmin", &CPS::Signal::SteamGorvernorParameters::Pmin) - .def_readwrite("OmRef", &CPS::Signal::SteamGorvernorParameters::OmRef); + .def_readwrite("OmRef", &CPS::Signal::SteamGorvernorParameters::OmRef) + .def_readwrite("Kbc", &CPS::Signal::SteamGorvernorParameters::Kbc); // Turbines py::class_, CPS::Base::Turbine>(mSignal, "HydroTurbine", py::multiple_inheritance()) diff --git a/examples/Notebooks/Circuits/DP_EMT_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb b/examples/Notebooks/Circuits/DP_EMT_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb index f85e740c22..9562de61ea 100644 --- a/examples/Notebooks/Circuits/DP_EMT_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb +++ b/examples/Notebooks/Circuits/DP_EMT_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb @@ -103,8 +103,8 @@ "governor_parameters = dpsimpy.signal.TurbineGovernorType1Parameters()\n", "governor_parameters.OmRef = 1.0\n", "governor_parameters.R = 0.02\n", - "governor_parameters.Pmax = 1.2\n", - "governor_parameters.Pmin = 0.3\n", + "governor_parameters.Tmax = 1.2\n", + "governor_parameters.Tmin = 0.3\n", "governor_parameters.Ts = 0.1\n", "governor_parameters.Tc = 0.45\n", "governor_parameters.T3 = 0.0\n", diff --git a/examples/Notebooks/Circuits/SP_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb b/examples/Notebooks/Circuits/SP_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb index 42c0fb6fa1..3e95779bed 100644 --- a/examples/Notebooks/Circuits/SP_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb +++ b/examples/Notebooks/Circuits/SP_Validation_ReducedOrderSG_VBR_SMIB_Fault_withControllers.ipynb @@ -309,8 +309,8 @@ "governor_parameters = dpsimpy.signal.TurbineGovernorType1Parameters()\n", "governor_parameters.OmRef = 1.0\n", "governor_parameters.R = 0.02\n", - "governor_parameters.Pmax = 1.2\n", - "governor_parameters.Pmin = 0.3\n", + "governor_parameters.Tmax = 1.2\n", + "governor_parameters.Tmin = 0.3\n", "governor_parameters.Ts = 0.1\n", "governor_parameters.Tc = 0.45\n", "governor_parameters.T3 = 0.0\n",