@enervance/insight-cim-model 0.0.267 → 0.0.269-beta10

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.
Files changed (149) hide show
  1. package/dist/constants/rdf-xml.d.ts +2 -0
  2. package/dist/constants/rdf-xml.js +2 -0
  3. package/dist/constants/rdf-xml.js.map +1 -1
  4. package/dist/converter/integral7/config/integral-prefix.d.ts +5 -0
  5. package/dist/converter/integral7/config/integral-prefix.js +6 -1
  6. package/dist/converter/integral7/config/integral-prefix.js.map +1 -1
  7. package/dist/converter/integral7/converter.integral7.d.ts +10 -4
  8. package/dist/converter/integral7/converter.integral7.js +675 -334
  9. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  10. package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +3 -0
  11. package/dist/converter/integral7/dl-convert/dl-converter-i7.js +7 -9
  12. package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
  13. package/dist/converter/integral7/dl-convert/executor.d.ts +31 -3
  14. package/dist/converter/integral7/dl-convert/executor.js +90 -24
  15. package/dist/converter/integral7/dl-convert/executor.js.map +1 -1
  16. package/dist/converter/integral7/interface-i7/data-structures-i7.d.ts +28 -12
  17. package/dist/converter/integral7/interface-i7/data-structures-i7.js.map +1 -1
  18. package/dist/converter/integral7/interface-i7/default-values-config.interface.d.ts +3 -0
  19. package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +10 -8
  20. package/dist/converter/integral7/interface-i7/export-frame-i7.js +17 -10
  21. package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
  22. package/dist/converter/integral7/model/integral/Netzbereich.d.ts +15 -0
  23. package/dist/converter/integral7/model/integral/Netzbereich.js +23 -0
  24. package/dist/converter/integral7/model/integral/Netzbereich.js.map +1 -0
  25. package/dist/converter/integral7/model/integral/NetzbereichAussen.d.ts +7 -0
  26. package/dist/converter/integral7/model/integral/NetzbereichAussen.js +12 -0
  27. package/dist/converter/integral7/model/integral/NetzbereichAussen.js.map +1 -0
  28. package/dist/converter/integral7/model/integral/NetzbereichInnen.d.ts +7 -0
  29. package/dist/converter/integral7/model/integral/NetzbereichInnen.js +12 -0
  30. package/dist/converter/integral7/model/integral/NetzbereichInnen.js.map +1 -0
  31. package/dist/converter/integral7/model/integral/NetzbereichRand.d.ts +7 -0
  32. package/dist/converter/integral7/model/integral/NetzbereichRand.js +12 -0
  33. package/dist/converter/integral7/model/integral/NetzbereichRand.js.map +1 -0
  34. package/dist/converter/integral7/model/interfaces.d.ts +45 -0
  35. package/dist/converter/integral7/model/interfaces.js.map +1 -1
  36. package/dist/converter/integral7/sql/integral.sql.d.ts +11 -0
  37. package/dist/converter/integral7/sql/integral.sql.js +56 -3
  38. package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
  39. package/dist/converter/integral7/tp-bd-profile/convert-functions/convert-netzbereiche.d.ts +0 -0
  40. package/dist/converter/integral7/tp-bd-profile/convert-functions/convert-netzbereiche.js +2 -0
  41. package/dist/converter/integral7/tp-bd-profile/convert-functions/convert-netzbereiche.js.map +1 -0
  42. package/dist/converter/integral7/tp-bd-profile/model/BoundaryPoint.d.ts +8 -0
  43. package/dist/converter/integral7/tp-bd-profile/model/BoundaryPoint.js +13 -0
  44. package/dist/converter/integral7/tp-bd-profile/model/BoundaryPoint.js.map +1 -0
  45. package/dist/converter/integral7/tp-bd-profile/model/BoundarySet.d.ts +15 -0
  46. package/dist/converter/integral7/tp-bd-profile/model/BoundarySet.js +38 -0
  47. package/dist/converter/integral7/tp-bd-profile/model/BoundarySet.js.map +1 -0
  48. package/dist/converter/integral7/tp-bd-profile/model/ExternalPoint.d.ts +8 -0
  49. package/dist/converter/integral7/tp-bd-profile/model/ExternalPoint.js +13 -0
  50. package/dist/converter/integral7/tp-bd-profile/model/ExternalPoint.js.map +1 -0
  51. package/dist/converter/integral7/tp-bd-profile/model/InternalPoint.d.ts +8 -0
  52. package/dist/converter/integral7/tp-bd-profile/model/InternalPoint.js +13 -0
  53. package/dist/converter/integral7/tp-bd-profile/model/InternalPoint.js.map +1 -0
  54. package/dist/converter/integral7/tp-bd-profile/model/convert-net-equivalent.model.d.ts +8 -0
  55. package/dist/converter/integral7/tp-bd-profile/model/convert-net-equivalent.model.js +9 -0
  56. package/dist/converter/integral7/tp-bd-profile/model/convert-net-equivalent.model.js.map +1 -0
  57. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.d.ts +9 -0
  58. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.js +82 -0
  59. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.js.map +1 -0
  60. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.types.d.ts +25 -0
  61. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.types.js +3 -0
  62. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.types.js.map +1 -0
  63. package/dist/converter/integral7/tp-bd-profile/tp-bd-converter.d.ts +23 -0
  64. package/dist/converter/integral7/tp-bd-profile/tp-bd-converter.js +244 -0
  65. package/dist/converter/integral7/tp-bd-profile/tp-bd-converter.js.map +1 -0
  66. package/dist/converter/integral7/utils-cgmes-export.d.ts +1 -0
  67. package/dist/converter/integral7/utils-cgmes-export.js +9 -1
  68. package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
  69. package/dist/converter/integral7/utils.d.ts +12 -3
  70. package/dist/converter/integral7/utils.js +91 -14
  71. package/dist/converter/integral7/utils.js.map +1 -1
  72. package/dist/data-structures/graph/edges/GraphEdge.js.map +1 -1
  73. package/dist/data-structures/graph/graph-util.d.ts +1 -1
  74. package/dist/data-structures/graph/graph-util.js +1 -1
  75. package/dist/data-structures/graph/graph-util.js.map +1 -1
  76. package/dist/etl/etl-neplan/etl-neplan-contingency-analysis.js.map +1 -1
  77. package/dist/etl/etl-neplan/etl-neplan.js +1 -1
  78. package/dist/etl/etl-neplan/etl-neplan.js.map +1 -1
  79. package/dist/etl/etl-neplan/neplan-contingency-analysis.d.ts +8 -0
  80. package/dist/etl/etl-neplan/neplan-contingency-analysis.js +170 -22
  81. package/dist/etl/etl-neplan/neplan-contingency-analysis.js.map +1 -1
  82. package/dist/index.d.ts +2 -0
  83. package/dist/index.js +5 -1
  84. package/dist/index.js.map +1 -1
  85. package/dist/interfaces/model/core/ITerminal.d.ts +1 -1
  86. package/dist/model/core/ConductingEquipment.d.ts +1 -1
  87. package/dist/model/core/ConductingEquipment.js +2 -2
  88. package/dist/model/core/ConductingEquipment.js.map +1 -1
  89. package/dist/model/core/ConnectivityNode.js +2 -2
  90. package/dist/model/core/ConnectivityNode.js.map +1 -1
  91. package/dist/model/core/IdentifiedObject.js +8 -0
  92. package/dist/model/core/IdentifiedObject.js.map +1 -1
  93. package/dist/model/dc/ACDCConverter.js +0 -2
  94. package/dist/model/dc/ACDCConverter.js.map +1 -1
  95. package/dist/model/dc/DCLineSegment.d.ts +2 -0
  96. package/dist/model/dc/DCLineSegment.js +16 -0
  97. package/dist/model/dc/DCLineSegment.js.map +1 -1
  98. package/dist/model/dc/VsCapabilityCurve.js.map +1 -1
  99. package/dist/model/dc/VsConverter.d.ts +1 -0
  100. package/dist/model/dc/VsConverter.js +13 -0
  101. package/dist/model/dc/VsConverter.js.map +1 -1
  102. package/dist/model/diagram/Diagram.js +2 -2
  103. package/dist/model/diagram/Diagram.js.map +1 -1
  104. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.d.ts +1 -0
  105. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js +2 -1
  106. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js.map +1 -1
  107. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.d.ts +1 -0
  108. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.js.map +1 -1
  109. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.d.ts +3 -0
  110. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js +14 -0
  111. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js.map +1 -1
  112. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformerInfo.js.map +1 -1
  113. package/dist/model/extensions/integral/dc/DCLineSegment.d.ts +10 -0
  114. package/dist/model/extensions/integral/dc/DCLineSegment.js +31 -0
  115. package/dist/model/extensions/integral/dc/DCLineSegment.js.map +1 -0
  116. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.d.ts +2 -0
  117. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js +8 -0
  118. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js.map +1 -1
  119. package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js.map +1 -1
  120. package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js +26 -5
  121. package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js.map +1 -1
  122. package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js +12 -2
  123. package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js.map +1 -1
  124. package/dist/model/operationallimits/ApparentPowerLimit.js +2 -2
  125. package/dist/model/operationallimits/ApparentPowerLimit.js.map +1 -1
  126. package/dist/model/topology/TopologicalNode.d.ts +1 -0
  127. package/dist/model/topology/TopologicalNode.js.map +1 -1
  128. package/dist/model/wires/GroundDisconnector.d.ts +4 -1
  129. package/dist/model/wires/GroundDisconnector.js +15 -1
  130. package/dist/model/wires/GroundDisconnector.js.map +1 -1
  131. package/dist/model/wires/PowerTransformer.js +7 -4
  132. package/dist/model/wires/PowerTransformer.js.map +1 -1
  133. package/dist/model/wires/SeriesCompensator.js +6 -4
  134. package/dist/model/wires/SeriesCompensator.js.map +1 -1
  135. package/dist/model/wires/Switch.js +1 -1
  136. package/dist/model/wires/Switch.js.map +1 -1
  137. package/dist/model-container/model/ModelContainer.d.ts +5 -1
  138. package/dist/model-container/model/ModelContainer.js +14 -0
  139. package/dist/model-container/model/ModelContainer.js.map +1 -1
  140. package/dist/util/util-create.js +9 -1
  141. package/dist/util/util-create.js.map +1 -1
  142. package/dist/utils2/import.utils.js +5 -1
  143. package/dist/utils2/import.utils.js.map +1 -1
  144. package/dist/utils2/parser.utils.d.ts +1 -0
  145. package/dist/utils2/parser.utils.js +5 -2
  146. package/dist/utils2/parser.utils.js.map +1 -1
  147. package/dist/utils2/sparql.utils.js +1 -1
  148. package/dist/utils2/sparql.utils.js.map +1 -1
  149. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ var _ConverterIntegral7_configurableDLConvertOptions;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.getGeoCoordinates = exports.ConverterIntegral7 = void 0;
4
5
  const tslib_1 = require("tslib");
@@ -27,7 +28,6 @@ const CsConverter_1 = require("../../model/dc/CsConverter.js");
27
28
  const CsOperatingModeKind_1 = require("../../model/dc/CsOperatingModeKind.js");
28
29
  const DCConverterOperatingModeKind_1 = require("../../model/dc/DCConverterOperatingModeKind.js");
29
30
  const DCLine_1 = require("../../model/dc/DCLine.js");
30
- const DCLineSegment_1 = require("../../model/dc/DCLineSegment.js");
31
31
  const DCNode_1 = require("../../model/dc/DCNode.js");
32
32
  const DCTerminal_1 = require("../../model/dc/DCTerminal.js");
33
33
  const VsConverter_1 = require("../../model/dc/VsConverter.js");
