mms-client 1.0.6__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mms_client/services/registration.py +64 -0
- mms_client/types/base.py +3 -1
- mms_client/types/enums.py +8 -0
- mms_client/types/fields.py +150 -2
- mms_client/types/offer.py +16 -4
- mms_client/types/registration.py +47 -0
- mms_client/types/resource.py +1064 -0
- mms_client/types/transport.py +1 -1
- mms_client/utils/serialization.py +18 -8
- {mms_client-1.0.6.dist-info → mms_client-1.1.0.dist-info}/METADATA +18 -2
- {mms_client-1.0.6.dist-info → mms_client-1.1.0.dist-info}/RECORD +13 -11
- {mms_client-1.0.6.dist-info → mms_client-1.1.0.dist-info}/LICENSE +0 -0
- {mms_client-1.0.6.dist-info → mms_client-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,1064 @@
|
|
|
1
|
+
"""Contains objects for MMS resources."""
|
|
2
|
+
|
|
3
|
+
# pylint: disable=too-many-lines
|
|
4
|
+
|
|
5
|
+
from datetime import date as Date
|
|
6
|
+
from decimal import Decimal
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Annotated
|
|
9
|
+
from typing import List
|
|
10
|
+
from typing import Optional
|
|
11
|
+
|
|
12
|
+
from pydantic_core import PydanticUndefined
|
|
13
|
+
from pydantic_xml import attr
|
|
14
|
+
from pydantic_xml import element
|
|
15
|
+
from pydantic_xml import wrapped
|
|
16
|
+
|
|
17
|
+
from mms_client.types.base import Payload
|
|
18
|
+
from mms_client.types.enums import AreaCode
|
|
19
|
+
from mms_client.types.enums import Frequency
|
|
20
|
+
from mms_client.types.fields import ASCII_TEXT
|
|
21
|
+
from mms_client.types.fields import JAPANESE_ASCII_TEXT
|
|
22
|
+
from mms_client.types.fields import JAPANESE_TEXT
|
|
23
|
+
from mms_client.types.fields import address
|
|
24
|
+
from mms_client.types.fields import capacity
|
|
25
|
+
from mms_client.types.fields import hour
|
|
26
|
+
from mms_client.types.fields import minute
|
|
27
|
+
from mms_client.types.fields import participant as participant_name
|
|
28
|
+
from mms_client.types.fields import pattern_name
|
|
29
|
+
from mms_client.types.fields import percentage
|
|
30
|
+
from mms_client.types.fields import phone
|
|
31
|
+
from mms_client.types.fields import price
|
|
32
|
+
from mms_client.types.fields import resource_name
|
|
33
|
+
from mms_client.types.fields import resource_short_name
|
|
34
|
+
from mms_client.types.fields import system_code
|
|
35
|
+
from mms_client.types.fields import transaction_id
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def output(alias: str, optional: bool = False):
|
|
39
|
+
"""Create a field for an output value.
|
|
40
|
+
|
|
41
|
+
Arguments:
|
|
42
|
+
alias (str): The name of the alias to assign to the Pydanitc field. This value will be used to map the field
|
|
43
|
+
to the JSON/XML key.
|
|
44
|
+
optional (bool): If True, the field will be optional with a default of None. If False, the field will be
|
|
45
|
+
required, with no default.
|
|
46
|
+
|
|
47
|
+
Returns: A Pydantic Field object for the output value.
|
|
48
|
+
"""
|
|
49
|
+
return attr(
|
|
50
|
+
default=None if optional else PydanticUndefined,
|
|
51
|
+
name=alias,
|
|
52
|
+
gt=-10000000,
|
|
53
|
+
lt=10000000,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def time(alias: str, optional: bool = False):
|
|
58
|
+
"""Create a field for a time value.
|
|
59
|
+
|
|
60
|
+
Arguments:
|
|
61
|
+
alias (str): The name of the alias to assign to the Pydanitc field. This value will be used to map the field
|
|
62
|
+
to the JSON/XML key.
|
|
63
|
+
optional (bool): If True, the field will be optional with a default of None. If False, the field will be
|
|
64
|
+
required, with no default.
|
|
65
|
+
|
|
66
|
+
Returns: A Pydantic Field object for the time value.
|
|
67
|
+
"""
|
|
68
|
+
return attr(
|
|
69
|
+
default=None if optional else PydanticUndefined,
|
|
70
|
+
name=alias,
|
|
71
|
+
min_length=8,
|
|
72
|
+
max_length=8,
|
|
73
|
+
pattern=r"^[0-9]{2}:[0-5][0-9]:[0-5][0-9]$",
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def power_supply(alias: str, optional: bool = False):
|
|
78
|
+
"""Create a field for a power supply value.
|
|
79
|
+
|
|
80
|
+
Arguments:
|
|
81
|
+
alias (str): The name of the alias to assign to the Pydanitc field. This value will be used to map the field
|
|
82
|
+
to the JSON/XML key.
|
|
83
|
+
optional (bool): If True, the field will be optional with a default of None. If False, the field will be
|
|
84
|
+
required, with no default.
|
|
85
|
+
|
|
86
|
+
Returns: A Pydantic Field object for the power supply value.
|
|
87
|
+
"""
|
|
88
|
+
return attr(
|
|
89
|
+
default=None if optional else PydanticUndefined,
|
|
90
|
+
name=alias,
|
|
91
|
+
ge=0,
|
|
92
|
+
lt=10000000,
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def continuous_operation_frequency(alias: str, optional: bool = False):
|
|
97
|
+
"""Create a field for a continuous operation frequency value.
|
|
98
|
+
|
|
99
|
+
Arguments:
|
|
100
|
+
alias (str): The name of the alias to assign to the Pydanitc field. This value will be used to map the field
|
|
101
|
+
to the JSON/XML key.
|
|
102
|
+
optional (bool): If True, the field will be optional with a default of None. If False, the field will be
|
|
103
|
+
required, with no default.
|
|
104
|
+
|
|
105
|
+
Returns: A Pydantic Field object for the continuous operation frequency value.
|
|
106
|
+
"""
|
|
107
|
+
return attr(
|
|
108
|
+
default=None if optional else PydanticUndefined,
|
|
109
|
+
name=alias,
|
|
110
|
+
ge=40.0,
|
|
111
|
+
le=70.0,
|
|
112
|
+
decimal_places=1,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class StartupEventType(Enum):
|
|
117
|
+
"""Represents the type of event in the startup pattern."""
|
|
118
|
+
|
|
119
|
+
STARTUP_OPERATION = "1"
|
|
120
|
+
BOILER_IGNITION = "2"
|
|
121
|
+
TURBINE_STARTUP = "3"
|
|
122
|
+
CONNECTION = "4"
|
|
123
|
+
OUTPUT_SETPOINT1 = "5"
|
|
124
|
+
OUTPUT_SETPOINT2 = "6"
|
|
125
|
+
OUTPUT_SETPOINT3 = "7"
|
|
126
|
+
OUTPUT_SETPOINT4 = "8"
|
|
127
|
+
OUTPUT_SETPOINT5 = "9"
|
|
128
|
+
OUTPUT_SETPOINT6 = "10"
|
|
129
|
+
OUTPUT_SETPOINT7 = "11"
|
|
130
|
+
OUTPUT_SETPOINT8 = "12"
|
|
131
|
+
OUTPUT_SETPOINT9 = "13"
|
|
132
|
+
OUTPUT_SETPOINT10 = "14"
|
|
133
|
+
OUTPUT_SETPOINT11 = "15"
|
|
134
|
+
OUTPUT_SETPOINT12 = "16"
|
|
135
|
+
OUTPUT_SETPOINT13 = "17"
|
|
136
|
+
OUTPUT_SETPOINT14 = "18"
|
|
137
|
+
OUTPUT_SETPOINT15 = "19"
|
|
138
|
+
OUTPUT_SETPOINT16 = "20"
|
|
139
|
+
OUTPUT_SETPOINT17 = "21"
|
|
140
|
+
OUTPUT_SETPOINT18 = "22"
|
|
141
|
+
OUTPUT_SETPOINT19 = "23"
|
|
142
|
+
OUTPUT_SETPOINT20 = "24"
|
|
143
|
+
POWER_SUPPLY_OPERATION = "25"
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class StopEventType(Enum):
|
|
147
|
+
"""Represents the type of event in the stop pattern."""
|
|
148
|
+
|
|
149
|
+
OUTPUT_SETPOINT1 = "1"
|
|
150
|
+
OUTPUT_SETPOINT2 = "2"
|
|
151
|
+
OUTPUT_SETPOINT3 = "3"
|
|
152
|
+
OUTPUT_SETPOINT4 = "4"
|
|
153
|
+
OUTPUT_SETPOINT5 = "5"
|
|
154
|
+
OUTPUT_SETPOINT6 = "6"
|
|
155
|
+
OUTPUT_SETPOINT7 = "7"
|
|
156
|
+
OUTPUT_SETPOINT8 = "8"
|
|
157
|
+
OUTPUT_SETPOINT9 = "9"
|
|
158
|
+
OUTPUT_SETPOINT10 = "10"
|
|
159
|
+
OUTPUT_SETPOINT11 = "11"
|
|
160
|
+
OUTPUT_SETPOINT12 = "12"
|
|
161
|
+
OUTPUT_SETPOINT13 = "13"
|
|
162
|
+
OUTPUT_SETPOINT14 = "14"
|
|
163
|
+
OUTPUT_SETPOINT15 = "15"
|
|
164
|
+
OUTPUT_SETPOINT16 = "16"
|
|
165
|
+
OUTPUT_SETPOINT17 = "17"
|
|
166
|
+
OUTPUT_SETPOINT18 = "18"
|
|
167
|
+
OUTPUT_SETPOINT19 = "19"
|
|
168
|
+
OUTPUT_SETPOINT20 = "20"
|
|
169
|
+
DISCONNECTION = "21"
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
class ContractType(Enum):
|
|
173
|
+
"""Describes the type of contract for a power generation unit."""
|
|
174
|
+
|
|
175
|
+
MARKET = "1"
|
|
176
|
+
MARKET_AND_POWER_SUPPLY_2 = "2"
|
|
177
|
+
POWER_SUPPLY_2 = "3"
|
|
178
|
+
ONLY_POWER_SUPPLY_1 = "4"
|
|
179
|
+
MARKET_AND_REMAINING_RESERVE_UTILIZATION = "5"
|
|
180
|
+
REMAINING_RESERVE_UTILIZATION = "6"
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
class ResourceType(Enum):
|
|
184
|
+
"""How the power generation unit produces electricity."""
|
|
185
|
+
|
|
186
|
+
THERMAL = "01"
|
|
187
|
+
HYDRO = "02"
|
|
188
|
+
PUMP = "03"
|
|
189
|
+
BATTERY = "04"
|
|
190
|
+
VPP_GEN = "05"
|
|
191
|
+
VPP_GEN_AND_DEM = "06"
|
|
192
|
+
VPP_DEM = "07"
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
class RemainingReserveAvailability(Enum):
|
|
196
|
+
"""Describes the availability of remaining reserves for a power generation unit."""
|
|
197
|
+
|
|
198
|
+
NOT_AVAILABLE = "0"
|
|
199
|
+
AVAILABLE_FOR_UP_ONLY = "1"
|
|
200
|
+
AVAILABLE_FOR_DOWN_ONLY = "2"
|
|
201
|
+
AVAILABLE_FOR_UP_AND_DOWN = "3"
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class CommandMonitorMethod(Enum):
|
|
205
|
+
"""Describes how the power generation unit is monitored and commanded."""
|
|
206
|
+
|
|
207
|
+
DEDICATED_LINE = "1"
|
|
208
|
+
SIMPLE_COMMAND = "2"
|
|
209
|
+
OFFLINE = "3"
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
class SignalType(Enum):
|
|
213
|
+
"""Describes the type of signal used to monitor and command a power generation unit."""
|
|
214
|
+
|
|
215
|
+
ACTUAL_OUTPUT_ORDER = "1"
|
|
216
|
+
DIFFERENTIAL_OUTPUT_ORDER = "2"
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class BaseLineSettingMethod(Enum):
|
|
220
|
+
"""Describe how the baseline is set for a power generation unit."""
|
|
221
|
+
|
|
222
|
+
PREDICTION_BASE = "1"
|
|
223
|
+
MEASUREMENT_BASE = "2"
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class ThermalType(Enum):
|
|
227
|
+
"""Describes the type of thermal power generation unit."""
|
|
228
|
+
|
|
229
|
+
GT = "1"
|
|
230
|
+
GTCC = "2"
|
|
231
|
+
OTHER = "9"
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class BooleanFlag(Enum):
|
|
235
|
+
"""Describes a boolean flag.
|
|
236
|
+
|
|
237
|
+
This could literally be a Boolean value but it's coded in the reference as an enum and I don't want to create a
|
|
238
|
+
custom serializer for it.
|
|
239
|
+
"""
|
|
240
|
+
|
|
241
|
+
YES = "1"
|
|
242
|
+
NO = "0"
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
class OverrideOption(Enum):
|
|
246
|
+
"""Describes the override option for a power generation unit."""
|
|
247
|
+
|
|
248
|
+
VIOLATION = "VIOLATION"
|
|
249
|
+
OVERRIDE = "OVERRIDE"
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
class Status(Enum):
|
|
253
|
+
"""Describes the status of a power generation unit submission."""
|
|
254
|
+
|
|
255
|
+
IN_PROGRESS = "WORKING"
|
|
256
|
+
SUBMITTED = "SUBMITTED"
|
|
257
|
+
APPROVED = "APPROVED"
|
|
258
|
+
DENIED = "DECLINED"
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
class OutputBand(Payload, tag="OutputBandInfo"):
|
|
262
|
+
"""Output band contract.
|
|
263
|
+
|
|
264
|
+
The contract type is mandatory for THERMAL (thermal power generation), HYDRO (hydroelectric power generation), and
|
|
265
|
+
PUMP (pumped storage power generation) power sources, except for ONLY_POWER_SUPPLY_1. It cannot be set for other
|
|
266
|
+
power sources.
|
|
267
|
+
"""
|
|
268
|
+
|
|
269
|
+
# The output of the band, in kW
|
|
270
|
+
output_kW: int = output("Output")
|
|
271
|
+
|
|
272
|
+
# The bandwidth of the gas fuel turbine, in kW. It represents the range of power outputs that the turbine can
|
|
273
|
+
# efficiently produce while maintaining stable operation. This parameter is important for determining the
|
|
274
|
+
# flexibility and versatility of the turbine in responding to varying demands on the electrical grid. A wider GF
|
|
275
|
+
# width allows the turbine to adjust its output more effectively to match fluctuations in electricity demand.
|
|
276
|
+
gf_bandwidth_kW: int = capacity("GfWidth", 0)
|
|
277
|
+
|
|
278
|
+
# The bandwidth of the load-frequency control, in kW. It represents the range over which a power generation system
|
|
279
|
+
# can adjust its output in response to changes in load demand or frequency deviations on the electrical grid. A
|
|
280
|
+
# wider LFC bandwidth indicates that the power generation system can respond more quickly and effectively to
|
|
281
|
+
# fluctuations in electricity demand or frequency variations, thereby helping to maintain grid stability.
|
|
282
|
+
lfc_bandwidth_kW: int = capacity("AfcWidth", 0)
|
|
283
|
+
|
|
284
|
+
# The variation speed of the LFC, in kW/min. It represents the speed of the Load-Frequency Control (LFC) function,
|
|
285
|
+
# which ensures the stability of the power system in response to rapid fluctuations such as frequency changes. A
|
|
286
|
+
# higher LFC change rate indicates that the power system can respond quickly to frequency and load changes, thereby
|
|
287
|
+
# maintaining stability.
|
|
288
|
+
lfc_variation_speed_kW_min: int = capacity("AfcVariationSpeed", 0)
|
|
289
|
+
|
|
290
|
+
# The Energy Discharge Curve change rate, in kW/min. It refers to the rate at which the energy discharge curve
|
|
291
|
+
# changes in response to fluctuations in power demand or supply. A higher EDC change rate indicates that the
|
|
292
|
+
# energy discharge curve can adjust more rapidly to changes in demand or supply conditions. This parameter is
|
|
293
|
+
# important for ensuring the stability and reliability of the power system.
|
|
294
|
+
edc_change_rate_kW_min: int = capacity("OtmVariationSpeed", 0)
|
|
295
|
+
|
|
296
|
+
# The EDC + LFC variation rate. It refers to the rate of change in both the Energy Discharge Curve (EDC) and the
|
|
297
|
+
# Load Frequency Control (LFC) parameters within a power system, combining both aspects to provide a comprehensive
|
|
298
|
+
# understanding of how quickly the power system can adapt to changes in energy discharge capability and frequency
|
|
299
|
+
# control requirements. This parameter is crucial for assessing the dynamic performance and stability of the power
|
|
300
|
+
# grid under varying operating conditions.
|
|
301
|
+
edc_lfc_change_rate_kW_min: int = capacity("AfcOtmVariationSpeed", 0)
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
class SwitchOutput(Payload, tag="SwitchOutputInfo"):
|
|
305
|
+
"""Switching contract.
|
|
306
|
+
|
|
307
|
+
Switching output refers to the amount of electrical power generated when switching power supply between different
|
|
308
|
+
generating facilities or power sources in an electrical system. It indicates the minimum amount of power that the
|
|
309
|
+
system generates or receives when shifting loads from one generating facility to another. The reasons for switching
|
|
310
|
+
may include routine maintenance, abnormal operation of generating facilities, or fluctuations in demand.
|
|
311
|
+
|
|
312
|
+
The contract type is mandatory for THERMAL (thermal power generation) power sources, except ONLY_POWER_SUPPLY_1.
|
|
313
|
+
It cannot be set for other power sources.
|
|
314
|
+
"""
|
|
315
|
+
|
|
316
|
+
# The switching output, in kW
|
|
317
|
+
output_kW: int = capacity("Output", 0)
|
|
318
|
+
|
|
319
|
+
# Required switching time for EDC/LFC operable output band
|
|
320
|
+
switch_time_min: int = minute("SwitchTime")
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
class AfcMinimumOutput(Payload, tag="OutputRangeBelowAfcInfo"):
|
|
324
|
+
"""Minimum Output - EDC/LFC Operable Minimum Output contract.
|
|
325
|
+
|
|
326
|
+
Contains data related to the minimum power output capability of a power generation unit, specifically concerning
|
|
327
|
+
the operation of EDC (Economic Dispatch Control) and LFC (Load Frequency Control). It provides data related to the
|
|
328
|
+
lowest power output of a generating unit, including how this minimum output affects its participation in economic
|
|
329
|
+
dispatch and load frequency control operations within the power system.
|
|
330
|
+
|
|
331
|
+
The contract type is mandatory for THERMAL (thermal power generation) power sources, except for ONLY_POWER_SUPPLY_1.
|
|
332
|
+
It cannot be set for other power sources.
|
|
333
|
+
"""
|
|
334
|
+
|
|
335
|
+
# The minimum output, in kW
|
|
336
|
+
output_kW: int = capacity("Output", 0)
|
|
337
|
+
|
|
338
|
+
# Operation continuity time, in hours. Refers to the duration for which a power generation unit needs to remain
|
|
339
|
+
# operational. In other words, it represents the amount of time that a power generation unit must operate at a
|
|
340
|
+
# steady load. This is necessary to ensure stability in situations such as rapid changes in power demand or under
|
|
341
|
+
# specific conditions. The operational continuity time is determined based on operational requirements, constraints,
|
|
342
|
+
# and the characteristics of the power generation unit.
|
|
343
|
+
operation_time_hr: Decimal = hour("OperationTime")
|
|
344
|
+
|
|
345
|
+
# The minimum output variation speed, in kW/min. It refers to the rate at which the power output of a generating
|
|
346
|
+
# unit can change over time. It measures how quickly the power output can increase or decrease in response to
|
|
347
|
+
# changes in demand or other factors. Faster output variation speeds indicate that the unit can adjust its output
|
|
348
|
+
# more rapidly, providing greater flexibility to match fluctuations in demand and maintain system stability. This
|
|
349
|
+
# parameter is important for ensuring grid reliability and efficiency in managing power generation resources.
|
|
350
|
+
variation_speed_kW_min: int = capacity("OutputVariationSpeed", 0)
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
class StartupEvent(Payload):
|
|
354
|
+
"""Describes a single event in the startup pattern of a power generation unit."""
|
|
355
|
+
|
|
356
|
+
# The name of the event. Each startup pattern must have a unique name. The STARTUP_OPERATION, BOILER_IGNITION,
|
|
357
|
+
# TURBINE_STARTUP, CONNECTION, and POWER_SUPPLY_OPERATION events are mandatory. At least one of the output set
|
|
358
|
+
# points 1-20 is required.
|
|
359
|
+
name: StartupEventType = attr(name="EventName")
|
|
360
|
+
|
|
361
|
+
# the time required to complete the event, within -99:59 to 99:59. The time is in the format "HH:MM" or "-HH:MM".
|
|
362
|
+
change_time: str = attr(
|
|
363
|
+
name="ChangeTime",
|
|
364
|
+
pattern=r"^([0-9]{2}:[0-5][0-9])|(-00:(([0-5][1-9])|([1-5][0-9])))|(-(([0-9][1-9])|([1-9][0-9])):[0-5][0-9])$",
|
|
365
|
+
)
|
|
366
|
+
|
|
367
|
+
# The output of the event, in kW
|
|
368
|
+
output_kw: int = capacity("Output", 0)
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
class StartupPattern(Payload, tag="StartupPatternInfo"):
|
|
372
|
+
"""Describes the startup pattern of a power generation unit.
|
|
373
|
+
|
|
374
|
+
Refers to the specific parameters or configurations associated with the process of starting up the unit for power
|
|
375
|
+
generation. This data type includes information such as the time duration, sequence of operations, and energy
|
|
376
|
+
consumption associated with starting up the unit from a standby or offline state to full operational capacity. The
|
|
377
|
+
startup pattern data provides insights into the efficiency, reliability, and cost implications of initiating power
|
|
378
|
+
generation from the unit, which are crucial for economic analysis, optimization, and decision-making in the energy
|
|
379
|
+
sector.
|
|
380
|
+
|
|
381
|
+
The contract type is mandatory for THERMAL (thermal power generation) power sources, except for ONLY_POWER_SUPPLY_1.
|
|
382
|
+
It cannot be set for other power sources.
|
|
383
|
+
"""
|
|
384
|
+
|
|
385
|
+
# The name of the startup pattern. These must be unique with respect to the power generation unit.
|
|
386
|
+
pattern_name: str = pattern_name("PatternName")
|
|
387
|
+
|
|
388
|
+
# The events associated with this startup pattern
|
|
389
|
+
events: List[StartupEvent] = element(tag="StartupPatternEvent", min_length=6, max_length=25)
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
class ShutdownEvent(Payload):
|
|
393
|
+
"""Describes a single event in the stop pattern of a power generation unit."""
|
|
394
|
+
|
|
395
|
+
# The name of the event. Each shutdown pattern must have a unique name. The DISCONNECTION event is mandatory. At
|
|
396
|
+
# least one of the output change points 1-20 is required.
|
|
397
|
+
name: StopEventType = attr(name="EventName")
|
|
398
|
+
|
|
399
|
+
# The time required to complete the event, within -99:59 to 00:00. The time is in the format "-HH:MM".
|
|
400
|
+
change_time: str = attr(
|
|
401
|
+
name="ChangeTime",
|
|
402
|
+
pattern=r"^00:00|(-00:(([0-5][1-9])|([1-5][0-9])))|(-(([0-9][1-9])|([1-9][0-9])):[0-5][0-9])$",
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
# The output of the event, in kW
|
|
406
|
+
output_kw: int = capacity("Output", 0)
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
class ShutdownPattern(Payload, tag="StopPatternInfo"):
|
|
410
|
+
"""Describes the stop pattern of a power generation unit.
|
|
411
|
+
|
|
412
|
+
Refers to the specific parameters or configurations associated with the process of shutting down the unit for power
|
|
413
|
+
generation. This data type includes information such as the time duration, sequence of operations, and energy
|
|
414
|
+
consumption associated with shutting down the unit from a standby or offline state to full operational capacity. The
|
|
415
|
+
shutdown pattern data provides insights into the efficiency, reliability, and cost implications of disconnecting
|
|
416
|
+
power generation from the unit, which are crucial for economic analysis, optimization, and decision-making in the
|
|
417
|
+
energy sector.
|
|
418
|
+
|
|
419
|
+
The contract type is mandatory for THERMAL (thermal power generation) power sources, except for ONLY_POWER_SUPPLY_1.
|
|
420
|
+
It cannot be set for other power sources.
|
|
421
|
+
"""
|
|
422
|
+
|
|
423
|
+
# The name of the stop pattern. These must be unique with respect to the power generation unit.
|
|
424
|
+
pattern_name: str = pattern_name("PatternName")
|
|
425
|
+
|
|
426
|
+
# The events associated with this stop pattern
|
|
427
|
+
events: List[ShutdownEvent] = element(tag="StopPatternEvent", min_length=2, max_length=21)
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
class ResourceData(Payload, tag="Resource"):
|
|
431
|
+
"""Contains the data common to both resource requests and responses."""
|
|
432
|
+
|
|
433
|
+
# The output bands associated with this resource
|
|
434
|
+
output_bands: Optional[List[OutputBand]] = wrapped(default=None, path="OutputBand", min_length=1, max_length=20)
|
|
435
|
+
|
|
436
|
+
# The switching outputs associated with this resource
|
|
437
|
+
switch_outputs: Optional[List[SwitchOutput]] = wrapped(
|
|
438
|
+
default=None, path="SwitchOutput", min_length=1, max_length=20
|
|
439
|
+
)
|
|
440
|
+
|
|
441
|
+
# The minimum EDC/LFC outputs associated with this resource
|
|
442
|
+
afc_minimum_outputs: Optional[List[AfcMinimumOutput]] = wrapped(
|
|
443
|
+
default=None, path="OutputRangeBelowAfc", min_length=1, max_length=20
|
|
444
|
+
)
|
|
445
|
+
|
|
446
|
+
# The startup patterns associated with this resource
|
|
447
|
+
startup_patterns: Optional[List[StartupPattern]] = wrapped(
|
|
448
|
+
default=None, path="StartupPattern", min_length=1, max_length=20
|
|
449
|
+
)
|
|
450
|
+
|
|
451
|
+
# The stop patterns associated with this resource
|
|
452
|
+
shutdown_patterns: Optional[List[ShutdownPattern]] = wrapped(
|
|
453
|
+
default=None, path="StopPattern", min_length=1, max_length=20
|
|
454
|
+
)
|
|
455
|
+
|
|
456
|
+
# Any comments attached to the resource
|
|
457
|
+
comments: Optional[str] = element(
|
|
458
|
+
default=None, tag="Comments", min_length=1, max_length=128, pattern=JAPANESE_ASCII_TEXT
|
|
459
|
+
)
|
|
460
|
+
|
|
461
|
+
# The MMS code of the business entity to which the registration applies
|
|
462
|
+
participant: str = participant_name("ParticipantName")
|
|
463
|
+
|
|
464
|
+
# A code that uniquely identifies the power generation unit
|
|
465
|
+
name: str = resource_name("ResourceName")
|
|
466
|
+
|
|
467
|
+
# How the power generation unit is used in the market
|
|
468
|
+
contract_type: ContractType = attr(name="ContractType")
|
|
469
|
+
|
|
470
|
+
# How the power generation unit produces electricity
|
|
471
|
+
resource_type: ResourceType = attr(name="ResourceType")
|
|
472
|
+
|
|
473
|
+
# The region in which the power generation unit is located and in which its energy will be traded
|
|
474
|
+
area: AreaCode = attr(name="Area")
|
|
475
|
+
|
|
476
|
+
# The date from which the power generation unit is available to trade
|
|
477
|
+
start: Date = attr(name="StartDate")
|
|
478
|
+
|
|
479
|
+
# The date until which the power generation unit is available to trade
|
|
480
|
+
end: Optional[Date] = attr(default=None, name="EndDate")
|
|
481
|
+
|
|
482
|
+
# The grid code of the power generation unit
|
|
483
|
+
system_code: str = system_code("SystemCode")
|
|
484
|
+
|
|
485
|
+
# An abbreviated name for the power generation unit
|
|
486
|
+
short_name: str = resource_short_name("ResourceShortName")
|
|
487
|
+
|
|
488
|
+
# The full name for the power generation unit
|
|
489
|
+
full_name: str = attr("ResourceLongName", min_length=1, max_length=50, pattern=JAPANESE_TEXT)
|
|
490
|
+
|
|
491
|
+
# The balancing group code. For non-VPP resources, it is required; for VPP resources, it is optional.
|
|
492
|
+
balancing_group: Optional[str] = attr(
|
|
493
|
+
default=None, name="BgCode", min_length=5, max_length=5, pattern=r"^[a-zA-Z0-9]{5}$"
|
|
494
|
+
)
|
|
495
|
+
|
|
496
|
+
# Whether or not the resource is primary control power. Refers to the ability of a power generation unit or system
|
|
497
|
+
# to rapidly adjust its output in response to fluctuations in demand or supply within the electrical grid. This
|
|
498
|
+
# primary control power is essential for maintaining the stability and frequency of the grid, especially during
|
|
499
|
+
# sudden changes in load or generation. Typically, primary control power is provided by resources such as
|
|
500
|
+
# hydroelectric plants, natural gas turbines, or other fast-responding power generation assets. If you want to
|
|
501
|
+
# allow market participation for the specified product category, you should set this to True.
|
|
502
|
+
has_primary: Optional[bool] = attr(default=None, name="Pri")
|
|
503
|
+
|
|
504
|
+
# The primary control power response time, in the format "HH:MM:SS". It refers to the time required for a power
|
|
505
|
+
# generation unit to adjust its output in response to changes in demand or supply within the electrical grid. A
|
|
506
|
+
# faster primary control power response time indicates that the unit can respond more quickly to fluctuations in
|
|
507
|
+
# frequency or load, thereby helping to maintain grid stability. This parameter is important for assessing the
|
|
508
|
+
# dynamic performance and reliability of the power system under varying operating conditions. Not applicable for
|
|
509
|
+
# power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_primary is True.
|
|
510
|
+
primary_response_time: Optional[str] = time("PriResponseTime", True)
|
|
511
|
+
|
|
512
|
+
# The primary control power continuous time, in the format "HH:MM:SS". It refers to the duration for which a
|
|
513
|
+
# primary control (such as frequency control) is continuously applied by a power generation unit. It represents the
|
|
514
|
+
# period during which the power plant or generating unit can sustain a continuous adjustment to its output to
|
|
515
|
+
# maintain system frequency within acceptable limits. This parameter is essential for ensuring grid stability and
|
|
516
|
+
# reliability by providing continuous support to the power system during frequency disturbances or fluctuations.
|
|
517
|
+
# Not applicable for power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_primary is True.
|
|
518
|
+
primary_continuous_time: Optional[str] = time("PriContinuousTime", True)
|
|
519
|
+
|
|
520
|
+
# The amount of electricity that a power provider can supply. It represents the quantity of electricity that can be
|
|
521
|
+
# reliably supplied by generating facilities or power supply equipment within a specific time frame. The value can
|
|
522
|
+
# be either 0 or within the range of 1000 to 9999999. It is mandatory if contract_type is not ONLY_POWER_SUPPLY_1
|
|
523
|
+
# and the power source type is not VPP. For other power source types, it must not be set. If resource_type is HYDRO
|
|
524
|
+
# or BATTERY, the value of this field must be less than or equal to the maximum of "rated output + GF width
|
|
525
|
+
# (outside rated output) - minimum output" or "(pumping/charging - output) - minimum output." If resource_type is
|
|
526
|
+
# THERMAL or HYDRO, the value of this field must be less than or equal to "rated output + GF width (outside rated
|
|
527
|
+
# output) - minimum output." If has_primary is "false," the value of this field must be 0.
|
|
528
|
+
primary_available_capacity_kW: Optional[int] = power_supply("PriMaximumSupplyQuantity", True)
|
|
529
|
+
|
|
530
|
+
# How the surplus capacity of a power generation unit can be utilized. For contract_type MARKET, POWER_SUPPLY_2,
|
|
531
|
+
# and ONLY_POWER_SUPPLY_1, this field must be set to NOT_AVAILABLE.
|
|
532
|
+
primary_remaining_reserve_utilization: RemainingReserveAvailability = attr(name="PriRemResvUtilization")
|
|
533
|
+
|
|
534
|
+
# The amount of surplus power that can be supplied for utilization, in kW. If primary_remaining_reserve_utilization
|
|
535
|
+
# is set to AVAILABLE_FOR_UP_ONLY, AVAILABLE_FOR_DOWN_ONLY, or AVAILABLE_FOR_UP_AND_DOWN, this field must be set.
|
|
536
|
+
# If primary_remaining_reserve_utilization is set to NOT_AVAILABLE, this field must not be set.
|
|
537
|
+
primary_remaining_reserve_capacity_kW: Optional[int] = capacity("PriRemResvMaximumSupplyQuantity", 0, True)
|
|
538
|
+
|
|
539
|
+
# Whether or not the resource is secondary 1 control power. Secondary control power, also known as secondary reserve
|
|
540
|
+
# or frequency containment reserve, refers to a type of reserve power that is used to stabilize the grid frequency
|
|
541
|
+
# in the event of sudden changes in supply or demand. It is one of the mechanisms used in the regulation of grid
|
|
542
|
+
# frequency and is typically provided by power plants or other sources that can quickly adjust their output in
|
|
543
|
+
# response to frequency deviations. The secondary control power is activated automatically and rapidly in response
|
|
544
|
+
# to frequency deviations detected by the grid's control system. If you want to allow market participation for the
|
|
545
|
+
# specified product category, you should set this to True.
|
|
546
|
+
has_secondary_1: Optional[bool] = attr(default=None, name="Sec1")
|
|
547
|
+
|
|
548
|
+
# The secondary 1 control power response time, in the format "HH:MM:SS". It refers to the time required for a power
|
|
549
|
+
# generation unit to adjust its output in response to changes in demand or supply within the electrical grid. A
|
|
550
|
+
# faster seoncdary 1 control power response time indicates that the unit can respond more quickly to fluctuations
|
|
551
|
+
# in frequency or load, thereby helping to maintain grid stability. This parameter is important for assessing the
|
|
552
|
+
# dynamic performance and reliability of the power system under varying operating conditions. Not applicable for
|
|
553
|
+
# power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_secondary_1 is True.
|
|
554
|
+
secondary_1_response_time: Optional[str] = time("Sec1ResponseTime", True)
|
|
555
|
+
|
|
556
|
+
# The secondary 1 control power continuous time, in the format "HH:MM:SS". It refers to the duration for which a
|
|
557
|
+
# secondary 1 control (such as frequency control) is continuously applied by a power generation unit. It represents
|
|
558
|
+
# the period during which the power plant or generating unit can sustain a continuous adjustment to its output to
|
|
559
|
+
# maintain system frequency within acceptable limits. This parameter is essential for ensuring grid stability and
|
|
560
|
+
# reliability by providing continuous support to the power system during frequency disturbances or fluctuations.
|
|
561
|
+
# Not applicable for power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_secondary_1
|
|
562
|
+
# is True.
|
|
563
|
+
secondary_1_continuous_time: Optional[str] = time("Sec1ContinuousTime", True)
|
|
564
|
+
|
|
565
|
+
# The amount of electricity that a power provider can supply. It represents the quantity of electricity that can be
|
|
566
|
+
# reliably supplied by generating facilities or power supply equipment within a specific time frame. The value can
|
|
567
|
+
# be either 0 or within the range of 1000 to 9999999. It is mandatory if the contract_type is not
|
|
568
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is not VPP. For other power source types, it must not be set. If
|
|
569
|
+
# resource_type is HYDRO or BATTERY, the value of this field must be less than or equal to the maximum of "rated
|
|
570
|
+
# output - minimum output" or "(pumping/charging - output) - minimum output." If resource_type is THERMAL or HYDRO,
|
|
571
|
+
# the value of this field must be less than or equal to "rated output - minimum output." If has_secondary_1 is
|
|
572
|
+
# False, the value of this field must be 0.
|
|
573
|
+
secondary_1_available_capacity_kW: Optional[int] = power_supply("Sec1MaximumSupplyQuantity", True)
|
|
574
|
+
|
|
575
|
+
# How the surplus capacity of a power generation unit can be utilized. For contract_type of MARKET, POWER_SUPPLY_2,
|
|
576
|
+
# and ONLY_POWER_SUPPLY_1, this field must be set to NOT_AVAILABLE.
|
|
577
|
+
secondary_1_remaining_reserve_utilization: RemainingReserveAvailability = attr(name="Sec1RemResvUtilization")
|
|
578
|
+
|
|
579
|
+
# The amount of surplus power that can be supplied for utilization, in kW. If
|
|
580
|
+
# secondary_1_remaining_reserve_utilization is set to AVAILABLE_FOR_UP_ONLY, AVAILABLE_FOR_DOWN_ONLY, or
|
|
581
|
+
# AVAILABLE_FOR_UP_AND_DOWN, this field must be set. If secondary_1_remaining_reserve_utilization is set to
|
|
582
|
+
# NOT_AVAILABLE, this field must not be set.
|
|
583
|
+
secondary_1_remaining_reserve_capacity_kW: Optional[int] = capacity("Sec1RemResvMaximumSupplyQuantity", 0, True)
|
|
584
|
+
|
|
585
|
+
# Whether or not the resource is secondary 2 control power. Secondary control power, also known as secondary reserve
|
|
586
|
+
# or frequency containment reserve, refers to a type of reserve power that is used to stabilize the grid frequency
|
|
587
|
+
# in the event of sudden changes in supply or demand. It is one of the mechanisms used in the regulation of grid
|
|
588
|
+
# frequency and is typically provided by power plants or other sources that can quickly adjust their output in
|
|
589
|
+
# response to frequency deviations. The secondary control power is activated automatically and rapidly in response
|
|
590
|
+
# to frequency deviations detected by the grid's control system. If you want to allow market participation for the
|
|
591
|
+
# specified product category, you should set this to True.
|
|
592
|
+
has_secondary_2: Optional[bool] = attr(default=None, name="Sec2")
|
|
593
|
+
|
|
594
|
+
# The secondary 2 control power response time, in the format "HH:MM:SS". It refers to the time required for a power
|
|
595
|
+
# generation unit to adjust its output in response to changes in demand or supply within the electrical grid. A
|
|
596
|
+
# faster seoncdary 2 control power response time indicates that the unit can respond more quickly to fluctuations
|
|
597
|
+
# in frequency or load, thereby helping to maintain grid stability. This parameter is important for assessing the
|
|
598
|
+
# dynamic performance and reliability of the power system under varying operating conditions. Not applicable for
|
|
599
|
+
# power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_secondary_2 is True.
|
|
600
|
+
secondary_2_response_time: Optional[str] = time("Sec2ResponseTime", True)
|
|
601
|
+
|
|
602
|
+
# The secondary 2 control power continuous time, in the format "HH:MM:SS". It refers to the duration for which a
|
|
603
|
+
# secondary 2 control (such as frequency control) is continuously applied by a power generation unit. It represents
|
|
604
|
+
# the period during which the power plant or generating unit can sustain a continuous adjustment to its output to
|
|
605
|
+
# maintain system frequency within acceptable limits. This parameter is essential for ensuring grid stability and
|
|
606
|
+
# reliability by providing continuous support to the power system during frequency disturbances or fluctuations.
|
|
607
|
+
# Not applicable for power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_secondary_2
|
|
608
|
+
# is True.
|
|
609
|
+
secondary_2_continuous_time: Optional[str] = time("Sec2ContinuousTime", True)
|
|
610
|
+
|
|
611
|
+
# The secondary 2 control power down time, in the format "HH:MM:SS". Not applicable for power sources with
|
|
612
|
+
# contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_secondary_2 is True.
|
|
613
|
+
secondary_2_downtime: Optional[str] = time("Sec2DownTime", True)
|
|
614
|
+
|
|
615
|
+
# The amount of electricity that a power provider can supply. It represents the quantity of electricity that can be
|
|
616
|
+
# reliably supplied by generating facilities or power supply equipment within a specific time frame. The value can
|
|
617
|
+
# be either 0 or within the range of 1000 to 9999999. It is mandatory if the contract_type is not
|
|
618
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is not VPP. For other power source types, it must not be set. The value of
|
|
619
|
+
# this field must be less than or equal to the "rated output." If has_secondary_2 is "false," the value of this
|
|
620
|
+
# field must be 0.
|
|
621
|
+
secondary_2_available_capacity_kW: Optional[int] = power_supply("Sec2MaximumSupplyQuantity", True)
|
|
622
|
+
|
|
623
|
+
# How the surplus capacity of a power generation unit can be utilized. For contract_type of MARKET, POWER_SUPPLY_2,
|
|
624
|
+
# and ONLY_POWER_SUPPLY_1, this field must be set to NOT_AVAILABLE.
|
|
625
|
+
secondary_2_remaining_reserve_utilization: RemainingReserveAvailability = attr(name="Sec2RemResvUtilization")
|
|
626
|
+
|
|
627
|
+
# The amount of surplus power that can be supplied for utilization, in kW. If
|
|
628
|
+
# secondary_2_remaining_reserve_utilization is set to AVAILABLE_FOR_UP_ONLY, AVAILABLE_FOR_DOWN_ONLY, or
|
|
629
|
+
# AVAILABLE_FOR_UP_AND_DOWN, this field must be set. If secondary_2_remaining_reserve_utilization is set to
|
|
630
|
+
# NOT_AVAILABLE, this field must not be set.
|
|
631
|
+
secondary_2_remaining_reserve_capacity_kW: Optional[int] = capacity("Sec2RemResvMaximumSupplyQuantity", 0, True)
|
|
632
|
+
|
|
633
|
+
# Whether or not the resource is tertairy 1 control power. Tertiary control power refers to the capacity of a
|
|
634
|
+
# power generation unit or system to provide regulation services at the tertiary level of frequency control in
|
|
635
|
+
# an electrical grid. In an electrical grid, frequency regulation is typically categorized into primary, secondary,
|
|
636
|
+
# and tertiary control levels, each serving a specific role in maintaining grid stability. Tertiary control,
|
|
637
|
+
# also known as frequency containment reserve (FCR), operates on a slower timescale compared to primary and
|
|
638
|
+
# secondary control. It helps to fine-tune grid frequency over longer periods, usually several minutes to hours,
|
|
639
|
+
# by adjusting the output of power generation units. The tertiary control power is often provided by power plants
|
|
640
|
+
# that can adjust their output relatively quickly but are not as fast as those providing primary and secondary
|
|
641
|
+
# control. This control level helps to ensure that the grid frequency remains within acceptable limits, thus
|
|
642
|
+
# maintaining grid stability and reliability.If you want to allow market participation for the specified product
|
|
643
|
+
# category, you should set this to True.
|
|
644
|
+
has_tertiary_1: Optional[bool] = attr(default=None, name="Ter1")
|
|
645
|
+
|
|
646
|
+
# The tertiary 1 control power response time, in the format "HH:MM:SS". It refers to the time required for a power
|
|
647
|
+
# generation unit to adjust its output in response to changes in demand or supply within the electrical grid. A
|
|
648
|
+
# faster tertiary 1 control power response time indicates that the unit can respond more quickly to fluctuations
|
|
649
|
+
# in frequency or load, thereby helping to maintain grid stability. This parameter is important for assessing the
|
|
650
|
+
# dynamic performance and reliability of the power system under varying operating conditions. Not applicable for
|
|
651
|
+
# power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_tertiary_1 is True.
|
|
652
|
+
tertiary_1_response_time: Optional[str] = time("Ter1ResponseTime", True)
|
|
653
|
+
|
|
654
|
+
# The tertiary 1 control power continuous time, in the format "HH:MM:SS". It refers to the duration for which a
|
|
655
|
+
# tertiary 1 control (such as frequency control) is continuously applied by a power generation unit. It represents
|
|
656
|
+
# the period during which the power plant or generating unit can sustain a continuous adjustment to its output to
|
|
657
|
+
# maintain system frequency within acceptable limits. This parameter is essential for ensuring grid stability and
|
|
658
|
+
# reliability by providing continuous support to the power system during frequency disturbances or fluctuations.
|
|
659
|
+
# Not applicable for power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_tertiary_1 is
|
|
660
|
+
# True.
|
|
661
|
+
tertiary_1_continuous_time: Optional[str] = time("Ter1ContinuousTime", True)
|
|
662
|
+
|
|
663
|
+
# The amount of electricity that a power provider can supply. It represents the quantity of electricity that can be
|
|
664
|
+
# reliably supplied by generating facilities or power supply equipment within a specific time frame. The value can
|
|
665
|
+
# be either 0 or within the range of 1000 to 9999999. It is mandatory if the contract_type is not
|
|
666
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is not VPP. For other power source types, it must not be set. If
|
|
667
|
+
# resource_type is HYDRO or BATTERY, the value of this field must be less than or equal to "rated output +
|
|
668
|
+
# (pumping/charging - output)." If resource_type is THERMAL or HYDRO, the value of this field must be less than or
|
|
669
|
+
# equal to "rated output." If has_tertiary_1 is "false," the value of this field must be 0.
|
|
670
|
+
tertiary_1_available_capacity_kW: Optional[int] = power_supply("Ter1MaximumSupplyQuantity", True)
|
|
671
|
+
|
|
672
|
+
# How the surplus capacity of a power generation unit can be utilized. For contract_type of MARKET, POWER_SUPPLY_2,
|
|
673
|
+
# and ONLY_POWER_SUPPLY_1, this field must be set to NOT_AVAILABLE.
|
|
674
|
+
tertiary_1_remaining_reserve_utilization: RemainingReserveAvailability = attr(name="Ter1RemResvUtilization")
|
|
675
|
+
|
|
676
|
+
# The amount of surplus power that can be supplied for utilization, in kW. If
|
|
677
|
+
# tertiary_1_remaining_reserve_utilization is set to AVAILABLE_FOR_UP_ONLY, AVAILABLE_FOR_DOWN_ONLY, or
|
|
678
|
+
# AVAILABLE_FOR_UP_AND_DOWN, this field must be set. If tertiary_1_remaining_reserve_utilization is set to
|
|
679
|
+
# NOT_AVAILABLE, this field must not be set.
|
|
680
|
+
tertiary_1_remaining_reserve_capacity_kW: Optional[int] = capacity("Ter1RemResvMaximumSupplyQuantity", 0, True)
|
|
681
|
+
|
|
682
|
+
# Whether or not the resource is tertairy 2 control power. Tertiary control power refers to the capacity of a
|
|
683
|
+
# power generation unit or system to provide regulation services at the tertiary level of frequency control in
|
|
684
|
+
# an electrical grid. In an electrical grid, frequency regulation is typically categorized into primary, secondary,
|
|
685
|
+
# and tertiary control levels, each serving a specific role in maintaining grid stability. Tertiary control,
|
|
686
|
+
# also known as frequency containment reserve (FCR), operates on a slower timescale compared to primary and
|
|
687
|
+
# secondary control. It helps to fine-tune grid frequency over longer periods, usually several minutes to hours,
|
|
688
|
+
# by adjusting the output of power generation units. The tertiary control power is often provided by power plants
|
|
689
|
+
# that can adjust their output relatively quickly but are not as fast as those providing primary and secondary
|
|
690
|
+
# control. This control level helps to ensure that the grid frequency remains within acceptable limits, thus
|
|
691
|
+
# maintaining grid stability and reliability.If you want to allow market participation for the specified product
|
|
692
|
+
# category, you should set this to True.
|
|
693
|
+
has_tertiary_2: Optional[bool] = attr(default=None, name="Ter2")
|
|
694
|
+
|
|
695
|
+
# The tertiary 2 control power response time, in the format "HH:MM:SS". It refers to the time required for a power
|
|
696
|
+
# generation unit to adjust its output in response to changes in demand or supply within the electrical grid. A
|
|
697
|
+
# faster tertiary 2 control power response time indicates that the unit can respond more quickly to fluctuations
|
|
698
|
+
# in frequency or load, thereby helping to maintain grid stability. This parameter is important for assessing the
|
|
699
|
+
# dynamic performance and reliability of the power system under varying operating conditions. Not applicable for
|
|
700
|
+
# power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_tertiary_2 is True.
|
|
701
|
+
tertiary_2_response_time: Optional[str] = time("Ter2ResponseTime", True)
|
|
702
|
+
|
|
703
|
+
# The tertiary 2 control power continuous time, in the format "HH:MM:SS". It refers to the duration for which a
|
|
704
|
+
# tertiary 2 control (such as frequency control) is continuously applied by a power generation unit. It represents
|
|
705
|
+
# the period during which the power plant or generating unit can sustain a continuous adjustment to its output to
|
|
706
|
+
# maintain system frequency within acceptable limits. This parameter is essential for ensuring grid stability and
|
|
707
|
+
# reliability by providing continuous support to the power system during frequency disturbances or fluctuations.
|
|
708
|
+
# Not applicable for power sources with contract_type of ONLY_POWER_SUPPLY_1. Mandatory only if has_tertiary_2 is
|
|
709
|
+
# True.
|
|
710
|
+
tertiary_2_continuous_time: Optional[str] = time("Ter2ContinuousTime", True)
|
|
711
|
+
|
|
712
|
+
# The amount of electricity that a power provider can supply. It represents the quantity of electricity that can be
|
|
713
|
+
# reliably supplied by generating facilities or power supply equipment within a specific time frame. The value can
|
|
714
|
+
# be either 0 or within the range of 1000 to 9999999. It is mandatory if the contract_type is not
|
|
715
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is not VPP. For other power source types, it must not be set. If
|
|
716
|
+
# resource_type is HYDRO or BATTERY, the value of this field must be less than or equal to "rated output +
|
|
717
|
+
# (pumping/charging - output)." If resource_type is THERMAL or HYDRO, the value of this field must be less than or
|
|
718
|
+
# equal to "rated output." If has_tertiary_2 is "false," the value of this field must be 0.
|
|
719
|
+
tertiary_2_available_capacity_kW: Optional[int] = power_supply("Ter2MaximumSupplyQuantity", True)
|
|
720
|
+
|
|
721
|
+
# How the surplus capacity of a power generation unit can be utilized. For contract_type of MARKET, POWER_SUPPLY_2,
|
|
722
|
+
# and ONLY_POWER_SUPPLY_1, this field must be set to NOT_AVAILABLE.
|
|
723
|
+
tertiary_2_remaining_reserve_utilization: RemainingReserveAvailability = attr(name="Ter2RemResvUtilization")
|
|
724
|
+
|
|
725
|
+
# The amount of surplus power that can be supplied for utilization, in kW. If
|
|
726
|
+
# tertiary_2_remaining_reserve_utilization is set to AVAILABLE_FOR_UP_ONLY, AVAILABLE_FOR_DOWN_ONLY, or
|
|
727
|
+
# AVAILABLE_FOR_UP_AND_DOWN, this field must be set. If tertiary_2_remaining_reserve_utilization is set to
|
|
728
|
+
# NOT_AVAILABLE, this field must not be set.
|
|
729
|
+
tertiary_2_remaining_reserve_capacity_kW: Optional[int] = capacity("Ter2RemResvMaximumSupplyQuantity", 0, True)
|
|
730
|
+
|
|
731
|
+
# Primary-Secondary 1 command-and-control and monitoring method. Refers to the methodology or system utilized for
|
|
732
|
+
# regulating and overseeing power generation units' operations in response to external commands or signals. This
|
|
733
|
+
# method encompasses the process by which instructions are transmitted to power generation units, and their
|
|
734
|
+
# performance is monitored to ensure compliance with these instructions. If has_secondary_1 is set to True, then
|
|
735
|
+
# it must be set to DEDICATED_LINE. At least one of the following combinations must be set:
|
|
736
|
+
# primary_secondary_1_control_method
|
|
737
|
+
# secondary_2_tertiary_control_method
|
|
738
|
+
primary_secondary_1_control_method: Optional[CommandMonitorMethod] = attr(
|
|
739
|
+
default=None, name="PriSec1CommandOperationMethod"
|
|
740
|
+
)
|
|
741
|
+
|
|
742
|
+
# Secondary 2-Tertiary command-and-control and monitoring method. Refers to the methodology or system utilized for
|
|
743
|
+
# regulating and overseeing power generation units' operations in response to external commands or signals. This
|
|
744
|
+
# method encompasses the process by which instructions are transmitted to power generation units, and their
|
|
745
|
+
# performance is monitored to ensure compliance with these instructions.
|
|
746
|
+
secondary_2_tertiary_control_method: Optional[CommandMonitorMethod] = attr(
|
|
747
|
+
default=None, name="Sec2Ter1Ter2CommandOperationMethod"
|
|
748
|
+
)
|
|
749
|
+
|
|
750
|
+
# The signal type for the power generation unit
|
|
751
|
+
signal_type: SignalType = attr("SignalType")
|
|
752
|
+
|
|
753
|
+
# Method determinining how the baseline is set for a power generation unit. The setting method is available when
|
|
754
|
+
# the contract type is not ONLY_POWER_SUPPLY_1 and at least one of the following is True: has_primary,
|
|
755
|
+
# has_secondary_1, has_secondary_2 or has_tertiary_1. Additionally, it can only be set when resource_type is
|
|
756
|
+
# VPP_GEN, VPP_GEN_AND_DEM or VPP_DEM. It's mandatory in these cases and cannot be set for other power sources.
|
|
757
|
+
baseline_setting_method: Optional[BaseLineSettingMethod] = attr(default=None, name="BaselineSettingMethod")
|
|
758
|
+
|
|
759
|
+
# The presence or absences of a POWER_SUPPLY_1 contract. Applies only if the area is Okinawa, in which case it is
|
|
760
|
+
# mandatory. Otherwise, it should not be set.
|
|
761
|
+
has_contract: Optional[BooleanFlag] = attr(default=None, name="ContractExistence")
|
|
762
|
+
|
|
763
|
+
# The maximum bid price for POWER_SUPPLY_1 power, in JPY/kW/hr
|
|
764
|
+
declared_maximum_unit_price_kWh: Annotated[Decimal, price("DeclaredMaximumUnitPrice", True)]
|
|
765
|
+
|
|
766
|
+
# Presence of voltage regulation function.
|
|
767
|
+
voltage_adjustable: Optional[BooleanFlag] = attr(default=None, name="VoltageAdjustment")
|
|
768
|
+
|
|
769
|
+
# Address of the resource. For power sources categorized under POWER_SUPPLY_1, this field is optional, while for
|
|
770
|
+
# all other power sources, it is mandatory.
|
|
771
|
+
address: Optional[str] = address("Address", True)
|
|
772
|
+
|
|
773
|
+
# The first part of the phone number of the payee. For power sources categorized under POWER_SUPPLY_1, this field
|
|
774
|
+
# is optional, while for all other power sources, it is mandatory.
|
|
775
|
+
phone_1: Optional[str] = phone("PayeePhonePart1", True, True)
|
|
776
|
+
|
|
777
|
+
# The second part of the phone number of the payee. For power sources categorized under POWER_SUPPLY_1, this field
|
|
778
|
+
# is optional, while for all other power sources, it is mandatory.
|
|
779
|
+
phone_2: Optional[str] = phone("PayeePhonePart2", False, True)
|
|
780
|
+
|
|
781
|
+
# The third part of the phone number of the payee. For power sources categorized under POWER_SUPPLY_1, this field
|
|
782
|
+
# is optional, while for all other power sources, it is mandatory.
|
|
783
|
+
phone_3: Optional[str] = phone("PayeePhonePart3", False, True)
|
|
784
|
+
|
|
785
|
+
# The VEN ID for this power generation unit. If secondary_2_tertiary_control_method is SIMPLE_COMMAND, this field
|
|
786
|
+
# is mandatory. Otherwise, it may not be set.
|
|
787
|
+
ven_id: Optional[str] = attr(default=None, name="VenId", min_length=1, max_length=64, pattern=ASCII_TEXT)
|
|
788
|
+
|
|
789
|
+
# The market context for this power generation unit. If secondary_2_tertiary_control_method is SIMPLE_COMMAND, this
|
|
790
|
+
# field is mandatory. Otherwise, it may not be set.
|
|
791
|
+
market_context: Optional[str] = attr(
|
|
792
|
+
default=None, name="MarketContext", min_length=1, max_length=256, pattern=ASCII_TEXT
|
|
793
|
+
)
|
|
794
|
+
|
|
795
|
+
# The model designation associated with this power generation unit.
|
|
796
|
+
model: Optional[str] = attr(
|
|
797
|
+
default=None, name="ModelName", min_length=1, max_length=50, pattern=JAPANESE_ASCII_TEXT
|
|
798
|
+
)
|
|
799
|
+
|
|
800
|
+
# Rated capacity, in kVA. Indicates the maximum power output that a generator or power plant can sustain over a
|
|
801
|
+
# prolonged period without exceeding its design limits. If the contract_type is anything other than
|
|
802
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is mandatory. Otherwise, it cannot be set.
|
|
803
|
+
rated_capacity_kVA: Optional[int] = capacity("RatedCapacity", 1000, True)
|
|
804
|
+
|
|
805
|
+
# Rated voltage, in kV. Refers to the nominal voltage level at which a power generation unit is designed to operate.
|
|
806
|
+
# If the contract_type is anything other than ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is
|
|
807
|
+
# mandatory. Otherwise, it cannot be set.
|
|
808
|
+
rated_voltage_kV: Annotated[Decimal, attr(default=None, name="RatedVoltage", ge=0.0, le=1000.0, decimal_places=1)]
|
|
809
|
+
|
|
810
|
+
# Continuous operation voltage as a percentage of the rated voltage. Refers to the voltage level at which a power
|
|
811
|
+
# generation unit can operate continuously without exceeding its design limits. If the contract_type is anything
|
|
812
|
+
# other than ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is mandatory. Otherwise, it cannot be set.
|
|
813
|
+
continuous_operation_voltage: Annotated[Decimal, percentage("ContinuousOperationVoltage", True)]
|
|
814
|
+
|
|
815
|
+
# Rated power factor. Refers to the ratio of real power to apparent power in an electrical system. It indicates the
|
|
816
|
+
# efficiency of power transfer between the power generation unit and the electrical grid. If the contract_type is
|
|
817
|
+
# anything other than ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is mandatory. Otherwise, it
|
|
818
|
+
# cannot be set.
|
|
819
|
+
rated_power_factor: Annotated[Decimal, percentage("RatedPowerFactor", True)]
|
|
820
|
+
|
|
821
|
+
# Frequency of the power generation unit. Refers to the number of cycles per second at which the power generation
|
|
822
|
+
# unit operates. It is an essential parameter for ensuring the synchronization of power generation units within the
|
|
823
|
+
# electrical grid. If the contract_type is anything other than ONLY_POWER_SUPPLY_1 and resource_type is not VPP,
|
|
824
|
+
# this field is mandatory. Otherwise, it cannot be set.
|
|
825
|
+
frequency: Optional[Frequency] = attr(default=None, name="Frequency")
|
|
826
|
+
|
|
827
|
+
# The internal efficiency of the power generation unit. If the contract_type is anything other than
|
|
828
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is mandatory. Otherwise, it cannot be set.
|
|
829
|
+
internal_efficiency: Optional[str] = attr(
|
|
830
|
+
default=None, name="InPlantRate", min_length=1, max_length=100, pattern=JAPANESE_ASCII_TEXT
|
|
831
|
+
)
|
|
832
|
+
|
|
833
|
+
# The lower bound of the continuous operation frequency. Refers to the minimum frequency at which a power
|
|
834
|
+
# generation unit or system can operate continuously without experiencing issues or damage. In electrical power
|
|
835
|
+
# systems, frequency is a crucial parameter that needs to be maintained within a specified range for stable and
|
|
836
|
+
# reliable operation. The lower limit of continuous operation frequency ensures that the system can sustain its
|
|
837
|
+
# operation without dropping below a certain frequency threshold, which could lead to equipment failure or
|
|
838
|
+
# instability in the power grid.
|
|
839
|
+
minimum_continuous_operation_frequency: Annotated[
|
|
840
|
+
Decimal, continuous_operation_frequency("ContinuousOperationFrequencyLower", True)
|
|
841
|
+
]
|
|
842
|
+
|
|
843
|
+
# The upper bound of the continuous operation frequency. Refers to the maximum frequency at which a power generation
|
|
844
|
+
# unit or system can operate continuously without experiencing issues or damage. In electrical power systems,
|
|
845
|
+
# frequency is a crucial parameter that needs to be maintained within a specified range for stable and reliable
|
|
846
|
+
# operation. The upper limit of continuous operation frequency ensures that the system can sustain its operation
|
|
847
|
+
# without exceeding a certain frequency threshold, which could lead to equipment failure or instability in the power
|
|
848
|
+
# grid. If contract_type is anything other than ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is
|
|
849
|
+
# mandatory. Otherwise, it cannot be set.
|
|
850
|
+
maximum_continuous_operation_frequency: Annotated[
|
|
851
|
+
Decimal, continuous_operation_frequency("ContinuousOperationFrequencyUpper", True)
|
|
852
|
+
]
|
|
853
|
+
|
|
854
|
+
# Whether or not the power generation unit can be started in black start mode. Black start refers to the process of
|
|
855
|
+
# restarting a power generation unit or system without relying on external power sources. It is a critical
|
|
856
|
+
# capability for power plants to restore electricity supply after a blackout or grid failure. If contract_type is
|
|
857
|
+
# anything other than ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is mandatory. Otherwise, it
|
|
858
|
+
# cannot be set.
|
|
859
|
+
can_black_start: Optional[BooleanFlag] = attr(default=None, name="BlackStart")
|
|
860
|
+
|
|
861
|
+
# The rated output of the power generation unit, in kW. If contract_type is anything other than ONLY_POWER_SUPPLY_1
|
|
862
|
+
# and resource_type is not VPP, this field is mandatory. Otherwise, it cannot be set.
|
|
863
|
+
rated_output_kW: Optional[int] = capacity("RatedOutput", 0, True)
|
|
864
|
+
|
|
865
|
+
# The minimum output of the power generation unit, in kW. For power sources with contract_type of
|
|
866
|
+
# ONLY_POWER_SUPPLY_1, this field cannot be set. If resource_type is not VPP, it must be set. For VPP, the value
|
|
867
|
+
# should be set to 0.
|
|
868
|
+
minimum_output_kW: Optional[int] = capacity("MinimumOutput", 0, True)
|
|
869
|
+
|
|
870
|
+
# The maximum authorized output of the power generation unit, in kW. It refers to the maximum amount of electricity
|
|
871
|
+
# that a power generation unit is allowed to supply when operating normally. It represents the maximum power output
|
|
872
|
+
# capacity permitted by the utility company or regulatory authority. If contract_type is anything other than
|
|
873
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is not VPP, this field is mandatory. Otherwise, it cannot be set.
|
|
874
|
+
maximum_output_authorized_kW: Optional[int] = capacity("AuthorizedMaximumOutput", 0, True)
|
|
875
|
+
|
|
876
|
+
# How power is generated by thermal power generation units. If contract_type is anything other than
|
|
877
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is THERMAL, then this field is mandatory. For other types of power
|
|
878
|
+
# generation units, this field should not be set.
|
|
879
|
+
thermal_type: Optional[ThermalType] = attr(default=None, name="ThermalType")
|
|
880
|
+
|
|
881
|
+
# The amount of electrical energy that can be stored and discharged by a battery system, in kWh. If contract_type
|
|
882
|
+
# is anything other than ONLY_POWER_SUPPLY_1 and resource_type is BATTERY, then this field is mandatory. For other
|
|
883
|
+
# types of power generation units, this field should not be set.
|
|
884
|
+
battery_capacity_kWh: Optional[int] = capacity("BatteryCapacity", 1000, True)
|
|
885
|
+
|
|
886
|
+
# Whether or not this power source has pump-up/charging capability. If contract_type is anything other than
|
|
887
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is PUMP or BATTERY, then this field is mandatory. For other types of power
|
|
888
|
+
# generation units, this field should not be set.
|
|
889
|
+
has_pump_charging: Optional[BooleanFlag] = attr(default=None, name="PumpCharging")
|
|
890
|
+
|
|
891
|
+
# Capability of adjusting the charging process or operation speed of a system. If contract_type is anything other
|
|
892
|
+
# than ONLY_POWER_SUPPLY_1 and resource_type is PUMP or BATTERY, then this field is mandatory. For other types of
|
|
893
|
+
# power generation units, this field should not be set.
|
|
894
|
+
has_variable_speed_operation: Optional[BooleanFlag] = attr(default=None, name="VariableSpeedOperation")
|
|
895
|
+
|
|
896
|
+
# The output power during the generation or discharge process, in kW. If contract_type is anything other than
|
|
897
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is PUMP or BATTERY, then this field is mandatory. For other types of power
|
|
898
|
+
# generation units, this field should not be set.
|
|
899
|
+
discharging_output_kW: Optional[int] = capacity("DischargingOutput", 0, True)
|
|
900
|
+
|
|
901
|
+
# The time it takes for power generation or storage system to transition from the command to generate or discharge
|
|
902
|
+
# power to the state of being in parallel operation, where it is actively supplying or absorbing power to/from the
|
|
903
|
+
# grid or another system. If contract_type is anything other than ONLY_POWER_SUPPLY_1 and resource_type is PUMP or
|
|
904
|
+
# BATTERY, then this field is mandatory. For other types of power generation units, this field should not be set.
|
|
905
|
+
discharging_time_min: Optional[int] = minute("DischargingTime", True)
|
|
906
|
+
|
|
907
|
+
# The output power during the charging process, in kW. If contract_type is anything other than ONLY_POWER_SUPPLY_1
|
|
908
|
+
# and resource_type is PUMP or BATTERY, then this field is mandatory. For other types of power generation units,
|
|
909
|
+
# this field should not be set.
|
|
910
|
+
charging_output_kw: Optional[int] = capacity("ChargingOutput", 0, True)
|
|
911
|
+
|
|
912
|
+
# The time it takes for power generation or storage system to transition from the command to charge to the state of
|
|
913
|
+
# being in parallel operation, where it is actively supplying or absorbing power to/from the grid or another system.
|
|
914
|
+
# If contract_type is anything other than ONLY_POWER_SUPPLY_1 and resource_type is PUMP or BATTERY, then this field
|
|
915
|
+
# is mandatory. For other types of power generation units, this field should not be set.
|
|
916
|
+
charging_time_min: Optional[int] = minute("ChargingTime", True)
|
|
917
|
+
|
|
918
|
+
# The duration during which the power generation unit, such as a battery storage system, is capable of operating at
|
|
919
|
+
# its maximum generation or discharge capacity without any constraints or limitations, in hours. If contract_type
|
|
920
|
+
# is anything other than ONLY_POWER_SUPPLY_1 and resource_type is PUMP or BATTERY, then this field is mandatory.
|
|
921
|
+
# For other types of power generation units, this field should not be set.
|
|
922
|
+
full_generation_time_hr: Annotated[Decimal, hour("FullPowerGenerationTime", True)]
|
|
923
|
+
|
|
924
|
+
# The duration for which the power generation unit can operate continuously without interruption or the need for
|
|
925
|
+
# rest or maintenance, in hours. If contract_type is anything other than ONLY_POWER_SUPPLY_1, and resource_type is
|
|
926
|
+
# PUMP, then this field is mandatory. For other types of power generation units, this field should not be set.
|
|
927
|
+
continuous_operation_time: Annotated[Decimal, hour("ContinuousOperationTime", True)]
|
|
928
|
+
|
|
929
|
+
# The maximum duration for which the power generation unit can continue operating under specific limitations or
|
|
930
|
+
# constraints, in hours. This could include factors such as environmental conditions, equipment maintenance
|
|
931
|
+
# requirements, or regulatory restrictions. If contract_type is ONLY_POWER_SUPPLY_1, then this field cannot be
|
|
932
|
+
# set. Otherwise, this field is optional.
|
|
933
|
+
limitd_continuous_operation_time: Annotated[Decimal, hour("ContinuousOperationTimeLimited", True)]
|
|
934
|
+
|
|
935
|
+
# Phase locking is a method used in power systems to synchronize the phase angles of multiple alternating current
|
|
936
|
+
# (AC) sources. In this mode of operation, the frequency and phase of the generated voltage are adjusted to match
|
|
937
|
+
# those of the grid or another AC power source. This ensures that the AC output from the power source is in phase
|
|
938
|
+
# with the grid, allowing for seamless integration and stable operation. If contract_type is anything other than
|
|
939
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is PUMP or HYDRO, then this field is mandatory. For other types of power
|
|
940
|
+
# generation units, this field should not be set.
|
|
941
|
+
is_phase_locked: Optional[BooleanFlag] = attr(default=None, name="PhaseModifyingOperation")
|
|
942
|
+
|
|
943
|
+
# Quantity of water consumed, in cubic meters per second. If contract_type is anything other than
|
|
944
|
+
# ONLY_POWER_SUPPLY_1 and resource_type is PUMP or HYDRO, then this field is mandatory. For other types of power
|
|
945
|
+
# generation units, this field should not be set.
|
|
946
|
+
water_usage_m3_sec: Optional[int] = capacity("AmountOfWaterUsed", 0, True)
|
|
947
|
+
|
|
948
|
+
# Reservoir capacity in cubic decameters. If contract_type is anything other than ONLY_POWER_SUPPLY_1 and
|
|
949
|
+
# resource_type is PUMP or HYDRO, then this field is mandatory. For other types of power generation units, this
|
|
950
|
+
# field should not be set.
|
|
951
|
+
reservior_capacity_dam3: Optional[int] = capacity("ReservoirCapacity", 0, True)
|
|
952
|
+
|
|
953
|
+
# The volume of water that enters a reservoir or water storage facility over a specific period of time, in cubic
|
|
954
|
+
# meters per second. If contract_type is anything other than ONLY_POWER_SUPPLY_1 and resource_type is PUMP or HYDRO,
|
|
955
|
+
# then this field is mandatory. For other types of power generation units, this field should not be set.
|
|
956
|
+
inflow_amount_m3_sec: Optional[int] = capacity("InflowAmount", 0, True)
|
|
957
|
+
|
|
958
|
+
# The sustainable power output that a power generation unit can maintain over a specific duration without
|
|
959
|
+
# interruption, in kW. This metric is crucial for assessing the reliability and capacity of a power generation
|
|
960
|
+
# system to meet demand consistently over time. If contract_type is anything other than ONLY_POWER_SUPPLY_1 and
|
|
961
|
+
# resource_type is PUMP or HYDRO, then this field is mandatory. For other types of power generation units, this
|
|
962
|
+
# field should not be set.
|
|
963
|
+
continuous_output_kW: Optional[int] = capacity("ContinuousOperationOutput", 0, True)
|
|
964
|
+
|
|
965
|
+
# The ability of hydroelectric power stations or pumped-storage hydroelectric plants to supply power, in kW. It
|
|
966
|
+
# represents the capacity of these facilities to generate electricity using water resources. If contract_type is
|
|
967
|
+
# anything other than ONLY_POWER_SUPPLY_1 and resource_type is PUMP or HYDRO, then this field is mandatory. For
|
|
968
|
+
# other types of power generation units, this field should not be set.
|
|
969
|
+
pumped_supply_capacity_kW: Optional[int] = capacity("PumpedSupply", 0, True)
|
|
970
|
+
|
|
971
|
+
# Whether operation of the Fuel Cell Balance of Plant (FCB) system is supported. The FCB is a key component of a
|
|
972
|
+
# fuel cell system responsible for managing various auxiliary functions necessary for the operation of the fuel
|
|
973
|
+
# cell stack. This includes tasks such as managing the flow of reactants (hydrogen and oxygen), controlling
|
|
974
|
+
# temperature and humidity levels within the fuel cell stack, and providing power conditioning for the electrical
|
|
975
|
+
# output of the fuel cell. FCB operation is essential for ensuring the efficient and reliable performance of the
|
|
976
|
+
# overall fuel cell system. If contract_type is anything other than ONLY_POWER_SUPPLY_1, and resource_type is
|
|
977
|
+
# THERMAL, then this field is mandatory. For other types of power generation units, this field should not be set.
|
|
978
|
+
has_fcb_operation: Optional[BooleanFlag] = attr(default=None, name="FcbOperation")
|
|
979
|
+
|
|
980
|
+
# Whether the power plant or generating facility can supply a greater amount of electrical power than its normal
|
|
981
|
+
# output. In this mode, the power plant needs to provide additional power to meet increased demand or to ensure
|
|
982
|
+
# the stability of the electrical grid. If contract_type is anything other than ONLY_POWER_SUPPLY_1, and
|
|
983
|
+
# resource_type is THERMAL, then this field is mandatory. For other types of power generation units, this field
|
|
984
|
+
# should not be set.
|
|
985
|
+
has_overpower_operation: Optional[BooleanFlag] = attr(default=None, name="OverPowerOperation")
|
|
986
|
+
|
|
987
|
+
# Whether the power generation facility at its maximum capacity to meet peak electricity demand. During peak hours,
|
|
988
|
+
# when electricity demand is at its highest, power plants may operate in peak mode to provide the necessary
|
|
989
|
+
# electricity to the grid. If contract_type is anything other than ONLY_POWER_SUPPLY_1, and resource_type is
|
|
990
|
+
# THERMAL, then this field is mandatory. For other types of power generation units, this field should not be set.
|
|
991
|
+
has_peak_mode_operation: Optional[BooleanFlag] = attr(default=None, name="PeakModeOperation")
|
|
992
|
+
|
|
993
|
+
# Whether the power generation facility has a decision support system. If contract_type is anything other than
|
|
994
|
+
# ONLY_POWER_SUPPLY_1, and resource_type is THERMAL, then this field is mandatory. For other types of power
|
|
995
|
+
# generation units, this field should not be set.
|
|
996
|
+
has_dss: Optional[BooleanFlag] = attr(default=None, name="Dss")
|
|
997
|
+
|
|
998
|
+
# The maximum power output generated by a power plant when it operates in overpower mode, in kW. If contract_type
|
|
999
|
+
# is anything other than ONLY_POWER_SUPPLY_1, resource_type is THERMAL and has_overpower_operation is YES, this
|
|
1000
|
+
# field is mandatory. However, for other types of power sources, this field cannot be set.
|
|
1001
|
+
overpower_maximum_output_kW: Optional[int] = capacity("OverPowerOperationMaximumOutput", 0, True)
|
|
1002
|
+
|
|
1003
|
+
# The maximum power output generated by a power plant when it operates in peak mode, in kW. If contract_type is
|
|
1004
|
+
# anything other than ONLY_POWER_SUPPLY_1, resource_type is THERMAL and has_peak_mode_operation is YES, this field
|
|
1005
|
+
# is mandatory. However, for other types of power sources, this field cannot be set.
|
|
1006
|
+
peak_mode_maximum_output_kW: Optional[int] = capacity("PeakModeOperationMaximumOutput", 0, True)
|
|
1007
|
+
|
|
1008
|
+
# The duration during which a power generation unit can effectively operate or generate electricity without
|
|
1009
|
+
# interruption, in hours. If contract_type is anything other than ONLY_POWER_SUPPLY_1, and resource_type is THERMAL,
|
|
1010
|
+
# then this field is mandatory. For other types of power generation units, this field should not be set.
|
|
1011
|
+
operation_time_hr: Annotated[Decimal, hour("OperationTime", True)]
|
|
1012
|
+
|
|
1013
|
+
# The maximum allowable number of times a power generation unit can be started within a specified period. If
|
|
1014
|
+
# contract_type is anything other than ONLY_POWER_SUPPLY_1, and resource_type is THERMAL, then this field is
|
|
1015
|
+
# mandatory. For other types of power generation units, this field should not be set.
|
|
1016
|
+
startups: Optional[int] = attr(default=None, name="NumberOfStartups", ge=0, lt=10000)
|
|
1017
|
+
|
|
1018
|
+
# The minimum output level at which a power generation unit equipped with Emergency Demand Control (EDC) or Load
|
|
1019
|
+
# Frequency Control (LFC) capabilities can operate effectively. If contract_type is anything other than
|
|
1020
|
+
# ONLY_POWER_SUPPLY_1, and resource_type is THERMAL, then this field is mandatory. For other types of power
|
|
1021
|
+
# generation units, this field should not be set.
|
|
1022
|
+
edc_lfc_minimum_output_kw: Optional[int] = capacity("AfcMinimumOutput", 0, True)
|
|
1023
|
+
|
|
1024
|
+
# The rate at which a power generation unit equipped with Governor Function (GF) capabilities can adjust its output
|
|
1025
|
+
# in response to changes in grid frequency. If contract_type is anything other than ONLY_POWER_SUPPLY_1, and
|
|
1026
|
+
# resource_type is THERMAL, HYDRO, OR PUMP; then this field is mandatory. For other types of power generation units,
|
|
1027
|
+
# this field should not be set.
|
|
1028
|
+
gf_variation_rate: Annotated[Decimal, percentage("GfVariationRate", True)]
|
|
1029
|
+
|
|
1030
|
+
# The range within which a power generation unit can modulate its output beyond its rated output, in kW.
|
|
1031
|
+
gf_width_outside_rated_output_kW: Optional[int] = capacity("GfWidthOutOfRatedOutput", 0, True)
|
|
1032
|
+
|
|
1033
|
+
# Whether or not the power generation facility is being transferred to another entity.
|
|
1034
|
+
will_transfer: Optional[bool] = attr(default=None, name="Transfer")
|
|
1035
|
+
|
|
1036
|
+
# The previous participant this power generation unit was associated with. This will only be populated if
|
|
1037
|
+
# will_transfer is True.
|
|
1038
|
+
previous_participant: Optional[str] = participant_name("PreviousParticipantName", True)
|
|
1039
|
+
|
|
1040
|
+
# The previous code for this power generation unit. This will only be populated if will_transfer is True.
|
|
1041
|
+
previous_name: Optional[str] = resource_name("PreviousResourceName", True)
|
|
1042
|
+
|
|
1043
|
+
# An option to override the existing data for this power generation unit. If this fails, the response will
|
|
1044
|
+
# contain a value of VIOLATION.
|
|
1045
|
+
override: Optional[OverrideOption] = attr(default=None, name="OverrideOption")
|
|
1046
|
+
|
|
1047
|
+
# The status of the resource submission. This is automatically set.
|
|
1048
|
+
status: Status = attr(default=Status.IN_PROGRESS, name="RecordStatus")
|
|
1049
|
+
|
|
1050
|
+
# An ID representing the transaction
|
|
1051
|
+
transaction_id: Optional[str] = transaction_id("TransactionId", True)
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
class ResourceQuery(Payload, tag="Resource"):
|
|
1055
|
+
"""The query parameters for a power generation unit."""
|
|
1056
|
+
|
|
1057
|
+
# The MMS code of the business entity to which the registration applies
|
|
1058
|
+
participant: Optional[str] = participant_name("ParticipantName", True)
|
|
1059
|
+
|
|
1060
|
+
# A code that uniquely identifies the power generation unit
|
|
1061
|
+
name: Optional[str] = resource_name("ResourceName", True)
|
|
1062
|
+
|
|
1063
|
+
# The status of the resources being queried.
|
|
1064
|
+
status: Optional[Status] = attr(default=None, name="RecordStatus")
|