1 # Copyright (C) 2010 Richard Lincoln
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA, USA
17 from CIM14
.Dynamics
.ExcitationSystems
.ExcitationSystem
import ExcitationSystem
19 class ExcAC8B(ExcitationSystem
):
20 """IEEE (2005) AC8B Model The AVR in this model consists of PID control, with separate constants for the proportional (<i>KPR</i>), integral (<i>KIR</i>), and derivative (<i>KDR</i>) gains. The representation of the brushless exciter (<i>TE</i>, <i>KE</i>, <i>SE</i>, <i>KC</i>, <i>KD</i>) is similar to the model Type AC2A. The Type AC8B model can be used to represent static voltage regulators applied to brushless excitation systems. Digitally based voltage regulators feeding dc rotating main exciters can be represented with the AC Type AC8B model with the parameters <i>KC </i>and <i>KD </i>set to 0. For thyristor power stages fed from the generator terminals, the limits <i>VRMAX </i>and <i>VRMIN </i>should be a function of terminal voltage: <i>VT </i>x <i>VRMAX </i>and <i>VT </i>x <i>VRMIN</i>.
23 def __init__(self
, vfemax
=0.0, vrmin
=0.0, ta
=0.0, tdr
=0.0, vtmult
=0.0, ka
=0.0, kdr
=0.0, se1
=0.0, e1
=0.0, vemin
=0.0, te
=0.0, ke
=0.0, se2
=0.0, tr
=0.0, kir
=0.0, kpr
=0.0, vrmax
=0.0, kd
=0.0, e2
=0.0, kc
=0.0, *args
, **kw_args
):
24 """Initialises a new 'ExcAC8B' instance.
26 @param vfemax: Exciter field current limit parameter
27 @param vrmin: Minimum controller output (<= 0.)
28 @param ta: Amplifier time constant (>= 0.)
29 @param tdr: Voltage Regulator Derivative Time Constant (> 0. if kdr > 0.)
30 @param vtmult: if not 0, multiply vrmax and vrmin by terminal voltage
31 @param ka: Amplifier gain (> 0.)
32 @param kdr: Voltage Regulator Derivative Gain (>= 0.)
33 @param se1: Saturation factor at e1 (>= 0.)
34 @param e1: Field voltage value 1 (> 0.)
35 @param vemin: Minimum exciter ouput voltage (<= 0.)
36 @param te: Exciter field time constant (> 0.)
37 @param ke: Exciter field proportional constant
38 @param se2: Saturation factor at e2 (>= 0.)
39 @param tr: Voltage transducer time constant (>= 0.)
40 @param kir: Voltage Regulator Integral Gain (>= 0.)
41 @param kpr: Voltage Regulator Proportional Gain (> 0. if kir = 0.)
42 @param vrmax: Maximum controller output (> 0.)
43 @param kd: Exciter regulation factor (>= 0.)
44 @param e2: Field voltage value 2. (> 0.)
45 @param kc: Rectifier regulation factor (>= 0.)
47 #: Exciter field current limit parameter
50 #: Minimum controller output (<= 0.)
53 #: Amplifier time constant (>= 0.)
56 #: Voltage Regulator Derivative Time Constant (> 0. if kdr > 0.)
59 #: if not 0, multiply vrmax and vrmin by terminal voltage
62 #: Amplifier gain (> 0.)
65 #: Voltage Regulator Derivative Gain (>= 0.)
68 #: Saturation factor at e1 (>= 0.)
71 #: Field voltage value 1 (> 0.)
74 #: Minimum exciter ouput voltage (<= 0.)
77 #: Exciter field time constant (> 0.)
80 #: Exciter field proportional constant
83 #: Saturation factor at e2 (>= 0.)
86 #: Voltage transducer time constant (>= 0.)
89 #: Voltage Regulator Integral Gain (>= 0.)
92 #: Voltage Regulator Proportional Gain (> 0. if kir = 0.)
95 #: Maximum controller output (> 0.)
98 #: Exciter regulation factor (>= 0.)
101 #: Field voltage value 2. (> 0.)
104 #: Rectifier regulation factor (>= 0.)
107 super(ExcAC8B
, self
).__init
__(*args
, **kw_args
)
109 _attrs
= ["vfemax", "vrmin", "ta", "tdr", "vtmult", "ka", "kdr", "se1", "e1", "vemin", "te", "ke", "se2", "tr", "kir", "kpr", "vrmax", "kd", "e2", "kc"]
110 _attr_types
= {"vfemax": float, "vrmin": float, "ta": float, "tdr": float, "vtmult": float, "ka": float, "kdr": float, "se1": float, "e1": float, "vemin": float, "te": float, "ke": float, "se2": float, "tr": float, "kir": float, "kpr": float, "vrmax": float, "kd": float, "e2": float, "kc": float}
111 _defaults
= {"vfemax": 0.0, "vrmin": 0.0, "ta": 0.0, "tdr": 0.0, "vtmult": 0.0, "ka": 0.0, "kdr": 0.0, "se1": 0.0, "e1": 0.0, "vemin": 0.0, "te": 0.0, "ke": 0.0, "se2": 0.0, "tr": 0.0, "kir": 0.0, "kpr": 0.0, "vrmax": 0.0, "kd": 0.0, "e2": 0.0, "kc": 0.0}