@@ -142,10 +142,25 @@ const INTEGRALPowerTransformer2WInfo_1 = require("../../model/extensions/integra
142
142
  const impedance_utils_1 = require("./impedance.utils.js");
143
143
  const util_cim_model_1 = require("./util-cim.model.js");
144
144
  const EVAssetOriginKind_1 = require("../../model/extensions/enervance/assets/EVAssetOriginKind.js");
145
+ const PetersenCoilModeKind_1 = require("../../model/wires/PetersenCoilModeKind.js");
146
+ const GroundDisconnector_1 = require("../../model/wires/GroundDisconnector.js");
145
147
  const i7_graph_utils_1 = require("./model/i7-graph-utils.js");
146
148
  const TopologicalNode_1 = require("../../model/topology/TopologicalNode.js");
147
149
  const geodata_util_1 = require("../../util/geodata.util.js");
150
+ const DCLineSegment_1 = require("../../model/extensions/integral/dc/DCLineSegment.js");
151
+ const tp_bd_converter_1 = require("./tp-bd-profile/tp-bd-converter.js");
148
152
  class ConverterIntegral7 {
153
+ set configurableDLConvertOptions(arg) {
154
+ tslib_1.__classPrivateFieldSet(this, _ConverterIntegral7_configurableDLConvertOptions, arg, "f");
155
+ }
156
+ get configurableDLConvertOptions() {
157
+ return tslib_1.__classPrivateFieldGet(this, _ConverterIntegral7_configurableDLConvertOptions, "f");
158
+ }
159
+ /* ---------- ---------- ---------- */
160
+ /* ---------- ---------- ---------- */
161
+ // TP-BD-Converter related properties
162
+ // tpBdConverter: TpBdConverter;
163
+ /* ---------- ---------- ---------- */
149
164
  constructor() {
150
165
  /** Exportnetze gemäß Konfiguration */
151
166
  this.exportFrames = new Map();
@@ -180,6 +195,99 @@ class ConverterIntegral7 {
180
195
  this.ersatzZweigAnschlussKnotenIDs = new Set();
181
196
  /** List of Blocktransformatoren */
182
197
  this.blocktransformatoren = [];
198
+ _ConverterIntegral7_configurableDLConvertOptions.set(this, {});
199
+ }
200
+ convertWithNetzbereich(objectMappingConfig, defaultValuesConfig, energyTypesConfig, exportConfig, energySourceTypeMappingConfig, configUuid, tempDirPath, netEquivalentOptions) {
201
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
202
+ this.objectMappingConfig = objectMappingConfig;
203
+ this.defaultValuesConfig = defaultValuesConfig;
204
+ this.configUuid = configUuid;
205
+ try {
206
+ yield this.createColumnIndex();
207
+ yield this.configExportFrames(exportConfig, defaultValuesConfig, tempDirPath);
208
+ /** Typinformationen abfragen */
209
+ yield this.convertBetriebsmitteltypenKdrossel();
210
+ yield this.convertBetriebsmitteltypenLeitung();
211
+ yield this.convertBetriebsmitteltypenTrafo();
212
+ yield this.convertBetriebsmitteltypenGenerator();
213
+ yield this.convertBetriebsmitteltypenAsynchronmotor();
214
+ yield this.convertMultiplikationsfaktoren();
215
+ yield this.queryLeitungsAnschlussIDs();
216
+ yield this.queryTrafosAnschlussIDs();
217
+ yield this.queryHgueAnschlussIDs();
218
+ yield this.queryLDroselAnschlussIDs();
219
+ yield this.queryErsatzLaengsAnschlussIDs();
220
+ yield this.queryLkondensatorAnschlussIDs();
221
+ const tpBdConverter = new tp_bd_converter_1.TpBdConverter(this.mysqlController, this.logger, configUuid);
222
+ tpBdConverter.initDatabaseMetaData(this.availableTableNames);
223
+ tpBdConverter.setupLookupMaps(this.integralID2UUID);
224
+ tpBdConverter.setExportTempDirPath(tempDirPath);
225
+ /** BD Profile */
226
+ this.logger.debug('Convert BD Profiles');
227
+ console.log('Convert BD Profiles');
228
+ let boundaryEqUUId = undefined;
229
+ for (const entry of this.exportFramesBoundary.entries()) {
230
+ const geoRegionUUID = entry[0];
231
+ const frame = entry[1];
232
+ boundaryEqUUId = frame.getModelUUID(rdf_xml_1.RDF_XML.PROFILE_EQ_BD);
233
+ const geoRegion = frame.cimModel.getGeographicalRegion(geoRegionUUID);
234
+ if (!geoRegion)
235
+ continue;
236
+ yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
237
+ }
238
+ this.logger.debug('Convert MAS Profiles');
239
+ console.log('Convert MAS Profiles');
240
+ for (const entry of this.exportFrames.entries()) {
241
+ const geoRegionUUID = entry[0];
242
+ const frame = entry[1];
243
+ const geoRegion = frame.cimModel.getGeographicalRegion(geoRegionUUID);
244
+ if (!geoRegion)
245
+ continue;
246
+ this.logger.debug(`Convert MAS profile: ${frame.mas}`);
247
+ console.log(`Convert MAS profile: ${frame.mas}`);
248
+ yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
249
+ if (boundaryEqUUId) {
250
+ frame.addDependentModel(rdf_xml_1.RDF_XML.PROFILE_EQ, boundaryEqUUId);
251
+ }
252
+ frame.validateCIMModel();
253
+ yield tpBdConverter.convertNetzbereich(frame.cimModel, netEquivalentOptions.netzbereichID);
254
+ frame.purgeData();
255
+ const startTime = perf_hooks.performance.now();
256
+ frame.openXMLModel();
257
+ this.logger.debug(`Serialize MAS profile: ${frame.mas}`);
258
+ console.log(`Serialize MAS profile: ${frame.mas}`);
259
+ frame.serializeModel(defaultValuesConfig);
260
+ yield frame.closeXMLModel();
261
+ let endTime = perf_hooks.performance.now();
262
+ // frame.cimModel.purgeData();
263
+ console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
264
+ }
265
+ this.logger.debug('Serialize TP-BD Profiles');
266
+ console.log('Serialize TP-BD Profiles');
267
+ // await tpBdConverter.serialize(defaultValuesConfig);
268
+ // this.logger.debug('Serialize Default Profile');
269
+ // this.exportFrameDefault.openXMLModel();
270
+ // this.exportFrameDefault.serializeModel(defaultValuesConfig);
271
+ // await this.exportFrameDefault.closeXMLModel();
272
+ return {
273
+ status: 'successful',
274
+ message: 'ok',
275
+ data: {
276
+ boundarySets: tpBdConverter.exportTopologyBoundaries,
277
+ frames: [...this.exportFrames.values()]
278
+ // net: frame,
279
+ }
280
+ };
281
+ }
282
+ catch (e) {
283
+ this.logger.error(e);
284
+ console.error('ERROR:' + e);
285
+ return { status: 'error', message: e.toString() };
286
+ }
287
+ finally {
288
+ yield this.dropColumnIndex();
289
+ }
290
+ });
183
291
  }
184
292
  /**
185
293
  * Konvertiert das Netz aus der MySQL Datenbank
@@ -209,6 +317,7 @@ class ConverterIntegral7 {
209
317
  yield this.queryErsatzLaengsAnschlussIDs();
210
318
  yield this.queryLkondensatorAnschlussIDs();
211
319
  /** BD Profile */
320
+ this.logger.debug('Convert BD Profiles');
212
321
  console.log('Convert BD Profiles');
213
322
  let boundaryEqUUId = undefined;
214
323
  for (const entry of this.exportFramesBoundary.entries()) {
@@ -220,6 +329,7 @@ class ConverterIntegral7 {
220
329
  continue;
221
330
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
222
331
  }
332
+ this.logger.debug('Convert MAS Profiles');
223
333
  console.log('Convert MAS Profiles');
224
334
  for (const entry of this.exportFrames.entries()) {
225
335
  const geoRegionUUID = entry[0];
@@ -228,6 +338,7 @@ class ConverterIntegral7 {
228
338
  if (!geoRegion)
229
339
  continue;
230
340
  // frame.addDependentModel(RDF_XML.PROFILE_EQ_BD, this.exportFramesBoundary.entries().next()?.value[1].getModelUUID(RDF_XML.PROFILE_EQ_BD));
341
+ this.logger.debug(`Convert MAS profile: ${frame.mas}`);
231
342
  console.log(`Convert MAS profile: ${frame.mas}`);
232
343
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
233
344
  if (boundaryEqUUId) {
@@ -237,6 +348,7 @@ class ConverterIntegral7 {
237
348
  frame.purgeData();
238
349
  const startTime = perf_hooks.performance.now();
239
350
  frame.openXMLModel();
351
+ this.logger.debug(`Serialize MAS profile: ${frame.mas}`);
240
352
  console.log(`Serialize MAS profile: ${frame.mas}`);
241
353
  frame.serializeModel(defaultValuesConfig);
242
354
  yield frame.closeXMLModel();
@@ -244,7 +356,7 @@ class ConverterIntegral7 {
244
356
  frame.cimModel.purgeData();
245
357
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
246
358
  }
247
- console.log('Serialize BD Profiles');
359
+ this.logger.debug('Serialize BD Profiles');
248
360
  for (const entry of this.exportFramesBoundary.entries()) {
249
361
  const geoRegionUUID = entry[0];
250
362
  const frame = entry[1];
@@ -263,7 +375,7 @@ class ConverterIntegral7 {
263
375
  let endTime = perf_hooks.performance.now();
264
376
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
265
377
  }
266
- console.log('Serialize Default Profile');
378
+ this.logger.debug('Serialize Default Profile');
267
379
  this.exportFrameDefault.openXMLModel();
268
380
  this.exportFrameDefault.serializeModel(defaultValuesConfig);
269
381
  yield this.exportFrameDefault.closeXMLModel();
@@ -290,6 +402,7 @@ class ConverterIntegral7 {
290
402
  });
291
403
  }
292
404
  convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig) {
405
+ var _a;
293
406
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
294
407
  const integral7Modell = frame.getI7Model();
295
408
  const cimModel = frame.cimModel;
@@ -488,9 +601,9 @@ class ConverterIntegral7 {
488
601
  startTime = perf_hooks.performance.now();
489
602
  const stpSchieneID = yield this.convertSternpunktSchienen(cimModel, integral7Modell, standortIDs);
490
603
  /** KDrossel -> GroundingImpedance/PetersenCoil */
491
- yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID);
604
+ yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID, defaultValuesConfig);
492
605
  /** Schaltzustand der Schaltelemente */
493
- yield this.convertStpSchaltelemente(integral7Modell, stpSchieneID);
606
+ yield this.convertStpSchaltelemente(cimModel, integral7Modell, stpSchieneID);
494
607
  logExecutionTime(this.logger, startTime, `convertSternpunkte`);
495
608
  }
496
609
  /** Statcom -> StaticVarCompensator */
@@ -545,10 +658,6 @@ class ConverterIntegral7 {
545
658
  if (schaltfeldIDs.length)
546
659
  yield this.createTopologicalNodes(cimModel);
547
660
  logExecutionTime(this.logger, startTime, `createTopologicalNodes()`);
548
- startTime = perf_hooks.performance.now();
549
- if (schaltfeldIDs.length)
550
- yield this.createTopologicalNodes(cimModel);
551
- logExecutionTime(this.logger, startTime, `createTopologicalNodes()`);
552
661
  /** DL Profile */
553
662
  if (!frame.boundary) {
554
663
  this.executor = new executor_1.Executor(this.mysqlController, this.configUuid);
@@ -561,6 +670,7 @@ class ConverterIntegral7 {
561
670
  const netz_standortIds = standortIDs.map(standortId => {
562
671
  return { id: standortId };
563
672
  });
673
+ const boundary_standortIds = [];
564
674
  const netz_knotensoIds = knotenSoIDs.map(knotenSoId => {
565
675
  return { id: knotenSoId };
566
676
  });
@@ -570,6 +680,7 @@ class ConverterIntegral7 {
570
680
  });
571
681
  entry[1].integral7Modell.integralKnotenSo.forEach((_, key) => {
572
682
  netz_knotensoIds.push({ id: key });
683
+ boundary_standortIds.push({ id: key });
573
684
  });
574
685
  }
575
686
  const netzLeitungIds = [...integral7Modell.integralLeitungen.keys()];
@@ -577,9 +688,8 @@ class ConverterIntegral7 {
577
688
  const netzErsatzlaengszweigIds = [...integral7Modell.integalErsatzLaengszweigIds.values()];
578
689
  const netzStreckenlastIds = [...integral7Modell.integralLeitungen.values()].map(leitung => leitung.streckenlastId).filter(id => id !== undefined && id !== null);
579
690
  const allLeitungIds = [...new Set([...netzLeitungIds, ...netzHgueLeitungIds, ...netzErsatzlaengszweigIds, ...netzStreckenlastIds]).values()];
580
- const convertOptions = {
581
- visible_only: true,
582
- only: {
691
+ const overall_substation_amount = ((_a = standortIDs === null || standortIDs === void 0 ? void 0 : standortIDs.length) !== null && _a !== void 0 ? _a : 0);
692
+ const convertOptions = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(this.configurableDLConvertOptions))), { overall_substation_amount: overall_substation_amount, visible_only: true, boundary_standortIds, only: {
583
693
  netz_standortIds,
584
694
  netz_knotensoIds,
585
695
  netz_schaltanlagenIds: schaltanlagenIDs.map(schaltanlagenId => {
@@ -594,8 +704,8 @@ class ConverterIntegral7 {
594
704
  netz_leitungIds: allLeitungIds.map(leitungId => {
595
705
  return { id: leitungId };
596
706
  })
597
- }
598
- };
707
+ } });
708
+ frame.cimModel.addDiagramStyle(this.executor.dlConverter.diagramStyles[cim_constants_1.DiagramLayoutTypes.NODE_BREAKER]);
599
709
  const resultingObjects = yield this.executor.convert(convertOptions);
600
710
  for (const resultingObject of resultingObjects) {
601
711
  if (resultingObject instanceof Diagram_1.Diagram) {
@@ -769,7 +879,7 @@ class ConverterIntegral7 {
769
879
  .then((result) => {
770
880
  for (const i7Data of result) {
771
881
  const i7Schluessel = integral_prefix_1.GEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
772
- const region = new GeographicalRegion_1.GeographicalRegion((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner), '_GR']), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluessel);
882
+ const region = new GeographicalRegion_1.GeographicalRegion((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner)]), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluessel);
773
883
  //region.i7key = i7Schluessel;
774
884
  this.addIdMapping(i7Data.id, region.mrid, integral_sql_1.Integral7TableNames.REGION);
775
885
  regions.push(region);
@@ -817,11 +927,12 @@ class ConverterIntegral7 {
817
927
  .then((result) => {
818
928
  for (const i7Data of result) {
819
929
  const i7Schluesel = integral_prefix_1.SUBGEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
820
- const subregion = new SubGeographicalRegion_1.SubGeographicalRegion((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner), '_SGR']), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluesel);
930
+ const subregion = new SubGeographicalRegion_1.SubGeographicalRegion((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner)
931
+ ]), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluesel);
821
932
  const regionUUID = this.integralID2UUID.get(i7Data.georegion);
822
933
  let region = regions.find(elem => elem.mrid === regionUUID);
823
934
  if (!region) {
824
- region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name, '_GR']), this.configUuid);
935
+ region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name]), this.configUuid);
825
936
  this.logger.debug(`SubGeographicalRegion UUID ${subregion.mrid} I7-ID ${i7Data.id} Name ${i7Data.bezeichner} hat keine Region.`);
826
937
  }
827
938
  subregion.region = region;
@@ -912,7 +1023,7 @@ class ConverterIntegral7 {
912
1023
  i7Data.un +
913
1024
  integral_prefix_1.MITTIGER_PUNKT +
914
1025
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
915
- const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
1026
+ const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
916
1027
  vl.key = i7Schluessel;
917
1028
  const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, vl, cim_constants_1.CimAssetAliasNames.VoltageLevel, this.configUuid);
918
1029
  if (i7Data.baujahr) {
@@ -1001,23 +1112,31 @@ class ConverterIntegral7 {
1001
1112
  });
1002
1113
  }
1003
1114
  convertKnotenSo(frame, integral7, standortIDs, defaultValuesConfig) {
1115
+ var _a, _b;
1004
1116
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1005
1117
  const cimModel = frame.cimModel;
1006
1118
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_SO)) {
1007
1119
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KNOTEN_SO, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KNOTEN_SO), standortIDs));
1120
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
1008
1121
  for (const i7Data of result) {
1122
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
1009
1123
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
1010
1124
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1011
- // const vl = new VoltageLevel(getUUID(i7Data.guid_v, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
1012
1125
  const vl = new VoltageLevel_1.VoltageLevel(common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VoltageLevel, this.configUuid, rdfid), i7Data.bezeichner, i7Data.kurzname);
1013
- //const rdfid = getUUID(i7Data.guid); /**This is the mrid for TopologicalNode */
1014
1126
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
1127
+ if (connectivityNode.getUUID() === '98d0e9eb-bfb0-4da4-9700-660626da1c56' || connectivityNode.getName() === 'XDU_SL12') {
1128
+ let stop = true;
1129
+ }
1015
1130
  connectivityNode.setConnectivityNodeContainer(vl);
1016
1131
  vl.addConnectivityNode(connectivityNode);
1017
1132
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
1133
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
1018
1134
  if (frame.boundary) {
1019
1135
  connectivityNode.boundaryPoint = true;
1020
1136
  }
1137
+ const key = integral_sql_1.I7Objects.KNOTEN_SO + ((_b = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _b !== void 0 ? _b : '');
1138
+ const junction = new Junction_1.Junction(common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VoltageLevel, this.configUuid, key), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), connectivityNode.getUUID().substring(0, 8), '_J']));
1139
+ this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
1021
1140
  const un = (0, utils_2.getU)(i7Data.un);
1022
1141
  const baseVoltage = (0, util_create_1.createBaseVoltageIfNotExists)(cimModel, un, this.configUuid, this.exportFramesBoundary);
1023
1142
  /** Spannungsband */
@@ -1033,7 +1152,7 @@ class ConverterIntegral7 {
1033
1152
  integral_prefix_1.MITTIGER_PUNKT +
1034
1153
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
1035
1154
  vl.key = i7Schluessel;
1036
- connectivityNode.description = i7Schluessel;
1155
+ connectivityNode.key = i7Schluessel;
1037
1156
  }
1038
1157
  else {
1039
1158
  this.logger.debug(`KnotenSo ${i7Data.id} ${vl.mrid} besitzt keine Substation.`);
@@ -1075,21 +1194,27 @@ class ConverterIntegral7 {
1075
1194
  });
