1 # Copyright (C) 2010-2011 Richard Lincoln
3 # Permission is hereby granted, free of charge, to any person obtaining a copy
4 # of this software and associated documentation files (the "Software"), to
5 # deal in the Software without restriction, including without limitation the
6 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7 # sell copies of the Software, and to permit persons to whom the Software is
8 # furnished to do so, subject to the following conditions:
10 # The above copyright notice and this permission notice shall be included in
11 # all copies or substantial portions of the Software.
13 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 from CIM14
.IEC61970
.Dynamics
.ExcitationSystems
.ExcitationSystem
import ExcitationSystem
23 class ExcDC4B(ExcitationSystem
):
24 """IEEE (2005) DC4B Model These excitation systems utilize a field-controlled dc commutator exciter with a continuously acting voltage regulator having supplies obtained from the generator or auxiliary bus. The replacement of the controls only as an upgrade (retaining the dc commutator exciter) has resulted in a new model. This excitation system typically includes a proportional, integral, and differential (PID) generator voltage regulator (AVR). An alternative rate feedback loop (<i>kf</i>, <i>tf</i>) for stabilization is also shown in the model if the AVR does not include a derivative term. If a PSS control is supplied, the appropriate model is the Type PSS2B model.
27 def __init__(self
, e1
=0.0, se2
=0.0, tf
=0.0, oelin
=0.0, ki
=0.0, ta
=0.0, vrmax
=0.0, tr
=0.0, kf
=0.0, vrmin
=0.0, te
=0.0, ka
=0.0, kp
=0.0, td
=0.0, kd
=0.0, vemin
=0.0, ke
=0.0, se1
=0.0, e2
=0.0, uelin
=0.0, *args
, **kw_args
):
28 """Initialises a new 'ExcDC4B' instance.
30 @param e1: Field voltage value 1 (> 0.)
31 @param se2: Saturation factor at e2 (>= 0.)
32 @param tf: Rate feedback time constant (>= 0.)
33 @param oelin: OEL input: if < 2, LV gate; if = 2, subtract from error signal
34 @param ki: Integral gain (>= 0.)
35 @param ta: Time constant (> 0.)
36 @param vrmax: Maximum controller output
37 @param tr: Filter time constant (>= 0.)
38 @param kf: Rate feedback gain (>= 0.)
39 @param vrmin: Minimum controller output (<= 0.)
40 @param te: Exciter time constant (> 0.)
41 @param ka: Gain (> 0.)
42 @param kp: Proportional gain (>= 0.)
43 @param td: Derivative time constant (> 0. If kd > 0.)
44 @param kd: Derivative gain (>= 0.)
45 @param vemin: Exciter minimum output (<= 0.)
46 @param ke: Exciter field resistance line slope
47 @param se1: Saturation factor at e1 (>= 0.)
48 @param e2: Field voltage value 2. (> 0.)
49 @param uelin: UEL input: if < 2, HV gate; if = 2, add to error signal
51 #: Field voltage value 1 (> 0.)
54 #: Saturation factor at e2 (>= 0.)
57 #: Rate feedback time constant (>= 0.)
60 #: OEL input: if < 2, LV gate; if = 2, subtract from error signal
63 #: Integral gain (>= 0.)
66 #: Time constant (> 0.)
69 #: Maximum controller output
72 #: Filter time constant (>= 0.)
75 #: Rate feedback gain (>= 0.)
78 #: Minimum controller output (<= 0.)
81 #: Exciter time constant (> 0.)
87 #: Proportional gain (>= 0.)
90 #: Derivative time constant (> 0. If kd > 0.)
93 #: Derivative gain (>= 0.)
96 #: Exciter minimum output (<= 0.)
99 #: Exciter field resistance line slope
102 #: Saturation factor at e1 (>= 0.)
105 #: Field voltage value 2. (> 0.)
108 #: UEL input: if < 2, HV gate; if = 2, add to error signal
111 super(ExcDC4B
, self
).__init
__(*args
, **kw_args
)
113 _attrs
= ["e1", "se2", "tf", "oelin", "ki", "ta", "vrmax", "tr", "kf", "vrmin", "te", "ka", "kp", "td", "kd", "vemin", "ke", "se1", "e2", "uelin"]
114 _attr_types
= {"e1": float, "se2": float, "tf": float, "oelin": float, "ki": float, "ta": float, "vrmax": float, "tr": float, "kf": float, "vrmin": float, "te": float, "ka": float, "kp": float, "td": float, "kd": float, "vemin": float, "ke": float, "se1": float, "e2": float, "uelin": float}
115 _defaults
= {"e1": 0.0, "se2": 0.0, "tf": 0.0, "oelin": 0.0, "ki": 0.0, "ta": 0.0, "vrmax": 0.0, "tr": 0.0, "kf": 0.0, "vrmin": 0.0, "te": 0.0, "ka": 0.0, "kp": 0.0, "td": 0.0, "kd": 0.0, "vemin": 0.0, "ke": 0.0, "se1": 0.0, "e2": 0.0, "uelin": 0.0}