From 81854278a82b75f1ecf10bc60a9547888e74fed3 Mon Sep 17 00:00:00 2001 From: lukelowry Date: Sun, 31 May 2026 22:29:56 -0500 Subject: [PATCH 1/2] Add SCRX exciter documentation stub --- .../Model/PhasorDynamics/Exciter/README.md | 1 + .../PhasorDynamics/Exciter/SCRX/README.md | 72 ++++++++++++++++++ docs/Figures/PhasorDynamics/SCRX_diagram.png | Bin 0 -> 15505 bytes 3 files changed, 73 insertions(+) create mode 100644 GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md create mode 100644 docs/Figures/PhasorDynamics/SCRX_diagram.png diff --git a/GridKit/Model/PhasorDynamics/Exciter/README.md b/GridKit/Model/PhasorDynamics/Exciter/README.md index 16008155d..8d742e801 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/README.md +++ b/GridKit/Model/PhasorDynamics/Exciter/README.md @@ -18,4 +18,5 @@ There are a few standard Exciter models - ESDC2A Excitation Model (See [ESDC2A](ESDC2A/README.md)) - EXAC1 Excitation Model (See [EXAC1](EXAC1/README.md)) - IEEE ST4B Excitation Model (See [ESST4B](ESST4B/README.md)) +- SCRX Excitation Model (See [SCRX](SCRX/README.md)) - Simplified Excitation System Model (See [SEXS-PTI](SEXS-PTI/README.md)) diff --git a/GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md b/GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md new file mode 100644 index 000000000..62610de87 --- /dev/null +++ b/GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md @@ -0,0 +1,72 @@ +# **Exciter Model (SCRX)** + +> [!NOTE] +> This README is a documentation stub/template for the SCRX 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 SCRX Exciter. + +
+ + + Figure 1: Exciter SCRX 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/docs/Figures/PhasorDynamics/SCRX_diagram.png b/docs/Figures/PhasorDynamics/SCRX_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..42bf6d4df4792f19d1dbbfc159478d0fb86e0209 GIT binary patch literal 15505 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 VY)L8G18u|*MLAViiHy<5{{gz3Bhvr? literal 0 HcmV?d00001 From 8688ae2ea10cb2c98a9e36eb8ab8bb4f4dbdc286 Mon Sep 17 00:00:00 2001 From: lukelowry Date: Tue, 2 Jun 2026 16:53:18 -0500 Subject: [PATCH 2/2] docs: complete SCRX README [skip ci] --- .../PhasorDynamics/Exciter/SCRX/README.md | 124 +++++++++++++++--- 1 file changed, 109 insertions(+), 15 deletions(-) diff --git a/GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md b/GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md index 62610de87..8d53d83b2 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md +++ b/GridKit/Model/PhasorDynamics/Exciter/SCRX/README.md @@ -1,7 +1,18 @@ -# **Exciter Model (SCRX)** - -> [!NOTE] -> This README is a documentation stub/template for the SCRX exciter. Parameters, variables, equations, initialization details, and outputs are intentionally left unfilled until the model is derived from its source documentation. +# **Bus Fed or Solid Fed Static Excitation System Model (SCRX)** + +SCRX is a static excitation system with a voltage-error lead-lag block, a +limited exciter lag, and a source selector that scales the exciter output by +either terminal voltage or a constant source. + +Notes: +- Internal voltage signals are on model base unless otherwise stated. +- The source diagram shows a shared SCRX/SCRX1-style selector. In the diagram, + `C_SWITCH = 0` selects the bus-fed multiplier $E_T$, and `C_SWITCH = 1` + selects the solid-fed multiplier 1. +- Some source material labels the lead-lag numerator input as `TA/TB`; the + model equations below use explicit time constants $T_A$ and $T_B$. +- `Rc_Rfd` is a source-data parameter for input compatibility, but it is not an + active block in Fig. 1 and is not used by the equations below. ## Block Diagram @@ -10,41 +21,84 @@ Standard model of the SCRX Exciter.
- Figure 1: Exciter SCRX model. + Figure 1: Exciter SCRX 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_A$ | [sec] | `Ta` | Lead-lag numerator time constant | 0.0 | Source label: `TA/TB` in some SCRX source data +$T_B$ | [sec] | `Tb` | Lead-lag denominator time constant | 0.0 | Block name: `TB`; if zero, the lead-lag block is algebraic +$K$ | [p.u.] | `K` | Exciter gain | 1.0 | Block name: `K` +$T_E$ | [sec] | `Te` | Exciter lag time constant | 0.0 | Block name: `TE`; if zero, $E_{\mathrm{fd}}'$ is algebraic +$E_{\mathrm{fd}}^{\max}$ | [p.u.] | `Efdmax` | Maximum limited exciter output before source multiplier | 5.0 | Block name: `EFDMAX` +$E_{\mathrm{fd}}^{\min}$ | [p.u.] | `Efdmin` | Minimum limited exciter output before source multiplier | -5.0 | Block name: `EFDMIN` +$C_{\mathrm{sw}}$ | [binary] | `Cswitch` | Source multiplier selector | 0 | Source label: `C_SWITCH`; 0 = bus-fed $E_T$, 1 = solid-fed constant 1 +$R_c/R_{\mathrm{fd}}$ | [p.u.] | `Rc_Rfd` | Source-data compatibility parameter | 0.0 | Not active in Fig. 1 equations + +### Parameter Validation + +Invalid SCRX parameter sets are rejected by the following checks. + +```math +\begin{aligned} + &T_A \ge 0,\quad T_B \ge 0,\quad T_E \ge 0 \\ + &T_B > 0\quad\text{or}\quad(T_B = 0\ \text{and}\ T_A = 0) \\ + &E_{\mathrm{fd}}^{\min} \le E_{\mathrm{fd}}^{\max} \\ + &C_{\mathrm{sw}} \in \{0,1\} +\end{aligned} +``` ### Model Derived Parameters +The source multiplier is: + +```math +\begin{aligned} + M_{\mathrm{src}} &= (1 - C_{\mathrm{sw}})E_T + C_{\mathrm{sw}} +\end{aligned} +``` + +When $T_B=0$, the lead-lag block is treated as a bypass with +$V_{\mathrm{ll}}=e_V$. + ## Model Variables ### Internal Variables #### Differential -Symbol | Units | Description | Note --------|-------|-------------|----- +Symbol | Units | Description | Note +------------------------------------|--------|---------------------------------------------------------|------ +$x_{\mathrm{ll}}$ | [p.u.] | Lead-lag block state | State 1 in Fig. 1 +$E_{\mathrm{fd}}'$ | [p.u.] | Limited exciter output before source multiplier | State 2 in Fig. 1; algebraic when $T_E=0$ #### Algebraic -Symbol | Units | Description | Note --------|-------|-------------|----- +Symbol | Units | Description | Note +------------------------------------|--------|---------------------------------------------------------|------ +$e_V$ | [p.u.] | Voltage-error signal before lead-lag block | Summing junction in Fig. 1 +$V_{\mathrm{ll}}$ | [p.u.] | Lead-lag output | Drives the limited exciter lag +$M_{\mathrm{src}}$ | [p.u.] | Source multiplier | $E_T$ when $C_{\mathrm{sw}}=0$, 1 when $C_{\mathrm{sw}}=1$ +$E_{\mathrm{fd}}$ | [p.u.] | Field-voltage output | Output after source 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` +$E_T$ | [p.u.] | Terminal-voltage source multiplier | Source label: `ET`; used only when $C_{\mathrm{sw}}=0$ +$V_{\mathrm{ref}}$ | [p.u.] | Voltage-control reference | Source label: `VREF` +$V_{\mathrm{uel}}$ | [p.u.] | Under-excitation limiter input | Source label: `VUEL`; optional, defaults to zero +$V_S$ | [p.u.] | Stabilizer input signal | Source label: `VS`; optional, defaults to zero +$V_{\mathrm{oel}}$ | [p.u.] | Over-excitation limiter input | Source label: `VOEL`; optional, defaults to zero ## Model Equations @@ -52,21 +106,61 @@ Symbol | Units | Description | Note ```math \begin{aligned} + 0 &= -T_B\dot x_{\mathrm{ll}} - x_{\mathrm{ll}} + e_V \\ + 0 &= + -T_E\dot E_{\mathrm{fd}}' + + \text{antiwindup}\!\left( + E_{\mathrm{fd}}', + -E_{\mathrm{fd}}' + K V_{\mathrm{ll}}, + E_{\mathrm{fd}}^{\min}, + E_{\mathrm{fd}}^{\max} + \right) \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_{\mathrm{uel}} + V_S + V_{\mathrm{oel}} - E_C \\ + 0 &= -T_B(V_{\mathrm{ll}} - x_{\mathrm{ll}}) + T_A(e_V - x_{\mathrm{ll}}) \\ + 0 &= -M_{\mathrm{src}} + (1 - C_{\mathrm{sw}})E_T + C_{\mathrm{sw}} \\ + 0 &= -E_{\mathrm{fd}} + M_{\mathrm{src}}E_{\mathrm{fd}}' \end{aligned} ``` +When $T_B=0$, SCRX bypasses the lead-lag block so $V_{\mathrm{ll}}=e_V$. + ## Initialization +The machine initializes $E_{\mathrm{fd}}$ first. For a standard unsaturated +start, SCRX reads that value along with $E_C$, $E_T$, and any attached limiter +or stabilizer inputs, sets all internal derivatives to zero, and evaluates: + ```math \begin{aligned} + M_{\mathrm{src},0} &= (1 - C_{\mathrm{sw}})E_{T,0} + C_{\mathrm{sw}} \\ + E_{\mathrm{fd},0}' &= \dfrac{E_{\mathrm{fd},0}}{M_{\mathrm{src},0}} \\ + V_{\mathrm{ll},0} &= \dfrac{E_{\mathrm{fd},0}'}{K} \\ + x_{\mathrm{ll},0} &= e_{V,0} = V_{\mathrm{ll},0} \\ + V_{\mathrm{ref},0} + &= e_{V,0} + E_{C,0} + - V_{\mathrm{uel},0} - V_{S,0} - V_{\mathrm{oel},0} \end{aligned} ``` +This closed-form start requires $M_{\mathrm{src},0}\ne 0$, $K\ne 0$, and +$E_{\mathrm{fd}}^{\min}\le E_{\mathrm{fd},0}'\le E_{\mathrm{fd}}^{\max}$. +Starts that bind the exciter limit are outside these closed-form equations. + ## Model Outputs + +Output | Units | Description | Note +----------------|--------|-------------------------------------|------ +`efd` | [p.u.] | Field-voltage output | $E_{\mathrm{fd}}$ +`efd_pre` | [p.u.] | Limited exciter output before source multiplier | $E_{\mathrm{fd}}'$ +`vll` | [p.u.] | Lead-lag output | $V_{\mathrm{ll}}$ +`msrc` | [p.u.] | Source multiplier | $M_{\mathrm{src}}$