1076
1195
  }
1077
1196
  convertSammelschienenAbschnitte(cimModel, integral7, schaltanlagenAbschnittIDs) {
1078
- var _a, _b;
1197
+ var _a, _b, _c;
1079
1198
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1080
1199
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SAMMELSCHIENE)) {
1081
1200
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SAMMELSCHIENE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SAMMELSCHIENE), schaltanlagenAbschnittIDs));
1201
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
1082
1202
  for (const i7Data of result) {
1083
1203
  const i7Schaltanlagenabschnitt = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1084
- //const rdfid: string = getUUID(i7Data.guid); /** this is the mrid for TopologicalNode*/
1204
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
1205
+ let saab = undefined;
1206
+ if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1207
+ saab = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1208
+ }
1085
1209
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1086
1210
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname);
1087
1211
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Schaltanlagenabschnitt.id));
1088
1212
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
1213
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
1089
1214
  const keyBusbarSection = [
1090
1215
  integral_sql_1.I7Objects.SAMMELSCHIENE,
1091
- (_a = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID()) !== null && _a !== void 0 ? _a : '',
1092
- (_b = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _b !== void 0 ? _b : ''
1216
+ (_b = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID()) !== null && _b !== void 0 ? _b : '',
1217
+ (_c = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _c !== void 0 ? _c : ''
1093
1218
  ].join('');
1094
1219
  const uuidBusbarSection = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.BusbarSection, this.configUuid, keyBusbarSection);
1095
1220
  const busbarSection = new BusbarSection_1.BusbarSection(uuidBusbarSection, i7Data.bezeichner, i7Schaltanlagenabschnitt.kurzname);
@@ -1105,11 +1230,15 @@ class ConverterIntegral7 {
1105
1230
  voltageLevel.highVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umax) : voltageLevel.highVoltageLimit;
1106
1231
  // umin
1107
1232
  voltageLevel.lowVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umin) : voltageLevel.lowVoltageLimit;
1108
- /**const i7Schluessel = voltageLevel.substation.name +
1109
- SAMMELSCHIENENABSCHNITT_PRAEFIX +
1110
- ueberpruefeZeichenkette(i7Data.bezeichner);
1111
- busbarSection.description = i7Schluessel;
1112
- connectivityNode.description = i7Schluessel;*/
1233
+ //define INTEGRAL Schluessel for ConnectivityNode
1234
+ if (saab !== undefined) {
1235
+ const i7Schluessel = voltageLevel.key +
1236
+ integral_prefix_1.SCHALTANLAGENABSCHNITT_PRAEFIX +
1237
+ (0, utils_2.ueberpruefeZeichenkette)(saab.bezeichner) +
1238
+ integral_prefix_1.SAMMELSCHIENENABSCHNITT_PRAEFIX +
1239
+ (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
1240
+ connectivityNode.key = i7Schluessel;
1241
+ }
1113
1242
  /** Spannungsband */
1114
1243
  integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
1115
1244
  // TODO VoltageLimits?
@@ -1122,7 +1251,7 @@ class ConverterIntegral7 {
1122
1251
  cimModel.addConnectivityNode(connectivityNode);
1123
1252
  cimModel.addBusbarSection(busbarSection);
1124
1253
  /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
1125
- if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1254
+ if (saab !== undefined) {
1126
1255
  integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt).ssab.push(i7Data);
1127
1256
  }
1128
1257
  }
