From b9a7da29f0a9c75fad72c8f8859669f3ee6c05df Mon Sep 17 00:00:00 2001 From: lukelowry Date: Sun, 31 May 2026 22:29:55 -0500 Subject: [PATCH 1/2] Add ESDC2A exciter documentation stub --- .../PhasorDynamics/Exciter/ESDC2A/README.md | 72 ++++++++++++++++++ .../Model/PhasorDynamics/Exciter/README.md | 1 + .../Figures/PhasorDynamics/ESDC2A_diagram.png | Bin 0 -> 42077 bytes 3 files changed, 73 insertions(+) create mode 100644 GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md create mode 100644 docs/Figures/PhasorDynamics/ESDC2A_diagram.png diff --git a/GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md b/GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md new file mode 100644 index 000000000..a94d5c9bb --- /dev/null +++ b/GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md @@ -0,0 +1,72 @@ +# **Exciter Model (ESDC2A)** + +> [!NOTE] +> This README is a documentation stub/template for the ESDC2A exciter. Parameters, variables, equations, initialization details, and outputs are intentionally left unfilled until the model is derived from its source documentation. + +## Block Diagram + +Standard model of the ESDC2A Exciter. + +
+ + + Figure 1: Exciter ESDC2A model. +
+ +## Model Parameters + +Symbol | Units | Description | Typical Value | Note +-------|-------|-------------|---------------|----- + +### Model Derived Parameters + +## Model Variables + +### Internal Variables + +#### Differential + +Symbol | Units | Description | Note +-------|-------|-------------|----- + +#### Algebraic + +Symbol | Units | Description | Note +-------|-------|-------------|----- + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +-------|-------|-------------|----- + +#### Algebraic + +Symbol | Units | Description | Note +-------|-------|-------------|----- + +## Model Equations + +### Differential Equations + +```math +\begin{aligned} +\end{aligned} +``` + +### Algebraic Equations + +```math +\begin{aligned} +\end{aligned} +``` + +## Initialization + +```math +\begin{aligned} +\end{aligned} +``` + +## Model Outputs diff --git a/GridKit/Model/PhasorDynamics/Exciter/README.md b/GridKit/Model/PhasorDynamics/Exciter/README.md index 81144066b..fb944ca8a 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/README.md +++ b/GridKit/Model/PhasorDynamics/Exciter/README.md @@ -14,4 +14,5 @@ device internal voltage. There are a few standard Exciter models - IEEE Type 1 Excitation Model (See [IEEET1](IEEET1/README.md)) - IEEE DC1 Excitation Model (See [EXDC1](EXDC1/README.md)) +- ESDC2A Excitation Model (See [ESDC2A](ESDC2A/README.md)) - Simplified Excitation System Model (See [SEXS-PTI](SEXS-PTI/README.md)) diff --git a/docs/Figures/PhasorDynamics/ESDC2A_diagram.png b/docs/Figures/PhasorDynamics/ESDC2A_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..16544658c3b3ab881f50f47c1ac3a806d7791896 GIT binary patch literal 42077 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 Date: Tue, 2 Jun 2026 16:53:17 -0500 Subject: [PATCH 2/2] docs: complete ESDC2A README [skip ci] --- .../PhasorDynamics/Exciter/ESDC2A/README.md | 188 ++++++++++++++++-- 1 file changed, 174 insertions(+), 14 deletions(-) diff --git a/GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md b/GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md index a94d5c9bb..29c3028ff 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md +++ b/GridKit/Model/PhasorDynamics/Exciter/ESDC2A/README.md @@ -1,7 +1,17 @@ -# **Exciter Model (ESDC2A)** +# **IEEE Type DC2A Excitation System Model (ESDC2A)** -> [!NOTE] -> This README is a documentation stub/template for the ESDC2A exciter. Parameters, variables, equations, initialization details, and outputs are intentionally left unfilled until the model is derived from its source documentation. +ESDC2A is an IEEE Type DC excitation system with a voltage transducer, lead-lag +input compensation, high-value under-excitation limiter selection, limited +voltage regulator, exciter feedback, saturation, and optional speed multiplier. + +Notes: +- Internal voltage signals are on model base unless otherwise stated. +- The diagram labels the optional multiplier input as `Speed`; GridKit uses + machine speed deviation, so the enabled multiplier is $1+\omega$. +- The PowerWorld selector `UEL` routes $V_{\mathrm{uel}}$ through the summing + junction when `UEL >= 2`, and through the high-value gate when `UEL < 2`. +- The `exclim` flag lower-limits the exciter feedback signal at zero when + nonzero; otherwise the feedback signal is unlimited. ## Block Diagram @@ -10,41 +20,132 @@ Standard model of the ESDC2A Exciter.
- Figure 1: Exciter ESDC2A model. + Figure 1: Exciter ESDC2A model. Figure courtesy of [PowerWorld](https://www.powerworld.com/WebHelp/)
## Model Parameters -Symbol | Units | Description | Typical Value | Note --------|-------|-------------|---------------|----- +Symbol | Units | JSON | Description | Typical Value | Note +------------------------------------|-----------|-----------|---------------------------------------------------------|---------------|------ +$T_R$ | [sec] | `Tr` | Transducer time constant | 0.0 | Block name: `Tr`; if zero, $V_C$ is algebraic +$K_A$ | [p.u.] | `Ka` | Voltage-regulator gain | 40.0 | Block name: `Ka` +$T_A$ | [sec] | `Ta` | Voltage-regulator time constant | 0.1 | Block name: `Ta` +$T_B$ | [sec] | `Tb` | Lag time constant for voltage-regulator input lead-lag | 0.0 | Block name: `Tb`; if $T_B=T_C=0$, the lead-lag block is bypassed +$T_C$ | [sec] | `Tc` | Lead time constant for voltage-regulator input lead-lag | 0.0 | Block name: `Tc`; must be zero when $T_B=0$ +$V_R^{\max}$ | [p.u.] | `Vrmax` | Maximum voltage-regulator output | 1.0 | Block name: `Vrmax` +$V_R^{\min}$ | [p.u.] | `Vrmin` | Minimum voltage-regulator output | -1.0 | Block name: `Vrmin` +$K_E$ | [p.u.] | `Ke` | Exciter field-resistance line-slope margin | 0.1 | Block name: `Ke` +$T_E$ | [sec] | `Te` | Exciter time constant | 0.5 | Block name: `Te` +$K_F$ | [p.u.] | `Kf` | Stabilizing feedback gain | 0.05 | Block name: `Kf` +$T_{F1}$ | [sec] | `Tf1` | Feedback lead time constant | 0.7 | Block name: `Tf1` +$s_{\mathrm{spd}}$ | [binary] | `Spdmlt` | Speed multiplier flag | 0 | Block name: `Spdmlt`; 1 enables the speed multiplier +$E_1$ | [p.u.] | `E1` | First saturation voltage point | 2.8 | Block name: `E1` +$S_E(E_1)$ | [p.u.] | `SE1` | Saturation value at $E_1$ | 0.08 | Block name: `Se1` +$E_2$ | [p.u.] | `E2` | Second saturation voltage point | 3.7 | Block name: `E2` +$S_E(E_2)$ | [p.u.] | `SE2` | Saturation value at $E_2$ | 0.33 | Block name: `Se2` +$I_{\mathrm{uel}}$ | [integer] | `UEL` | Under-excitation limiter input-location selector | 0 | Block name: `UEL`; 0/1 = HV gate input, 2/3 = input-error summing junction +$s_{\mathrm{lim}}$ | [binary] | `exclim` | Exciter feedback lower-limit flag | 1 | Block name: `exclim`; nonzero enables the zero lower limit on $V_{\mathrm{fe}}$ + +### Parameter Validation + +Invalid ESDC2A parameter sets are rejected by the following checks. Source data +may apply PowerWorld-style autocorrections before these equations are evaluated. + +```math +\begin{aligned} + &K_A > 0 \\ + &T_R \ge 0,\quad T_A > 0,\quad T_B \ge 0,\quad T_C \ge 0,\quad T_E > 0,\quad T_{F1} \ge 0 \\ + &T_B > 0\quad\text{or}\quad(T_B = 0\ \text{and}\ T_C = 0) \\ + &V_R^{\min} \le V_R^{\max} \\ + &s_{\mathrm{spd}}, s_{\mathrm{lim}} \in \{0,1\} \\ + &I_{\mathrm{uel}} \in \{0,1,2,3\} +\end{aligned} +``` + +The saturation points are either disabled together, + +```math +\begin{aligned} + S_E(E_1) = 0,\quad S_E(E_2) = 0 +\end{aligned} +``` + +or define a valid two-point quadratic saturation fit: + +```math +\begin{aligned} + &E_1 > 0,\quad E_2 > 0,\quad E_1 \ne E_2 \\ + &S_E(E_1) > 0,\quad S_E(E_2) > 0,\quad S_E(E_1) \ne S_E(E_2) +\end{aligned} +``` ### Model Derived Parameters +The UEL routing flag and off-mode flag complements are: + +```math +\begin{aligned} + s_{\mathrm{uel}} &= + \begin{cases} + 1 & I_{\mathrm{uel}} \ge 2 \\ + 0 & I_{\mathrm{uel}} < 2 + \end{cases} \\ + s_{\mathrm{uel}}^{\mathrm{off}} &= 1 - s_{\mathrm{uel}} \\ + s_{\mathrm{lim}}^{\mathrm{off}} &= 1 - s_{\mathrm{lim}} +\end{aligned} +``` + +The saturation curve is fitted from the two supplied saturation points. If both +saturation factors are zero, use $S_A=0$ and $S_B=0$. Otherwise: + +```math +\begin{aligned} + C &= \sqrt{\dfrac{S_E(E_2)}{S_E(E_1)}} \\ + S_A &= \dfrac{C E_1 - E_2}{C - 1} \\ + S_B &= \dfrac{S_E(E_1)}{(E_1 - S_A)^2} +\end{aligned} +``` + ## Model Variables ### Internal Variables #### Differential -Symbol | Units | Description | Note --------|-------|-------------|----- +Symbol | Units | Description | Note +------------------------------------|--------|---------------------------------------------------------|------ +$E_{\mathrm{fd}}'$ | [p.u.] | Field-voltage state before optional speed multiplier | State 1 in Fig. 1; source label: `EFD` +$V_C$ | [p.u.] | Sensed compensated voltage | State 2 in Fig. 1; source label: `Sensed Vt`; algebraic when $T_R=0$ +$V_R$ | [p.u.] | Voltage-regulator output | State 3 in Fig. 1; source label: `VR` +$V_F$ | [p.u.] | Stabilizing feedback washout output | State 4 in Fig. 1; source label: `VF`; algebraic when $T_{F1}=0$ +$x_{\mathrm{ll}}$ | [p.u.] | Lead-lag block state | State 5 in Fig. 1; source label: `Lead-Lag` #### Algebraic -Symbol | Units | Description | Note --------|-------|-------------|----- +Symbol | Units | Description | Note +------------------------------------|--------|---------------------------------------------------------|------ +$e_V$ | [p.u.] | Voltage-regulator input error before lead-lag block | Includes selected $V_{\mathrm{uel}}$ summing-junction input +$V_{\mathrm{ll}}$ | [p.u.] | Lead-lag block output | Input to high-value gate +$V_{\mathrm{hv}}$ | [p.u.] | High-value gate output | Selects $V_{\mathrm{ll}}$ or alternate $V_{\mathrm{uel}}$ +$S_E$ | [p.u.] | Saturation coefficient evaluated at $E_{\mathrm{fd}}'$ | Uses derived saturation curve +$V_{\mathrm{fe}}$ | [p.u.] | Exciter feedback signal after optional lower limit | Lower limited at zero when $s_{\mathrm{lim}}=1$ +$E_{\mathrm{fd}}$ | [p.u.] | Field-voltage output | Output after optional speed multiplier ### External Variables #### Differential -Symbol | Units | Description | Note --------|-------|-------------|----- +None. #### Algebraic -Symbol | Units | Description | Note --------|-------|-------------|----- +Symbol | Units | Description | Note +------------------------------------|--------|---------------------------------------------------------|------ +$E_C$ | [p.u.] | Compensated terminal voltage magnitude | Source label: `EC` +$V_{\mathrm{ref}}$ | [p.u.] | Voltage-control reference | Source label: `VREF` +$V_S$ | [p.u.] | Stabilizer input signal | Source label: `VS`; optional, defaults to zero +$V_{\mathrm{uel}}$ | [p.u.] | Under-excitation limiter input | Source label: `VUEL`; optional, defaults to zero +$\omega$ | [p.u.] | Machine speed deviation | Source label: `Speed`; optional when $s_{\mathrm{spd}}=0$ ## Model Equations @@ -52,21 +153,80 @@ Symbol | Units | Description | Note ```math \begin{aligned} + 0 &= -T_R\dot V_C - V_C + E_C \\ + 0 &= -T_B\dot x_{\mathrm{ll}} - x_{\mathrm{ll}} + e_V \\ + 0 &= -T_A\dot V_R + + \text{antiwindup}\!\left( + V_R, + -V_R + K_A V_{\mathrm{hv}}, + V_R^{\min}, + V_R^{\max} + \right) \\ + 0 &= -T_E\dot E_{\mathrm{fd}}' + V_R - V_{\mathrm{fe}} \\ + 0 &= -T_E T_{F1}\dot V_F - T_E V_F + K_F(V_R - V_{\mathrm{fe}}) \end{aligned} ``` +CommonMath defines the [Anti-Windup](../../../../CommonMath.md#anti-windup-indicator) +target and smooth approximation. + ### Algebraic Equations ```math \begin{aligned} + 0 &= -e_V + V_{\mathrm{ref}} + V_S + s_{\mathrm{uel}}V_{\mathrm{uel}} - V_C - V_F \\ + 0 &= -T_B(V_{\mathrm{ll}} - x_{\mathrm{ll}}) + T_C(e_V - x_{\mathrm{ll}}) \\ + 0 &= -V_{\mathrm{hv}} + + s_{\mathrm{uel}}V_{\mathrm{ll}} + + s_{\mathrm{uel}}^{\mathrm{off}}\text{max}(V_{\mathrm{ll}}, V_{\mathrm{uel}}) \\ + 0 &= -S_E + S_B\,q(E_{\mathrm{fd}}' - S_A) \\ + 0 &= -V_{\mathrm{fe}} + + s_{\mathrm{lim}}^{\mathrm{off}}(K_E + S_E)E_{\mathrm{fd}}' + + s_{\mathrm{lim}}\rho\!\left((K_E + S_E)E_{\mathrm{fd}}'\right) \\ + 0 &= -E_{\mathrm{fd}} + \left(1 + s_{\mathrm{spd}}\omega\right)E_{\mathrm{fd}}' \end{aligned} ``` +CommonMath defines the helper targets and smooth approximations for +[max](../../../../CommonMath.md#derived-functions) and the primitives +[ramp and quadratic ramp](../../../../CommonMath.md#primitives) $\rho$ and $q$. +When $T_B=T_C=0$, the lead-lag block is bypassed so $V_{\mathrm{ll}}=e_V$. + ## Initialization +The machine initializes $E_{\mathrm{fd}}$ first. For a standard unsaturated +start, ESDC2A reads that value along with attached $\omega$, $E_C$, $V_S$, and +$V_{\mathrm{uel}}$, sets all internal derivatives to zero, and evaluates: + ```math \begin{aligned} + E_{\mathrm{fd},0}' &= \dfrac{E_{\mathrm{fd},0}}{1 + s_{\mathrm{spd}}\omega_0} \\ + S_{E,0} &= S_B\,q(E_{\mathrm{fd},0}' - S_A) \\ + V_{\mathrm{fe},0} + &= s_{\mathrm{lim}}^{\mathrm{off}}(K_E + S_{E,0})E_{\mathrm{fd},0}' + + s_{\mathrm{lim}}\rho\!\left((K_E + S_{E,0})E_{\mathrm{fd},0}'\right) \\ + V_{R,0} &= V_{\mathrm{fe},0} \\ + V_{\mathrm{hv},0} &= \dfrac{V_{R,0}}{K_A} \\ + V_{C,0} &= E_{C,0} \\ + V_{F,0} &= 0 \\ + x_{\mathrm{ll},0} &= V_{\mathrm{ll},0} = e_{V,0} = V_{\mathrm{hv},0} \\ + V_{\mathrm{ref},0} + &= e_{V,0} + V_{C,0} + V_{F,0} - V_{S,0} - s_{\mathrm{uel}}V_{\mathrm{uel},0} \end{aligned} ``` +This closed-form start requires $1 + s_{\mathrm{spd}}\omega_0 \ne 0$, +$V_R^{\min} \le V_{R,0} \le V_R^{\max}$, and, when $s_{\mathrm{uel}}=0$, +$V_{\mathrm{hv},0} \ge V_{\mathrm{uel},0}$. Saturated voltage-regulator starts +and active high-value-gate starts are outside these closed-form equations. + ## Model Outputs + +Output | Units | Description | Note +----------------|--------|-------------------------------------|------ +`efd` | [p.u.] | Field-voltage output | $E_{\mathrm{fd}}$ +`vc` | [p.u.] | Sensed compensated voltage | $V_C$ +`vr` | [p.u.] | Voltage-regulator output | $V_R$ +`vf` | [p.u.] | Stabilizing feedback state | $V_F$ +`se` | [p.u.] | Saturation coefficient | $S_E$ +`vfe` | [p.u.] | Exciter feedback signal | $V_{\mathrm{fe}}$