From a04c0c680136e52dd0262c6d34aca84fb929dd25 Mon Sep 17 00:00:00 2001 From: lukelowry Date: Sun, 31 May 2026 22:29:55 -0500 Subject: [PATCH 1/2] Add EXAC2 exciter documentation stub --- .../PhasorDynamics/Exciter/EXAC2/README.md | 72 ++++++++++++++++++ .../Model/PhasorDynamics/Exciter/README.md | 1 + docs/Figures/PhasorDynamics/EXAC2_diagram.png | Bin 0 -> 46405 bytes 3 files changed, 73 insertions(+) create mode 100644 GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md create mode 100644 docs/Figures/PhasorDynamics/EXAC2_diagram.png diff --git a/GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md b/GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md new file mode 100644 index 000000000..ed9f4ad54 --- /dev/null +++ b/GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md @@ -0,0 +1,72 @@ +# **Exciter Model (EXAC2)** + +> [!NOTE] +> This README is a documentation stub/template for the EXAC2 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 EXAC2 Exciter. + +
+ + + Figure 1: Exciter EXAC2 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..cb4b12cfb 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)) +- EXAC2 Excitation Model (See [EXAC2](EXAC2/README.md)) - Simplified Excitation System Model (See [SEXS-PTI](SEXS-PTI/README.md)) diff --git a/docs/Figures/PhasorDynamics/EXAC2_diagram.png b/docs/Figures/PhasorDynamics/EXAC2_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a3665eb6ec9d519cbc85088a8cac43cf7cd011e3 GIT binary patch literal 46405 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 literal 0 HcmV?d00001 From 0bd6fbe3f9c8365319352216acbdc6d7eadb5a00 Mon Sep 17 00:00:00 2001 From: lukelowry Date: Tue, 2 Jun 2026 16:53:18 -0500 Subject: [PATCH 2/2] docs: complete EXAC2 README [skip ci] --- .../PhasorDynamics/Exciter/EXAC2/README.md | 199 ++++++++++++++++-- 1 file changed, 185 insertions(+), 14 deletions(-) diff --git a/GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md b/GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md index ed9f4ad54..3ec486d00 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md +++ b/GridKit/Model/PhasorDynamics/Exciter/EXAC2/README.md @@ -1,7 +1,16 @@ -# **Exciter Model (EXAC2)** +# **IEEE Type AC2 Excitation System Model (EXAC2)** -> [!NOTE] -> This README is a documentation stub/template for the EXAC2 exciter. Parameters, variables, equations, initialization details, and outputs are intentionally left unfilled until the model is derived from its source documentation. +EXAC2 is an IEEE Type AC excitation system with a voltage transducer, lead-lag +input compensation, limited voltage-amplifier state, low-value gate, voltage +regulator limits, exciter alternator state, stabilizing feedback, rectifier +loading, saturation, and optional speed multiplier. + +Notes: +- Internal voltage and current signals are on model base unless otherwise stated. +- The rectifier loading block $F_{\mathrm{ex}}=f(I_N)$ is the source AC-exciter + loading curve from Fig. 1; it is not a CommonMath helper. +- The source diagram labels the optional multiplier input as `Speed`; GridKit + uses machine speed deviation, so the enabled multiplier is $1+\omega$. ## Block Diagram @@ -10,41 +19,116 @@ Standard model of the EXAC2 Exciter.
- Figure 1: Exciter EXAC2 model. + Figure 1: Exciter EXAC2 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 +$T_B$ | [sec] | `Tb` | Lag time constant for voltage-regulator input lead-lag | 0.0 | Block name: `Tb` +$T_C$ | [sec] | `Tc` | Lead time constant for voltage-regulator input lead-lag | 0.0 | Block name: `Tc` +$K_A$ | [p.u.] | `Ka` | Voltage-amplifier gain | 40.0 | Block name: `Ka` +$T_A$ | [sec] | `Ta` | Voltage-amplifier time constant | 0.1 | Block name: `Ta` +$V_A^{\max}$ | [p.u.] | `VaMax` | Maximum voltage-amplifier output | 1.0 | Block name: `VAMAX` +$V_A^{\min}$ | [p.u.] | `VaMin` | Minimum voltage-amplifier output | -1.0 | Block name: `VAMIN` +$K_B$ | [p.u.] | `Kb` | Regulator pre-limit gain after low-value gate | 1.0 | Block name: `KB` +$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` +$T_E$ | [sec] | `Te` | Exciter alternator time constant | 0.5 | Block name: `Te` +$K_L$ | [p.u.] | `Kl` | Field-current limiter feedback gain | 0.0 | Block name: `KL` +$K_H$ | [p.u.] | `Kh` | Regulator feedback path gain | 0.0 | Block name: `KH` +$K_F$ | [p.u.] | `Kf` | Stabilizing feedback gain | 0.05 | Block name: `Kf` +$T_F$ | [sec] | `Tf` | Stabilizing feedback time constant | 0.7 | Block name: `Tf`; if zero, $V_F$ is algebraic +$K_C$ | [p.u.] | `Kc` | Rectifier loading current coefficient | 0.0 | Block name: `Kc`; forms $I_N$ +$K_D$ | [p.u.] | `Kd` | Demagnetizing factor feedback gain | 0.0 | Block name: `Kd` +$K_E$ | [p.u.] | `Ke` | Exciter field-resistance line-slope margin | 0.1 | Block name: `Ke` +$V_{\mathrm{lr}}$ | [p.u.] | `VLr` | Low-value gate lower reference | 0.0 | Source label: `VLR` +$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` +$s_{\mathrm{spd}}$ | [binary] | `Spdmlt` | Speed multiplier flag | 0 | Block name: `Spdmlt`; 1 enables the speed multiplier + +### Parameter Validation + +Invalid EXAC2 parameter sets are rejected by the following checks. + +```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_F \ge 0 \\ + &T_B > 0\quad\text{or}\quad(T_B = 0\ \text{and}\ T_C = 0) \\ + &V_A^{\min} \le V_A^{\max},\quad V_R^{\min} \le V_R^{\max} \\ + &s_{\mathrm{spd}} \in \{0,1\} +\end{aligned} +``` + +The saturation points follow the same two-point validation used by other +exciter READMEs: both saturation values are zero, or both points define a valid +positive quadratic fit. ### Model Derived Parameters +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 +------------------------------------|--------|---------------------------------------------------------|------ +$V_E$ | [p.u.] | Exciter alternator voltage state before output multipliers | State 1 in Fig. 1; source label: `VE` +$V_C$ | [p.u.] | Sensed compensated voltage | State 2 in Fig. 1; source label: `Sensed Vt`; algebraic when $T_R=0$ +$V_A$ | [p.u.] | Limited voltage-amplifier output | State 3 in Fig. 1; source label: `VA` +$x_{\mathrm{ll}}$ | [p.u.] | Lead-lag block state | State 4 in Fig. 1; source label: `VLL` +$V_F$ | [p.u.] | Stabilizing feedback washout output | State 5 in Fig. 1; source label: `VF`; algebraic when $T_F=0$ #### Algebraic -Symbol | Units | Description | Note --------|-------|-------------|----- +Symbol | Units | Description | Note +------------------------------------|--------|---------------------------------------------------------|------ +$e_V$ | [p.u.] | Voltage-regulator input error before lead-lag block | Summing junction after sensed voltage +$V_{\mathrm{ll}}$ | [p.u.] | Lead-lag output | Input to voltage amplifier +$V_H$ | [p.u.] | Regulator feedback path signal | Block name: `KH` +$V_L$ | [p.u.] | Field-current limiter low-value gate input | Block name: `KL`; lower reference $V_{\mathrm{lr}}$ +$V_{\mathrm{lv}}$ | [p.u.] | Low-value gate output | Lesser of amplifier path and limiter path +$V_R$ | [p.u.] | Voltage-regulator output | Limited by $V_R^{\min}$ and $V_R^{\max}$ +$S_E$ | [p.u.] | Saturation coefficient evaluated at $V_E$ | Uses derived saturation curve +$I_N$ | [p.u.] | Normalized exciter loading current | Source label: `IN`; satisfies $V_E I_N=K_C I_{\mathrm{fd}}$ +$F_{\mathrm{ex}}$ | [p.u.] | Rectifier loading factor | Source label: `FEX`; source curve $F_{\mathrm{ex}}=f(I_N)$ +$V_{\mathrm{fe}}$ | [p.u.] | Exciter feedback signal | Sum of saturation/resistance and $K_D I_{\mathrm{fd}}$ paths +$E_{\mathrm{fd}}$ | [p.u.] | Field-voltage output | Output after rectifier loading and 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 +$V_{\mathrm{oel}}$ | [p.u.] | Over-excitation limiter input | Source label: `VOEL`; optional, defaults to zero +$I_{\mathrm{fd}}$ | [p.u.] | Machine field current | Source label: `IFD` +$\omega$ | [p.u.] | Machine speed deviation | Source label: `Speed`; optional when $s_{\mathrm{spd}}=0$ ## Model Equations @@ -52,21 +136,108 @@ 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_A + + \text{antiwindup}\!\left( + V_A, + -V_A + K_A V_{\mathrm{ll}}, + V_A^{\min}, + V_A^{\max} + \right) \\ + 0 &= -T_E\dot V_E + V_R - V_{\mathrm{fe}} \\ + 0 &= -T_F\dot V_F - V_F + K_F\dot V_E \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 + V_{\mathrm{uel}} + V_{\mathrm{oel}} - V_C - V_F \\ + 0 &= -T_B(V_{\mathrm{ll}} - x_{\mathrm{ll}}) + T_C(e_V - x_{\mathrm{ll}}) \\ + 0 &= -V_H + K_H V_{\mathrm{fe}} \\ + 0 &= -V_L + V_{\mathrm{lr}} + K_L V_{\mathrm{fe}} \\ + 0 &= -V_{\mathrm{lv}} + \text{min}(V_A + V_H,\ V_L) \\ + 0 &= -V_R + \text{clamp}(K_B V_{\mathrm{lv}}, V_R^{\min}, V_R^{\max}) \\ + 0 &= -S_E + S_B\,q(V_E - S_A) \\ + 0 &= -V_E I_N + K_C I_{\mathrm{fd}} \\ + 0 &= -F_{\mathrm{ex}} + f(I_N) \\ + 0 &= -V_{\mathrm{fe}} + (K_E + S_E)V_E + K_D I_{\mathrm{fd}} \\ + 0 &= -E_{\mathrm{fd}} + + \left(1+s_{\mathrm{spd}}\omega\right)F_{\mathrm{ex}}V_E \end{aligned} ``` +CommonMath defines helper targets for [min and clamp](../../../../CommonMath.md#derived-functions) +and the primitive [quadratic ramp](../../../../CommonMath.md#primitives) $q$. +The rectifier loading function $f(I_N)$ is the source curve shown in Fig. 1. +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}}$ and $I_{\mathrm{fd}}$ first. For a +standard unsaturated start, EXAC2 reads those values, sets all internal +derivatives to zero, and first solves the coupled rectifier-loading equations: + +```math +\begin{aligned} + 0 &= -V_{E,0}I_{N,0} + K_C I_{\mathrm{fd},0} \\ + 0 &= -F_{\mathrm{ex},0} + f(I_{N,0}) \\ + 0 &= -E_{\mathrm{fd},0} + + \left(1+s_{\mathrm{spd}}\omega_0\right)F_{\mathrm{ex},0}V_{E,0} +\end{aligned} +``` + +Then evaluate the feedback path: + ```math \begin{aligned} + S_{E,0} &= S_B\,q(V_{E,0} - S_A) \\ + V_{\mathrm{fe},0} &= (K_E + S_{E,0})V_{E,0} + K_D I_{\mathrm{fd},0} \end{aligned} ``` +Then solve the low-value gate and voltage-regulator chain: + +```math +\begin{aligned} + V_{R,0} &= V_{\mathrm{fe},0} \\ + V_{H,0} &= K_H V_{\mathrm{fe},0} \\ + V_{L,0} &= V_{\mathrm{lr}} + K_L V_{\mathrm{fe},0} \\ + V_{\mathrm{lv},0} &= \dfrac{V_{R,0}}{K_B} \\ + V_{A,0} &= V_{\mathrm{lv},0} - V_{H,0} \\ + V_{\mathrm{ll},0} &= \dfrac{V_{A,0}}{K_A} \\ + V_{C,0} &= E_{C,0} \\ + V_{F,0} &= 0 \\ + x_{\mathrm{ll},0} &= e_{V,0} = V_{\mathrm{ll},0} \\ + V_{\mathrm{ref},0} + &= e_{V,0} + V_{C,0} + V_{F,0} + - V_{S,0} - V_{\mathrm{uel},0} - V_{\mathrm{oel},0} +\end{aligned} +``` + +This standard start requires $1+s_{\mathrm{spd}}\omega_0\ne 0$, +$V_{E,0}\ne 0$, $K_A\ne 0$, $K_B\ne 0$, inactive $V_A$ and $V_R$ limits, and +the low-value gate selecting the amplifier path. Starts with active low-value +gate limiting or saturated regulator states are outside these closed-form +equations. + ## Model Outputs + +Output | Units | Description | Note +----------------|--------|-------------------------------------|------ +`efd` | [p.u.] | Field-voltage output | $E_{\mathrm{fd}}$ +`ve` | [p.u.] | Exciter alternator voltage state | $V_E$ +`vc` | [p.u.] | Sensed compensated voltage | $V_C$ +`va` | [p.u.] | Voltage-amplifier state | $V_A$ +`vr` | [p.u.] | Voltage-regulator output | $V_R$ +`vll` | [p.u.] | Lead-lag output | $V_{\mathrm{ll}}$ +`vf` | [p.u.] | Stabilizing feedback state | $V_F$ +`vlv` | [p.u.] | Low-value gate output | $V_{\mathrm{lv}}$ +`in` | [p.u.] | Normalized exciter loading current | $I_N$ +`fex` | [p.u.] | Rectifier loading factor | $F_{\mathrm{ex}}$ +`se` | [p.u.] | Saturation coefficient | $S_E$