@@ -1139,10 +1268,11 @@ class ConverterIntegral7 {
1139
1268
  const result = yield this.queryDataInChuncks(integral_sql_1.I7Objects.KNOTEN_SF, schaltfeldIDs);
1140
1269
  for (const i7Data of result) {
1141
1270
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.schaltfeld));
1142
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode((0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'knotensf', `${bay.description}/${i7Data.bezeichner}`);
1143
- if (bay) {
1271
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode((0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false), (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false));
1272
+ if (bay !== undefined) {
1144
1273
  connectivityNode.connectivityNodeContainer = bay;
1145
1274
  bay.addConnectivityNode(connectivityNode);
1275
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_SF_PRAEFIX + i7Data.bezeichner;
1146
1276
  }
1147
1277
  else {
1148
1278
  this.logger.debug(`KnotenSf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1167,11 +1297,11 @@ class ConverterIntegral7 {
1167
1297
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.kpfeld));
1168
1298
  const key = integral_sql_1.I7Objects.KNOTEN_KF + ((_a = bay === null || bay === void 0 ? void 0 : bay.getUUID()) !== null && _a !== void 0 ? _a : '') + String(i7Data.id) + String(i7Data.kpfeld);
1169
1299
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1170
- // const connectivityNode = new ConnectivityNode(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), '_CN']), 'knotenkf');
1171
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'knotenkf');
1300
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false), (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false));
1172
1301
  if (bay) {
1173
1302
  connectivityNode.connectivityNodeContainer = bay;
1174
1303
  bay.addConnectivityNode(connectivityNode);
1304
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_KF_PRAEFIX + i7Data.bezeichner;
1175
1305
  }
1176
1306
  else {
1177
1307
  this.logger.debug(`KnotenKf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1194,11 +1324,12 @@ class ConverterIntegral7 {
1194
1324
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.lkupplung));
1195
1325
  const key = integral_sql_1.I7Objects.KNOTEN_LK + ((_a = bay === null || bay === void 0 ? void 0 : bay.getUUID()) !== null && _a !== void 0 ? _a : '') + String(i7Data.id) + String(i7Data.lkupplung);
1196
1326
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1197
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'KnotenLk');
1198
- // const connectivityNode = new ConnectivityNode(CommonUtils.generateUUID(), createNotation([getName(i7Data), '_CN']), 'KnotenLk');
1327
+ const name = (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false);
1328
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, name, name);
1199
1329
  if (bay) {
1200
1330
  connectivityNode.connectivityNodeContainer = bay;
1201
1331
  bay.addConnectivityNode(connectivityNode);
1332
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_LK_PRAEFIX + i7Data.bezeichner;
1202
1333
  }
1203
1334
  else {
1204
1335
  this.logger.debug(`KnotenLk ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1221,8 +1352,12 @@ class ConverterIntegral7 {
1221
1352
  const key = integral_sql_1.I7Objects.SCHLAUFE + String(i7Data.id);
1222
1353
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
1223
1354
  const terminal = new Terminal_1.Terminal(uuid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
1355
+ if (terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
1356
+ const stop = true;
1357
+ }
1224
1358
  terminal.connected = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
1225
1359
  terminal.phases = PhaseCode_1.PhaseCode.ABC;
1360
+ terminal.key = integral_prefix_1.SCHLAUFE_PRAEFIX + i7Data.bezeichner;
1226
1361
  this.addIdMapping(i7Data.id, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1227
1362
  this.addIdMapping(i7Data.knotenzw, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1228
1363
  integral7.kontenZwIDs.push(i7Data.knotenzw);
@@ -1330,6 +1465,101 @@ class ConverterIntegral7 {
1330
1465
  }
1331
1466
  });
1332
1467
  }
1468
+ convertVollUmrichterEinspeisung(cimModel, targetVoltages, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
1469
+ var _a;
1470
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1471
+ const targetClass = objectMappingConfig.Einspeisung.class;
1472
+ if (this.isTableAvailable(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG)) {
1473
+ const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.VOLLUMRICHTEREINSPEISUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG), knotenSfIDs));
1474
+ for (const i7Data of result) {
1475
+ try {
1476
+ const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
1477
+ const externalNetworkInjection = new INTEGRALExternalNetworkInjection_1.INTEGRALExternalNetworkInjection(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_ENI'], 32, true), i7Data.kurzname);
1478
+ externalNetworkInjection.nameprimaertyp = 'Wind Onshore';
1479
+ let mf = undefined;
1480
+ mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
1481
+ if (mf) {
1482
+ cimModel.addMultiplierFactor(mf);
1483
+ externalNetworkInjection.multiplierFactorUUID = mf.getUUID();
1484
+ }
1485
+ /** Convert EQ-profile dataset. */
1486
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
1487
+ externalNetworkInjection.maxP = maxP;
1488
+ const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
1489
+ externalNetworkInjection.governorSCD = governorscd;
1490
+ const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
1491
+ externalNetworkInjection.maxQ = maxQ;
1492
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
1493
+ externalNetworkInjection.minP = minP;
1494
+ const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
1495
+ externalNetworkInjection.minQ = minQ;
1496
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
1497
+ /**Convert short circuit constants */
1498
+ const r0X0 = undefined;
1499
+ const r1X1 = undefined;
1500
+ const z0Z1 = undefined;
1501
+ const maxR0X0Ratio = r0X0;
1502
+ externalNetworkInjection.maxR0ToX0Ratio = maxR0X0Ratio;
1503
+ const maxR1X1Ratio = r1X1;
1504
+ externalNetworkInjection.maxR1ToX1Ratio = maxR1X1Ratio;
1505
+ const maxZ0Z1Ratio = z0Z1;
1506
+ externalNetworkInjection.maxZ0ToZ1Ratio = maxZ0Z1Ratio;
1507
+ const minR0X0Ratio = r0X0;
1508
+ externalNetworkInjection.minR0ToX0Ratio = minR0X0Ratio;
1509
+ const minR1X1Ratio = r1X1;
1510
+ externalNetworkInjection.minR1ToX1Ratio = minR1X1Ratio;
1511
+ const minZ0Z1Ratio = z0Z1;
1512
+ externalNetworkInjection.minZ0ToZ1Ratio = minZ0Z1Ratio;
1513
+ const i2sk1 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk1) : undefined;
1514
+ const i2sk2 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2) : undefined;
1515
+ const i2sk2e = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2e) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2e) : undefined;
1516
+ const i2sk3 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk3) : undefined;
1517
+ const ikMin = (0, utils_2.transformShortCircuitCurrent)(Math.min(i2sk1, i2sk2, i2sk2e, i2sk3));
1518
+ const ikMax = (0, utils_2.transformShortCircuitCurrent)(Math.max(i2sk1, i2sk2, i2sk2e, i2sk3));
1519
+ externalNetworkInjection.minInitialSymShCCurrent = ikMin;
1520
+ externalNetworkInjection.maxInitialSymShCCurrent = ikMax;
1521
+ const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
1522
+ /** Convert SSH-profile dataset. */
1523
+ /**
1524
+ * @description Set einspprio as referencePriority. PowerFactory sets external network injections with referencePriority == 1, to slack control mode. In regular case referencePriority for externalnetworkextensions is set to value '0'.
1525
+ * einspprio having no effect in loadflow calculation if voltage control does not exists.
1526
+ * */
1527
+ let prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
1528
+ if (((_a = externalNetworkInjection.regulatingControl) === null || _a === void 0 ? void 0 : _a.mode) === RegulatingControlModeKind_1.RegulatingControlModeKind.voltage) {
1529
+ if (prio !== undefined && prio > 0) {
1530
+ externalNetworkInjection.referencePriority = prio + 1; //TODO: SLACK is a injection with maximum prio in the network section and active voltage control.
1531
+ }
1532
+ else if (prio !== undefined && prio === 0) {
1533
+ externalNetworkInjection.referencePriority = prio;
1534
+ }
1535
+ else {
1536
+ externalNetworkInjection.referencePriority = undefined;
1537
+ }
1538
+ }
1539
+ const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
1540
+ const p = powerData[0];
1541
+ const q = powerData[1];
1542
+ externalNetworkInjection.setActivePower(p * -1); //convert to load sign system
1543
+ externalNetworkInjection.setReactivePower(q * -1); //convert to load sign system
1544
+ // AMPI7 profile
1545
+ const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? ((0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) !== 0 ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : 1) : undefined;
1546
+ externalNetworkInjection.cos_phi = cosPhi;
1547
+ externalNetworkInjection.p_mf = (mf && powerData[2]) ? powerData[2] * -1 : undefined;
1548
+ externalNetworkInjection.q_mf = (mf && powerData[3]) ? powerData[3] * -1 : undefined;
1549
+ externalNetworkInjection.normallyInService = inBetrieb;
1550
+ cimModel.addExternalNetworkInjection(externalNetworkInjection);
1551
+ this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
1552
+ }
1553
+ catch (err) {
1554
+ this.logger.error(`error --- convertVollumrichtereinspeisung ${i7Data.id} ${err}`);
1555
+ }
1556
+ }
1557
+ }
1558
+ else {
1559
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG} ist nicht vorhanden.`);
1560
+ }
1561
+ });
1562
+ }
1333
1563
  convertErsatzQuerZweige(cimModel, targetVoltages, knotenSfIDs, targetClass) {
1334
1564
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1335
1565
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
@@ -1362,6 +1592,9 @@ class ConverterIntegral7 {
1362
1592
  for (const i7Data of result) {
1363
1593
  const genType = this.generatorTypen.get(i7Data.nametyp);
1364
1594
  const synchronousMachine = new INTEGRALSynchronousMachine_1.INTEGRALSynchronousMachine((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_SM'], 32, true), i7Data.kurzname, i7Data.nameprimaertyp);
1595
+ if (synchronousMachine.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F') {
1596
+ let stop = true;
1597
+ }
1365
1598
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
1366
1599
  const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
1367
1600
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
@@ -1463,7 +1696,7 @@ class ConverterIntegral7 {
1463
1696
  const qType = Math.sqrt(Math.pow(genType === null || genType === void 0 ? void 0 : genType.sr, 2) - Math.pow(pType, 2));
1464
1697
  // AMP I7 Profil
1465
1698
  synchronousMachine.cos_phi = i7Data.cos_phi;
1466
- if (synchronousMachine.getUUID() === '03ee3f18-9984-48eb-bc26-09e8c182fbda') {
1699
+ if (synchronousMachine.getUUID() === '69718d2d-5988-49a9-b5c8-d53d0cf0e89a') {
1467
1700
  let stop = true;
1468
1701
  }
1469
1702
  if (synchronousMachine.getUUID() === 'f6d81d19-dca0-48e9-a43e-4ab1f6bf697d') {
@@ -1515,7 +1748,7 @@ class ConverterIntegral7 {
1515
1748
  // synchronousMachine.voltageRegulationRange: number;
1516
1749
  /** Create ReactiveCapabilityCurves */
1517
1750
  if (minP !== undefined && maxP !== undefined && minQvonPmin !== undefined && maxQvonPmax !== undefined) {
1518
- const reactiveCapabilityCurve = new ReactiveCapabilityCurve_1.ReactiveCapabilityCurve((0, parser_utils_1.getUUID)(i7Data.guid_rcc, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)(['CurveData', synchronousMachine.mrid, '_RCC']));
1751
+ const reactiveCapabilityCurve = new ReactiveCapabilityCurve_1.ReactiveCapabilityCurve((0, parser_utils_1.getUUID)(i7Data.guid_rcc, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)(['CurveData', '_', synchronousMachine.getUUID().substring(0, 8), '_RCC']));
1519
1752
  reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
1520
1753
  reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
1521
1754
  reactiveCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -1598,6 +1831,9 @@ class ConverterIntegral7 {
1598
1831
  // TODO: genControlSource is not required.
1599
1832
  //generatingUnit.genControlSource = GeneratorControlSource.onAGC;
1600
1833
  /**Complete GeneratingUnit data */
1834
+ if (generatingUnit.getUUID() === '70810e1e74aa4359b387bef9158f4767' || synchronousMachine.getUUID() === '70810e1e74aa4359b387bef9158f4767') {
1835
+ const stop = true;
1836
+ }
1601
1837
  generatingUnit.initialP = (0, parser_utils_1.isNumericI7)(i7Data.p0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p0) : undefined;
1602
1838
  // generatingUnit.longPF
1603
1839
  // generatingUnit.maximumAllowableSpinningReserve
@@ -1749,7 +1985,7 @@ class ConverterIntegral7 {
1749
1985
  //EQ core profile content
1750
1986
  const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
1751
1987
  if (connectivityNode) {
1752
- (0, util_create_1.createConnection)(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC);
1988
+ this.createConnection(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
1753
1989
  const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()));
1754
1990
  if (equipmentContainer) {
1755
1991
  equipmentContainer.addEquipment(asynchronousMachine);
@@ -2330,6 +2566,9 @@ class ConverterIntegral7 {
2330
2566
  const qr = (0, parser_utils_1.isNumericI7)(i7Data.qr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qr) : undefined;
2331
2567
  const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2332
2568
  shunt.nomU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2569
+ if (shunt.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
2570
+ let stop = true;
2571
+ }
2333
2572
  // Set electrical properties (EQ core)
2334
2573
  if ((0, parser_utils_1.isNumericI7)(i7Data.aktstufe) && (0, parser_utils_1.isNumericI7)(i7Data.maxstufe)) {
2335
2574
  shunt.sections = (0, parser_utils_1.convertToNumberI7)(i7Data.aktstufe);
@@ -2469,7 +2708,7 @@ class ConverterIntegral7 {
2469
2708
  /** EQ */
2470
2709
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2471
2710
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2472
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2711
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2473
2712
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2474
2713
  statVarCom.aggregate = false;
2475
2714
  /** EQ-SC */
@@ -2478,7 +2717,6 @@ class ConverterIntegral7 {
2478
2717
  /** SV */
2479
2718
  //statVarCom.svpowerflow
2480
2719
  /** Regelung */
2481
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_rc);
2482
2720
  const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, true);
2483
2721
  /** EQ */
2484
2722
  if (regulatingControl) {
@@ -2506,7 +2744,7 @@ class ConverterIntegral7 {
2506
2744
  /** EQ */
2507
2745
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2508
2746
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2509
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2747
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2510
2748
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2511
2749
  statVarCom.aggregate = false;
2512
2750
  /** EQ-SC */
@@ -2518,11 +2756,11 @@ class ConverterIntegral7 {
2518
2756
  /** EQ */
2519
2757
  statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
2520
2758
  cimModel.addStaticVarCompensator(statVarCom);
2521
- this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
2759
+ this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.SVC);
2522
2760
  }
2523
2761
  }
2524
2762
  else {
2525
- this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STATCOM} ist nicht vorhanden.`);
2763
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SVC} ist nicht vorhanden.`);
2526
2764
  }
2527
2765
  });
2528
2766
  }
@@ -2575,9 +2813,10 @@ class ConverterIntegral7 {
2575
2813
  csConverter.ratedIdc = (0, utils_2.calculateRatedIdc)(csConverter.ratedUdc, pr);
2576
2814
  /** spannungsabhängige Wirk-Verluste in kW bei Leerlauf mit Bemessungsspannung in kV*/
2577
2815
  csConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2578
- csConverter.maxUdc = csConverter.ratedUdc * 1.05; // +5% * ratedUdc
2579
- csConverter.minUdc = csConverter.ratedUdc * 0.95; // -5% * ratedUdc
2580
- csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2816
+ csConverter.maxUdc = csConverter.ratedUdc * 1.08; // +5% * ratedUdc
2817
+ csConverter.minUdc = csConverter.ratedUdc * 0.98; // -5% * ratedUdc
2818
+ //R=U^2/P
2819
+ csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? Math.pow(csConverter.ratedUdc, 2) / ((0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, 3)) : undefined;
2581
2820
  csConverter.switchingLoss = 0;
2582
2821
  /* csConverter.numberOfValves
2583
2822
  csConverter.valveU0*/
@@ -2671,21 +2910,21 @@ class ConverterIntegral7 {
2671
2910
  /** Bemessungsleistung (Gleichstromseite) in MW
2672
2911
  * im CS-Fall S = P?
2673
2912
  * Abhängig vom */
2674
- vsConverter.baseS = i7Data.pr;
2913
+ vsConverter.baseS = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2675
2914
  /** Bemessungsspannung (Gleichstromseite) in kV*/
2676
2915
  //If udc is set in Integral data model set converter.ratedUdc as i7Data.udc else take the data value for i7Data.ur (Bemessungsspannung)
2677
2916
  vsConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.udc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.udc) : ((0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined);
2678
- /** spannungsabhängige Wirk-Verluste bei Leerlauf mit Bemessungsspannung in kV*/
2917
+ /** spannungsabhängige Wirk-Verluste in MW bei Leerlauf mit Bemessungsspannung in kV*/
2679
2918
  vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2680
- vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +5% * ratedUdc
2681
- vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -5% * ratedUdc
2682
- vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2919
+ vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +8% * ratedUdc
2920
+ vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -2% * ratedUdc
2921
+ vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? Math.pow(vsConverter.ratedUdc, 2) / ((0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, 3)) : undefined;
2683
2922
  vsConverter.switchingLoss = undefined;
2684
2923
  /* csConverter.maxModulationIndex = ;
2685
2924
  csConverter.maxValveCurrent = */
2686
2925
  /** CapabilityCurveData */
2687
- const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2688
- const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
2926
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : vsConverter.baseS;
2927
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : -1 * vsConverter.baseS;
2689
2928
  const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
2690
2929
  const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
2691
2930
  /** SSH export values */
@@ -2708,11 +2947,11 @@ class ConverterIntegral7 {
2708
2947
  vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2709
2948
  acDCConverterDCTerminal.dcNode = dcNode;
2710
2949
  dcNode.dcTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2711
- /** Create ReactiveCapabilityCurves */
2950
+ /** Create VsCapabilityCurves */
2712
2951
  if (minP !== undefined && maxP !== undefined && minQ != undefined && maxQ !== undefined) {
2713
2952
  let keyVsCapabilityCurve = cim_class_names_1.ClassNames.VsCapabilityCurve + i7Data.id + vsConverter.getUUID();
2714
2953
  let uuidVsCapabilityCurve = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VsCapabilityCurve, this.configUuid, keyVsCapabilityCurve);
2715
- const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', vsConverter.getUUID().substring(0, 8), '_VCC']));
2954
+ const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', '_', vsConverter.getUUID().substring(0, 8), '_VCC']));
2716
2955
  vsCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
2717
2956
  vsCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
2718
2957
  vsCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -2723,7 +2962,7 @@ class ConverterIntegral7 {
2723
2962
  const curveData1 = new CurveData_1.CurveData(uuidCurveData);
2724
2963
  curveData1.curve = vsCapabilityCurve;
2725
2964
  curveData1.xvalue = minP; //pMin
2726
- curveData1.y1value = minQ; //qMin
2965
+ curveData1.y1value = minQ; //qMin pMax
2727
2966
  curveData1.y2value = maxQ; //qMax pMin
2728
2967
  cimModel.addCurveData(curveData1);
2729
2968
  //reactive capability curve data for pmax
@@ -2733,7 +2972,7 @@ class ConverterIntegral7 {
2733
2972
  curveData2.curve = vsCapabilityCurve;
2734
2973
  curveData2.xvalue = maxP; //pMax
2735
2974
  curveData2.y1value = minQ; //qMin pMax
2736
- curveData2.y2value = maxQ; //qMin pMax
2975
+ curveData2.y2value = maxQ; //qMax pMax
2737
2976
  cimModel.addCurveData(curveData2);
2738
2977
  cimModel.addVsCapabilityCurve(vsCapabilityCurve);
2739
2978
  vsConverter.capabilityCurve = vsCapabilityCurve;
@@ -2852,7 +3091,6 @@ class ConverterIntegral7 {
2852
3091
  if (i7Data.guid === '_ab64e281-72d0-45fb-8cb3-da4ae99a4f8c') {
2853
3092
  const stop = true;
2854
3093
  }
2855
- let einspeisePrioritaet = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
2856
3094
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2857
3095
  externalNetworkInjection.maxP = maxP;
2858
3096
  const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
@@ -2884,9 +3122,10 @@ class ConverterIntegral7 {
2884
3122
  const skAkt = (0, parser_utils_1.isNumericI7)(i7Data.sk_akt) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_akt) : undefined;
2885
3123
  const skMin = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_min) : skAkt;
2886
3124
  const skMax = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_max) : skAkt;
2887
- const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(skMin) / Math.sqrt(3) * skMin : undefined;
3125
+ const nomV = externalNetworkInjection.getTerminals().values().next().value.getConnectivityNode().getBaseVoltageAsNumber();
3126
+ const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, utils_2.calculateShortCircuitCurrent)(skMin, nomV) : undefined;
2888
3127
  externalNetworkInjection.minInitialSymShCCurrent = minIkSecond;
2889
- const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(skMax) / Math.sqrt(3) * skMax : undefined;
3128
+ const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, utils_2.calculateShortCircuitCurrent)(skMax, nomV) : undefined;
2890
3129
  externalNetworkInjection.maxInitialSymShCCurrent = maxIkSecond;
2891
3130
  const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
2892
3131
  /** Convert SSH-profile dataset. */
@@ -2949,6 +3188,9 @@ class ConverterIntegral7 {
2949
3188
  if (condEquip instanceof RotatingMachine_1.RotatingMachine || condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection || condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
2950
3189
  i7DataEinsp = i7Data;
2951
3190
  i7DataRQ = i7Data;
3191
+ if (condEquip.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F' || condEquip.getUUID() === '0c67bf21-a557-46ea-af63-2a3ac116bd2e') {
3192
+ const stop = true;
3193
+ }
2952
3194
  }
2953
3195
  if (condEquip instanceof SynchronousMachine_1.SynchronousMachine) {
2954
3196
  suffix = '_SM';
@@ -2969,16 +3211,26 @@ class ConverterIntegral7 {
2969
3211
  suffix = '_EI';
2970
3212
  }
2971
3213
  else if (condEquip instanceof StaticVarCompensator_1.StaticVarCompensator) {
3214
+ if (condEquip.getUUID() === '18e12018-03dd-4d6e-a626-ea404017050f' || condEquip.getUUID() === '4352ad9f-c841-4dcb-9a42-3ccabcb56487'
3215
+ || condEquip.getUUID() === '3d060069-9253-4e68-bb75-74d92982bb1a' || condEquip.getUUID() === '03c53185-aaa7-4040-8b43-76f79fac82b9' || condEquip.getUUID() === '02ba5072-a387-47c6-b9ce-b9d3def21964') {
3216
+ let stop = true;
3217
+ }
2972
3218
  i7DataSVC = i7Data;
2973
3219
  i7DataRQ = i7Data;
2974
3220
  suffix = '_SVC';
2975
3221
  }
2976
3222
  else if (condEquip instanceof LinearShuntCompensator_1.LinearShuntCompensator) {
3223
+ if (condEquip.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
3224
+ let stop = true;
3225
+ }
2977
3226
  i7DataKomp = i7Data;
2978
3227
  i7DataRQ = i7Data;
2979
3228
  suffix = '_LSC';
2980
3229
  }
2981
3230
  else if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
3231
+ if (condEquip.getUUID() === '71331a6b-000d-4049-89cc-9319a69367f6') {
3232
+ let stop = true;
3233
+ }
2982
3234
  i7DataHgue = i7Data;
2983
3235
  suffix = '_ACDCC';
2984
3236
  }
@@ -3015,62 +3267,61 @@ class ConverterIntegral7 {
3015
3267
  let tVMax = undefined; //maximum target voltage
3016
3268
  let tVMin = undefined; //minimum target voltage
3017
3269
  const regCondEquip = condEquip;
3018
- if (spannungsregelungLokal || spannungsregelungRemote) {
3019
- //get rated voltage of controlled node.
3020
- if (knotenSpgGeregelt && spannungsregelungRemote) {
3021
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3022
- if (cterminal === undefined) {
3023
- let stop = true;
3024
- }
3025
- if (cterminal) {
3026
- tCn = cterminal.getConnectivityNode();
3027
- if (tCn) {
3028
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3029
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3030
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3031
- }
3032
- else {
3033
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3034
- }
3270
+ //get rated voltage of controlled node.
3271
+ if (knotenSpgGeregelt && spannungsregelungRemote) {
3272
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3273
+ if (cterminal === undefined) {
3274
+ let stop = true;
3275
+ }
3276
+ if (cterminal) {
3277
+ tCn = cterminal.getConnectivityNode();
3278
+ if (tCn) {
3279
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3280
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3281
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3035
3282
  }
3036
3283
  else {
3037
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3284
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3038
3285
  }
3039
3286
  }
3040
- if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3041
- switch (knotenSpgGeregelt) {
3042
- case undefined: {
3043
- if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3044
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3045
- }
3046
- if (cterminal === undefined) {
3047
- cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3048
- }
3049
- break;
3287
+ else {
3288
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3289
+ }
3290
+ }
3291
+ if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3292
+ switch (knotenSpgGeregelt) {
3293
+ case undefined: {
3294
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3295
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3050
3296
  }
3051
- default: {
3052
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3297
+ if (cterminal === undefined) {
3298
+ cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3053
3299
  }
3300
+ break;
3054
3301
  }
3055
- if (cterminal) {
3056
- tCn = cterminal.getConnectivityNode();
3057
- if (tCn) {
3058
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3059
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3060
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3061
- }
3062
- else {
3063
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
3064
- }
3302
+ default: {
3303
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3065
3304
  }
3066
3305
  }
3067
- uband = (0, parser_utils_1.isNumericI7)(tVMax) && (0, parser_utils_1.isNumericI7)(tVMin) ? (0, parser_utils_1.convertToNumberI7)(tVMax) - (0, parser_utils_1.convertToNumberI7)(tVMin) : undefined;
3068
- if (uband === undefined) {
3306
+ if (cterminal) {
3307
+ tCn = cterminal.getConnectivityNode();
3069
3308
  if (tCn) {
3070
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3309
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3310
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3311
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3071
3312
  }
3313
+ else {
3314
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
3315
+ }
3316
+ }
3317
+ }
3318
+ uband = (0, parser_utils_1.isNumericI7)(tVMax) && (0, parser_utils_1.isNumericI7)(tVMin) ? (0, parser_utils_1.convertToNumberI7)(tVMax) - (0, parser_utils_1.convertToNumberI7)(tVMin) : undefined;
3319
+ if (uband === undefined) {
3320
+ if (tCn) {
3321
+ uband = tCn.getBaseVoltageAsNumber() * 0.1;
3072
3322
  }
3073
3323
  }
3324
+ usoll = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : usoll;
3074
3325
  //Create and define regulating control for voltage control
3075
3326
  if (cterminal !== undefined) {
3076
3327
  rControl = (0, utils_2.createRegulatingControl)((0, parser_utils_1.getUUID)(i7DataRQ.guid_rc), (0, util_create_1.createNotation)([regCondEquip.getUUID().substring(0, 8), suffix]), true, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
@@ -3083,6 +3334,9 @@ class ConverterIntegral7 {
3083
3334
  rControl.targetDeadband = (0, parser_utils_1.isNumericI7)(uband) ? uband : undefined; //zulässiges Spannungsband
3084
3335
  /** Spannung in kilo*/
3085
3336
  //TODO TEMP FIX bei lokaler Regelegung bleibt usoll = null.
3337
+ if (cterminal !== undefined && cterminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
3338
+ const stop = true;
3339
+ }
3086
3340
  rControl.targetValue = (0, parser_utils_1.isNumericI7)(usoll) ? usoll : ((0, parser_utils_1.isNumericI7)(i7DataEinsp === null || i7DataEinsp === void 0 ? void 0 : i7DataEinsp.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataEinsp.usoll) : tCn.getBaseVoltageAsNumber());
3087
3341
  const guidSuffix = (_a = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8);
3088
3342
  rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
@@ -3098,7 +3352,7 @@ class ConverterIntegral7 {
3098
3352
  }
3099
3353
  }
3100
3354
  }
3101
- else if (isRegulatingControl && i7DataSVC) {
3355
+ else if (isRegulatingControl && i7DataSVC !== undefined) {
3102
3356
  /** Regelung */
3103
3357
  const regCondEquip = condEquip;
3104
3358
  const cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
@@ -3119,12 +3373,12 @@ class ConverterIntegral7 {
3119
3373
  uband = (0, parser_utils_1.isNumericI7)(tVMax) && (0, parser_utils_1.isNumericI7)(tVMin) ? (0, parser_utils_1.convertToNumberI7)(tVMax) - (0, parser_utils_1.convertToNumberI7)(tVMin) : undefined;
3120
3374
  if (uband === undefined) {
3121
3375
  if (tCn) {
3122
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3376
+ uband = (0, parser_utils_1.isNumericI7)(uref) ? uref * 0.1 : ((0, parser_utils_1.isNumericI7)(usoll) ? usoll * 0.1 : tCn.getBaseVoltageAsNumber() * 0.1);
3123
3377
  }
3124
3378
  }
3125
3379
  if (cterminal !== undefined) {
3126
3380
  const uuid = (0, parser_utils_1.getUUID)(i7DataSVC.guid_rc);
3127
- rControl = (0, utils_2.createRegulatingControl)(uuid, (0, util_create_1.createNotation)([condEquip.getUUID().substring(0, 8), suffix]), inBetrieb, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
3381
+ rControl = (0, utils_2.createRegulatingControl)(uuid, (0, util_create_1.createNotation)([condEquip.getUUID().substring(0, 8), suffix]), true, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
3128
3382
  rControl.enabled = true;
3129
3383
  if (isStatcom) {
3130
3384
  rControl.discrete = true;
@@ -3197,20 +3451,23 @@ class ConverterIntegral7 {
3197
3451
  usoll = (0, parser_utils_1.isNumericI7)(i7DataHgue.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.usoll) : undefined;
3198
3452
  if (regelungU) {
3199
3453
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
3200
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3454
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3455
+ condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3201
3456
  }
3202
3457
  else if (regelungP) {
3203
3458
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
3204
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3459
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3205
3460
  }
3206
- if ((spannungsregelungLokal || spannungsregelungRemote) && usoll == undefined) {
3207
- //get rated voltage of controlled node.
3461
+ if (isRegulatingControl) { //voltage control for AC-side
3208
3462
  let cterminal = undefined; //connection point terminal of this device
3209
3463
  let tVMax = undefined; //maximum target voltage
3210
3464
  let tVMin = undefined; //minimum target voltage
3211
- //get target voltage of controlled node.
3465
+ //get rated voltage of controlled node.
3212
3466
  if (knotenSpgGeregelt && spannungsregelungRemote) {
3213
3467
  cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3468
+ if (cterminal === undefined) {
3469
+ let stop = true;
3470
+ }
3214
3471
  if (cterminal) {
3215
3472
  tCn = cterminal.getConnectivityNode();
3216
3473
  if (tCn) {
@@ -3229,7 +3486,9 @@ class ConverterIntegral7 {
3229
3486
  if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3230
3487
  switch (knotenSpgGeregelt) {
3231
3488
  case undefined: {
3232
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3489
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3490
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3491
+ }
3233
3492
  if (cterminal === undefined) {
3234
3493
  cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3235
3494
  }
@@ -3251,10 +3510,10 @@ class ConverterIntegral7 {
3251
3510
  }
3252
3511
  }
3253
3512
  }
3513
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3254
3514
  }
3255
3515
  condEquip.targetUpcc = usoll;
3256
- condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
3257
- condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3516
+ //(condEquip as VsConverter).targetQpcc = 0; //ReactivePower, ReactivePowerCapabilityCurve is set in advance
3258
3517
  condEquip.targetPpcc = condEquip.baseS * -1;
3259
3518
  }
3260
3519
  }
@@ -3354,47 +3613,10 @@ class ConverterIntegral7 {
3354
3613
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_STARR)) {
3355
3614
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KNOTEN_STARR, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KNOTEN_STARR), containerIDs));
3356
3615
  for (const i7Data of result) {
3357
- //const junction = new Junction(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data),"_J",`_${cimModel.junctions]), 'JNCT', 'starre Verbindung');
3358
3616
  const breaker = new Breaker_1.Breaker((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'Breaker', 'starre Verbindung');
3359
3617
  yield this.convertSwitch(breaker, cimModel, i7Data);
3360
3618
  cimModel.addBreaker(breaker);
3361
3619
  this.addIdMapping(i7Data.id, breaker.mrid, integral_sql_1.Integral7TableNames.LEISTUNGSSCHALTER);
3362
- /**const schaltzustand = convertToBooleanI7(i7Data.schaltzustand);
3363
-
3364
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer);
3365
-
3366
- if (equipmentContainer) {
3367
- equipmentContainer.addEquipment(junction);
3368
- junction.equipmentContainer = equipmentContainer;
3369
- } else {
3370
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen EquipmentContainer.`);
3371
- }
3372
- const cnStart = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
3373
- const cnZiel = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
3374
-
3375
- if (cnStart) {
3376
- const terminal = this.createConnection(cimModel, junction, cnStart, PhaseCode.ABC, true, 1);
3377
- if (schaltzustand === false) {
3378
- terminal.connected = schaltzustand;
3379
- }
3380
- } else {
3381
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Anfangsknoten.`);
3382
- }
3383
- if (cnZiel) {
3384
- const terminal = this.createConnection(cimModel, junction, cnZiel, PhaseCode.ABC, true, 2);
3385
- if (schaltzustand === false) {
3386
- terminal.connected = schaltzustand;
3387
- }
3388
- } else {
3389
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Zielknoten.`);
3390
- }
3391
- const baseVoltage = getTerminalUn(cimModel, junction);
3392
- if (baseVoltage) {
3393
- junction.baseVoltage = baseVoltage;
3394
- }
3395
- this.addIdMapping(i7Data.id, junction.mrid, Integral7TableNames.KNOTEN_STARR);
3396
- cimModel.addJunction(junction);
3397
- **/
3398
3620
  }
3399
3621
  }
3400
3622
  else {
@@ -3503,7 +3725,7 @@ class ConverterIntegral7 {
3503
3725
  const start = cimModel.objects.get(this.integralID2UUID.get(i7Data.aknoten));
3504
3726
  let startTerminal;
3505
3727
  if (start) {
3506
- startTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, 1);
3728
+ startTerminal = this.createConnection(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, true);
3507
3729
  }
3508
3730
  else {
3509
3731
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Anfangsknoten.`);
@@ -3512,7 +3734,7 @@ class ConverterIntegral7 {
3512
3734
  const target = cimModel.objects.get(this.integralID2UUID.get(i7Data.eknoten));
3513
3735
  let targetTerminal;
3514
3736
  if (target) {
3515
- targetTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, 2);
3737
+ targetTerminal = this.createConnection(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, true);
3516
3738
  }
3517
3739
  else {
3518
3740
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Zielknoten.`);
@@ -3529,7 +3751,7 @@ class ConverterIntegral7 {
3529
3751
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3530
3752
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3531
3753
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3532
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir);
3754
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir, seriesCompensator.r);
3533
3755
  seriesCompensator.varistorPresent = false;
3534
3756
  /** EQ-SC */
3535
3757
  seriesCompensator.r0 = seriesCompensator.r;
@@ -3615,8 +3837,8 @@ class ConverterIntegral7 {
3615
3837
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3616
3838
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3617
3839
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3618
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1);
3619
- seriesCompensator.varistorPresent = false;
3840
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1, seriesCompensator.r);
3841
+ //seriesCompensator.varistorPresent = false;
3620
3842
  /** EQ-SC */
3621
3843
  seriesCompensator.r0 = seriesCompensator.r;
3622
3844
  seriesCompensator.x0 = seriesCompensator.x;
@@ -3681,28 +3903,14 @@ class ConverterIntegral7 {
3681
3903
  for (const i7DataSchiene of stpSchiene) {
3682
3904
  try {
3683
3905
  stpSchieneIDs.push(i7DataSchiene.id);
3684
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7DataSchiene.id)));
3685
- const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3906
+ const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id;
3686
3907
  const uuidConnectivityNode = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, keyConnectivityNode);
3687
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN']));
3688
- const keyJunction = cim_class_names_1.ClassNames.Junction + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3689
- const uuidJunction = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Junction, this.configUuid, keyJunction);
3690
- const junction = new Junction_1.Junction(uuidJunction, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_J']));
3691
- connectivityNode.setConnectivityNodeContainer(equipmentContainer);
3692
- if (equipmentContainer) {
3693
- equipmentContainer.addEquipment(junction);
3694
- junction.equipmentContainer = equipmentContainer;
3695
- }
3696
- else {
3697
- this.logger.debug(`Sternpunktschiene ${i7DataSchiene.id} besitzt keinen EquipmentContainer.`);
3698
- }
3908
+ const name = (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN'], 32, false);
3909
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, name, name);
3910
+ connectivityNode.key = integral_prefix_1.CKnoten1PSO_PRAEFIX + i7DataSchiene.bezeichner;
3699
3911
  // Verbindung herstellen
3700
- const terminal = this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3701
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3912
+ integral7.sternPunktImpModel.stpSchieneIdConnectivityNode.set(i7DataSchiene.id, connectivityNode);
3702
3913
  integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
3703
- integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
3704
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
3705
- integral7.sternPunktImpModel.stpSchieneTerminal.set(i7DataSchiene.id, terminal);
3706
3914
  this.addIdMapping(i7DataSchiene.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHIENE);
3707
3915
  }
3708
3916
  catch (e) {
@@ -3717,41 +3925,63 @@ class ConverterIntegral7 {
3717
3925
  }));
3718
3926
  });
3719
3927
  }
3720
- convertKdrossel(cimModel, integral7, stpScheinenID) {
3928
+ convertKdrossel(cimModel, integral7, stpSchienenID, defaultValuesConfig) {
3721
3929
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3722
3930
  try {
3723
3931
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ)) {
3724
- if (stpScheinenID.length) {
3725
- const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STERNPUNKT_IMPEDANZ, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ), stpScheinenID));
3932
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3933
+ const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STERNPUNKT_IMPEDANZ, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ), stpSchienenID));
3726
3934
  for (const i7Data of result) {
3727
3935
  const kdType = this.kdrosseltypen.get(i7Data.nametyp);
3936
+ const iakt = (0, parser_utils_1.isNumericI7)(i7Data.iakt) ? i7Data.iakt : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.iakt) ? kdType === null || kdType === void 0 ? void 0 : kdType.iakt : undefined);
3937
+ const xne = (0, parser_utils_1.isNumericI7)(i7Data.xne) ? i7Data.xne : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.xne) ? kdType === null || kdType === void 0 ? void 0 : kdType.xne : undefined);
3938
+ const ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.xne) ? (0, parser_utils_1.convertToNumberI7)(kdType === null || kdType === void 0 ? void 0 : kdType.xne) : undefined);
3728
3939
  const imax = (0, parser_utils_1.isNumericI7)(i7Data.imax) ? i7Data.imax : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.imax) ? kdType === null || kdType === void 0 ? void 0 : kdType.imax : undefined);
3729
3940
  const imin = (0, parser_utils_1.isNumericI7)(i7Data.imin) ? i7Data.imin : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.imin) ? kdType === null || kdType === void 0 ? void 0 : kdType.imin : undefined);
3730
3941
  const connectivityNode = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.anschluss));
3731
- const junctionUUID = integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get((i7Data.anschluss));
3732
- let conductingEquip;
3733
- if (imax && imin) {
3942
+ let conductingEquip = undefined;
3943
+ if (iakt !== undefined && xne !== undefined || xne !== undefined && ur !== undefined || iakt !== undefined && ur !== undefined) {
3734
3944
  /** PetersenCoil */
3735
3945
  const petersenCoil = new PetersenCoil_1.PetersenCoil((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
3736
- integral7.sternPunktImpModel.petersenCoils.set(petersenCoil.mrid, petersenCoil);
3737
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, petersenCoil);
3946
+ if (xne !== undefined && ur !== undefined) {
3947
+ petersenCoil.xGroundNominal = xne;
3948
+ petersenCoil.nominalU = ur;
3949
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3950
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3951
+ }
3952
+ else if (iakt !== undefined && xne !== undefined) {
3953
+ petersenCoil.xGroundNominal = xne;
3954
+ petersenCoil.nominalU = iakt * xne * Math.pow(10, -3);
3955
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3956
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3957
+ }
3958
+ else if (iakt !== undefined && ur !== undefined) {
3959
+ petersenCoil.nominalU = ur;
3960
+ petersenCoil.xGroundNominal = petersenCoil.nominalU * Math.pow(10, 3) / iakt;
3961
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3962
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3963
+ }
3964
+ petersenCoil.mode = PetersenCoilModeKind_1.PetersenCoilModeKind.automaticPositioning;
3738
3965
  this.addIdMapping(i7Data.id, petersenCoil.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3739
3966
  conductingEquip = petersenCoil;
3740
3967
  }
3741
3968
  else {
3742
3969
  /** GroundingImpedance */
3743
3970
  const groundingImpedance = new GroundingImpedance_1.GroundingImpedance((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_GI']), i7Data.kurzname);
3744
- groundingImpedance.r = (0, parser_utils_1.isNumericI7)(i7Data.rne) ? i7Data.rne : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.rne) ? kdType === null || kdType === void 0 ? void 0 : kdType.rne : undefined);
3745
- groundingImpedance.x = (0, parser_utils_1.isNumericI7)(i7Data.xne) ? i7Data.xne : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.xne) ? kdType === null || kdType === void 0 ? void 0 : kdType.xne : undefined);
3971
+ groundingImpedance.r = (0, parser_utils_1.isNumericI7)(i7Data.rne) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rne) : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.rne) ? (0, parser_utils_1.convertToNumberI7)(kdType === null || kdType === void 0 ? void 0 : kdType.rne) : undefined);
3972
+ groundingImpedance.x = xne;
3746
3973
  integral7.sternPunktImpModel.groundingImpedances.set(groundingImpedance.mrid, groundingImpedance);
3747
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3974
+ //integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3748
3975
  this.addIdMapping(i7Data.id, groundingImpedance.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3749
3976
  conductingEquip = groundingImpedance;
3750
3977
  }
3751
- // Verbindung herstellen
3978
+ // Create connection for PetersenCoil and GroundingImpedance connected with 'Sternpunktschiene'. PetersenCoil and GroundingImpedance connected to 'Sternpunktknoten' is connected during convertTrafo2w and convertTrafo3w
3752
3979
  if (connectivityNode) {
3753
- const terminal = this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3754
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3980
+ this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3981
+ integral7.sternPunktImpModel.stpSchieneUUIDStpImp.set(connectivityNode.getUUID(), conductingEquip);
3982
+ }
3983
+ else {
3984
+ integral7.sternPunktImpModel.stpKnotenStpImp.set(i7Data.anschluss, conductingEquip);
3755
3985
  }
3756
3986
  }
3757
3987
  }
@@ -3772,26 +4002,37 @@ class ConverterIntegral7 {
3772
4002
  });
3773
4003
  }
3774
4004
  /** Den Schaltzuszand bestimmen und zuvor angelegten (convertSternpunktSchienen) Terminalinstanz zuweisen. */
3775
- convertStpSchaltelemente(integral7, stpSchienenID) {
4005
+ convertStpSchaltelemente(cimModel, integral7, stpSchienenID) {
3776
4006
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3777
4007
  try {
3778
4008
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER)) {
3779
- if (stpSchienenID.length) {
4009
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3780
4010
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STERNPUNKT_SCHALTER, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER), stpSchienenID));
3781
4011
  for (const i7Data of result) {
3782
- const terminal = integral7.sternPunktImpModel.stpSchieneTerminal.get(i7Data.eknoten);
3783
- if (terminal) {
3784
- terminal.connected = (0, parser_utils_1.isBooleanI7)(i7Data.schaltzustand) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand) : true;
4012
+ const connectivityNodeAbcn = cimModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.aknoten)); //connection point of 'PowerTransformerEnd' is assigned during convertTrafo2w and convertTrafo3w
4013
+ const connectivityNodeN = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.eknoten)); //connection point of 'Sternpunktschiene'
4014
+ if (connectivityNodeN != undefined) {
4015
+ const schaltzustand = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
4016
+ const keyGroundDisconnector = cim_class_names_1.ClassNames.GroundDisconnector + i7Data.aknoten + i7Data.eknoten;
4017
+ const uuidGroundDisconnector = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.GroundDisconnector, this.configUuid, keyGroundDisconnector);
4018
+ const groundDisconnector = new GroundDisconnector_1.GroundDisconnector(uuidGroundDisconnector, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar, schaltzustand, false);
4019
+ //Set connection to ConnectivityNode at neutral side to GroundingImpedance or PetersenCoil
4020
+ this.createConnection(cimModel, groundDisconnector, connectivityNodeN, PhaseCode_1.PhaseCode.N, true);
4021
+ //cimModel.addGroundDisconnector(groundDisconnector);
4022
+ integral7.sternPunktImpModel.groundDisconnectors.set(groundDisconnector.getUUID(), groundDisconnector);
4023
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
4024
+ integral7.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.set(i7Data.id, groundDisconnector.getUUID());
4025
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
4026
+ integral7.sternPunktImpModel.groundDisconnectorsUUIDsStpSchieneUUID.set(groundDisconnector.getUUID(), connectivityNodeN.getUUID());
4027
+ /** SternpunktknotenID mit GroundDisconnector UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
4028
+ integral7.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.set(groundDisconnector.getUUID(), i7Data.eknoten);
4029
+ /** set connection to terminal of powertransformerend*/
4030
+ let earthFaultCompensator = integral7.sternPunktImpModel.stpSchieneUUIDStpImp.get(connectivityNodeN.getUUID());
4031
+ integral7.sternPunktImpModel.groundDisconnectorUUIDstpImp.set(groundDisconnector.getUUID(), earthFaultCompensator);
4032
+ this.addIdMapping(i7Data.id, groundDisconnector.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER);
3785
4033
  }
