@@ -56,21 +56,29 @@ class ACEData(ModelData):
56
56
def __init__ (self ):
57
57
ModelData .__init__ (self )
58
58
self .bus = IdxParam (model = 'Bus' , info = "bus idx for freq. measurement" , mandatory = True )
59
- self .bias = NumParam (default = 1.0 , info = 'bias parameter' , tex_name = r'\beta ' ,
60
- unit = 'MW/0.1Hz' , power = True )
59
+ self .bias = NumParam (default = - 1.0 , info = 'bias parameter' , tex_name = 'B ' ,
60
+ unit = 'MW/0.1Hz' , power = True , non_positive = True )
61
61
62
62
self .busf = IdxParam (info = 'Optional BusFreq device idx' , model = 'BusFreq' ,
63
63
default = None )
64
64
65
65
66
66
class ACEc (ACEData , Model ):
67
67
"""
68
- Area Control Error model.
68
+ Area Control Error model, where bias (B) is an approximation of the actual frequency response (:math:`\\ beta`).
69
+ Given NERC's definition, the bias should be a negative number.
69
70
70
71
Continuous frequency sampling.
71
72
System base frequency from ``system.config.freq`` is used.
72
73
73
74
Note: area idx is automatically retrieved from `bus`.
75
+
76
+ Reference:
77
+
78
+ NERC, "Balancing and Frequency Control Reference Document, Chapter 1 Balancing Fundamentals: Bias
79
+ (B) vs. Frequency Response (Beta)", 2021. Available:
80
+
81
+ https://www.nerc.com/comm/RSTC_Reliability_Guidelines/Reference_Document_NERC_Balancing_and_Frequency_Control.pdf
74
82
"""
75
83
76
84
def __init__ (self , system , config ):
@@ -103,10 +111,12 @@ def __init__(self, system, config):
103
111
info = 'Bus frequency' ,
104
112
unit = 'p.u. (Hz)'
105
113
)
114
+ # NOTE: here, we use -abs(bias) to ensure that bias is negative to ensure compatibility
115
+ # with previous versions
106
116
self .ace = Algeb (info = 'area control error' ,
107
117
unit = 'p.u. (MW)' ,
108
118
tex_name = 'ace' ,
109
- e_str = '10 * (bias * imva) * sys_f * (f - 1) - ace' ,
119
+ e_str = '- 10 * (-abs( bias) * imva) * sys_f * (f - 1) - ace' ,
110
120
)
111
121
112
122
@@ -122,6 +132,13 @@ class ACE(ACEc):
122
132
can be specified in ``ACE.config.offset``.
123
133
124
134
Note: area idx is automatically retrieved from `bus`.
135
+
136
+ Reference:
137
+
138
+ NERC, "Balancing and Frequency Control Reference Document, Chapter 1 Balancing Fundamentals: ACE Review",
139
+ 2021. Available:
140
+
141
+ https://www.nerc.com/comm/RSTC_Reliability_Guidelines/Reference_Document_NERC_Balancing_and_Frequency_Control.pdf
125
142
"""
126
143
127
144
def __init__ (self , system , config ):
@@ -140,4 +157,4 @@ def __init__(self, system, config):
140
157
info = 'Sampled freq.' ,
141
158
)
142
159
143
- self .ace .e_str = '10 * (bias * imva) * sys_f * (fs_v - 1) - ace'
160
+ self .ace .e_str = '- 10 * (bias * imva) * sys_f * (fs_v - 1) - ace'
0 commit comments