cactus-test-definitions 1.0.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.

Potentially problematic release.


This version of cactus-test-definitions might be problematic. Click here for more details.

Files changed (135) hide show
  1. cactus_test_definitions/__init__.py +39 -0
  2. cactus_test_definitions/__pycache__/__init__.cpython-312.pyc +0 -0
  3. cactus_test_definitions/__pycache__/actions.cpython-312.pyc +0 -0
  4. cactus_test_definitions/__pycache__/checks.cpython-312.pyc +0 -0
  5. cactus_test_definitions/__pycache__/csipaus.cpython-312.pyc +0 -0
  6. cactus_test_definitions/__pycache__/errors.cpython-312.pyc +0 -0
  7. cactus_test_definitions/__pycache__/events.cpython-312.pyc +0 -0
  8. cactus_test_definitions/__pycache__/parameters.cpython-312.pyc +0 -0
  9. cactus_test_definitions/__pycache__/schema.cpython-312.pyc +0 -0
  10. cactus_test_definitions/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  11. cactus_test_definitions/__pycache__/test_procedures.cpython-312.pyc +0 -0
  12. cactus_test_definitions/__pycache__/variable_expressions.cpython-312.pyc +0 -0
  13. cactus_test_definitions/__pycache__/version.cpython-312.pyc +0 -0
  14. cactus_test_definitions/client/__init__.py +26 -0
  15. cactus_test_definitions/client/__pycache__/__init__.cpython-312.pyc +0 -0
  16. cactus_test_definitions/client/__pycache__/actions.cpython-312.pyc +0 -0
  17. cactus_test_definitions/client/__pycache__/checks.cpython-312.pyc +0 -0
  18. cactus_test_definitions/client/__pycache__/events.cpython-312.pyc +0 -0
  19. cactus_test_definitions/client/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  20. cactus_test_definitions/client/actions.py +98 -0
  21. cactus_test_definitions/client/checks.py +117 -0
  22. cactus_test_definitions/client/events.py +71 -0
  23. cactus_test_definitions/client/procedures/ALL-01.yaml +94 -0
  24. cactus_test_definitions/client/procedures/ALL-02.yaml +108 -0
  25. cactus_test_definitions/client/procedures/ALL-03-REJ.yaml +69 -0
  26. cactus_test_definitions/client/procedures/ALL-03.yaml +110 -0
  27. cactus_test_definitions/client/procedures/ALL-04.yaml +69 -0
  28. cactus_test_definitions/client/procedures/ALL-05.yaml +117 -0
  29. cactus_test_definitions/client/procedures/ALL-06.yaml +128 -0
  30. cactus_test_definitions/client/procedures/ALL-07.yaml +76 -0
  31. cactus_test_definitions/client/procedures/ALL-08.yaml +78 -0
  32. cactus_test_definitions/client/procedures/ALL-09.yaml +103 -0
  33. cactus_test_definitions/client/procedures/ALL-10.yaml +128 -0
  34. cactus_test_definitions/client/procedures/ALL-11.yaml +111 -0
  35. cactus_test_definitions/client/procedures/ALL-12.yaml +108 -0
  36. cactus_test_definitions/client/procedures/ALL-13.yaml +112 -0
  37. cactus_test_definitions/client/procedures/ALL-14.yaml +165 -0
  38. cactus_test_definitions/client/procedures/ALL-15.yaml +109 -0
  39. cactus_test_definitions/client/procedures/ALL-16.yaml +102 -0
  40. cactus_test_definitions/client/procedures/ALL-17.yaml +63 -0
  41. cactus_test_definitions/client/procedures/ALL-18.yaml +288 -0
  42. cactus_test_definitions/client/procedures/ALL-19.yaml +78 -0
  43. cactus_test_definitions/client/procedures/ALL-20.yaml +136 -0
  44. cactus_test_definitions/client/procedures/ALL-21.yaml +203 -0
  45. cactus_test_definitions/client/procedures/ALL-22.yaml +82 -0
  46. cactus_test_definitions/client/procedures/ALL-23.yaml +158 -0
  47. cactus_test_definitions/client/procedures/ALL-24.yaml +132 -0
  48. cactus_test_definitions/client/procedures/ALL-25.yaml +136 -0
  49. cactus_test_definitions/client/procedures/ALL-26.yaml +147 -0
  50. cactus_test_definitions/client/procedures/ALL-27.yaml +144 -0
  51. cactus_test_definitions/client/procedures/ALL-28.yaml +274 -0
  52. cactus_test_definitions/client/procedures/ALL-29.yaml +87 -0
  53. cactus_test_definitions/client/procedures/ALL-30.yaml +188 -0
  54. cactus_test_definitions/client/procedures/BES-01.yaml +136 -0
  55. cactus_test_definitions/client/procedures/BES-02.yaml +137 -0
  56. cactus_test_definitions/client/procedures/BES-03.yaml +135 -0
  57. cactus_test_definitions/client/procedures/BES-04.yaml +228 -0
  58. cactus_test_definitions/client/procedures/DRA-01.yaml +54 -0
  59. cactus_test_definitions/client/procedures/DRA-02.yaml +64 -0
  60. cactus_test_definitions/client/procedures/DRD-01.yaml +667 -0
  61. cactus_test_definitions/client/procedures/DRL-01.yaml +327 -0
  62. cactus_test_definitions/client/procedures/GEN-01.yaml +73 -0
  63. cactus_test_definitions/client/procedures/GEN-02.yaml +72 -0
  64. cactus_test_definitions/client/procedures/GEN-03.yaml +160 -0
  65. cactus_test_definitions/client/procedures/GEN-04.yaml +161 -0
  66. cactus_test_definitions/client/procedures/GEN-05.yaml +89 -0
  67. cactus_test_definitions/client/procedures/GEN-06.yaml +90 -0
  68. cactus_test_definitions/client/procedures/GEN-07.yaml +145 -0
  69. cactus_test_definitions/client/procedures/GEN-08.yaml +145 -0
  70. cactus_test_definitions/client/procedures/GEN-09.yaml +117 -0
  71. cactus_test_definitions/client/procedures/GEN-10.yaml +737 -0
  72. cactus_test_definitions/client/procedures/GEN-11.yaml +376 -0
  73. cactus_test_definitions/client/procedures/GEN-12.yaml +376 -0
  74. cactus_test_definitions/client/procedures/GEN-13.yaml +70 -0
  75. cactus_test_definitions/client/procedures/LOA-01.yaml +73 -0
  76. cactus_test_definitions/client/procedures/LOA-02.yaml +73 -0
  77. cactus_test_definitions/client/procedures/LOA-03.yaml +160 -0
  78. cactus_test_definitions/client/procedures/LOA-04.yaml +161 -0
  79. cactus_test_definitions/client/procedures/LOA-05.yaml +85 -0
  80. cactus_test_definitions/client/procedures/LOA-06.yaml +85 -0
  81. cactus_test_definitions/client/procedures/LOA-07.yaml +145 -0
  82. cactus_test_definitions/client/procedures/LOA-08.yaml +145 -0
  83. cactus_test_definitions/client/procedures/LOA-09.yaml +117 -0
  84. cactus_test_definitions/client/procedures/LOA-10.yaml +739 -0
  85. cactus_test_definitions/client/procedures/LOA-11.yaml +376 -0
  86. cactus_test_definitions/client/procedures/LOA-12.yaml +376 -0
  87. cactus_test_definitions/client/procedures/LOA-13.yaml +71 -0
  88. cactus_test_definitions/client/procedures/MUL-01.yaml +92 -0
  89. cactus_test_definitions/client/procedures/MUL-02.yaml +80 -0
  90. cactus_test_definitions/client/procedures/MUL-03.yaml +78 -0
  91. cactus_test_definitions/client/procedures/OPT-1-IN-BAND.yaml +115 -0
  92. cactus_test_definitions/client/procedures/OPT-1-OUT-OF-BAND.yaml +101 -0
  93. cactus_test_definitions/client/procedures/test-procedures.yaml +75 -0
  94. cactus_test_definitions/client/test_procedures.py +296 -0
  95. cactus_test_definitions/csipaus.py +81 -0
  96. cactus_test_definitions/errors.py +15 -0
  97. cactus_test_definitions/parameters.py +149 -0
  98. cactus_test_definitions/py.typed +0 -0
  99. cactus_test_definitions/schema.py +22 -0
  100. cactus_test_definitions/server/README.md +170 -0
  101. cactus_test_definitions/server/__pycache__/actions.cpython-312.pyc +0 -0
  102. cactus_test_definitions/server/__pycache__/checks.cpython-312.pyc +0 -0
  103. cactus_test_definitions/server/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  104. cactus_test_definitions/server/actions.py +139 -0
  105. cactus_test_definitions/server/checks.py +117 -0
  106. cactus_test_definitions/server/procedures/S-ALL-01.yaml +42 -0
  107. cactus_test_definitions/server/procedures/S-ALL-02.yaml +65 -0
  108. cactus_test_definitions/server/procedures/S-ALL-03.yaml +65 -0
  109. cactus_test_definitions/server/procedures/S-ALL-04.yaml +137 -0
  110. cactus_test_definitions/server/procedures/S-ALL-05.yaml +111 -0
  111. cactus_test_definitions/server/procedures/S-OPT-01.yaml +42 -0
  112. cactus_test_definitions/server/procedures/S-OPT-02.yaml +40 -0
  113. cactus_test_definitions/server/procedures/S-OPT-03.yaml +44 -0
  114. cactus_test_definitions/server/procedures/S-OPT-04.yaml +32 -0
  115. cactus_test_definitions/server/procedures/test-procedures.yaml +14 -0
  116. cactus_test_definitions/server/test_procedures.py +183 -0
  117. cactus_test_definitions/variable_expressions.py +419 -0
  118. cactus_test_definitions-1.0.0.dist-info/METADATA +288 -0
  119. cactus_test_definitions-1.0.0.dist-info/RECORD +135 -0
  120. cactus_test_definitions-1.0.0.dist-info/WHEEL +5 -0
  121. cactus_test_definitions-1.0.0.dist-info/licenses/LICENSE.txt +22 -0
  122. cactus_test_definitions-1.0.0.dist-info/top_level.txt +2 -0
  123. tests/__init__.py +0 -0
  124. tests/unit/__init__.py +0 -0
  125. tests/unit/client/__init__.py +0 -0
  126. tests/unit/client/test_actions.py +72 -0
  127. tests/unit/client/test_checks.py +47 -0
  128. tests/unit/client/test_config.py +61 -0
  129. tests/unit/client/test_events.py +36 -0
  130. tests/unit/client/test_test_procedures.py +150 -0
  131. tests/unit/server/__init__.py +0 -0
  132. tests/unit/server/test_test_procedures.py +86 -0
  133. tests/unit/test_csipaus.py +49 -0
  134. tests/unit/test_parameters.py +197 -0
  135. tests/unit/test_variable_expressions.py +402 -0