3786
- /** SchaltelementID mit Junstion UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3787
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.id, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3788
- /** Sternpunktknoten mit Junstion UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
3789
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.aknoten, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3790
4034
  }
3791
4035
  }
3792
- else {
3793
- this.logger.debug(`StpSchaltelemente Keine Sternpunktschienen vorhanden.`);
3794
- }
3795
4036
  }
3796
4037
  else {
3797
4038
  this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER} ist nicht vorhanden.`);
@@ -3909,6 +4150,7 @@ class ConverterIntegral7 {
3909
4150
  result_ohl = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STROMKREISABSCHNITT_FREILEITUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.FREILEITUNG), leitungIDs));
3910
4151
  }
3911
4152
  for (const i7Data of result) {
4153
+ let lineNames = new Map;
3912
4154
  /** Alle Stromkreisabschnitte */
3913
4155
  const stromkreisabschnitte = leitungStromkreisabschnitt.filter(elem => elem.leitung === i7Data.id);
3914
4156
  if (!((stromkreisabschnitte === null || stromkreisabschnitte === void 0 ? void 0 : stromkreisabschnitte.length) > 0))
@@ -3932,8 +4174,9 @@ class ConverterIntegral7 {
3932
4174
  '-' +
3933
4175
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.stkabname);
3934
4176
  /** Wenn kein Stromkreisobjekt vorhanden ist, dann erstelle ein neues Objekt. */
