pydynamicestimator.devices.synchronous
Classes
Metaclass for SG in rectangular coordinates with TGOV1 governor and IEEEDC1 exciter |
|
Transient two-axis SG with TGOV1 governor and IEEEDC1A AVR |
|
Subtransient Anderson Fouad SG with TGOV1 governor and IEEEDC1A AVR |
|
Subtransient Sauer and Pai SG model with stator dynamics |
|
Subtransient Sauer and Pai SG 6th order model with neglected stator dynamics |
Module Contents
- class pydynamicestimator.devices.synchronous.Synchronous[source]
Bases:
pydynamicestimator.devices.device.DeviceRectMetaclass for SG in rectangular coordinates with TGOV1 governor and IEEEDC1 exciter
- fn
- H
- R_s
- x_d
- x_q
- D
- f
- Rd
- Tch
- Tsv
- KA
- TA
- KF
- TF
- KE
- TE
- Vr_max
- Vr_min
- psv_max
- psv_min
- ns = 7
- delta
- omega
- psv
- pm
- Efd
- Rf
- Vr
- Vf_ref
- Pref
- gcall(dae: pydynamicestimator.system.Dae, i_d: casadi.SX, i_q: casadi.SX) None[source]
- Parameters:
i_d (casadi.SX)
i_q (casadi.SX)
- Return type:
None
- tgov1(dae: pydynamicestimator.system.Dae) None[source]
TGOV1 governor model as presented in Power System Dynamics and Stability by P.W. Sauer and M.A. Pai, 2006. (page 100)
- Parameters:
dae (DAE)
- Return type:
None
- ieeedc1a(dae: pydynamicestimator.system.Dae) None[source]
IEEEDC1 exciter and AVR model as presented in Power System Dynamics and Stability by P.W. Sauer and M.A. Pai, 2006. (page 100)
- Parameters:
dae (differential-algebraic model class)
- Return type:
None
- class pydynamicestimator.devices.synchronous.SynchronousTransient[source]
Bases:
SynchronousTransient two-axis SG with TGOV1 governor and IEEEDC1A AVR
Rotor Dynamics
\[\begin{split}\dot{\delta} &= 2 \pi f_n \Delta \omega \\ \Delta \dot{\omega} &= \frac{1}{2 H} \left( P_m - E_d I_d - E_q I_q + (X_q' - X_d') I_d I_q - D \Delta \omega - f (\Delta \omega + 1) \right)\end{split}\]Electromagnetic Equations
\[\begin{split}\dot{E}_q &= \frac{1}{T_{d'}} \left( -E_q + E_f + (X_d - X_d') I_d \right)\\ \dot{E}_d &= \frac{1}{T_{q'}} \left( -E_d - (X_q - X_q') I_q \right)\end{split}\]Excitation System Equations
\[\begin{split} \dot{E}_{\textup{fd}} &= \frac{1}{T_{E}} \left( -K_{E,i}E_{\textup{fd},i} + V_{R,i}\right)\\ \dot{R}_{f} &= \frac{1}{T_{F} } \left(- R_{f} + \frac{K_{F}}{T_{F}}E_{\textup{fd}} \right)\\ \dot{V}_{R} &= \frac{1}{T_{A}} \left(-V_{R} + K_{A}R_{f} - \frac{K_{A}K_{F}}{T_{F}}E_{\textup{fd}} + K_{A}(v_{\textup{ref}} - v_i) \right)\end{split}\]Turbine-Governor System Equations
\[\begin{split}\dot{p}_{\textup{m}} &= \frac{1}{T_{ch}} \left( p_{\textup{sv}}- p_{\textup{m}} \right)\\ \dot{p}_{sv} &= \frac{1}{T_{sv}} \left( - \frac{\Delta \omega}{R_d} - p_{\textup{sv}} + p_{\textup{ref}} \right)\end{split}\]- _type = 'Synchronous_machine'
- _name = 'Synchronous_machine_transient_model'
- e_dprim
- e_qprim
- x_dprim
- x_qprim
- T_dprim
- T_qprim
- input_current(dae: pydynamicestimator.system.Dae) Tuple[casadi.SX, casadi.SX][source]
- Parameters:
- Return type:
Tuple[casadi.SX, casadi.SX]
- two_axis(dae, i_d: casadi.SX, i_q: casadi.SX) None[source]
Mechanical and electrical equations for the two-axis model.
- Parameters:
dae – Dae
i_d (casadi.SX) – Stator d-current
i_q (casadi.SX) – Stator q-current
- Returns:
None
- Return type:
None
- fgcall(dae: pydynamicestimator.system.Dae) None[source]
A method that executes the differential and algebraic equations of the model and adds them to the appropriate places in the Dae class
- Parameters:
dae – an instance of a class Dae
- Returns:
None
- Return type:
None
- class pydynamicestimator.devices.synchronous.SynchronousSubtransient[source]
Bases:
SynchronousSubtransient Anderson Fouad SG with TGOV1 governor and IEEEDC1A AVR The subtransient behavior of the synchronous generator is described by the following differential equations:
Rotor Dynamics
\[\begin{split}\dot{\delta} &= 2 \pi f_n \Delta \omega \\ \Delta \dot{\omega} &= \frac{1}{2 H} \Big( P_m - E_{d}^{\prime\prime} I_d - E_{q}^{\prime\prime} I_q + (X_q^{\prime\prime} - X_d^{\prime\prime}) I_d I_q - D \Delta \omega - f (\Delta \omega + 1) \Big) \\\end{split}\]Electromagnetic Equations
\[\begin{split}\dot{E}_q^{\prime} &= \frac{1}{T_{d}^{\prime}} \Big( -E_q + E_f + (X_d - X_d^{\prime}) I_d \Big) \\ \dot{E}_d^{\prime} &= \frac{1}{T_{q}^{\prime}} \Big( -E_d - (X_q - X_q^{\prime}) I_q \Big) \\ \dot{E}_{q}^{\prime\prime} &= \frac{1}{T_{d}^{\prime\prime}} \Big( E_q - E_{q}^{\prime\prime} + (X_d^{\prime} - X_d^{\prime\prime}) I_d \Big) \\ \dot{E}_{d}^{\prime\prime} &= \frac{1}{T_{q}^{\prime\prime}} \Big( E_d - E_{d}^{\prime\prime} - (X_q^{\prime} - X_q^{\prime\prime}) I_q \Big) \\\end{split}\]Excitation System Equations
\[\begin{split} \dot{E}_{\textup{fd}} &= \frac{1}{T_{E}} \left( -K_{E,i}E_{\textup{fd},i} + V_{R,i}\right)\\ \dot{R}_{f} &= \frac{1}{T_{F} } \left(- R_{f} + \frac{K_{F}}{T_{F}}E_{\textup{fd}} \right)\\ \dot{V}_{R} &= \frac{1}{T_{A}} \left(-V_{R} + K_{A}R_{f} - \frac{K_{A}K_{F}}{T_{F}}E_{\textup{fd}} + K_{A}(v_{\textup{ref}} - v_i) \right)\end{split}\]Turbine-Governor System Equations
\[\begin{split}\dot{p}_{\textup{m}} &= \frac{1}{T_{ch}} \left( p_{\textup{sv}}- p_{\textup{m}} \right)\\ \dot{p}_{sv} &= \frac{1}{T_{sv}} \left( - \frac{\Delta \omega}{R_d} - p_{\textup{sv}} + p_{\textup{ref}} \right)\end{split}\]- _type = 'Synchronous_machine'
- _name = 'Synchronous_machine_subtransient_model'
- e_dprim
- e_qprim
- e_dsec
- e_qsec
- x_dprim
- x_qprim
- T_dprim
- T_qprim
- x_dsec
- x_qsec
- T_dsec
- T_qsec
- input_current(dae: pydynamicestimator.system.Dae) Tuple[casadi.SX, casadi.SX][source]
- Parameters:
- Return type:
Tuple[casadi.SX, casadi.SX]
- anderson_fouad(dae: pydynamicestimator.system.Dae, i_d: casadi.SX, i_q: casadi.SX)[source]
- Parameters:
dae
i_d
i_q
- Returns:
- Return type:
- fgcall(dae: pydynamicestimator.system.Dae) None[source]
A method that executes the differential and algebraic equations of the model and adds them to the appropriate places in the Dae class
- Parameters:
dae – an instance of a class Dae
- Returns:
None
- Return type:
None
- class pydynamicestimator.devices.synchronous.SynchronousSubtransientSP[source]
Bases:
SynchronousSubtransient Sauer and Pai SG model with stator dynamics with TGOV1 governor and IEEEDC1A AVR
The model includes the following equations for rotor dynamics, stator dynamics, and the excitation system:
Rotor Dynamics
\[\begin{split}\dot{\delta} &= 2 \pi f_n \Delta \omega \\ \Delta \dot{\omega} &= \frac{1}{2 H} \Big( P_m - (\psi_d I_q - \psi_q I_d) - D \Delta \omega - f (\Delta \omega + 1) \Big)\end{split}\]Electromagnetic Equations
The stator dynamics include the following equations for the flux linkages in the d and q axes:
\[\begin{split}\dot{E}_d' &= \frac{1}{T_q'} \Big( -E_d' + (X_q - X_q') (i_q - g_{q2} \Psi_{q2} - (1 - g_{q1}) i_q - g_{q2} E_d') \Big) \\ \dot{E}_q' &= \frac{1}{T_d'} \Big( -E_q' - (X_d - X_d') (i_d - g_{d2} \Psi_{d2} - (1 - g_{d1}) i_d + g_{d2} E_q') + E_f \Big)\\ \dot{\Psi}_{d2} &= \frac{1}{T_{d2}} \Big( -\Psi_{d2} + E_q' - (X_d' - X_l) i_d \Big) \\ \dot{\Psi}_{q2} &= \frac{1}{T_{q2}} \Big( -\Psi_{q2} - E_d' - (X_q' - X_l) i_q \Big)\end{split}\]Flux Linkage Dynamics
The following equations describe the stator flux linkage dynamics in the d and q axes:
\[\begin{split}\dot{\Psi}_d &= 2 \pi f_n (R_s i_d + (1 + \Delta \omega) \Psi_q + v_d) \\ \dot{\Psi}_q &= 2 \pi f_n (R_s i_q - (1 + \Delta \omega) \Psi_d + v_q)\end{split}\]Algebraic Equations
The following algebraic equations govern the system:
\[\begin{split}i_d &= \frac{1}{x_d''} \Big( -\psi_d + g_{d1} e_q' + (1 - g_{d1}) \psi_{d2} \Big)\\ i_q &= \frac{1}{x_q''} \Big( -\psi_q - g_{q1} e_d' + (1 - g_{q1}) \psi_{q2} \Big)\\ g_{d1} &= \frac{x_d'' - x_l}{x_d' - x_l}\\ g_{q1} &= \frac{x_q'' - x_l}{x_q' - x_l}\\ g_{d2} &= \frac{1 - g_{d1}}{x_d' - x_l}\\ g_{q2} &= \frac{1 - g_{q1}}{x_q' - x_l}\end{split}\]- _type = 'Synchronous_machine'
- _name = 'Synchronous_machine_subtransient_model_Sauer_Pai'
- e_dprim
- e_qprim
- psid
- psiq
- psid2
- psiq2
- x_l
- gd1
- gq1
- gd2
- gq2
- x_dprim
- x_qprim
- T_dprim
- T_qprim
- x_dsec
- x_qsec
- T_dsec
- T_qsec
- sauer_pai(dae: pydynamicestimator.system.Dae, i_d: casadi.SX, i_q: casadi.SX)[source]
Sauer and Pai model. :param dae: :type dae: DAE :param i_d: :type i_d: casadi.SX :param i_q: :type i_q: casadi.SX
- Parameters:
i_d (casadi.SX)
i_q (casadi.SX)
- fgcall(dae: pydynamicestimator.system.Dae) None[source]
A method that executes the differential and algebraic equations of the model and adds them to the appropriate places in the Dae class
- Parameters:
dae – an instance of a class Dae
- Returns:
None
- Return type:
None
- class pydynamicestimator.devices.synchronous.SynchronousSubtransientSP6[source]
Bases:
SynchronousSubtransient Sauer and Pai SG 6th order model with neglected stator dynamics (stator modeled with algebraic equations) and included TGOV1 governor and IEEEDC1A AVR
The model includes the following equations:
Rotor Dynamics
\[\begin{split}\dot{\delta} &= 2 \pi f_n \Delta \omega \\ \Delta \dot{\omega} &= \frac{1}{2 H} \Big( P_m - (\psi_d I_q - \psi_q I_d) - D \Delta \omega - f (\Delta \omega + 1) \Big)\end{split}\]Electromagnetic Equations
The stator dynamics include the following equations for the flux linkages in the d and q axes:
\[\begin{split}\dot{E}_d' &= \frac{1}{T_q'} \Big( -E_d' + (X_q - X_q') (i_q - g_{q2} \Psi_{q2} - (1 - g_{q1}) i_q - g_{q2} E_d') \Big) \\ \dot{E}_q' &= \frac{1}{T_d'} \Big( -E_q' - (X_d - X_d') (i_d - g_{d2} \Psi_{d2} - (1 - g_{d1}) i_d + g_{d2} E_q') + E_f \Big)\\ \dot{\Psi}_{d2} &= \frac{1}{T_{d2}} \Big( -\Psi_{d2} + E_q' - (X_d' - X_l) i_d \Big) \\ \dot{\Psi}_{q2} &= \frac{1}{T_{q2}} \Big( -\Psi_{q2} - E_d' - (X_q' - X_l) i_q \Big)\end{split}\]Flux Linkage Dynamics
The following equations describe the stator flux linkage dynamics in the d and q axes:
Algebraic Equations
The following algebraic equations govern the system:
\[\begin{split}0 &=-i_d +\frac{1}{x_d''} \Big( -\psi_d + g_{d1} e_q' + (1 - g_{d1}) \psi_{d2} \Big)\\ 0&=-i_q +\frac{1}{x_q''} \Big( -\psi_q - g_{q1} e_d' + (1 - g_{q1}) \psi_{q2} \Big)\\ 0&= R_s i_d + (1 + \Delta \omega) \Psi_q + v_d \\ 0&= R_s i_q - (1 + \Delta \omega) \Psi_d + v_q \\ g_{d1} &= \frac{x_d'' - x_l}{x_d' - x_l}\\ g_{q1} &= \frac{x_q'' - x_l}{x_q' - x_l}\\ g_{d2} &= \frac{1 - g_{d1}}{x_d' - x_l}\\ g_{q2} &= \frac{1 - g_{q1}}{x_q' - x_l}\end{split}\]- _type = 'Synchronous_machine'
- _name = 'Synchronous_machine_subtransient_model_Sauer_Pai_6th_order'
- e_dprim
- e_qprim
- psid2
- psiq2
- x_l
- gd1
- gq1
- gd2
- gq2
- x_dprim
- x_qprim
- T_dprim
- T_qprim
- x_dsec
- x_qsec
- T_dsec
- T_qsec
- sauer_pai_6(dae: pydynamicestimator.system.Dae, i_d: casadi.SX, i_q: casadi.SX, psid: casadi.SX, psiq: casadi.SX)[source]
Sauer and Pai model. :param dae: :type dae: DAE :param i_d: :type i_d: casadi.SX :param i_q: :type i_q: casadi.SX :param psid: :type psid: casadi.SX :param psiq: :type psiq: casadi.SX
- Returns:
Args – psid (): psiq ():
- Parameters:
i_d (casadi.SX)
i_q (casadi.SX)
psid (casadi.SX)
psiq (casadi.SX)
- fgcall(dae: pydynamicestimator.system.Dae) None[source]
A method that executes the differential and algebraic equations of the model and adds them to the appropriate places in the Dae class
- Parameters:
dae – an instance of a class Dae
- Returns:
None
- Return type:
None