@@ -0,0 +1,327 @@
1
+ Description: Load operational instructions
2
+ Category: Demand Response
3
+ Classes:
4
+ - DR-L
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+ - v1.3-beta/storage
9
+
10
+ Preconditions:
11
+ checks:
12
+ - type: end-device-contents
13
+ parameters: {}
14
+ - type: der-settings-contents
15
+ parameters: {}
16
+ actions:
17
+ - type: set-comms-rate
18
+ parameters:
19
+ der_list_poll_seconds: 60
20
+ derp_list_poll_seconds: 60
21
+ instructions:
22
+ - The controlled device should be connected to the grid and consuming 90% (+/- 5%) of its nameplate rating maximum.
23
+
24
+ Criteria:
25
+ checks:
26
+ - type: all-steps-complete
27
+ parameters: {}
28
+
29
+ Steps:
30
+
31
+ # (a, b)
32
+ GET-DERC-1:
33
+ event:
34
+ type: GET-request-received
35
+ parameters:
36
+ endpoint: /edev/1/derp/1/derc
37
+ actions:
38
+ - type: create-der-control
39
+ parameters:
40
+ start: $(now + '60 seconds')
41
+ duration_seconds: 60
42
+ opModFixedW: -75
43
+ - type: enable-steps
44
+ parameters:
45
+ steps:
46
+ - PUT-DERSTATUS-1
47
+ - PUT-DERSETTINGS-1
48
+ - WAIT-DERC-1
49
+ - type: remove-steps
50
+ parameters:
51
+ steps:
52
+ - GET-DERC-1
53
+
54
+ # (c)
55
+ PUT-DERSTATUS-1:
56
+ event:
57
+ type: PUT-request-received
58
+ parameters:
59
+ endpoint: /edev/1/der/1/ders
60
+ serve_request_first: true # Run this AFTER server receives the request
61
+ checks:
62
+ type: der-status-contents
63
+ parameters:
64
+ alarmStatus: 0
65
+ operationalModeStatus: 103
66
+ actions:
67
+ - type: remove-steps
68
+ parameters:
69
+ steps:
70
+ - PUT-DERSTATUS-1
71
+
72
+ # (c)
73
+ PUT-DERSETTINGS-1:
74
+ event:
75
+ type: PUT-request-received
76
+ parameters:
77
+ endpoint: /edev/1/der/1/derg
78
+ serve_request_first: true # Run this AFTER server receives the request
79
+ checks:
80
+ type: der-settings-contents
81
+ parameters:
82
+ modesEnabled: 80 # bit 7
83
+ actions:
84
+ - type: remove-steps
85
+ parameters:
86
+ steps:
87
+ - PUT-DERSETTINGS-1
88
+
89
+
90
+ # (d) After the end of the previous control...
91
+ WAIT-DERC-1:
92
+ event:
93
+ type: wait
94
+ parameters:
95
+ duration_seconds: 120 # Wait for DERControls to fully complete
96
+ actions:
97
+ - type: enable-steps
98
+ parameters:
99
+ steps:
100
+ - GET-DERC-2
101
+ - type: remove-steps
102
+ parameters:
103
+ steps:
104
+ - WAIT-DERC-1
105
+
106
+ # (d) ... create a new DERControl
107
+ GET-DERC-2:
108
+ event:
109
+ type: GET-request-received
110
+ parameters:
111
+ endpoint: /edev/1/derp/1/derc
112
+ actions:
113
+ - type: create-der-control
114
+ parameters:
115
+ start: $(now + '60 seconds')
116
+ duration_seconds: 60
117
+ opModFixedW: -50
118
+ - type: enable-steps
119
+ parameters:
120
+ steps:
121
+ - PUT-DERSTATUS-2
122
+ - PUT-DERSETTINGS-2
123
+ - WAIT-DERC-2
124
+ - type: remove-steps
125
+ parameters:
126
+ steps:
127
+ - GET-DERC-2
128
+
129
+
130
+ # (e, f)
131
+ PUT-DERSTATUS-2:
132
+ event:
133
+ type: PUT-request-received
134
+ parameters:
135
+ endpoint: /edev/1/der/1/ders
136
+ serve_request_first: true # Run this AFTER server receives the request
137
+ checks:
138
+ type: der-status-contents
139
+ parameters:
140
+ alarmStatus: 0
141
+ operationalModeStatus: 102
142
+ actions:
143
+ - type: remove-steps
144
+ parameters:
145
+ steps:
146
+ - PUT-DERSTATUS-2
147
+
148
+ # (e, f)
149
+ PUT-DERSETTINGS-2:
150
+ event:
151
+ type: PUT-request-received
152
+ parameters:
153
+ endpoint: /edev/1/der/1/derg
154
+ serve_request_first: true # Run this AFTER server receives the request
155
+ checks:
156
+ type: der-settings-contents
157
+ parameters:
158
+ modesEnabled: 80 # bit 7
159
+ actions:
160
+ - type: remove-steps
161
+ parameters:
162
+ steps:
163
+ - PUT-DERSETTINGS-2
164
+
165
+ # (g) After the end of the previous control...
166
+ WAIT-DERC-2:
167
+ event:
168
+ type: wait
169
+ parameters:
170
+ duration_seconds: 120 # Wait for DERControls to fully complete
171
+ actions:
172
+ - type: enable-steps
173
+ parameters:
174
+ steps:
175
+ - GET-DERC-3
176
+ - type: remove-steps
177
+ parameters:
178
+ steps:
179
+ - WAIT-DERC-2
180
+
181
+
182
+ # (g) ... create a new DERControl
183
+ GET-DERC-3:
184
+ event:
185
+ type: GET-request-received
186
+ parameters:
187
+ endpoint: /edev/1/derp/1/derc
188
+ actions:
189
+ - type: create-der-control
190
+ parameters:
191
+ start: $(now + '60 seconds')
192
+ duration_seconds: 60
193
+ opModFixedW: -0.01
194
+ - type: enable-steps
195
+ parameters:
196
+ steps:
197
+ - PUT-DERSTATUS-3
198
+ - PUT-DERSETTINGS-3
199
+ - WAIT-DERC-3
200
+ - type: remove-steps
201
+ parameters:
202
+ steps:
203
+ - GET-DERC-3
204
+
205
+ # (h, i)
206
+ PUT-DERSTATUS-3:
207
+ event:
208
+ type: PUT-request-received
209
+ parameters:
210
+ endpoint: /edev/1/der/1/ders
211
+ serve_request_first: true # Run this AFTER server receives the request
212
+ checks:
213
+ type: der-status-contents
214
+ parameters:
215
+ alarmStatus: 0
216
+ operationalModeStatus: 101
217
+ actions:
218
+ - type: remove-steps
219
+ parameters:
220
+ steps:
221
+ - PUT-DERSTATUS-3
222
+
223
+ # (h, i)
224
+ PUT-DERSETTINGS-3:
225
+ event:
226
+ type: PUT-request-received
227
+ parameters:
228
+ endpoint: /edev/1/der/1/derg
229
+ serve_request_first: true # Run this AFTER server receives the request
230
+ checks:
231
+ type: der-settings-contents
232
+ parameters:
233
+ modesEnabled: 80 # bit 7
234
+ actions:
235
+ - type: remove-steps
236
+ parameters:
237
+ steps:
238
+ - PUT-DERSETTINGS-3
239
+
240
+ # (j) After the end of the previous control...
241
+ WAIT-DERC-3:
242
+ event:
243
+ type: wait
244
+ parameters:
245
+ duration_seconds: 120 # Wait for DERControls to fully complete
246
+ actions:
247
+ - type: enable-steps
248
+ parameters:
249
+ steps:
250
+ - GET-DERC-4
251
+ - type: remove-steps
252
+ parameters:
253
+ steps:
254
+ - WAIT-DERC-3
255
+
256
+ # (j) ... create a new DERControl
257
+ GET-DERC-4:
258
+ event:
259
+ type: GET-request-received
260
+ parameters:
261
+ endpoint: /edev/1/derp/1/derc
262
+ actions:
263
+ - type: create-der-control
264
+ parameters:
265
+ start: $(now + '60 seconds')
266
+ duration_seconds: 60
267
+ opModFixedW: -100
268
+ - type: enable-steps
269
+ parameters:
270
+ steps:
271
+ - PUT-DERSTATUS-4
272
+ - PUT-DERSETTINGS-4
273
+ - WAIT-DERC-4
274
+ - type: remove-steps
275
+ parameters:
276
+ steps:
277
+ - GET-DERC-4
278
+
279
+ # (k, l)
280
+ PUT-DERSTATUS-4:
281
+ event:
282
+ type: PUT-request-received
283
+ parameters:
284
+ endpoint: /edev/1/der/1/ders
285
+ serve_request_first: true # Run this AFTER server receives the request
286
+ checks:
287
+ type: der-status-contents
288
+ parameters:
289
+ alarmStatus: 0
290
+ operationalModeStatus: 104
291
+ actions:
292
+ - type: remove-steps
293
+ parameters:
294
+ steps:
295
+ - PUT-DERSTATUS-4
296
+
297
+ # (k, l)
298
+ PUT-DERSETTINGS-4:
299
+ event:
300
+ type: PUT-request-received
301
+ parameters:
302
+ endpoint: /edev/1/der/1/derg
303
+ serve_request_first: true # Run this AFTER server receives the request
304
+ checks:
305
+ type: der-settings-contents
306
+ parameters:
307
+ modesEnabled: 80 # bit 7
308
+ actions:
309
+ - type: remove-steps
310
+ parameters:
311
+ steps:
312
+ - PUT-DERSETTINGS-4
313
+
314
+ # Wait for the controls to finish
315
+ WAIT-DERC-4:
316
+ event:
317
+ type: wait
318
+ parameters:
319
+ duration_seconds: 120 # Wait for DERControls to fully complete
320
+ actions:
321
+ - type: remove-steps
322
+ parameters:
323
+ steps:
324
+ - WAIT-DERC-4
325
+ - type: finish-test
326
+ parameters: {}
327
+
@@ -0,0 +1,73 @@
1
+ Description: Active Control – Export Limit
2
+ Category: Control
3
+ Classes:
4
+ - G
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+ - v1.3-beta/storage
9
+
10
+ Criteria:
11
+ checks:
12
+ - type: all-steps-complete
13
+ parameters: {}
14
+
15
+ Preconditions:
16
+ init_actions:
17
+ - type: set-comms-rate
18
+ parameters:
19
+ dcap_poll_seconds: 60
20
+ edev_list_poll_seconds: 60
21
+ fsa_list_poll_seconds: 60
22
+ der_list_poll_seconds: 60
23
+ derp_list_poll_seconds: 60
24
+ mup_post_seconds: 60
25
+ checks:
26
+ - type: end-device-contents
27
+ parameters: {}
28
+ - type: der-settings-contents
29
+ parameters: {}
30
+ actions:
31
+ - type: create-der-control
32
+ parameters:
33
+ start: $(now)
34
+ duration_seconds: 300
35
+ opModExpLimW: $(setMaxW * 2)
36
+ instructions:
37
+ - DER shall be generating at the connection point at least 50% of its active power rating.
38
+
39
+ Steps:
40
+ # (precondition)
41
+ GET-DERC-INITIAL:
42
+ event:
43
+ type: GET-request-received
44
+ parameters:
45
+ endpoint: /edev/1/derp/1/derc
46
+ actions:
47
+ - type: enable-steps
48
+ parameters:
49
+ steps:
50
+ - GET-DERC-ZERO
51
+ - type: remove-steps
52
+ parameters:
53
+ steps:
54
+ - GET-DERC-INITIAL
55
+
56
+ # (a, b, c)
57
+ GET-DERC-ZERO:
58
+ event:
59
+ type: GET-request-received
60
+ parameters:
61
+ endpoint: /edev/1/derp/1/derc
62
+ actions:
63
+ - type: create-der-control
64
+ parameters:
65
+ start: $(now)
66
+ duration_seconds: 300
67
+ opModExpLimW: 0
68
+ - type: remove-steps
69
+ parameters:
70
+ steps:
71
+ - GET-DERC-ZERO
72
+
73
+
@@ -0,0 +1,72 @@
1
+ Description: Active Control – Generation Limit
2
+ Category: Control
3
+ Classes:
4
+ - G
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+ - v1.3-beta/storage
9
+
10
+ Criteria:
11
+ checks:
12
+ - type: all-steps-complete
13
+ parameters: {}
14
+
15
+
16
+ Preconditions:
17
+ init_actions:
18
+ - type: set-comms-rate
19
+ parameters:
20
+ dcap_poll_seconds: 60
21
+ edev_list_poll_seconds: 60
22
+ fsa_list_poll_seconds: 60
23
+ der_list_poll_seconds: 60
24
+ derp_list_poll_seconds: 60
25
+ mup_post_seconds: 60
26
+ checks:
27
+ - type: end-device-contents
28
+ parameters: {}
29
+ - type: der-settings-contents
30
+ parameters: {}
31
+ actions:
32
+ - type: create-der-control
33
+ parameters:
34
+ start: $(now)
35
+ duration_seconds: 300
36
+ opModGenLimW: $(setMaxW * 2)
37
+ instructions:
38
+ - DER shall be generating at the connection point at least 50% of its active power rating.
39
+
40
+ Steps:
41
+ # (precondition)
42
+ GET-DERC-INITIAL:
43
+ event:
44
+ type: GET-request-received
45
+ parameters:
46
+ endpoint: /edev/1/derp/1/derc
47
+ actions:
48
+ - type: enable-steps
49
+ parameters:
50
+ steps:
51
+ - GET-DERC-ZERO
52
+ - type: remove-steps
53
+ parameters:
54
+ steps:
55
+ - GET-DERC-INITIAL
56
+
57
+ # (a, b, c)
58
+ GET-DERC-ZERO:
59
+ event:
60
+ type: GET-request-received
61
+ parameters:
62
+ endpoint: /edev/1/derp/1/derc
63
+ actions:
64
+ - type: create-der-control
65
+ parameters:
66
+ start: $(now)
67
+ duration_seconds: 300
68
+ opModGenLimW: 0
69
+ - type: remove-steps
70
+ parameters:
71
+ steps:
72
+ - GET-DERC-ZERO
@@ -0,0 +1,160 @@
1
+ Description: Default Control – Export Limit
2
+ Category: Control
3
+ Classes:
4
+ - G
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+ - v1.3-beta/storage
9
+
10
+ Criteria:
11
+ checks:
12
+ - type: all-steps-complete
13
+ parameters: {}
14
+
15
+ Preconditions:
16
+ init_actions:
17
+ - type: set-comms-rate
18
+ parameters:
19
+ dcap_poll_seconds: 60
20
+ edev_list_poll_seconds: 60
21
+ fsa_list_poll_seconds: 60
22
+ der_list_poll_seconds: 60
23
+ derp_list_poll_seconds: 60
24
+ mup_post_seconds: 60
25
+ checks:
26
+ - type: end-device-contents
27
+ parameters: {}
28
+ - type: der-settings-contents
29
+ parameters: {}
30
+ actions:
31
+ - type: create-der-control
32
+ parameters:
33
+ start: $(now)
34
+ duration_seconds: 900
35
+ opModExpLimW: $(setMaxW * 2)
36
+ instructions:
37
+ - DER shall be exporting at the connection point at least 50% of its active power rating.
38
+
39
+ Steps:
40
+
41
+ # (a, b)
42
+ GET-DEFAULT-DERC:
43
+ event:
44
+ type: GET-request-received
45
+ parameters:
46
+ endpoint: /edev/1/derp/1/dderc
47
+ actions:
48
+ - type: set-default-der-control
49
+ parameters:
50
+ opModExpLimW: $(setMaxW * 0.3)
51
+ - type: enable-steps
52
+ parameters:
53
+ steps:
54
+ - GET-DERC-1
55
+ - type: remove-steps
56
+ parameters:
57
+ steps:
58
+ - GET-DEFAULT-DERC
59
+
60
+ # (b, c, d) This will be the first poll after client has received the defaults
61
+ # the client will see the existing control but it will be cancelled immediately after
62
+ GET-DERC-1:
63
+ event:
64
+ type: GET-request-received
65
+ parameters:
66
+ endpoint: /edev/1/derp/1/derc
67
+ serve_request_first: true # Run this AFTER server receives the request
68
+ actions:
69
+ - type: cancel-active-der-controls
70
+ parameters: {}
71
+ - type: enable-steps
72
+ parameters:
73
+ steps:
74
+ - GET-DERC-2
75
+ - type: remove-steps
76
+ parameters:
77
+ steps:
78
+ - GET-DERC-1
79
+
80
+ # (d, e) On this poll, client will discover control was cancelled and a new control will be added at 200% of setMaxW
81
+ GET-DERC-2:
82
+ event:
83
+ type: GET-request-received
84
+ parameters:
85
+ endpoint: /edev/1/derp/1/derc
86
+ serve_request_first: true # Run this AFTER server receives the request
87
+ actions:
88
+ - type: create-der-control
89
+ parameters:
90
+ start: $(now)
91
+ duration_seconds: 600
92
+ opModExpLimW: $(setMaxW * 2)
93
+ - type: enable-steps
94
+ parameters:
95
+ steps:
96
+ - WAIT-CONTROL-END
97
+ - type: remove-steps
98
+ parameters:
99
+ steps:
100
+ - GET-DERC-2
101
+
102
+ # (f, g) Waits for the new control to finish (with a bit of overtime)
103
+ WAIT-CONTROL-END:
104
+ event:
105
+ type: wait
106
+ parameters:
107
+ duration_seconds: 660
108
+ actions:
109
+ - type: enable-steps
110
+ parameters:
111
+ steps:
112
+ - GET-DERC-3
113
+ - type: remove-steps
114
+ parameters:
115
+ steps:
116
+ - WAIT-CONTROL-END
117
+ instructions:
118
+ - DER should ramp down export to 30% at the rate of setGradW (default 0.27%/s)
119
+ - DER should then discover a new control and then ramp up to unconstrained at the rate of setGradW (default 0.27%/s)
120
+ - Upon control completion, DER should then ramp down to 30% at the rate of setGradW (default 0.27%/s)
121
+
122
+ # (h) On this poll, client will discover control the DefaultDERControl is cancelled and a new 0W control is in place
123
+ GET-DERC-3:
124
+ event:
125
+ type: GET-request-received
126
+ parameters:
127
+ endpoint: /edev/1/derp/1/derc
128
+ actions:
129
+ - type: create-der-control
130
+ parameters:
131
+ start: $(now)
132
+ duration_seconds: 600
133
+ opModExpLimW: 0
134
+ - type: set-default-der-control
135
+ parameters:
136
+ cancelled: true
137
+ - type: enable-steps
138
+ parameters:
139
+ steps:
140
+ - WAIT-TEST-END
141
+ - type: remove-steps
142
+ parameters:
143
+ steps:
144
+ - GET-DERC-3
145
+
146
+
147
+ WAIT-TEST-END:
148
+ event:
149
+ type: wait
150
+ parameters:
151
+ duration_seconds: 120
152
+ actions:
153
+ - type: remove-steps
154
+ parameters:
155
+ steps:
156
+ - WAIT-TEST-END
157
+ - type: finish-test
158
+ parameters: {}
159
+ instructions:
160
+ - DER shall ramp down export to 0W at the rate of setGradW (default 0.27%/s)