3935
- const uuidString = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3936
- const line = new AMPRIONLine_1.AMPRIONLine(uuidString, i7Schluessel);
4177
+ const uuidString = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Line, this.configUuid, i7Schluessel);
4178
+ let lineName = createLineName(i7Data, uuidString, lineNames);
4179
+ const line = new AMPRIONLine_1.AMPRIONLine(uuidString, lineName);
3937
4180
  line.ukz = i7Data.ukz;
3938
4181
  line.key = i7Schluessel;
3939
4182
  let acLineSegments = [];
@@ -3946,7 +4189,7 @@ class ConverterIntegral7 {
3946
4189
  '-' +
3947
4190
  (0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
3948
4191
  const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3949
- const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Schluessel);
4192
+ const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Data.kommentar);
3950
4193
  const key = acLineSegment.getUUID();
3951
4194
  const uuidWireObject = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.EVWireObject, this.configUuid, key);
3952
4195
  acLineSegment.key = i7Schluessel;
@@ -4009,7 +4252,7 @@ class ConverterIntegral7 {
4009
4252
  /**Connectivity Node to connect end of line and start of neighbouring line.*/
4010
4253
  const key = acLineSegment1.getUUID() + acLineSegment2.getUUID();
4011
4254
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
4012
- const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.name, '_', acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, true));
4255
+ const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, false));
4013
4256
  /**Connect end of aclinesegment i*/
4014
4257
  cn.connectivityNodeContainer = acLineSegment1.equipmentContainer;
4015
4258
  tmp_terminal = this.createConnection(cimModel, acLineSegment1, cn, PhaseCode_1.PhaseCode.ABC, true);
@@ -4068,7 +4311,6 @@ class ConverterIntegral7 {
4068
4311
  /** In any case assign Georegion to aclinesegments */
4069
4312
  let idx = 0;
4070
4313
  while (idx < acLineSegments.length && !(line.subGeographicalRegion)) {
4071
- let jdx = 0;
4072
4314
  let values = acLineSegments[idx].terminals.values();
4073
4315
  let tmp_terminal = values.next();
4074
4316
  while (tmp_terminal.value && !(line.subGeographicalRegion)) {
@@ -4138,6 +4380,9 @@ class ConverterIntegral7 {
4138
4380
  let dcLineNeutral = undefined;
4139
4381
  const i7Schluessel = integral_prefix_1.HGUELEITUNG_PRAEFIX +
4140
4382
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4383
+ if (dcLine.getUUID() === 'f125f0f3-a621-43e7-8af7-9873d52239a0') {
4384
+ const stop = true;
4385
+ }
4141
4386
  /** operationMode der Anfangs- und Zielkopfstation setzen */
4142
4387
  let converterStart = false;
4143
4388
  let converterStartNeg = false;
@@ -4152,7 +4397,7 @@ class ConverterIntegral7 {
4152
4397
  let dcNodeStartMiddle = undefined;
4153
4398
  let dcNodeTargetMiddle = undefined;
4154
4399
  //Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
4155
- const dcLineSegment = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4400
+ const dcLineSegment = new DCLineSegment_1.INTEGRALDCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4156
4401
  dcLineSegmentSet.push(dcLineSegment);
4157
4402
  let dcLineSegmentNeg = undefined;
4158
4403
  let dcLineSegmentNeutral = undefined;
@@ -4161,19 +4406,21 @@ class ConverterIntegral7 {
4161
4406
  dcLineSegment.capacitance = undefined;
4162
4407
  dcLineSegment.inductance = undefined;
4163
4408
  /**EQ: given directly by the INTEGRAL system model */
4164
- dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4409
+ dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (bipole ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) / 2) : undefined;
4410
+ dcLineSegment.ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4165
4411
  dcLineSegment.equipmentContainer = dcLine;
4166
4412
  //create second dcLineSegment in case this dcLine is a bipol.
4167
4413
  if (bipole) {
4168
4414
  const dcLineKey = dcLine.getUUID();
4169
4415
  const dcLineUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4170
4416
  dcLineNeg = new DCLine_1.DCLine(dcLineUuid, i7Data.bezeichner);
4171
- dcLineSegmentNeg = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, (0, util_create_1.createNotation)([i7Data.kurzname, '_neg'], 12, true), i7Schluessel);
4417
+ dcLineSegmentNeg = new DCLineSegment_1.INTEGRALDCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, (0, util_create_1.createNotation)([i7Data.kurzname, '_neg'], 12, true), i7Schluessel);
4172
4418
  dcLineSegmentSet.push(dcLineSegmentNeg);
4173
4419
  dcLineSegmentNeg.length = dcLineSegment.length;
4174
4420
  dcLineSegmentNeg.capacitance = undefined;
4175
4421
  dcLineSegmentNeg.inductance = undefined;
4176
- dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4422
+ dcLineSegmentNeg.resistance = dcLineSegment.resistance;
4423
+ dcLineSegmentNeg.ur = dcLineSegment.ur;
4177
4424
  dcLineSegmentNeg.equipmentContainer = dcLineNeg;
4178
4425
  }
4179
4426
  //create metallic return
@@ -4181,12 +4428,13 @@ class ConverterIntegral7 {
4181
4428
  const dcLineNeutralUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4182
4429
  const dcLineSegmentUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLineSegment, this.configUuid, dcLineNeutralUuid);
4183
4430
  dcLineNeutral = new DCLine_1.DCLine(dcLineNeutralUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCL']));
4184
- dcLineSegmentNeutral = new DCLineSegment_1.DCLineSegment(dcLineSegmentUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCLS'], 32, true), (0, util_create_1.createNotation)([i7Data.kurzname, '_mid'], 12, true), i7Schluessel);
4431
+ dcLineSegmentNeutral = new DCLineSegment_1.INTEGRALDCLineSegment(dcLineSegmentUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCLS'], 32, true), (0, util_create_1.createNotation)([i7Data.kurzname, '_mid'], 12, true), i7Schluessel);
4185
4432
  dcLineSegmentSet.push(dcLineSegmentNeutral);
4186
4433
  dcLineSegmentNeutral.length = dcLineSegment.length;
4187
4434
  dcLineSegmentNeutral.capacitance = undefined;
4188
4435
  dcLineSegmentNeutral.inductance = undefined;
4189
- dcLineSegmentNeutral.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4436
+ dcLineSegmentNeutral.resistance = dcLineSegment.resistance;
4437
+ dcLineSegmentNeutral.ur = dcLineSegment.ur;
4190
4438
  dcLineSegmentNeutral.equipmentContainer = dcLineNeutral;
4191
4439
  //get ACDCConverter at both ends of DCLine
4192
4440
  const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
@@ -4364,8 +4612,10 @@ class ConverterIntegral7 {
4364
4612
  const equipmentKey = dcTerminal.getUUID();
4365
4613
  for (const elem of dcTerminal.dcNode.dcTerminals.values()) {
4366
4614
  if (elem instanceof ACDCConverterDCTerminal_1.ACDCConverterDCTerminal) {
4367
- const pR = elem.dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4368
- const uR = acDCConverterStart.ratedUdc; //voltage in kV
4615
+ //const pR: number = (elem as ACDCConverterDCTerminal).dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4616
+ //const uR: number = acDCConverterStart.ratedUdc; //voltage in kV
4617
+ const pR = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
4618
+ const uR = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4369
4619
  if (pR != undefined && uR != undefined) {
4370
4620
  let ir = (pR * Math.pow(10, 6)) / (uR * Math.pow(10, 3)); //assumption: pr is BaseS
4371
4621
  if (bipole) {
@@ -4425,6 +4675,7 @@ class ConverterIntegral7 {
4425
4675
  typTrafo.r0kr2 = i7Data.r0kr2;
4426
4676
  typTrafo.r00r1 = i7Data.r00r1;
4427
4677
  typTrafo.r00r2 = i7Data.r00r2;
4678
+ typTrafo.s_dauer = i7Data.s_dauer;
4428
4679
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4429
4680
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4430
4681
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4476,6 +4727,9 @@ class ConverterIntegral7 {
4476
4727
  typTrafo.r0kr2 = i7Data.r0kr2;
4477
4728
  typTrafo.r00r1 = i7Data.r00r1;
4478
4729
  typTrafo.r00r2 = i7Data.r00r2;
4730
+ typTrafo.s_dauer_1 = i7Data.s_dauer_1;
4731
+ typTrafo.s_dauer_2 = i7Data.s_dauer_2;
4732
+ typTrafo.s_dauer_3 = i7Data.s_dauer_3;
4479
4733
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4480
4734
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr1, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4481
4735
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4594,30 +4848,18 @@ class ConverterIntegral7 {
4594
4848
  integral_prefix_1.TRAFO2W_PRAEFIX +
4595
4849
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4596
4850
  powerTransformer.key = i7Schluessel;
4597
- if (powerTransformer.getUUID() === '515508dc-5982-4686-ad26-08d39db91421') {
4598
- let stop = true;
4599
- } // kein Typ in D4
4600
- if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') {
4851
+ if (powerTransformer.getUUID() === '21def4394e814e77b3f25acbad7bda16') {
4601
4852
  let stop = true;
4602
- } //Typ in D8
4603
- if (powerTransformer.getUUID() === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') {
4604
- let stop = true;
4605
- } //kein Typ in BE
4606
- if (powerTransformer.getUUID() === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9') {
4607
- let stop = true;
4608
- } //Typ in D7
4853
+ }
4609
4854
  if (powerTransformer.getUUID() === '8eca3fedd32c49369f8946ac4ce70e17') { //Stufenstellerkonvertierung fehlgeschlagen
4610
4855
  let stop = true;
4611
4856
  }
4612
4857
  if (powerTransformer.getUUID() === 'b9d8bd48e1554af7b6153c1f7da052e1') {
4613
4858
  let stop = true;
4614
4859
  } //Phasenschieber zu falscher Winkel und falsches stepIncrement.
4615
- if (powerTransformer.getUUID() === '2ACF34B9-9DC9-4607-9B8A-032EBC2C31A5') {
4860
+ if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') { //pkr, ukr, ... konnte nicht aus Typ ermittelt werden.
4616
4861
  let stop = true;
4617
4862
  } //Längsregeltransformator mit symmetrischem Phasenschieber.
4618
- if (i7Data.nametyp) {
4619
- const stop = true;
4620
- }
4621
4863
  const powerTransformerInfo = this.cimModelDefault.getPowerTransformerInfoByName(i7Data.nametyp);
4622
4864
  if (powerTransformerInfo) {
4623
4865
  facility.setAssetInfo(powerTransformerInfo);
@@ -4635,12 +4877,13 @@ class ConverterIntegral7 {
4635
4877
  // Wicklung 1
4636
4878
  const powerTransformerEnd1 = new PowerTransformerEnd_1.PowerTransformerEnd((0, parser_utils_1.getUUID)(i7Data.guid_w1, this.objectMappingConfig.standardiseUuid), `W1-${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name}`);
4637
4879
  powerTransformerEnd1.endNumber = 1;
4638
- const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4639
- const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4880
+ const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4881
+ const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4640
4882
  const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
4641
4883
  const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4642
4884
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4643
- const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
4885
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, false);
4886
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, false);
4644
4887
  // P0 Lastverluste im I7 Modell p_leer
4645
4888
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4646
4889
  // Leerlaufverluste
@@ -4688,7 +4931,7 @@ class ConverterIntegral7 {
4688
4931
  const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode.ABC, true, 1) : undefined;*/
4689
4932
  if (!startTerminal)
4690
4933
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
4691
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig);
4934
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig);
4692
4935
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4693
4936
  let equivalentInjection = undefined;
4694
4937
  if (startTerminal) {
@@ -4720,7 +4963,7 @@ class ConverterIntegral7 {
4720
4963
  const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
4721
4964
  if (!zielTerminal)
4722
4965
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
4723
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, undefined, i7Data, defaultValuesConfig);
4966
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, sdauer2, i7Data, defaultValuesConfig);
4724
4967
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4725
4968
  if (zielTerminal) {
4726
4969
  let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
@@ -4735,9 +4978,6 @@ class ConverterIntegral7 {
4735
4978
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
4736
4979
  powerTransformerEnd2.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd2.endNumber, powerTransformerEnd2.grounded);
4737
4980
  powerTransformerEnd2.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd2.endNumber);
4738
- if (uuid === '402aec99-ba2c-42fa-b4ed-b4928901f47b') {
4739
- let stop = true;
4740
- }
4741
4981
  // NullSystem Impedanzen (nur Reaktanzen)
4742
4982
  let starconnectionCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) <= 1 ? (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) : 1;
4743
4983
  const retVal = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2], starconnectionCount, powerTransformer);
@@ -4750,7 +4990,7 @@ class ConverterIntegral7 {
4750
4990
  powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4751
4991
  powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4752
4992
  /** Transormator Anschlusspunkte nach Spannungsebene sortieren */
4753
- this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4993
+ //this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4754
4994
  // TODO
4755
4995
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
4756
4996
  * da sonst die Wicklungsnummern nicht mehr übereinstimmen könnten */
@@ -4824,6 +5064,9 @@ class ConverterIntegral7 {
4824
5064
  for (const i7Data of result) {
4825
5065
  const sternpunktKnotenMap = new Map();
4826
5066
  const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
5067
+ if (uuid === 'b81485dd-5115-4241-b31a-c87a3eec9803' || uuid === '4eadc602-7dc5-41e4-bb8b-38993c03a80a') {
5068
+ const stop = true;
5069
+ }
4827
5070
  const powerTransformer = new PowerTransformer_1.PowerTransformer(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_PT']), i7Data.kurzname, i7Data.kommentar);
4828
5071
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
4829
5072
  if (substation) {
@@ -4874,9 +5117,9 @@ class ConverterIntegral7 {
4874
5117
  const ur1 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4875
5118
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4876
5119
  const ur3 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 3);
4877
- const sdauer1 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_1) : sr1;
4878
- const sdauer2 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_2) : sr2;
4879
- const sdauer3 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_3) : sr3;
5120
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, true);
5121
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, true);
5122
+ const sdauer3 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 3, true);
4880
5123
  //Leerlaufverluste in kW
4881
5124
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4882
5125
  // Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
@@ -4931,7 +5174,7 @@ class ConverterIntegral7 {
4931
5174
  powerTransformerEnd1.r = impedanzW1.r;
4932
5175
  powerTransformerEnd1.x = impedanzW1.x;
4933
5176
  powerTransformerEnd1.g = impedanzW1.g;
4934
- powerTransformerEnd1.b = impedanzW1.b;
5177
+ powerTransformerEnd1.b = -1 * impedanzW1.b;
4935
5178
  powerTransformerEnd1.ratedU = ur1;
4936
5179
  powerTransformerEnd1.ratedS = sr1;
4937
5180
  this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
@@ -4978,7 +5221,7 @@ class ConverterIntegral7 {
4978
5221
  powerTransformerEnd2.r = impedanzW2.r;
4979
5222
  powerTransformerEnd2.x = impedanzW2.x;
4980
5223
  powerTransformerEnd2.g = impedanzW2.g;
4981
- powerTransformerEnd2.b = impedanzW2.b;
5224
+ powerTransformerEnd2.b = -1 * impedanzW2.b;
4982
5225
  powerTransformerEnd2.ratedS = sr2;
4983
5226
  powerTransformerEnd2.ratedU = ur2;
4984
5227
  powerTransformerEnd2.powerTransformer = powerTransformer;
@@ -5026,7 +5269,7 @@ class ConverterIntegral7 {
5026
5269
  powerTransformerEnd3.r = impedanzW3.r;
5027
5270
  powerTransformerEnd3.x = impedanzW3.x;
5028
5271
  powerTransformerEnd3.g = impedanzW3.g;
5029
- powerTransformerEnd3.b = impedanzW3.b;
5272
+ powerTransformerEnd3.b = -1 * impedanzW3.b;
5030
5273
  powerTransformerEnd3.ratedS = sr3;
5031
5274
  powerTransformerEnd3.ratedU = ur3;
5032
5275
  powerTransformerEnd3.powerTransformer = powerTransformer;
@@ -5058,6 +5301,15 @@ class ConverterIntegral7 {
5058
5301
  powerTransformerEnd3.r0 = zeroSequImpedanzWx.r03;
5059
5302
  // Transormator Anschlusspunkte nach Spannungsebene sortieren
5060
5303
  this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
5304
+ // Set grounding for autotransformer
5305
+ const pTEnds = powerTransformer.getPowerTransformerEnd().filter(elem => elem.connectionKind === 'A');
5306
+ if (pTEnds.length > 0) {
5307
+ if (pTEnds.filter(elem => elem.grounded === true).length > 0) {
5308
+ for (const end of pTEnds) {
5309
+ end.grounded = true;
5310
+ }
5311
+ }
5312
+ }
5061
5313
  //TODO
5062
5314
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
5063
5315
  * da sonst die Wicklungsnummern, nicht mehr übereinstimmen könnten */
@@ -5252,10 +5504,8 @@ class ConverterIntegral7 {
5252
5504
  sortTransformerEnd(powerTransformer, sortProperty, order) {
5253
5505
  // Store current order of power transformer ends.
5254
5506
  let winding_guids = new Array(powerTransformer.powerTransformerEnd.length);
5255
- let winding_guids_fixed = new Array(powerTransformer.powerTransformerEnd.length);
5256
5507
  for (let i = 0; i < powerTransformer.powerTransformerEnd.length; i++) {
5257
5508
  winding_guids[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5258
- winding_guids_fixed[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5259
5509
  }
5260
5510
  //Sort: This step maybe changes power transformer ends order for this power transformer.
5261
5511
  powerTransformer.powerTransformerEnd.sort(function (w1, w2) {
@@ -5279,8 +5529,19 @@ class ConverterIntegral7 {
5279
5529
  // const isNull = true;
5280
5530
  //}
5281
5531
  }
5532
+ let tmpMapping = new Array(powerTransformer.powerTransformerEnd.length);
5533
+ for (let i = 0; i < winding_guids.length; i++) {
5534
+ tmpMapping[i] = (winding_guids.indexOf(powerTransformer.powerTransformerEnd[i].getUUID()) + 1).toString();
5535
+ }
5536
+ return tmpMapping; //return mapping
5282
5537
  }
5283
5538
  setACLineSegmentProperties(defaultModel, cimModel, acLineSegment, data, cable, defaultValuesConfig) {
5539
+ if ((0, parser_utils_1.isBooleanI7)(data.ltgmonitoring) && (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring)) {
5540
+ acLineSegment.ltgmonitoring = (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring);
5541
+ }
5542
+ else {
5543
+ acLineSegment.ltgmonitoring = false;
5544
+ }
5284
5545
  if ((0, parser_utils_1.isBooleanI7)(data.flag_impedanzlos) && (0, parser_utils_1.convertToBooleanI7)(data.flag_impedanzlos)) {
5285
5546
  data.flag_impedanzlos = 1;
5286
5547
  }
@@ -5381,8 +5642,8 @@ class ConverterIntegral7 {
5381
5642
  * @param equipmentKey Generierung einer persistenter UUID v5. Für PowerTransformer wird UUID des PowerTransformerEnds verwendet. Andernfalls die UUID des ConductingEquipments
5382
5643
  * */
5383
5644
  setConductingEquipmentOperationalLimit(cimModel, name, terminal, equipmentKey, limit, limitType, igrenz) {
5384
- if ((limit !== undefined && limit > 0) && (igrenz !== undefined && igrenz > 0))
5385
- return;
5645
+ if (!(limit !== undefined && limit > 0) || !(igrenz !== undefined && igrenz > 0))
5646
+ return; //if 'limit' and 'igrenz' is not given leave
5386
5647
  /** OperationalLimitSet erstellen */
5387
5648
  const operationalLimitSetKey = terminal.getUUID() + equipmentKey;
5388
5649
  const operationalLimitSetUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.OperationalLimitSet, this.configUuid, operationalLimitSetKey);
@@ -5467,6 +5728,9 @@ class ConverterIntegral7 {
5467
5728
  terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
5468
5729
  }
5469
5730
  }
5731
+ if (terminal !== undefined && terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
5732
+ const stop = true;
5733
+ }
5470
5734
  return terminal;
5471
5735
  }
5472
5736
  createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
@@ -5984,7 +6248,7 @@ class ConverterIntegral7 {
5984
6248
  // Topologie
5985
6249
  powerTransformerEnd.terminal = terminal;
5986
6250
  this.setConductingEquipmentOperationalLimit(cimModel, `W${powerTransformerEnd.endNumber}${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name}`, terminal, powerTransformer.getUUID(), sdauer, cim_class_names_1.ClassNames.ApparentPowerLimit);
5987
- if (powerTransformer.getUUID() === '4d14cd95-215c-45f3-8136-b06d69ee0191') {
6251
+ if (powerTransformer.getUUID() === '3c3928be-e691-453d-8216-df30bd11845e') {
5988
6252
  const stop = true;
5989
6253
  }
5990
6254
  let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
@@ -6040,36 +6304,34 @@ class ConverterIntegral7 {
6040
6304
  }
6041
6305
  convertTapChangers(i7Data, transformerEnds, cimModel, transformerinfo, connectivityNode, spannungsband) {
6042
6306
  var _a, _b, _c, _d, _e, _f, _g, _h;
6043
- /*if(getUUID(i7Data.guid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
6044
- let stop = true; DONE
6307
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'c0ba4bd1102c4f4fa4fc66865a60f462') { //Zeile53 - Typ Meeden'
6308
+ let stop = true;
6045
6309
  }
6046
- if(getUUID(i7Data.guid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
6047
- let stop = true; DONE
6048
- }*/
6049
- /*if(getUUID(i7Data.guid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
6050
- let stop = true;
6051
- }*/
6052
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
6310
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === '2e8057ed695147f9903023cb5e9d4a0c') { //Zeile55 - SR und LR'
6053
6311
  let stop = true;
6054
6312
  }
6055
- /*if(getUUID(i7Data.guid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
6056
- let stop = true;
6057
- }*/
6058
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
6313
+ if ((0, parser_utils_1.getUUID)(i7Data.guid).toLowerCase() === 'd7a25b80-b439-48a0-b67e-108903063237') { //Zeile81 - SR statt LR'
6314
+ let stop = true;
6315
+ }
6316
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'b81485dd-5115-4241-b31a-c87a3eec9803') {
6059
6317
  let stop = true;
6060
6318
  }
6061
- /*if(getUUID(i7Data.guid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
6062
- let stop = true;
6063
- }*/
6064
6319
  let ratioPhaseTapChangerPresent = false;
6065
6320
  //Check if tap changer exists. (power transformer winding)
6066
6321
  let tapChangerNumberI7 = []; //Number of tap changer
6067
6322
  let tapChangerNumber = [];
6068
- //let transformerEndInfo:EVPowerTransformerEndInfo[] = [];
6323
+ //collect information about tap changers (without type)
6069
6324
  for (let tapChangerPos = 1; tapChangerPos <= 2; tapChangerPos++) {
6070
6325
  if ((0, parser_utils_1.isNumericI7)(i7Data[`gestufte_seite_s${tapChangerPos}`])) {
6071
- tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6072
- tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6326
+ if (i7Data[`gestufte_seite_s${tapChangerPos}`] !== 0) {
6327
+ tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6328
+ tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6329
+ }
6330
+ else if (i7Data[`gestufte_seite_s${tapChangerPos}`] === 0) {
6331
+ const controlledSide = getHVSideNumber(transformerEnds);
6332
+ tapChangerNumberI7.push(controlledSide);
6333
+ tapChangerNumber.push(controlledSide);
6334
+ }
6073
6335
  }
6074
6336
  }
6075
6337
  //collect information about tap changers (type)
@@ -6084,15 +6346,15 @@ class ConverterIntegral7 {
6084
6346
  //If there is a phase tap changer and a ratio tap changer reorder the tap changers to process ratio tap changer first.
6085
6347
  let index = undefined;
6086
6348
  if (tapChangerNumberI7.length > 1) {
6087
- for (let entry of tapChangerNumberI7) {
6349
+ for (let i = 0; i < tapChangerNumberI7.length; i++) {
6088
6350
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
6089
- const transformerEndInfo = (_d = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _d === void 0 ? void 0 : _d.find(elem => elem.endNumber === entry);
6351
+ const transformerEndInfo = (_d = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _d === void 0 ? void 0 : _d.find(elem => elem.endNumber === tapChangerNumberI7[i]);
6090
6352
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
6091
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entry}`])
6092
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entry}`])
6353
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6354
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
6093
6355
  : (_e = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _e === void 0 ? void 0 : _e.value;
6094
- if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && tapChangerNumberI7.indexOf(entry) > 0) {
6095
- index = tapChangerNumberI7.indexOf(entry);
6356
+ if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && i > 0) {
6357
+ index = i; //This only works for two tapchanger definitions per power transformer
6096
6358
  ratioPhaseTapChangerPresent = true;
6097
6359
  }
6098
6360
  }
@@ -6102,15 +6364,15 @@ class ConverterIntegral7 {
6102
6364
  tapChangerNumber[1] = tapChangerNumberI7[0];
6103
6365
  }
6104
6366
  /** I7 Modell max. 2 Stufenschalter */
6105
- for (let entry of tapChangerNumber) {
6367
+ for (let i = 0; i < tapChangerNumber.length; i++) {
6106
6368
  /**
6107
6369
  * 0 Oberspannungsseite
6108
6370
  * 1 Seite 1
6109
6371
  * 2 Seite 2
6110
6372
  * - Stufenschalter nicht vorhanden
6111
6373
  */
6112
- let entryI7 = tapChangerNumberI7.indexOf(entry) + 1;
6113
- let gestufteSeite = tapChangerNumberI7[entryI7 - 1];
6374
+ let entryI7 = i + 1;
6375
+ let gestufteSeite = tapChangerNumberI7[i];
6114
6376
  const transformerEndInfo = (_f = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _f === void 0 ? void 0 : _f.find(elem => elem.endNumber === entryI7);
6115
6377
  const transformerEnd = transformerEnds.find(elem => elem.endNumber === entryI7);
6116
6378
  if ((0, parser_utils_1.isNumericI7)(gestufteSeite)) {
@@ -6130,8 +6392,8 @@ class ConverterIntegral7 {
6130
6392
  continue;
6131
6393
  }
6132
6394
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
6133
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entryI7}`])
6134
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entryI7}`])
6395
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6396
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
6135
6397
  : (_h = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _h === void 0 ? void 0 : _h.value;
6136
6398
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
6137
6399
  //const neutralU = transformerEnd.ratedU;
@@ -6418,65 +6680,99 @@ class ConverterIntegral7 {
6418
6680
  * @param sternpunktKnotenMap Map mit den Sterpunktknoten aus der I7 Datenbank
6419
6681
  * */
6420
6682
  convertTrafoGrounding(frame, powerTransformer, powerTransformerEnd, i7Modell, stpKnoten, defaultValuesConfig) {
6421
- var _a, _b, _c, _d, _e, _f;
6422
- /** Trafo ist geerdet */
6683
+ /**
6684
+ * Five cases for transformer grounding model has to be checked:
6685
+ * Case 1: no grounding ... no 'Sternpunktknoten' is present ... ''
6686
+ * Case 2: no grounding ... 'Sternpunktknoten', 'SternpunktSchaltelement', 'Sternpunktschiene' is present but no 'KDrossel' ... 'isoliert'
6687
+ * Case 3: grounding is present ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 1 ... 'starr' or 'direkt'
6688
+ * Case 4: grounding is present ... only 'Sternpunktknoten' and 'Kdrossel' is present ... 'über Impedanz'
6689
+ * Case 5: grounding is present ... 'Sternpunktknoten', 'Sternpunktschaltelement', 'Sternpunktschiene' and 'Kdrossel' is present ... 'über Impedanz'
6690
+ * Case 6: no grounding ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 0 ... ''
6691
+ */
6423
6692
  const cimModel = frame.cimModel;
6693
+ let groundDisconnectorUUID = undefined;
6694
+ let connectivityNodeN = undefined;
6695
+ let groundDisconnector = undefined;
6696
+ let voltageLevel = undefined;
6424
6697
  if (stpKnoten) {
6425
- const junctionUUID = i7Modell.sternPunktImpModel.stpSchieneJunctionUUIDs.get(stpKnoten.schaltelement1pelem);
6426
- const junction = i7Modell.sternPunktImpModel.junctions.get(junctionUUID);
6427
- powerTransformerEnd.grounded = true;
6428
- // TODO
6429
- powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground;
6430
- if (!junctionUUID) {
6431
- /** Fall 1 Wenn der Knoten kein Schaltelement hat, dann direkte Erdung */
6432
- //TODO
6433
- // rground und xground aus der default-config verwenden?
6434
- powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground;
6698
+ groundDisconnectorUUID = i7Modell.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.get(stpKnoten.schaltelement1pelem);
6699
+ connectivityNodeN = i7Modell.sternPunktImpModel.stpSchieneIdConnectivityNode.get(i7Modell.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.get(groundDisconnectorUUID));
6700
+ groundDisconnector = i7Modell.sternPunktImpModel.groundDisconnectors.get(groundDisconnectorUUID);
6701
+ if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size === 1) {
6702
+ const cn = powerTransformerEnd.getTerminal().getConnectivityNode();
6703
+ this.createConnection(cimModel, groundDisconnector, cn, PhaseCode_1.PhaseCode.ABCN, true);
6704
+ }
6705
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size < 1) {
6706
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is not successfully connected.`);
6707
+ }
6708
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size > 2) {
6709
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is referenced by more than two Terminal objects.`);
6710
+ }
6711
+ /** EquipmentContainer - Voltage Level*/
6712
+ voltageLevel = (this.determineEquipmentContainer('VoltageLevel', cimModel, powerTransformerEnd.getTerminal().connectivityNode.connectivityNodeContainer));
6713
+ }
6714
+ if (stpKnoten && groundDisconnector === undefined) { //Case 3 and Case 4
6715
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.stpKnotenStpImp.get(stpKnoten.id);
6716
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 4 ... 'Kdrossel' is modelled as a GroundingImpedanz
6717
+ //cimModel.addGroundingImpedance(earthFaultCompensator as GroundingImpedance);//set grounded to 'true' if PetersenCoil is present
6718
+ const groundingImpedance = earthFaultCompensator;
6719
+ powerTransformerEnd.xground = groundingImpedance.x;
6720
+ powerTransformerEnd.rground = groundingImpedance.r;
6721
+ powerTransformerEnd.grounded = true;
6722
+ }
6723
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 4 ... 'Kdrossel' is modelled as a PetersenCoil
6724
+ //cimModel.addPetersenCoil(earthFaultCompensator as PetersenCoil); //set grounded to 'true' if GroundingImpedance is present
6725
+ const petersenCoil = earthFaultCompensator;
6726
+ powerTransformerEnd.xground = (0, parser_utils_1.isNumericI7)(petersenCoil.xGroundNominal) ? petersenCoil.xGroundNominal : (((0, parser_utils_1.isNumericI7)(petersenCoil.xGroundMax) && (0, parser_utils_1.isNumericI7)(petersenCoil.xGroundMin)) ? (petersenCoil.xGroundMax + petersenCoil.xGroundMin) / 2 : defaultValuesConfig.TransformerEnd.xground);
6727
+ powerTransformerEnd.rground = petersenCoil.r;
6728
+ powerTransformerEnd.grounded = true;
6729
+ }
6730
+ else if (stpKnoten.geerdet === 1) { //Case 3
6731
+ powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground; //it is assumed that rground and xground is zero in case of solidly grounding
6732
+ powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground; //it is assumed that rground and xground is zero in case of solidly grounding
6733
+ powerTransformerEnd.grounded = true;
6734
+ }
6735
+ else { //Case 6
6736
+ powerTransformerEnd.grounded = false;
6737
+ }
6738
+ }
6739
+ else if (connectivityNodeN !== undefined && groundDisconnector !== undefined) {
6740
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.groundDisconnectorUUIDstpImp.get(groundDisconnectorUUID);
6741
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 5 ... 'Kdrossel' is modelled as a GroundingImpedanz
6742
+ cimModel.addGroundingImpedance(earthFaultCompensator);
6743
+ cimModel.addGroundDisconnector(groundDisconnector);
6744
+ cimModel.addConnectivityNode(connectivityNodeN);
6745
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if GroundingImpedance is present
6746
+ }
6747
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 5 ... 'Kdrossel' is modelled as a PetersenCoil
6748
+ cimModel.addPetersenCoil(earthFaultCompensator);
6749
+ cimModel.addGroundDisconnector(groundDisconnector);
6750
+ cimModel.addConnectivityNode(connectivityNodeN);
6751
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if PetersenCoil is present
6752
+ }
6753
+ else { //Case 2
6754
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if no GroundingImpedance or PetersenCoil is present ... 'isolierte Sternpunktschiene'
6755
+ }
6756
+ /** BaseVoltage */
6757
+ if (voltageLevel !== undefined) {
6758
+ groundDisconnector.baseVoltage = voltageLevel.baseVoltage ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6759
+ groundDisconnector.equipmentContainer = voltageLevel;
6760
+ if (earthFaultCompensator !== undefined) {
6761
+ earthFaultCompensator.equipmentContainer = voltageLevel;
6762
+ }
6763
+ connectivityNodeN.connectivityNodeContainer = voltageLevel;
6764
+ connectivityNodeN.key = voltageLevel.key + connectivityNodeN.key;
6435
6765
  }
6436
6766
  else {
6437
- /** Fall 2 Trafo ist über eine Sternpunktschiene geerdet
6438
- * Nur Verbindung zur Junction herstellen */
6439
- let terminal;
6440
- if (!((_a = powerTransformerEnd.terminal) === null || _a === void 0 ? void 0 : _a.connectivityNode) && this.UUID2Integral7ID.has((_b = powerTransformerEnd.terminal) === null || _b === void 0 ? void 0 : _b.connectivityNodeUUID)) {
6441
- const i7ObjectID = (_d = this.UUID2Integral7ID.get((_c = powerTransformerEnd.terminal) === null || _c === void 0 ? void 0 : _c.connectivityNodeUUID)) === null || _d === void 0 ? void 0 : _d.find(elem => elem);
6442
- terminal = this.createBoundaryConnection(frame, junction, i7ObjectID, PhaseCode_1.PhaseCode.ABC);
6443
- }
6444
- else {
6445
- terminal = this.createConnection(cimModel, junction, (_e = powerTransformerEnd.terminal) === null || _e === void 0 ? void 0 : _e.connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
6446
- }
6447
- if (terminal) {
6448
- terminal.name = 't_stp_trafo';
6449
- if (junction)
6450
- junction.name = (junction === null || junction === void 0 ? void 0 : junction.name) + '/Trafo';
6451
- const pSpuleGroundImpedance = i7Modell.sternPunktImpModel.junctionUUIDstpImp.get(junctionUUID);
6452
- /** EquipmentContainer - Voltage Level*/
6453
- const voltageLevel = this.getVoltageLevelByVoltage((_f = powerTransformer.equipmentContainer) === null || _f === void 0 ? void 0 : _f.voltageLevels, powerTransformerEnd.ratedU);
6454
- if (!voltageLevel) {
6455
- this.logger.debug(`Trafo ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat kein EquipmentContainer`);
6456
- }
6457
- /** BaseVoltage */
6458
- if (junction && voltageLevel) {
6459
- junction.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6460
- junction.equipmentContainer = voltageLevel;
6461
- cimModel.addJunction(junction);
6462
- }
6463
- else {
6464
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine Junction ${junctionUUID} oder VoltageLevel`);
6465
- }
6466
- if (pSpuleGroundImpedance) {
6467
- pSpuleGroundImpedance.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6468
- pSpuleGroundImpedance.equipmentContainer = voltageLevel;
6469
- cimModel.addGroundingImpedance(pSpuleGroundImpedance);
6470
- }
6471
- else {
6472
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine pSpuleGroundImpedance.`);
6473
- }
6474
- }
6475
- else {
6476
- this.logger.error(`Die Erdnung TrafoObjekts ID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} konnte nicht abgebildet werden, da der Anschluss nicht bestimmt werden konnte.`);
6477
- }
6767
+ this.logger.debug(`PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} hat kein VoltageLevel`);
6478
6768
  }
6479
6769
  }
6770
+ else { //Case 1
6771
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if there is no 'Sternpunktknoten'
6772
+ }
6773
+ if (powerTransformerEnd.grounded) {
6774
+ powerTransformerEnd.terminal.phases = PhaseCode_1.PhaseCode.ABCN;
6775
+ }
6480
6776
  }
6481
6777
  /** Equipment grounding
6482
6778
  * @param shnt ShuntCompensator object
@@ -6703,6 +6999,7 @@ class ConverterIntegral7 {
6703
6999
  }
6704
7000
  }
6705
7001
  exports.ConverterIntegral7 = ConverterIntegral7;
7002
+ _ConverterIntegral7_configurableDLConvertOptions = new WeakMap();
6706
7003
  function getGeoCoordinates(i7Data) {
6707
7004
  /** Fall 1
6708
7005
  * geokoor_pl_breite_h && geokoor_pl_breite_m geokoor_pl_breite_s sind gepflegt */
@@ -6843,4 +7140,48 @@ function logExecutionTime(logger, startTime, text) {
6843
7140
  logger.debug(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6844
7141
  console.log(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6845
7142
  }
7143
+ function getHVSideNumber(transformerEnds) {
7144
+ let retVal = undefined;
7145
+ let urHv = 0;
7146
+ for (let i = 0; i < transformerEnds.length; i++) {
7147
+ if (urHv < transformerEnds[i].ratedU) {
7148
+ retVal = transformerEnds[i].endNumber;
7149
+ urHv = transformerEnds[i].ratedU;
7150
+ }
7151
+ }
7152
+ return retVal;
7153
+ }
7154
+ function createLineName(i7Data, uuid, lineNames) {
7155
+ let retVal = (0, util_create_1.createNotation)([i7Data.bezeichner], 32, false);
7156
+ if (lineNames[retVal] === true) { //try to find another name with i7Data.stkabname as suffix
7157
+ if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length > 0) {
7158
+ retVal = i7Data.bezeichner.substring(0, i7Data.bezeichner.length - (i7Data.bezeichner.length + (i7Data.stkabname.length + 1) - 32)) + '_' + i7Data.stkabname;
7159
+ }
7160
+ else if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length <= 0) {
7161
+ retVal = i7Data.bezeichner.substring(0, i7Data.stkabname.length - (i7Data.bezeichner.length - 32));
7162
+ }
7163
+ else if (i7Data.bezeichner.length <= 0 && i7Data.stkabname.length > 0) {
7164
+ retVal = i7Data.stkabname.substring(0, i7Data.stkabname.length - (i7Data.stkabname.length - 32));
7165
+ }
7166
+ }
7167
+ if (lineNames[retVal] === true) { //use uuid to create a unique name
7168
+ if (retVal.length + 9 <= 32) {
7169
+ retVal = retVal + '_' + normalizeUUID(uuid).substring(0, 8);
7170
+ }
7171
+ else {
7172
+ retVal = retVal.substring(0, retVal.length - (retVal.length + 9 - 32)) + '_' + normalizeUUID(uuid).substring(0, 8);
7173
+ }
7174
+ }
7175
+ return retVal;
7176
+ }
7177
+ function normalizeUUID(uuid) {
7178
+ let retVal = '';
7179
+ if (uuid != undefined && uuid.length > 0) {
7180
+ retVal = uuid.replaceAll('_', '');
7181
+ retVal = retVal.replaceAll('-', '');
7182
+ retVal = retVal.toLowerCase();
7183
+ retVal = retVal.trim();
7184
+ }
7185
+ return retVal;
7186
+ }
6846
7187
  //# sourceMappingURL=converter.integral7.js.map