@enervance/insight-cim-model 0.0.213 → 0.0.214-next

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 (94) hide show
  1. package/dist/converter/integral7/config/integral-prefix.d.ts +5 -0
  2. package/dist/converter/integral7/config/integral-prefix.js +6 -1
  3. package/dist/converter/integral7/config/integral-prefix.js.map +1 -1
  4. package/dist/converter/integral7/converter.integral7.d.ts +3 -2
  5. package/dist/converter/integral7/converter.integral7.js +612 -351
  6. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  7. package/dist/converter/integral7/dl-convert/data-manager.d.ts +1 -4
  8. package/dist/converter/integral7/dl-convert/data-manager.js +3 -7
  9. package/dist/converter/integral7/dl-convert/data-manager.js.map +1 -1
  10. package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +9 -4
  11. package/dist/converter/integral7/dl-convert/dl-converter-i7.js +68 -58
  12. package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
  13. package/dist/converter/integral7/dl-convert/dl-graphs/cim-model-graph.d.ts +0 -10
  14. package/dist/converter/integral7/dl-convert/dl-graphs/cim-model-graph.js +1 -43
  15. package/dist/converter/integral7/dl-convert/dl-graphs/cim-model-graph.js.map +1 -1
  16. package/dist/converter/integral7/dl-convert/executor.d.ts +15 -2
  17. package/dist/converter/integral7/dl-convert/executor.js +58 -28
  18. package/dist/converter/integral7/dl-convert/executor.js.map +1 -1
  19. package/dist/converter/integral7/interface-i7/data-structures-i7.d.ts +17 -11
  20. package/dist/converter/integral7/interface-i7/data-structures-i7.js.map +1 -1
  21. package/dist/converter/integral7/interface-i7/default-values-config.interface.d.ts +3 -0
  22. package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +10 -8
  23. package/dist/converter/integral7/interface-i7/export-frame-i7.js +17 -10
  24. package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
  25. package/dist/converter/integral7/model/interfaces.d.ts +26 -0
  26. package/dist/converter/integral7/model/interfaces.js.map +1 -1
  27. package/dist/converter/integral7/sql/integral.sql.d.ts +3 -0
  28. package/dist/converter/integral7/sql/integral.sql.js +18 -4
  29. package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
  30. package/dist/converter/integral7/utils-cgmes-export.js +2 -0
  31. package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
  32. package/dist/converter/integral7/utils.d.ts +17 -3
  33. package/dist/converter/integral7/utils.js +110 -14
  34. package/dist/converter/integral7/utils.js.map +1 -1
  35. package/dist/etl/etl-neplan/etl-neplan-csv.js +21 -0
  36. package/dist/etl/etl-neplan/etl-neplan-csv.js.map +1 -1
  37. package/dist/etl/etl-neplan/etl-neplan.js +1 -1
  38. package/dist/etl/etl-neplan/etl-neplan.js.map +1 -1
  39. package/dist/interfaces/model/core/ITerminal.d.ts +1 -1
  40. package/dist/model/core/ConductingEquipment.js +1 -1
  41. package/dist/model/core/ConductingEquipment.js.map +1 -1
  42. package/dist/model/dc/ACDCConverter.js +0 -2
  43. package/dist/model/dc/ACDCConverter.js.map +1 -1
  44. package/dist/model/dc/DCLineSegment.d.ts +2 -0
  45. package/dist/model/dc/DCLineSegment.js +16 -0
  46. package/dist/model/dc/DCLineSegment.js.map +1 -1
  47. package/dist/model/dc/DCTerminal.js +1 -1
  48. package/dist/model/dc/DCTerminal.js.map +1 -1
  49. package/dist/model/dc/VsCapabilityCurve.js.map +1 -1
  50. package/dist/model/dc/VsConverter.d.ts +1 -0
  51. package/dist/model/dc/VsConverter.js +13 -0
  52. package/dist/model/dc/VsConverter.js.map +1 -1
  53. package/dist/model/diagram/Diagram.js +2 -2
  54. package/dist/model/diagram/Diagram.js.map +1 -1
  55. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.d.ts +1 -0
  56. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js +1 -0
  57. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js.map +1 -1
  58. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.d.ts +1 -0
  59. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.js.map +1 -1
  60. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.d.ts +3 -0
  61. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js +14 -0
  62. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js.map +1 -1
  63. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformerInfo.js.map +1 -1
  64. package/dist/model/extensions/integral/dc/DCLineSegment.d.ts +10 -0
  65. package/dist/model/extensions/integral/dc/DCLineSegment.js +31 -0
  66. package/dist/model/extensions/integral/dc/DCLineSegment.js.map +1 -0
  67. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.d.ts +2 -0
  68. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js +8 -0
  69. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js.map +1 -1
  70. package/dist/model/operationallimits/ApparentPowerLimit.js +2 -2
  71. package/dist/model/operationallimits/ApparentPowerLimit.js.map +1 -1
  72. package/dist/model/wires/GroundDisconnector.d.ts +4 -1
  73. package/dist/model/wires/GroundDisconnector.js +15 -1
  74. package/dist/model/wires/GroundDisconnector.js.map +1 -1
  75. package/dist/model/wires/PowerTransformer.js +1 -1
  76. package/dist/model/wires/PowerTransformer.js.map +1 -1
  77. package/dist/model/wires/SeriesCompensator.js +6 -4
  78. package/dist/model/wires/SeriesCompensator.js.map +1 -1
  79. package/dist/model/wires/Switch.js +1 -1
  80. package/dist/model/wires/Switch.js.map +1 -1
  81. package/dist/model-container/model/ModelContainer.d.ts +5 -1
  82. package/dist/model-container/model/ModelContainer.js +14 -1
  83. package/dist/model-container/model/ModelContainer.js.map +1 -1
  84. package/dist/util/util-create.js +9 -1
  85. package/dist/util/util-create.js.map +1 -1
  86. package/dist/util/utils.js +0 -1
  87. package/dist/util/utils.js.map +1 -1
  88. package/dist/utils2/common.utils.js +3 -0
  89. package/dist/utils2/common.utils.js.map +1 -1
  90. package/dist/utils2/fuseki.utils.js +0 -1
  91. package/dist/utils2/fuseki.utils.js.map +1 -1
  92. package/dist/utils2/parser.utils.js +2 -2
  93. package/dist/utils2/parser.utils.js.map +1 -1
  94. package/package.json +2 -2
@@ -27,7 +27,6 @@ const CsConverter_1 = require("../../model/dc/CsConverter.js");
27
27
  const CsOperatingModeKind_1 = require("../../model/dc/CsOperatingModeKind.js");
28
28
  const DCConverterOperatingModeKind_1 = require("../../model/dc/DCConverterOperatingModeKind.js");
29
29
  const DCLine_1 = require("../../model/dc/DCLine.js");
30
- const DCLineSegment_1 = require("../../model/dc/DCLineSegment.js");
31
30
  const DCNode_1 = require("../../model/dc/DCNode.js");
32
31
  const DCTerminal_1 = require("../../model/dc/DCTerminal.js");
33
32
  const VsConverter_1 = require("../../model/dc/VsConverter.js");
@@ -142,6 +141,9 @@ const INTEGRALPowerTransformer2WInfo_1 = require("../../model/extensions/integra
142
141
  const impedance_utils_1 = require("./impedance.utils.js");
143
142
  const util_cim_model_1 = require("./util-cim.model.js");
144
143
  const EVAssetOriginKind_1 = require("../../model/extensions/enervance/assets/EVAssetOriginKind.js");
144
+ const PetersenCoilModeKind_1 = require("../../model/wires/PetersenCoilModeKind.js");
145
+ const GroundDisconnector_1 = require("../../model/wires/GroundDisconnector.js");
146
+ const DCLineSegment_1 = require("../../model/extensions/integral/dc/DCLineSegment.js");
145
147
  class ConverterIntegral7 {
146
148
  constructor() {
147
149
  /** Exportnetze gemäß Konfiguration */
@@ -206,6 +208,7 @@ class ConverterIntegral7 {
206
208
  yield this.queryErsatzLaengsAnschlussIDs();
207
209
  yield this.queryLkondensatorAnschlussIDs();
208
210
  /** BD Profile */
211
+ this.logger.debug('Convert BD Profiles');
209
212
  console.log('Convert BD Profiles');
210
213
  let boundaryEqUUId = undefined;
211
214
  for (const entry of this.exportFramesBoundary.entries()) {
@@ -217,6 +220,7 @@ class ConverterIntegral7 {
217
220
  continue;
218
221
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
219
222
  }
223
+ this.logger.debug('Convert MAS Profiles');
220
224
  console.log('Convert MAS Profiles');
221
225
  for (const entry of this.exportFrames.entries()) {
222
226
  const geoRegionUUID = entry[0];
@@ -225,6 +229,7 @@ class ConverterIntegral7 {
225
229
  if (!geoRegion)
226
230
  continue;
227
231
  // frame.addDependentModel(RDF_XML.PROFILE_EQ_BD, this.exportFramesBoundary.entries().next()?.value[1].getModelUUID(RDF_XML.PROFILE_EQ_BD));
232
+ this.logger.debug(`Convert MAS profile: ${frame.mas}`);
228
233
  console.log(`Convert MAS profile: ${frame.mas}`);
229
234
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
230
235
  if (boundaryEqUUId) {
@@ -234,6 +239,7 @@ class ConverterIntegral7 {
234
239
  frame.purgeData();
235
240
  const startTime = perf_hooks.performance.now();
236
241
  frame.openXMLModel();
242
+ this.logger.debug(`Serialize MAS profile: ${frame.mas}`);
237
243
  console.log(`Serialize MAS profile: ${frame.mas}`);
238
244
  frame.serializeModel(defaultValuesConfig);
239
245
  yield frame.closeXMLModel();
@@ -241,7 +247,7 @@ class ConverterIntegral7 {
241
247
  frame.cimModel.purgeData();
242
248
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
243
249
  }
244
- console.log('Serialize BD Profiles');
250
+ this.logger.debug('Serialize BD Profiles');
245
251
  for (const entry of this.exportFramesBoundary.entries()) {
246
252
  const geoRegionUUID = entry[0];
247
253
  const frame = entry[1];
@@ -260,7 +266,7 @@ class ConverterIntegral7 {
260
266
  let endTime = perf_hooks.performance.now();
261
267
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
262
268
  }
263
- console.log('Serialize Default Profile');
269
+ this.logger.debug('Serialize Default Profile');
264
270
  this.exportFrameDefault.openXMLModel();
265
271
  this.exportFrameDefault.serializeModel(defaultValuesConfig);
266
272
  yield this.exportFrameDefault.closeXMLModel();
@@ -398,6 +404,22 @@ class ConverterIntegral7 {
398
404
  yield this.convertLeistungsschalter(cimModel, eqiupmentContainerIDs);
399
405
  logExecutionTime(this.logger, startTime, `convertLeistungsschalter(${cimModel.breakers.size})`);
400
406
  }
407
+ /** Sternpunktimp Modell
408
+ * 1) netz_knoten1pso
409
+ * 2) netz_schaltelement1pelem -> Junction/Terminal
410
+ * 3) netz_kdrossel */
411
+ /** Sternpunktschienen -> ConnectivityNodes */
412
+ if (standortIDs.length > 0) {
413
+ startTime = perf_hooks.performance.now();
414
+ const stpSchieneID = yield this.convertSternpunktSchienen(cimModel, integral7Modell, standortIDs);
415
+ /** KDrossel -> GroundingImpedance/PetersenCoil */
416
+ yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID, defaultValuesConfig);
417
+ /** Schaltzustand der Schaltelemente */
418
+ yield this.convertStpSchaltelemente(cimModel, integral7Modell, stpSchieneID);
419
+ /** Sternpunktschienenkupplung*/ // ToDo: Wie kann so etwas in CGMES abgebildet werden?
420
+ //await this.convertStpSchienenKupplung(cimModel, integral7Modell, stpSchieneID);
421
+ logExecutionTime(this.logger, startTime, `convertSternpunkte`);
422
+ }
401
423
  /** Trafo2W */
402
424
  if (standortIDs.length > 0) {
403
425
  startTime = perf_hooks.performance.now();
@@ -476,20 +498,6 @@ class ConverterIntegral7 {
476
498
  yield this.convertKompensationskondensatoren(cimModel, integral7Modell.targetVoltages, soSfKnoten);
477
499
  logExecutionTime(this.logger, startTime, `convertKompensationskondensatoren`);
478
500
  }
479
- /** Sternpunktimp Modell
480
- * 1) netz_knoten1pso
481
- * 2) netz_schaltelement1pelem -> Junction/Terminal
482
- * 3) netz_kdrossel */
483
- /** Sternpunktschienen -> ConnectivityNodes */
484
- if (standortIDs.length > 0) {
485
- startTime = perf_hooks.performance.now();
486
- const stpSchieneID = yield this.convertSternpunktSchienen(cimModel, integral7Modell, standortIDs);
487
- /** KDrossel -> GroundingImpedance/PetersenCoil */
488
- yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID);
489
- /** Schaltzustand der Schaltelemente */
490
- yield this.convertStpSchaltelemente(integral7Modell, stpSchieneID);
491
- logExecutionTime(this.logger, startTime, `convertSternpunkte`);
492
- }
493
501
  /** Statcom -> StaticVarCompensator */
494
502
  /** Sonderfall mit Trafo
495
503
  * Trafos müssen zuertst konvertiert werden. */
@@ -538,9 +546,7 @@ class ConverterIntegral7 {
538
546
  yield this.assignTerminalSequenceNumber(cimModel);
539
547
  logExecutionTime(this.logger, startTime, `assignment of sequence number`);
540
548
  /** DC Model */
541
- /**
542
- * DL Profile
543
- **/
549
+ /** DL Profile */
544
550
  if (!frame.boundary) {
545
551
  this.executor = new executor_1.Executor(this.mysqlController, this.configUuid);
546
552
  yield this.executor.mergeDataFromIntegralID2UUID(this.integralID2UUID);
@@ -552,6 +558,7 @@ class ConverterIntegral7 {
552
558
  const netz_standortIds = standortIDs.map(standortId => {
553
559
  return { id: standortId };
554
560
  });
561
+ const boundary_standortIds = [];
555
562
  const netz_knotensoIds = knotenSoIDs.map(knotenSoId => {
556
563
  return { id: knotenSoId };
557
564
  });
@@ -561,6 +568,7 @@ class ConverterIntegral7 {
561
568
  });
562
569
  entry[1].integral7Modell.integralKnotenSo.forEach((_, key) => {
563
570
  netz_knotensoIds.push({ id: key });
571
+ boundary_standortIds.push({ id: key });
564
572
  });
565
573
  }
566
574
  const netzLeitungIds = [...integral7Modell.integralLeitungen.keys()];
@@ -569,6 +577,9 @@ class ConverterIntegral7 {
569
577
  const netzStreckenlastIds = [...integral7Modell.integralLeitungen.values()].map(leitung => leitung.streckenlastId).filter(id => id !== undefined && id !== null);
570
578
  const allLeitungIds = [...new Set([...netzLeitungIds, ...netzHgueLeitungIds, ...netzErsatzlaengszweigIds, ...netzStreckenlastIds]).values()];
571
579
  const convertOptions = {
580
+ visible_only: true,
581
+ boundary_standortIds,
582
+ nsg_standort_treshold_percentage: 25,
572
583
  only: {
573
584
  netz_standortIds,
574
585
  netz_knotensoIds,
@@ -586,6 +597,7 @@ class ConverterIntegral7 {
586
597
  })
587
598
  }
588
599
  };
600
+ frame.cimModel.addDiagramStyle(this.executor.dlConverter.diagramStyles[cim_constants_1.DiagramLayoutTypes.NODE_BREAKER]);
589
601
  const resultingObjects = yield this.executor.convert(convertOptions);
590
602
  for (const resultingObject of resultingObjects) {
591
603
  if (resultingObject instanceof Diagram_1.Diagram) {
@@ -619,7 +631,6 @@ class ConverterIntegral7 {
619
631
  }
620
632
  }
621
633
  this.executor.dataManager.cimModelGraph.purgeAll();
622
- this.executor.dataManager.dbObjectKeyCimModelUuidGraph.purgeAll();
623
634
  }
624
635
  });
625
636
  }
@@ -697,7 +708,7 @@ class ConverterIntegral7 {
697
708
  .then((result) => {
698
709
  for (const i7Data of result) {
699
710
  const i7Schluessel = integral_prefix_1.GEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
700
- 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);
711
+ 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);
701
712
  //region.i7key = i7Schluessel;
702
713
  this.addIdMapping(i7Data.id, region.mrid, integral_sql_1.Integral7TableNames.REGION);
703
714
  regions.push(region);
@@ -745,11 +756,12 @@ class ConverterIntegral7 {
745
756
  .then((result) => {
746
757
  for (const i7Data of result) {
747
758
  const i7Schluesel = integral_prefix_1.SUBGEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
748
- 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);
759
+ 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)
760
+ ]), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluesel);
749
761
  const regionUUID = this.integralID2UUID.get(i7Data.georegion);
750
762
  let region = regions.find(elem => elem.mrid === regionUUID);
751
763
  if (!region) {
752
- region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name, '_GR']), this.configUuid);
764
+ region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name]), this.configUuid);
753
765
  this.logger.debug(`SubGeographicalRegion UUID ${subregion.mrid} I7-ID ${i7Data.id} Name ${i7Data.bezeichner} hat keine Region.`);
754
766
  }
755
767
  subregion.region = region;
@@ -840,7 +852,7 @@ class ConverterIntegral7 {
840
852
  i7Data.un +
841
853
  integral_prefix_1.MITTIGER_PUNKT +
842
854
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
843
- const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
855
+ const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
844
856
  vl.key = i7Schluessel;
845
857
  const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, vl, cim_constants_1.CimAssetAliasNames.VoltageLevel, this.configUuid);
846
858
  if (i7Data.baujahr) {
@@ -929,23 +941,31 @@ class ConverterIntegral7 {
929
941
  });
930
942
  }
931
943
  convertKnotenSo(frame, integral7, standortIDs, defaultValuesConfig) {
944
+ var _a, _b;
932
945
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
933
946
  const cimModel = frame.cimModel;
934
947
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_SO)) {
935
948
  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));
949
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
936
950
  for (const i7Data of result) {
951
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
937
952
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
938
953
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
939
- // const vl = new VoltageLevel(getUUID(i7Data.guid_v, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
940
954
  const vl = new VoltageLevel_1.VoltageLevel(common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VoltageLevel, this.configUuid, rdfid), i7Data.bezeichner, i7Data.kurzname);
941
- //const rdfid = getUUID(i7Data.guid); /**This is the mrid for TopologicalNode */
942
955
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
956
+ if (connectivityNode.getUUID() === '98d0e9eb-bfb0-4da4-9700-660626da1c56' || connectivityNode.getName() === 'XDU_SL12') {
957
+ let stop = true;
958
+ }
943
959
  connectivityNode.setConnectivityNodeContainer(vl);
944
960
  vl.addConnectivityNode(connectivityNode);
945
961
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
962
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
946
963
  if (frame.boundary) {
947
964
  connectivityNode.boundaryPoint = true;
948
965
  }
966
+ const key = integral_sql_1.I7Objects.KNOTEN_SO + ((_b = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _b !== void 0 ? _b : '');
967
+ 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"]));
968
+ this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
949
969
  const un = (0, utils_2.getU)(i7Data.un);
950
970
  const baseVoltage = (0, util_create_1.createBaseVoltageIfNotExists)(cimModel, un, this.configUuid, this.exportFramesBoundary);
951
971
  /** Spannungsband */
@@ -961,7 +981,7 @@ class ConverterIntegral7 {
961
981
  integral_prefix_1.MITTIGER_PUNKT +
962
982
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
963
983
  vl.key = i7Schluessel;
964
- connectivityNode.description = i7Schluessel;
984
+ connectivityNode.key = i7Schluessel;
965
985
  }
966
986
  else {
967
987
  this.logger.debug(`KnotenSo ${i7Data.id} ${vl.mrid} besitzt keine Substation.`);
@@ -1003,18 +1023,28 @@ class ConverterIntegral7 {
1003
1023
  });
1004
1024
  }
1005
1025
  convertSammelschienenAbschnitte(cimModel, integral7, schaltanlagenAbschnittIDs) {
1006
- var _a;
1026
+ var _a, _b, _c;
1007
1027
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1008
1028
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SAMMELSCHIENE)) {
1009
1029
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SAMMELSCHIENE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SAMMELSCHIENE), schaltanlagenAbschnittIDs));
1030
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
1010
1031
  for (const i7Data of result) {
1011
1032
  const i7Schaltanlagenabschnitt = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1012
- //const rdfid: string = getUUID(i7Data.guid); /** this is the mrid for TopologicalNode*/
1033
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
1034
+ let saab = undefined;
1035
+ if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1036
+ saab = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1037
+ }
1013
1038
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1014
1039
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname);
1015
1040
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Schaltanlagenabschnitt.id));
1016
1041
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
1017
- const keyBusbarSection = (_a = integral_sql_1.I7Objects.SAMMELSCHIENE + (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID())) !== null && _a !== void 0 ? _a : '' + (connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID());
1042
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
1043
+ const keyBusbarSection = [
1044
+ integral_sql_1.I7Objects.SAMMELSCHIENE,
1045
+ (_b = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID()) !== null && _b !== void 0 ? _b : '',
1046
+ (_c = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _c !== void 0 ? _c : ''
1047
+ ].join('');
1018
1048
  const uuidBusbarSection = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.BusbarSection, this.configUuid, keyBusbarSection);
1019
1049
  const busbarSection = new BusbarSection_1.BusbarSection(uuidBusbarSection, i7Data.bezeichner, i7Schaltanlagenabschnitt.kurzname);
1020
1050
  busbarSection.ipMax = i7Data.limit_ip;
@@ -1029,11 +1059,15 @@ class ConverterIntegral7 {
1029
1059
  voltageLevel.highVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umax) : voltageLevel.highVoltageLimit;
1030
1060
  // umin
1031
1061
  voltageLevel.lowVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umin) : voltageLevel.lowVoltageLimit;
1032
- /**const i7Schluessel = voltageLevel.substation.name +
1033
- SAMMELSCHIENENABSCHNITT_PRAEFIX +
1034
- ueberpruefeZeichenkette(i7Data.bezeichner);
1035
- busbarSection.description = i7Schluessel;
1036
- connectivityNode.description = i7Schluessel;*/
1062
+ //define INTEGRAL Schluessel for ConnectivityNode
1063
+ if (saab !== undefined) {
1064
+ const i7Schluessel = voltageLevel.key +
1065
+ integral_prefix_1.SCHALTANLAGENABSCHNITT_PRAEFIX +
1066
+ (0, utils_2.ueberpruefeZeichenkette)(saab.bezeichner) +
1067
+ integral_prefix_1.SAMMELSCHIENENABSCHNITT_PRAEFIX +
1068
+ (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
1069
+ connectivityNode.key = i7Schluessel;
1070
+ }
1037
1071
  /** Spannungsband */
1038
1072
  integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
1039
1073
  // TODO VoltageLimits?
@@ -1046,7 +1080,7 @@ class ConverterIntegral7 {
1046
1080
  cimModel.addConnectivityNode(connectivityNode);
1047
1081
  cimModel.addBusbarSection(busbarSection);
1048
1082
  /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
1049
- if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1083
+ if (saab !== undefined) {
1050
1084
  integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt).ssab.push(i7Data);
1051
1085
  }
1052
1086
  }
@@ -1063,10 +1097,11 @@ class ConverterIntegral7 {
1063
1097
  const result = yield this.queryDataInChuncks(integral_sql_1.I7Objects.KNOTEN_SF, schaltfeldIDs);
1064
1098
  for (const i7Data of result) {
1065
1099
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.schaltfeld));
1066
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode((0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'knotensf', `${bay.description}/${i7Data.bezeichner}`);
1067
- if (bay) {
1100
+ 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));
1101
+ if (bay !== undefined) {
1068
1102
  connectivityNode.connectivityNodeContainer = bay;
1069
1103
  bay.addConnectivityNode(connectivityNode);
1104
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_SF_PRAEFIX + i7Data.bezeichner;
1070
1105
  }
1071
1106
  else {
1072
1107
  this.logger.debug(`KnotenSf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1091,11 +1126,11 @@ class ConverterIntegral7 {
1091
1126
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.kpfeld));
1092
1127
  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);
1093
1128
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1094
- // const connectivityNode = new ConnectivityNode(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), '_CN']), 'knotenkf');
1095
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'knotenkf');
1129
+ 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));
1096
1130
  if (bay) {
1097
1131
  connectivityNode.connectivityNodeContainer = bay;
1098
1132
  bay.addConnectivityNode(connectivityNode);
1133
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_KF_PRAEFIX + i7Data.bezeichner;
1099
1134
  }
1100
1135
  else {
1101
1136
  this.logger.debug(`KnotenKf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1118,11 +1153,12 @@ class ConverterIntegral7 {
1118
1153
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.lkupplung));
1119
1154
  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);
1120
1155
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1121
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'KnotenLk');
1122
- // const connectivityNode = new ConnectivityNode(CommonUtils.generateUUID(), createNotation([getName(i7Data), '_CN']), 'KnotenLk');
1156
+ const name = (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false);
1157
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, name, name);
1123
1158
  if (bay) {
1124
1159
  connectivityNode.connectivityNodeContainer = bay;
1125
1160
  bay.addConnectivityNode(connectivityNode);
1161
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_LK_PRAEFIX + i7Data.bezeichner;
1126
1162
  }
1127
1163
  else {
1128
1164
  this.logger.debug(`KnotenLk ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1145,8 +1181,12 @@ class ConverterIntegral7 {
1145
1181
  const key = integral_sql_1.I7Objects.SCHLAUFE + String(i7Data.id);
1146
1182
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
1147
1183
  const terminal = new Terminal_1.Terminal(uuid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
1184
+ if (terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
1185
+ const stop = true;
1186
+ }
1148
1187
  terminal.connected = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
1149
1188
  terminal.phases = PhaseCode_1.PhaseCode.ABC;
1189
+ terminal.key = integral_prefix_1.SCHLAUFE_PRAEFIX + i7Data.bezeichner;
1150
1190
  this.addIdMapping(i7Data.id, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1151
1191
  this.addIdMapping(i7Data.knotenzw, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1152
1192
  integral7.kontenZwIDs.push(i7Data.knotenzw);
@@ -1252,6 +1292,101 @@ class ConverterIntegral7 {
1252
1292
  }
1253
1293
  });
1254
1294
  }
1295
+ convertVollUmrichterEinspeisung(cimModel, targetVoltages, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
1296
+ var _a;
1297
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1298
+ const targetClass = objectMappingConfig.Einspeisung.class;
1299
+ if (this.isTableAvailable(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG)) {
1300
+ const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.VOLLUMRICHTEREINSPEISUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG), knotenSfIDs));
1301
+ for (const i7Data of result) {
1302
+ try {
1303
+ const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
1304
+ 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);
1305
+ externalNetworkInjection.nameprimaertyp = 'Wind Onshore';
1306
+ let mf = undefined;
1307
+ mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
1308
+ if (mf) {
1309
+ cimModel.addMultiplierFactor(mf);
1310
+ externalNetworkInjection.multiplierFactorUUID = mf.getUUID();
1311
+ }
1312
+ /** Convert EQ-profile dataset. */
1313
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
1314
+ externalNetworkInjection.maxP = maxP;
1315
+ const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
1316
+ externalNetworkInjection.governorSCD = governorscd;
1317
+ const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
1318
+ externalNetworkInjection.maxQ = maxQ;
1319
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
1320
+ externalNetworkInjection.minP = minP;
1321
+ const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
1322
+ externalNetworkInjection.minQ = minQ;
1323
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
1324
+ /**Convert short circuit constants */
1325
+ const r0X0 = undefined;
1326
+ const r1X1 = undefined;
1327
+ const z0Z1 = undefined;
1328
+ const maxR0X0Ratio = r0X0;
1329
+ externalNetworkInjection.maxR0ToX0Ratio = maxR0X0Ratio;
1330
+ const maxR1X1Ratio = r1X1;
1331
+ externalNetworkInjection.maxR1ToX1Ratio = maxR1X1Ratio;
1332
+ const maxZ0Z1Ratio = z0Z1;
1333
+ externalNetworkInjection.maxZ0ToZ1Ratio = maxZ0Z1Ratio;
1334
+ const minR0X0Ratio = r0X0;
1335
+ externalNetworkInjection.minR0ToX0Ratio = minR0X0Ratio;
1336
+ const minR1X1Ratio = r1X1;
1337
+ externalNetworkInjection.minR1ToX1Ratio = minR1X1Ratio;
1338
+ const minZ0Z1Ratio = z0Z1;
1339
+ externalNetworkInjection.minZ0ToZ1Ratio = minZ0Z1Ratio;
1340
+ const i2sk1 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk1) : undefined;
1341
+ const i2sk2 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2) : undefined;
1342
+ const i2sk2e = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2e) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2e) : undefined;
1343
+ const i2sk3 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk3) : undefined;
1344
+ const ikMin = (0, utils_2.transformShortCircuitCurrent)(Math.min(i2sk1, i2sk2, i2sk2e, i2sk3));
1345
+ const ikMax = (0, utils_2.transformShortCircuitCurrent)(Math.max(i2sk1, i2sk2, i2sk2e, i2sk3));
1346
+ externalNetworkInjection.minInitialSymShCCurrent = ikMin;
1347
+ externalNetworkInjection.maxInitialSymShCCurrent = ikMax;
1348
+ const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
1349
+ /** Convert SSH-profile dataset. */
1350
+ /**
1351
+ * @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'.
1352
+ * einspprio having no effect in loadflow calculation if voltage control does not exists.
1353
+ * */
1354
+ let prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
1355
+ if (((_a = externalNetworkInjection.regulatingControl) === null || _a === void 0 ? void 0 : _a.mode) === RegulatingControlModeKind_1.RegulatingControlModeKind.voltage) {
1356
+ if (prio !== undefined && prio > 0) {
1357
+ externalNetworkInjection.referencePriority = prio + 1; //TODO: SLACK is a injection with maximum prio in the network section and active voltage control.
1358
+ }
1359
+ else if (prio !== undefined && prio === 0) {
1360
+ externalNetworkInjection.referencePriority = prio;
1361
+ }
1362
+ else {
1363
+ externalNetworkInjection.referencePriority = undefined;
1364
+ }
1365
+ }
1366
+ const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
1367
+ const p = powerData[0];
1368
+ const q = powerData[1];
1369
+ externalNetworkInjection.setActivePower(p * -1); //convert to load sign system
1370
+ externalNetworkInjection.setReactivePower(q * -1); //convert to load sign system
1371
+ // AMPI7 profile
1372
+ 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;
1373
+ externalNetworkInjection.cos_phi = cosPhi;
1374
+ externalNetworkInjection.p_mf = (mf && powerData[2]) ? powerData[2] * -1 : undefined;
1375
+ externalNetworkInjection.q_mf = (mf && powerData[3]) ? powerData[3] * -1 : undefined;
1376
+ externalNetworkInjection.normallyInService = inBetrieb;
1377
+ cimModel.addExternalNetworkInjection(externalNetworkInjection);
1378
+ this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
1379
+ }
1380
+ catch (err) {
1381
+ this.logger.error(`error --- convertVollumrichtereinspeisung ${i7Data.id} ${err}`);
1382
+ }
1383
+ }
1384
+ }
1385
+ else {
1386
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG} ist nicht vorhanden.`);
1387
+ }
1388
+ });
1389
+ }
1255
1390
  convertErsatzQuerZweige(cimModel, targetVoltages, knotenSfIDs, targetClass) {
1256
1391
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1257
1392
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
@@ -1284,6 +1419,9 @@ class ConverterIntegral7 {
1284
1419
  for (const i7Data of result) {
1285
1420
  const genType = this.generatorTypen.get(i7Data.nametyp);
1286
1421
  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);
1422
+ if (synchronousMachine.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F') {
1423
+ let stop = true;
1424
+ }
1287
1425
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
1288
1426
  const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
1289
1427
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
@@ -1385,7 +1523,7 @@ class ConverterIntegral7 {
1385
1523
  const qType = Math.sqrt(Math.pow(genType === null || genType === void 0 ? void 0 : genType.sr, 2) - Math.pow(pType, 2));
1386
1524
  // AMP I7 Profil
1387
1525
  synchronousMachine.cos_phi = i7Data.cos_phi;
1388
- if (synchronousMachine.getUUID() === '03ee3f18-9984-48eb-bc26-09e8c182fbda') {
1526
+ if (synchronousMachine.getUUID() === '69718d2d-5988-49a9-b5c8-d53d0cf0e89a') {
1389
1527
  let stop = true;
1390
1528
  }
1391
1529
  if (synchronousMachine.getUUID() === 'f6d81d19-dca0-48e9-a43e-4ab1f6bf697d') {
@@ -1419,10 +1557,12 @@ class ConverterIntegral7 {
1419
1557
  synchronousMachine.ratedPowerFactor = cosphir ? cosphir : undefined;
1420
1558
  /** EQ-SC */
1421
1559
  synchronousMachine.earthing = ((_a = i7Data.erdung) === null || _a === void 0 ? void 0 : _a.length) > 0 && i7Data.erdung != 'isoliert' ? true : false;
1422
- synchronousMachine.r = (0, parser_utils_1.isNumericI7)(i7Data.rg) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rg) : ((0, parser_utils_1.isNumericI7)(genType === null || genType === void 0 ? void 0 : genType.rg) ? (0, parser_utils_1.convertToNumberI7)(genType.rg) : undefined);
1560
+ synchronousMachine.r = (0, parser_utils_1.isNumericI7)(i7Data.rg) ? (0, utils_2.calculatePU2OHM)((0, parser_utils_1.convertToNumberI7)(i7Data.rg), synchronousMachine.ratedU, synchronousMachine.ratedS) :
1561
+ ((0, parser_utils_1.isNumericI7)(genType === null || genType === void 0 ? void 0 : genType.rg) ? (0, utils_2.calculatePU2OHM)((0, parser_utils_1.convertToNumberI7)(i7Data.rg), synchronousMachine.ratedU, synchronousMachine.ratedS) : undefined);
1423
1562
  synchronousMachine.r0 = 0;
1424
1563
  synchronousMachine.r2 = 0;
1425
- synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0g) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0g) : undefined;
1564
+ synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0g) ? (0, utils_2.calculatePU2OHM)((0, parser_utils_1.convertToNumberI7)(i7Data.x0g), synchronousMachine.ratedU, synchronousMachine.ratedS) :
1565
+ ((0, parser_utils_1.isNumericI7)(genType === null || genType === void 0 ? void 0 : genType.x0g) ? (0, utils_2.calculatePU2OHM)((0, parser_utils_1.convertToNumberI7)(i7Data.x0g), synchronousMachine.ratedU, synchronousMachine.ratedS) : undefined);
1426
1566
  synchronousMachine.x2 = 0;
1427
1567
  synchronousMachine.satDirectSubtransX = (0, parser_utils_1.isNumericI7)(i7Data.xd2s) ? (0, parser_utils_1.convertToNumberI7)(i7Data.xd2s) : ((0, parser_utils_1.isNumericI7)(genType === null || genType === void 0 ? void 0 : genType.xd2s) ? (0, parser_utils_1.convertToNumberI7)(genType.xd2s) : undefined);
1428
1568
  // synchronousMachine.earthingStarPointR
@@ -1435,7 +1575,7 @@ class ConverterIntegral7 {
1435
1575
  // synchronousMachine.voltageRegulationRange: number;
1436
1576
  /** Create ReactiveCapabilityCurves */
1437
1577
  if (minP !== undefined && maxP !== undefined && minQvonPmin !== undefined && maxQvonPmax !== undefined) {
1438
- 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']));
1578
+ 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']));
1439
1579
  reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
1440
1580
  reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
1441
1581
  reactiveCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -1518,6 +1658,9 @@ class ConverterIntegral7 {
1518
1658
  // TODO: genControlSource is not required.
1519
1659
  //generatingUnit.genControlSource = GeneratorControlSource.onAGC;
1520
1660
  /**Complete GeneratingUnit data */
1661
+ if (generatingUnit.getUUID() === '70810e1e74aa4359b387bef9158f4767' || synchronousMachine.getUUID() === '70810e1e74aa4359b387bef9158f4767') {
1662
+ const stop = true;
1663
+ }
1521
1664
  generatingUnit.initialP = (0, parser_utils_1.isNumericI7)(i7Data.p0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p0) : undefined;
1522
1665
  // generatingUnit.longPF
1523
1666
  // generatingUnit.maximumAllowableSpinningReserve
@@ -1669,7 +1812,7 @@ class ConverterIntegral7 {
1669
1812
  //EQ core profile content
1670
1813
  const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
1671
1814
  if (connectivityNode) {
1672
- (0, util_create_1.createConnection)(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC);
1815
+ this.createConnection(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
1673
1816
  const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()));
1674
1817
  if (equipmentContainer) {
1675
1818
  equipmentContainer.addEquipment(asynchronousMachine);
@@ -1881,6 +2024,9 @@ class ConverterIntegral7 {
1881
2024
  convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result) {
1882
2025
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1883
2026
  for (const i7Data of result) {
2027
+ if (i7Data.guid === '_8addc711-52fd-4ff6-b5ff-50aadc1a32ec') {
2028
+ const stop = true;
2029
+ }
1884
2030
  const einspeisePrio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : 1;
1885
2031
  const flag_lfl = (0, parser_utils_1.convertToBooleanI7)(i7Data.flag_lfl);
1886
2032
  const flag_ks = (0, parser_utils_1.convertToBooleanI7)(i7Data.flag_ks);
@@ -1929,12 +2075,12 @@ class ConverterIntegral7 {
1929
2075
  }
1930
2076
  else if (flag_lfl || flag_ks) {
1931
2077
  equivalentInjection.regulationCapability = false;
1932
- equivalentInjection.r = r1;
1933
- equivalentInjection.r0 = r0;
1934
- equivalentInjection.r2 = r1;
1935
- equivalentInjection.x = x1;
1936
- equivalentInjection.x0 = x0;
1937
- equivalentInjection.x2 = x1;
2078
+ equivalentInjection.r = (0, parser_utils_1.isNumericI7)(r1) ? r1 : 1e9;
2079
+ equivalentInjection.r0 = (0, parser_utils_1.isNumericI7)(r0) ? r0 : 1e9;
2080
+ equivalentInjection.r2 = (0, parser_utils_1.isNumericI7)(r1) ? r1 : 1e9;
2081
+ equivalentInjection.x = (0, parser_utils_1.isNumericI7)(x1) ? x1 : 1e9;
2082
+ equivalentInjection.x0 = (0, parser_utils_1.isNumericI7)(x0) ? x0 : 1e9;
2083
+ equivalentInjection.x2 = (0, parser_utils_1.isNumericI7)(x1) ? x1 : 1e9;
1938
2084
  }
1939
2085
  /** Export Extended Ward equivalent with no voltage regulation */
1940
2086
  else if (((r_ext !== undefined && r_ext !== 0) || (x_ext !== undefined && x_ext !== 0))) {
@@ -2230,6 +2376,9 @@ class ConverterIntegral7 {
2230
2376
  const qr = (0, parser_utils_1.isNumericI7)(i7Data.qr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qr) : undefined;
2231
2377
  const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2232
2378
  shunt.nomU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2379
+ if (shunt.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
2380
+ let stop = true;
2381
+ }
2233
2382
  // Set electrical properties (EQ core)
2234
2383
  if ((0, parser_utils_1.isNumericI7)(i7Data.aktstufe) && (0, parser_utils_1.isNumericI7)(i7Data.maxstufe)) {
2235
2384
  shunt.sections = (0, parser_utils_1.convertToNumberI7)(i7Data.aktstufe);
@@ -2369,7 +2518,7 @@ class ConverterIntegral7 {
2369
2518
  /** EQ */
2370
2519
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2371
2520
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2372
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2521
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2373
2522
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2374
2523
  statVarCom.aggregate = false;
2375
2524
  /** EQ-SC */
@@ -2378,7 +2527,6 @@ class ConverterIntegral7 {
2378
2527
  /** SV */
2379
2528
  //statVarCom.svpowerflow
2380
2529
  /** Regelung */
2381
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_rc);
2382
2530
  const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, true);
2383
2531
  /** EQ */
2384
2532
  if (regulatingControl) {
@@ -2406,7 +2554,7 @@ class ConverterIntegral7 {
2406
2554
  /** EQ */
2407
2555
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2408
2556
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2409
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2557
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2410
2558
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2411
2559
  statVarCom.aggregate = false;
2412
2560
  /** EQ-SC */
@@ -2418,11 +2566,11 @@ class ConverterIntegral7 {
2418
2566
  /** EQ */
2419
2567
  statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
2420
2568
  cimModel.addStaticVarCompensator(statVarCom);
2421
- this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
2569
+ this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.SVC);
2422
2570
  }
2423
2571
  }
2424
2572
  else {
2425
- this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STATCOM} ist nicht vorhanden.`);
2573
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SVC} ist nicht vorhanden.`);
2426
2574
  }
2427
2575
  });
2428
2576
  }
@@ -2475,9 +2623,10 @@ class ConverterIntegral7 {
2475
2623
  csConverter.ratedIdc = (0, utils_2.calculateRatedIdc)(csConverter.ratedUdc, pr);
2476
2624
  /** spannungsabhängige Wirk-Verluste in kW bei Leerlauf mit Bemessungsspannung in kV*/
2477
2625
  csConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2478
- csConverter.maxUdc = csConverter.ratedUdc * 1.05; // +5% * ratedUdc
2479
- csConverter.minUdc = csConverter.ratedUdc * 0.95; // -5% * ratedUdc
2480
- csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2626
+ csConverter.maxUdc = csConverter.ratedUdc * 1.08; // +5% * ratedUdc
2627
+ csConverter.minUdc = csConverter.ratedUdc * 0.98; // -5% * ratedUdc
2628
+ //R=U^2/P
2629
+ 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;
2481
2630
  csConverter.switchingLoss = 0;
2482
2631
  /* csConverter.numberOfValves
2483
2632
  csConverter.valveU0*/
@@ -2571,21 +2720,21 @@ class ConverterIntegral7 {
2571
2720
  /** Bemessungsleistung (Gleichstromseite) in MW
2572
2721
  * im CS-Fall S = P?
2573
2722
  * Abhängig vom */
2574
- vsConverter.baseS = i7Data.pr;
2723
+ vsConverter.baseS = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2575
2724
  /** Bemessungsspannung (Gleichstromseite) in kV*/
2576
2725
  //If udc is set in Integral data model set converter.ratedUdc as i7Data.udc else take the data value for i7Data.ur (Bemessungsspannung)
2577
2726
  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);
2578
- /** spannungsabhängige Wirk-Verluste bei Leerlauf mit Bemessungsspannung in kV*/
2727
+ /** spannungsabhängige Wirk-Verluste in MW bei Leerlauf mit Bemessungsspannung in kV*/
2579
2728
  vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2580
- vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +5% * ratedUdc
2581
- vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -5% * ratedUdc
2582
- vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2729
+ vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +8% * ratedUdc
2730
+ vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -2% * ratedUdc
2731
+ 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;
2583
2732
  vsConverter.switchingLoss = undefined;
2584
2733
  /* csConverter.maxModulationIndex = ;
2585
2734
  csConverter.maxValveCurrent = */
2586
2735
  /** CapabilityCurveData */
2587
- const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2588
- const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
2736
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : vsConverter.baseS;
2737
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : -1 * vsConverter.baseS;
2589
2738
  const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
2590
2739
  const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
2591
2740
  /** SSH export values */
@@ -2608,11 +2757,11 @@ class ConverterIntegral7 {
2608
2757
  vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2609
2758
  acDCConverterDCTerminal.dcNode = dcNode;
2610
2759
  dcNode.dcTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2611
- /** Create ReactiveCapabilityCurves */
2760
+ /** Create VsCapabilityCurves */
2612
2761
  if (minP !== undefined && maxP !== undefined && minQ != undefined && maxQ !== undefined) {
2613
2762
  let keyVsCapabilityCurve = cim_class_names_1.ClassNames.VsCapabilityCurve + i7Data.id + vsConverter.getUUID();
2614
2763
  let uuidVsCapabilityCurve = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VsCapabilityCurve, this.configUuid, keyVsCapabilityCurve);
2615
- const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', vsConverter.getUUID().substring(0, 8), '_VCC']));
2764
+ const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', '_', vsConverter.getUUID().substring(0, 8), '_VCC']));
2616
2765
  vsCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
2617
2766
  vsCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
2618
2767
  vsCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -2623,7 +2772,7 @@ class ConverterIntegral7 {
2623
2772
  const curveData1 = new CurveData_1.CurveData(uuidCurveData);
2624
2773
  curveData1.curve = vsCapabilityCurve;
2625
2774
  curveData1.xvalue = minP; //pMin
2626
- curveData1.y1value = minQ; //qMin
2775
+ curveData1.y1value = minQ; //qMin pMax
2627
2776
  curveData1.y2value = maxQ; //qMax pMin
2628
2777
  cimModel.addCurveData(curveData1);
2629
2778
  //reactive capability curve data for pmax
@@ -2633,7 +2782,7 @@ class ConverterIntegral7 {
2633
2782
  curveData2.curve = vsCapabilityCurve;
2634
2783
  curveData2.xvalue = maxP; //pMax
2635
2784
  curveData2.y1value = minQ; //qMin pMax
2636
- curveData2.y2value = maxQ; //qMin pMax
2785
+ curveData2.y2value = maxQ; //qMax pMax
2637
2786
  cimModel.addCurveData(curveData2);
2638
2787
  cimModel.addVsCapabilityCurve(vsCapabilityCurve);
2639
2788
  vsConverter.capabilityCurve = vsCapabilityCurve;
@@ -2753,7 +2902,9 @@ class ConverterIntegral7 {
2753
2902
  externalNetworkInjection.multiplierFactorUUID = mf.getUUID();
2754
2903
  }
2755
2904
  /** Convert EQ-profile dataset. */
2756
- let einspeisePrioritaet = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
2905
+ if (i7Data.guid === '_ab64e281-72d0-45fb-8cb3-da4ae99a4f8c') {
2906
+ const stop = true;
2907
+ }
2757
2908
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2758
2909
  externalNetworkInjection.maxP = maxP;
2759
2910
  const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
@@ -2785,9 +2936,10 @@ class ConverterIntegral7 {
2785
2936
  const skAkt = (0, parser_utils_1.isNumericI7)(i7Data.sk_akt) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_akt) : undefined;
2786
2937
  const skMin = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_min) : skAkt;
2787
2938
  const skMax = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_max) : skAkt;
2788
- const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(skMin) / Math.sqrt(3) * skMin : undefined;
2939
+ const nomV = externalNetworkInjection.getTerminals().values().next().value.getConnectivityNode().getBaseVoltageAsNumber();
2940
+ const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, utils_2.calculateShortCircuitCurrent)(skMin, nomV) : undefined;
2789
2941
  externalNetworkInjection.minInitialSymShCCurrent = minIkSecond;
2790
- const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(skMax) / Math.sqrt(3) * skMax : undefined;
2942
+ const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, utils_2.calculateShortCircuitCurrent)(skMax, nomV) : undefined;
2791
2943
  externalNetworkInjection.maxInitialSymShCCurrent = maxIkSecond;
2792
2944
  const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
2793
2945
  /** Convert SSH-profile dataset. */
@@ -2850,6 +3002,9 @@ class ConverterIntegral7 {
2850
3002
  if (condEquip instanceof RotatingMachine_1.RotatingMachine || condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection || condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
2851
3003
  i7DataEinsp = i7Data;
2852
3004
  i7DataRQ = i7Data;
3005
+ if (condEquip.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F' || condEquip.getUUID() === '0c67bf21-a557-46ea-af63-2a3ac116bd2e') {
3006
+ const stop = true;
3007
+ }
2853
3008
  }
2854
3009
  if (condEquip instanceof SynchronousMachine_1.SynchronousMachine) {
2855
3010
  suffix = '_SM';
@@ -2870,16 +3025,26 @@ class ConverterIntegral7 {
2870
3025
  suffix = '_EI';
2871
3026
  }
2872
3027
  else if (condEquip instanceof StaticVarCompensator_1.StaticVarCompensator) {
3028
+ if (condEquip.getUUID() === '18e12018-03dd-4d6e-a626-ea404017050f' || condEquip.getUUID() === '4352ad9f-c841-4dcb-9a42-3ccabcb56487'
3029
+ || condEquip.getUUID() === '3d060069-9253-4e68-bb75-74d92982bb1a' || condEquip.getUUID() === '03c53185-aaa7-4040-8b43-76f79fac82b9' || condEquip.getUUID() === '02ba5072-a387-47c6-b9ce-b9d3def21964') {
3030
+ let stop = true;
3031
+ }
2873
3032
  i7DataSVC = i7Data;
2874
3033
  i7DataRQ = i7Data;
2875
3034
  suffix = '_SVC';
2876
3035
  }
2877
3036
  else if (condEquip instanceof LinearShuntCompensator_1.LinearShuntCompensator) {
3037
+ if (condEquip.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
3038
+ let stop = true;
3039
+ }
2878
3040
  i7DataKomp = i7Data;
2879
3041
  i7DataRQ = i7Data;
2880
3042
  suffix = '_LSC';
2881
3043
  }
2882
3044
  else if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
3045
+ if (condEquip.getUUID() === '71331a6b-000d-4049-89cc-9319a69367f6') {
3046
+ let stop = true;
3047
+ }
2883
3048
  i7DataHgue = i7Data;
2884
3049
  suffix = '_ACDCC';
2885
3050
  }
@@ -2916,62 +3081,61 @@ class ConverterIntegral7 {
2916
3081
  let tVMax = undefined; //maximum target voltage
2917
3082
  let tVMin = undefined; //minimum target voltage
2918
3083
  const regCondEquip = condEquip;
2919
- if (spannungsregelungLokal || spannungsregelungRemote) {
2920
- //get rated voltage of controlled node.
2921
- if (knotenSpgGeregelt && spannungsregelungRemote) {
2922
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
2923
- if (cterminal === undefined) {
2924
- let stop = true;
2925
- }
2926
- if (cterminal) {
2927
- tCn = cterminal.getConnectivityNode();
2928
- if (tCn) {
2929
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
2930
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
2931
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
2932
- }
2933
- else {
2934
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
2935
- }
3084
+ //get rated voltage of controlled node.
3085
+ if (knotenSpgGeregelt && spannungsregelungRemote) {
3086
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3087
+ if (cterminal === undefined) {
3088
+ let stop = true;
3089
+ }
3090
+ if (cterminal) {
3091
+ tCn = cterminal.getConnectivityNode();
3092
+ if (tCn) {
3093
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3094
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3095
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
2936
3096
  }
2937
3097
  else {
2938
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3098
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
2939
3099
  }
2940
3100
  }
2941
- if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
2942
- switch (knotenSpgGeregelt) {
2943
- case undefined: {
2944
- if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
2945
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2946
- }
2947
- if (cterminal === undefined) {
2948
- cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
2949
- }
2950
- break;
3101
+ else {
3102
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3103
+ }
3104
+ }
3105
+ if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3106
+ switch (knotenSpgGeregelt) {
3107
+ case undefined: {
3108
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3109
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2951
3110
  }
2952
- default: {
2953
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3111
+ if (cterminal === undefined) {
3112
+ cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
2954
3113
  }
3114
+ break;
2955
3115
  }
2956
- if (cterminal) {
2957
- tCn = cterminal.getConnectivityNode();
2958
- if (tCn) {
2959
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
2960
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
2961
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
2962
- }
2963
- else {
2964
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
2965
- }
3116
+ default: {
3117
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
2966
3118
  }
2967
3119
  }
2968
- 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;
2969
- if (uband === undefined) {
3120
+ if (cterminal) {
3121
+ tCn = cterminal.getConnectivityNode();
2970
3122
  if (tCn) {
2971
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3123
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3124
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3125
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3126
+ }
3127
+ else {
3128
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
2972
3129
  }
2973
3130
  }
2974
3131
  }
3132
+ 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;
3133
+ if (uband === undefined) {
3134
+ if (tCn) {
3135
+ uband = tCn.getBaseVoltageAsNumber() * 0.1;
3136
+ }
3137
+ }
3138
+ usoll = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : usoll;
2975
3139
  //Create and define regulating control for voltage control
2976
3140
  if (cterminal !== undefined) {
2977
3141
  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);
@@ -2984,6 +3148,9 @@ class ConverterIntegral7 {
2984
3148
  rControl.targetDeadband = (0, parser_utils_1.isNumericI7)(uband) ? uband : undefined; //zulässiges Spannungsband
2985
3149
  /** Spannung in kilo*/
2986
3150
  //TODO TEMP FIX bei lokaler Regelegung bleibt usoll = null.
3151
+ if (cterminal !== undefined && cterminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
3152
+ const stop = true;
3153
+ }
2987
3154
  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());
2988
3155
  const guidSuffix = (_a = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8);
2989
3156
  rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
@@ -2999,7 +3166,7 @@ class ConverterIntegral7 {
2999
3166
  }
3000
3167
  }
3001
3168
  }
3002
- else if (isRegulatingControl && i7DataSVC) {
3169
+ else if (isRegulatingControl && i7DataSVC !== undefined) {
3003
3170
  /** Regelung */
3004
3171
  const regCondEquip = condEquip;
3005
3172
  const cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
@@ -3020,12 +3187,12 @@ class ConverterIntegral7 {
3020
3187
  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;
3021
3188
  if (uband === undefined) {
3022
3189
  if (tCn) {
3023
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3190
+ uband = (0, parser_utils_1.isNumericI7)(uref) ? uref * 0.1 : ((0, parser_utils_1.isNumericI7)(usoll) ? usoll * 0.1 : tCn.getBaseVoltageAsNumber() * 0.1);
3024
3191
  }
3025
3192
  }
3026
3193
  if (cterminal !== undefined) {
3027
3194
  const uuid = (0, parser_utils_1.getUUID)(i7DataSVC.guid_rc);
3028
- 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);
3195
+ 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);
3029
3196
  rControl.enabled = true;
3030
3197
  if (isStatcom) {
3031
3198
  rControl.discrete = true;
@@ -3098,20 +3265,23 @@ class ConverterIntegral7 {
3098
3265
  usoll = (0, parser_utils_1.isNumericI7)(i7DataHgue.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.usoll) : undefined;
3099
3266
  if (regelungU) {
3100
3267
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
3101
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3268
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3269
+ condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3102
3270
  }
3103
3271
  else if (regelungP) {
3104
3272
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
3105
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3273
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3106
3274
  }
3107
- if ((spannungsregelungLokal || spannungsregelungRemote) && usoll == undefined) {
3108
- //get rated voltage of controlled node.
3275
+ if (isRegulatingControl) { //voltage control for AC-side
3109
3276
  let cterminal = undefined; //connection point terminal of this device
3110
3277
  let tVMax = undefined; //maximum target voltage
3111
3278
  let tVMin = undefined; //minimum target voltage
3112
- //get target voltage of controlled node.
3279
+ //get rated voltage of controlled node.
3113
3280
  if (knotenSpgGeregelt && spannungsregelungRemote) {
3114
3281
  cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3282
+ if (cterminal === undefined) {
3283
+ let stop = true;
3284
+ }
3115
3285
  if (cterminal) {
3116
3286
  tCn = cterminal.getConnectivityNode();
3117
3287
  if (tCn) {
@@ -3130,7 +3300,9 @@ class ConverterIntegral7 {
3130
3300
  if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3131
3301
  switch (knotenSpgGeregelt) {
3132
3302
  case undefined: {
3133
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3303
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3304
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3305
+ }
3134
3306
  if (cterminal === undefined) {
3135
3307
  cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3136
3308
  }
@@ -3152,10 +3324,10 @@ class ConverterIntegral7 {
3152
3324
  }
3153
3325
  }
3154
3326
  }
3327
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3155
3328
  }
3156
3329
  condEquip.targetUpcc = usoll;
3157
- condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
3158
- condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3330
+ //(condEquip as VsConverter).targetQpcc = 0; //ReactivePower, ReactivePowerCapabilityCurve is set in advance
3159
3331
  condEquip.targetPpcc = condEquip.baseS * -1;
3160
3332
  }
3161
3333
  }
@@ -3255,47 +3427,10 @@ class ConverterIntegral7 {
3255
3427
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_STARR)) {
3256
3428
  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));
3257
3429
  for (const i7Data of result) {
3258
- //const junction = new Junction(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data),"_J",`_${cimModel.junctions]), 'JNCT', 'starre Verbindung');
3259
3430
  const breaker = new Breaker_1.Breaker((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'Breaker', 'starre Verbindung');
3260
3431
  yield this.convertSwitch(breaker, cimModel, i7Data);
3261
3432
  cimModel.addBreaker(breaker);
3262
3433
  this.addIdMapping(i7Data.id, breaker.mrid, integral_sql_1.Integral7TableNames.LEISTUNGSSCHALTER);
3263
- /**const schaltzustand = convertToBooleanI7(i7Data.schaltzustand);
3264
-
3265
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer);
3266
-
3267
- if (equipmentContainer) {
3268
- equipmentContainer.addEquipment(junction);
3269
- junction.equipmentContainer = equipmentContainer;
3270
- } else {
3271
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen EquipmentContainer.`);
3272
- }
3273
- const cnStart = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
3274
- const cnZiel = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
3275
-
3276
- if (cnStart) {
3277
- const terminal = this.createConnection(cimModel, junction, cnStart, PhaseCode.ABC, true, 1);
3278
- if (schaltzustand === false) {
3279
- terminal.connected = schaltzustand;
3280
- }
3281
- } else {
3282
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Anfangsknoten.`);
3283
- }
3284
- if (cnZiel) {
3285
- const terminal = this.createConnection(cimModel, junction, cnZiel, PhaseCode.ABC, true, 2);
3286
- if (schaltzustand === false) {
3287
- terminal.connected = schaltzustand;
3288
- }
3289
- } else {
3290
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Zielknoten.`);
3291
- }
3292
- const baseVoltage = getTerminalUn(cimModel, junction);
3293
- if (baseVoltage) {
3294
- junction.baseVoltage = baseVoltage;
3295
- }
3296
- this.addIdMapping(i7Data.id, junction.mrid, Integral7TableNames.KNOTEN_STARR);
3297
- cimModel.addJunction(junction);
3298
- **/
3299
3434
  }
3300
3435
  }
3301
3436
  else {
@@ -3404,7 +3539,7 @@ class ConverterIntegral7 {
3404
3539
  const start = cimModel.objects.get(this.integralID2UUID.get(i7Data.aknoten));
3405
3540
  let startTerminal;
3406
3541
  if (start) {
3407
- startTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, 1);
3542
+ startTerminal = this.createConnection(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, true);
3408
3543
  }
3409
3544
  else {
3410
3545
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Anfangsknoten.`);
@@ -3413,7 +3548,7 @@ class ConverterIntegral7 {
3413
3548
  const target = cimModel.objects.get(this.integralID2UUID.get(i7Data.eknoten));
3414
3549
  let targetTerminal;
3415
3550
  if (target) {
3416
- targetTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, 2);
3551
+ targetTerminal = this.createConnection(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, true);
3417
3552
  }
3418
3553
  else {
3419
3554
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Zielknoten.`);
@@ -3430,7 +3565,7 @@ class ConverterIntegral7 {
3430
3565
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3431
3566
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3432
3567
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3433
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir);
3568
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir, seriesCompensator.r);
3434
3569
  seriesCompensator.varistorPresent = false;
3435
3570
  /** EQ-SC */
3436
3571
  seriesCompensator.r0 = seriesCompensator.r;
@@ -3516,8 +3651,8 @@ class ConverterIntegral7 {
3516
3651
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3517
3652
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3518
3653
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3519
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1);
3520
- seriesCompensator.varistorPresent = false;
3654
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1, seriesCompensator.r);
3655
+ //seriesCompensator.varistorPresent = false;
3521
3656
  /** EQ-SC */
3522
3657
  seriesCompensator.r0 = seriesCompensator.r;
3523
3658
  seriesCompensator.x0 = seriesCompensator.x;
@@ -3582,28 +3717,14 @@ class ConverterIntegral7 {
3582
3717
  for (const i7DataSchiene of stpSchiene) {
3583
3718
  try {
3584
3719
  stpSchieneIDs.push(i7DataSchiene.id);
3585
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7DataSchiene.id)));
3586
- const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3720
+ const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id;
3587
3721
  const uuidConnectivityNode = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, keyConnectivityNode);
3588
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN']));
3589
- const keyJunction = cim_class_names_1.ClassNames.Junction + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3590
- const uuidJunction = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Junction, this.configUuid, keyJunction);
3591
- const junction = new Junction_1.Junction(uuidJunction, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_J']));
3592
- connectivityNode.setConnectivityNodeContainer(equipmentContainer);
3593
- if (equipmentContainer) {
3594
- equipmentContainer.addEquipment(junction);
3595
- junction.equipmentContainer = equipmentContainer;
3596
- }
3597
- else {
3598
- this.logger.debug(`Sternpunktschiene ${i7DataSchiene.id} besitzt keinen EquipmentContainer.`);
3599
- }
3722
+ const name = (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN'], 32, false);
3723
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, name, name);
3724
+ connectivityNode.key = integral_prefix_1.CKnoten1PSO_PRAEFIX + i7DataSchiene.bezeichner;
3600
3725
  // Verbindung herstellen
3601
- const terminal = this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3602
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3726
+ integral7.sternPunktImpModel.stpSchieneIdConnectivityNode.set(i7DataSchiene.id, connectivityNode);
3603
3727
  integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
3604
- integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
3605
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
3606
- integral7.sternPunktImpModel.stpSchieneTerminal.set(i7DataSchiene.id, terminal);
3607
3728
  this.addIdMapping(i7DataSchiene.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHIENE);
3608
3729
  }
3609
3730
  catch (e) {
@@ -3618,41 +3739,63 @@ class ConverterIntegral7 {
3618
3739
  }));
3619
3740
  });
3620
3741
  }
3621
- convertKdrossel(cimModel, integral7, stpScheinenID) {
3742
+ convertKdrossel(cimModel, integral7, stpSchienenID, defaultValuesConfig) {
3622
3743
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3623
3744
  try {
3624
3745
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ)) {
3625
- if (stpScheinenID.length) {
3626
- 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));
3746
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3747
+ 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));
3627
3748
  for (const i7Data of result) {
3628
3749
  const kdType = this.kdrosseltypen.get(i7Data.nametyp);
3750
+ 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);
3751
+ 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);
3752
+ 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);
3629
3753
  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);
3630
3754
  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);
3631
3755
  const connectivityNode = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.anschluss));
3632
- const junctionUUID = integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get((i7Data.anschluss));
3633
- let conductingEquip;
3634
- if (imax && imin) {
3756
+ let conductingEquip = undefined;
3757
+ if (iakt !== undefined && xne !== undefined || xne !== undefined && ur !== undefined || iakt !== undefined && ur !== undefined) {
3635
3758
  /** PetersenCoil */
3636
3759
  const petersenCoil = new PetersenCoil_1.PetersenCoil((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
3637
- integral7.sternPunktImpModel.petersenCoils.set(petersenCoil.mrid, petersenCoil);
3638
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, petersenCoil);
3760
+ if (xne !== undefined && ur !== undefined) {
3761
+ petersenCoil.xGroundNominal = xne;
3762
+ petersenCoil.nominalU = ur;
3763
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3764
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3765
+ }
3766
+ else if (iakt !== undefined && xne !== undefined) {
3767
+ petersenCoil.xGroundNominal = xne;
3768
+ petersenCoil.nominalU = iakt * xne * Math.pow(10, -3);
3769
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3770
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3771
+ }
3772
+ else if (iakt !== undefined && ur !== undefined) {
3773
+ petersenCoil.nominalU = ur;
3774
+ petersenCoil.xGroundNominal = petersenCoil.nominalU * Math.pow(10, 3) / iakt;
3775
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3776
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3777
+ }
3778
+ petersenCoil.mode = PetersenCoilModeKind_1.PetersenCoilModeKind.automaticPositioning;
3639
3779
  this.addIdMapping(i7Data.id, petersenCoil.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3640
3780
  conductingEquip = petersenCoil;
3641
3781
  }
3642
3782
  else {
3643
3783
  /** GroundingImpedance */
3644
3784
  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);
3645
- 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);
3646
- 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);
3785
+ 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);
3786
+ groundingImpedance.x = xne;
3647
3787
  integral7.sternPunktImpModel.groundingImpedances.set(groundingImpedance.mrid, groundingImpedance);
3648
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3788
+ //integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3649
3789
  this.addIdMapping(i7Data.id, groundingImpedance.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3650
3790
  conductingEquip = groundingImpedance;
3651
3791
  }
3652
- // Verbindung herstellen
3792
+ // Create connection for PetersenCoil and GroundingImpedance connected with 'Sternpunktschiene'. PetersenCoil and GroundingImpedance connected to 'Sternpunktknoten' is connected during convertTrafo2w and convertTrafo3w
3653
3793
  if (connectivityNode) {
3654
- const terminal = this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3655
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3794
+ this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3795
+ integral7.sternPunktImpModel.stpSchieneUUIDStpImp.set(connectivityNode.getUUID(), conductingEquip);
3796
+ }
3797
+ else {
3798
+ integral7.sternPunktImpModel.stpKnotenStpImp.set(i7Data.anschluss, conductingEquip);
3656
3799
  }
3657
3800
  }
3658
3801
  }
@@ -3673,26 +3816,37 @@ class ConverterIntegral7 {
3673
3816
  });
3674
3817
  }
3675
3818
  /** Den Schaltzuszand bestimmen und zuvor angelegten (convertSternpunktSchienen) Terminalinstanz zuweisen. */
3676
- convertStpSchaltelemente(integral7, stpSchienenID) {
3819
+ convertStpSchaltelemente(cimModel, integral7, stpSchienenID) {
3677
3820
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3678
3821
  try {
3679
3822
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER)) {
3680
- if (stpSchienenID.length) {
3823
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3681
3824
  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));
3682
3825
  for (const i7Data of result) {
3683
- const terminal = integral7.sternPunktImpModel.stpSchieneTerminal.get(i7Data.eknoten);
3684
- if (terminal) {
3685
- terminal.connected = (0, parser_utils_1.isBooleanI7)(i7Data.schaltzustand) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand) : true;
3826
+ const connectivityNodeAbcn = cimModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.aknoten)); //connection point of 'PowerTransformerEnd' is assigned during convertTrafo2w and convertTrafo3w
3827
+ const connectivityNodeN = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.eknoten)); //connection point of 'Sternpunktschiene'
3828
+ if (connectivityNodeN != undefined) {
3829
+ const schaltzustand = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
3830
+ const keyGroundDisconnector = cim_class_names_1.ClassNames.GroundDisconnector + i7Data.aknoten + i7Data.eknoten;
3831
+ const uuidGroundDisconnector = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.GroundDisconnector, this.configUuid, keyGroundDisconnector);
3832
+ const groundDisconnector = new GroundDisconnector_1.GroundDisconnector(uuidGroundDisconnector, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar, schaltzustand, false);
3833
+ //Set connection to ConnectivityNode at neutral side to GroundingImpedance or PetersenCoil
3834
+ this.createConnection(cimModel, groundDisconnector, connectivityNodeN, PhaseCode_1.PhaseCode.N, true);
3835
+ //cimModel.addGroundDisconnector(groundDisconnector);
3836
+ integral7.sternPunktImpModel.groundDisconnectors.set(groundDisconnector.getUUID(), groundDisconnector);
3837
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3838
+ integral7.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.set(i7Data.id, groundDisconnector.getUUID());
3839
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3840
+ integral7.sternPunktImpModel.groundDisconnectorsUUIDsStpSchieneUUID.set(groundDisconnector.getUUID(), connectivityNodeN.getUUID());
3841
+ /** SternpunktknotenID mit GroundDisconnector UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
3842
+ integral7.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.set(groundDisconnector.getUUID(), i7Data.eknoten);
3843
+ /** set connection to terminal of powertransformerend*/
3844
+ let earthFaultCompensator = integral7.sternPunktImpModel.stpSchieneUUIDStpImp.get(connectivityNodeN.getUUID());
3845
+ integral7.sternPunktImpModel.groundDisconnectorUUIDstpImp.set(groundDisconnector.getUUID(), earthFaultCompensator);
3846
+ this.addIdMapping(i7Data.id, groundDisconnector.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER);
3686
3847
  }
3687
- /** SchaltelementID mit Junstion UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3688
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.id, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3689
- /** Sternpunktknoten mit Junstion UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
3690
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.aknoten, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3691
3848
  }
3692
3849
  }
3693
- else {
3694
- this.logger.debug(`StpSchaltelemente Keine Sternpunktschienen vorhanden.`);
3695
- }
3696
3850
  }
3697
3851
  else {
3698
3852
  this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER} ist nicht vorhanden.`);
@@ -3810,6 +3964,7 @@ class ConverterIntegral7 {
3810
3964
  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));
3811
3965
  }
3812
3966
  for (const i7Data of result) {
3967
+ let lineNames = new Map;
3813
3968
  /** Alle Stromkreisabschnitte */
3814
3969
  const stromkreisabschnitte = leitungStromkreisabschnitt.filter(elem => elem.leitung === i7Data.id);
3815
3970
  if (!((stromkreisabschnitte === null || stromkreisabschnitte === void 0 ? void 0 : stromkreisabschnitte.length) > 0))
@@ -3833,8 +3988,9 @@ class ConverterIntegral7 {
3833
3988
  '-' +
3834
3989
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.stkabname);
3835
3990
  /** Wenn kein Stromkreisobjekt vorhanden ist, dann erstelle ein neues Objekt. */
3836
- const uuidString = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3837
- const line = new AMPRIONLine_1.AMPRIONLine(uuidString, i7Schluessel);
3991
+ const uuidString = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Line, this.configUuid, i7Schluessel);
3992
+ let lineName = createLineName(i7Data, uuidString, lineNames);
3993
+ const line = new AMPRIONLine_1.AMPRIONLine(uuidString, lineName);
3838
3994
  line.ukz = i7Data.ukz;
3839
3995
  line.key = i7Schluessel;
3840
3996
  let acLineSegments = [];
@@ -3847,7 +4003,7 @@ class ConverterIntegral7 {
3847
4003
  '-' +
3848
4004
  (0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
3849
4005
  const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3850
- const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Schluessel);
4006
+ const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Data.kommentar);
3851
4007
  const key = acLineSegment.getUUID();
3852
4008
  const uuidWireObject = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.EVWireObject, this.configUuid, key);
3853
4009
  acLineSegment.key = i7Schluessel;
@@ -3910,7 +4066,7 @@ class ConverterIntegral7 {
3910
4066
  /**Connectivity Node to connect end of line and start of neighbouring line.*/
3911
4067
  const key = acLineSegment1.getUUID() + acLineSegment2.getUUID();
3912
4068
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
3913
- const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.name, '_', acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, true));
4069
+ const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, false));
3914
4070
  /**Connect end of aclinesegment i*/
3915
4071
  cn.connectivityNodeContainer = acLineSegment1.equipmentContainer;
3916
4072
  tmp_terminal = this.createConnection(cimModel, acLineSegment1, cn, PhaseCode_1.PhaseCode.ABC, true);
@@ -3969,7 +4125,6 @@ class ConverterIntegral7 {
3969
4125
  /** In any case assign Georegion to aclinesegments */
3970
4126
  let idx = 0;
3971
4127
  while (idx < acLineSegments.length && !(line.subGeographicalRegion)) {
3972
- let jdx = 0;
3973
4128
  let values = acLineSegments[idx].terminals.values();
3974
4129
  let tmp_terminal = values.next();
3975
4130
  while (tmp_terminal.value && !(line.subGeographicalRegion)) {
@@ -4039,6 +4194,9 @@ class ConverterIntegral7 {
4039
4194
  let dcLineNeutral = undefined;
4040
4195
  const i7Schluessel = integral_prefix_1.HGUELEITUNG_PRAEFIX +
4041
4196
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4197
+ if (dcLine.getUUID() === 'f125f0f3-a621-43e7-8af7-9873d52239a0') {
4198
+ const stop = true;
4199
+ }
4042
4200
  /** operationMode der Anfangs- und Zielkopfstation setzen */
4043
4201
  let converterStart = false;
4044
4202
  let converterStartNeg = false;
@@ -4053,7 +4211,7 @@ class ConverterIntegral7 {
4053
4211
  let dcNodeStartMiddle = undefined;
4054
4212
  let dcNodeTargetMiddle = undefined;
4055
4213
  //Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
4056
- const dcLineSegment = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4214
+ const dcLineSegment = new DCLineSegment_1.INTEGRALDCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4057
4215
  dcLineSegmentSet.push(dcLineSegment);
4058
4216
  let dcLineSegmentNeg = undefined;
4059
4217
  let dcLineSegmentNeutral = undefined;
@@ -4062,19 +4220,21 @@ class ConverterIntegral7 {
4062
4220
  dcLineSegment.capacitance = undefined;
4063
4221
  dcLineSegment.inductance = undefined;
4064
4222
  /**EQ: given directly by the INTEGRAL system model */
4065
- dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4223
+ 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;
4224
+ dcLineSegment.ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4066
4225
  dcLineSegment.equipmentContainer = dcLine;
4067
4226
  //create second dcLineSegment in case this dcLine is a bipol.
4068
4227
  if (bipole) {
4069
4228
  const dcLineKey = dcLine.getUUID();
4070
4229
  const dcLineUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4071
4230
  dcLineNeg = new DCLine_1.DCLine(dcLineUuid, i7Data.bezeichner);
4072
- 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);
4231
+ 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);
4073
4232
  dcLineSegmentSet.push(dcLineSegmentNeg);
4074
4233
  dcLineSegmentNeg.length = dcLineSegment.length;
4075
4234
  dcLineSegmentNeg.capacitance = undefined;
4076
4235
  dcLineSegmentNeg.inductance = undefined;
4077
- dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4236
+ dcLineSegmentNeg.resistance = dcLineSegment.resistance;
4237
+ dcLineSegmentNeg.ur = dcLineSegment.ur;
4078
4238
  dcLineSegmentNeg.equipmentContainer = dcLineNeg;
4079
4239
  }
4080
4240
  //create metallic return
@@ -4082,12 +4242,13 @@ class ConverterIntegral7 {
4082
4242
  const dcLineNeutralUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4083
4243
  const dcLineSegmentUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLineSegment, this.configUuid, dcLineNeutralUuid);
4084
4244
  dcLineNeutral = new DCLine_1.DCLine(dcLineNeutralUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCL']));
4085
- 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);
4245
+ 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);
4086
4246
  dcLineSegmentSet.push(dcLineSegmentNeutral);
4087
4247
  dcLineSegmentNeutral.length = dcLineSegment.length;
4088
4248
  dcLineSegmentNeutral.capacitance = undefined;
4089
4249
  dcLineSegmentNeutral.inductance = undefined;
4090
- dcLineSegmentNeutral.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4250
+ dcLineSegmentNeutral.resistance = dcLineSegment.resistance;
4251
+ dcLineSegmentNeutral.ur = dcLineSegment.ur;
4091
4252
  dcLineSegmentNeutral.equipmentContainer = dcLineNeutral;
4092
4253
  //get ACDCConverter at both ends of DCLine
4093
4254
  const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
@@ -4195,6 +4356,7 @@ class ConverterIntegral7 {
4195
4356
  if (startDCNodeNeg) {
4196
4357
  const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(eval('i7Data.guid_dcterminaln1')), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCT'], 32, true));
4197
4358
  dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
4359
+ dcTerminal.connected = true;
4198
4360
  dcTerminal.dcNode = startDCNodeNeg;
4199
4361
  dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4200
4362
  startDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
@@ -4208,6 +4370,7 @@ class ConverterIntegral7 {
4208
4370
  if (targetDCNode) {
4209
4371
  const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(eval('i7Data.guid_dcterminalp2')), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT'], 32, true));
4210
4372
  dcTerminal.dCConductingEquipment = dcLineSegment;
4373
+ dcTerminal.connected = true;
4211
4374
  dcTerminal.dcNode = targetDCNode;
4212
4375
  dcLineSegment.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4213
4376
  targetDCNode.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
@@ -4219,6 +4382,7 @@ class ConverterIntegral7 {
4219
4382
  if (targetDCNodeNeg) {
4220
4383
  const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(eval('i7Data.guid_dcterminaln2')), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCT'], 32, true));
4221
4384
  dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
4385
+ dcTerminal.connected = true;
4222
4386
  dcTerminal.dcNode = targetDCNodeNeg;
4223
4387
  dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4224
4388
  targetDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
@@ -4232,6 +4396,7 @@ class ConverterIntegral7 {
4232
4396
  const dcTerminalM3UUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCTerminal, this.configUuid, dcTerminalKey);
4233
4397
  const dcTerminal = new DCTerminal_1.DCTerminal(dcTerminalM3UUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCT'], 32, true));
4234
4398
  dcTerminal.dCConductingEquipment = dcLineSegmentNeutral;
4399
+ dcTerminal.connected = true;
4235
4400
  dcTerminal.dcNode = dcNodeStartMiddle;
4236
4401
  dcLineSegmentNeutral.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4237
4402
  dcNodeStartMiddle.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
@@ -4245,6 +4410,7 @@ class ConverterIntegral7 {
4245
4410
  const dcTerminalM3UUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, dcTerminalKey);
4246
4411
  const dcTerminal = new DCTerminal_1.DCTerminal(dcTerminalM3UUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCT'], 32, true));
4247
4412
  dcTerminal.dCConductingEquipment = dcLineSegmentNeutral;
4413
+ dcTerminal.connected = true;
4248
4414
  dcTerminal.dcNode = dcNodeTargetMiddle;
4249
4415
  dcLineSegmentNeutral.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4250
4416
  dcNodeTargetMiddle.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
@@ -4260,8 +4426,10 @@ class ConverterIntegral7 {
4260
4426
  const equipmentKey = dcTerminal.getUUID();
4261
4427
  for (const elem of dcTerminal.dcNode.dcTerminals.values()) {
4262
4428
  if (elem instanceof ACDCConverterDCTerminal_1.ACDCConverterDCTerminal) {
4263
- const pR = elem.dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4264
- const uR = acDCConverterStart.ratedUdc; //voltage in kV
4429
+ //const pR: number = (elem as ACDCConverterDCTerminal).dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4430
+ //const uR: number = acDCConverterStart.ratedUdc; //voltage in kV
4431
+ const pR = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
4432
+ const uR = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4265
4433
  if (pR != undefined && uR != undefined) {
4266
4434
  let ir = (pR * Math.pow(10, 6)) / (uR * Math.pow(10, 3)); //assumption: pr is BaseS
4267
4435
  if (bipole) {
@@ -4321,6 +4489,7 @@ class ConverterIntegral7 {
4321
4489
  typTrafo.r0kr2 = i7Data.r0kr2;
4322
4490
  typTrafo.r00r1 = i7Data.r00r1;
4323
4491
  typTrafo.r00r2 = i7Data.r00r2;
4492
+ typTrafo.s_dauer = i7Data.s_dauer;
4324
4493
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4325
4494
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4326
4495
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4372,6 +4541,9 @@ class ConverterIntegral7 {
4372
4541
  typTrafo.r0kr2 = i7Data.r0kr2;
4373
4542
  typTrafo.r00r1 = i7Data.r00r1;
4374
4543
  typTrafo.r00r2 = i7Data.r00r2;
4544
+ typTrafo.s_dauer_1 = i7Data.s_dauer_1;
4545
+ typTrafo.s_dauer_2 = i7Data.s_dauer_2;
4546
+ typTrafo.s_dauer_3 = i7Data.s_dauer_3;
4375
4547
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4376
4548
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr1, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4377
4549
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4490,30 +4662,18 @@ class ConverterIntegral7 {
4490
4662
  integral_prefix_1.TRAFO2W_PRAEFIX +
4491
4663
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4492
4664
  powerTransformer.key = i7Schluessel;
4493
- if (powerTransformer.getUUID() === '515508dc-5982-4686-ad26-08d39db91421') {
4494
- let stop = true;
4495
- } // kein Typ in D4
4496
- if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') {
4497
- let stop = true;
4498
- } //Typ in D8
4499
- if (powerTransformer.getUUID() === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') {
4665
+ if (powerTransformer.getUUID() === '21def4394e814e77b3f25acbad7bda16') {
4500
4666
  let stop = true;
4501
- } //kein Typ in BE
4502
- if (powerTransformer.getUUID() === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9') {
4503
- let stop = true;
4504
- } //Typ in D7
4667
+ }
4505
4668
  if (powerTransformer.getUUID() === '8eca3fedd32c49369f8946ac4ce70e17') { //Stufenstellerkonvertierung fehlgeschlagen
4506
4669
  let stop = true;
4507
4670
  }
4508
4671
  if (powerTransformer.getUUID() === 'b9d8bd48e1554af7b6153c1f7da052e1') {
4509
4672
  let stop = true;
4510
4673
  } //Phasenschieber zu falscher Winkel und falsches stepIncrement.
4511
- if (powerTransformer.getUUID() === '2ACF34B9-9DC9-4607-9B8A-032EBC2C31A5') {
4674
+ if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') { //pkr, ukr, ... konnte nicht aus Typ ermittelt werden.
4512
4675
  let stop = true;
4513
4676
  } //Längsregeltransformator mit symmetrischem Phasenschieber.
4514
- if (i7Data.nametyp) {
4515
- const stop = true;
4516
- }
4517
4677
  const powerTransformerInfo = this.cimModelDefault.getPowerTransformerInfoByName(i7Data.nametyp);
4518
4678
  if (powerTransformerInfo) {
4519
4679
  facility.setAssetInfo(powerTransformerInfo);
@@ -4531,12 +4691,13 @@ class ConverterIntegral7 {
4531
4691
  // Wicklung 1
4532
4692
  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}`);
4533
4693
  powerTransformerEnd1.endNumber = 1;
4534
- const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4535
- const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4694
+ const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4695
+ const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4536
4696
  const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
4537
4697
  const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4538
4698
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4539
- const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
4699
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, false);
4700
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, false);
4540
4701
  // P0 Lastverluste im I7 Modell p_leer
4541
4702
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4542
4703
  // Leerlaufverluste
@@ -4584,7 +4745,7 @@ class ConverterIntegral7 {
4584
4745
  const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode.ABC, true, 1) : undefined;*/
4585
4746
  if (!startTerminal)
4586
4747
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
4587
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig);
4748
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig);
4588
4749
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4589
4750
  let equivalentInjection = undefined;
4590
4751
  if (startTerminal) {
@@ -4616,7 +4777,7 @@ class ConverterIntegral7 {
4616
4777
  const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
4617
4778
  if (!zielTerminal)
4618
4779
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
4619
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, undefined, i7Data, defaultValuesConfig);
4780
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, sdauer2, i7Data, defaultValuesConfig);
4620
4781
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4621
4782
  if (zielTerminal) {
4622
4783
  let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
@@ -4631,9 +4792,6 @@ class ConverterIntegral7 {
4631
4792
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
4632
4793
  powerTransformerEnd2.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd2.endNumber, powerTransformerEnd2.grounded);
4633
4794
  powerTransformerEnd2.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd2.endNumber);
4634
- if (uuid === '402aec99-ba2c-42fa-b4ed-b4928901f47b') {
4635
- let stop = true;
4636
- }
4637
4795
  // NullSystem Impedanzen (nur Reaktanzen)
4638
4796
  let starconnectionCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) <= 1 ? (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) : 1;
4639
4797
  const retVal = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2], starconnectionCount, powerTransformer);
@@ -4646,7 +4804,7 @@ class ConverterIntegral7 {
4646
4804
  powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4647
4805
  powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4648
4806
  /** Transormator Anschlusspunkte nach Spannungsebene sortieren */
4649
- this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4807
+ //this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4650
4808
  // TODO
4651
4809
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
4652
4810
  * da sonst die Wicklungsnummern nicht mehr übereinstimmen könnten */
@@ -4720,6 +4878,9 @@ class ConverterIntegral7 {
4720
4878
  for (const i7Data of result) {
4721
4879
  const sternpunktKnotenMap = new Map();
4722
4880
  const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
4881
+ if (uuid === 'b81485dd-5115-4241-b31a-c87a3eec9803' || uuid === '4eadc602-7dc5-41e4-bb8b-38993c03a80a') {
4882
+ const stop = true;
4883
+ }
4723
4884
  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);
4724
4885
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
4725
4886
  if (substation) {
@@ -4770,13 +4931,16 @@ class ConverterIntegral7 {
4770
4931
  const ur1 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4771
4932
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4772
4933
  const ur3 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 3);
4773
- const sdauer1 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_1) : sr1;
4774
- const sdauer2 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_2) : sr2;
4775
- const sdauer3 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_3) : sr3;
4934
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, true);
4935
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, true);
4936
+ const sdauer3 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 3, true);
4776
4937
  //Leerlaufverluste in kW
4777
4938
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4778
4939
  // Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
4779
4940
  const iLeer = (0, utils_2.getTrafoIleer)(i7Data, powerTransformerInfo);
4941
+ if (powerTransformer.getUUID() === 'c589d314-fb31-4efb-a463-edd3cb508347') {
4942
+ const stop = true;
4943
+ }
4780
4944
  if (powerTransformer.getUUID() === '3f58ef46-918f-44d4-8b53-d4078caa2d92') {
4781
4945
  const stop = true;
4782
4946
  }
@@ -4827,7 +4991,7 @@ class ConverterIntegral7 {
4827
4991
  powerTransformerEnd1.r = impedanzW1.r;
4828
4992
  powerTransformerEnd1.x = impedanzW1.x;
4829
4993
  powerTransformerEnd1.g = impedanzW1.g;
4830
- powerTransformerEnd1.b = impedanzW1.b;
4994
+ powerTransformerEnd1.b = -1 * impedanzW1.b;
4831
4995
  powerTransformerEnd1.ratedU = ur1;
4832
4996
  powerTransformerEnd1.ratedS = sr1;
4833
4997
  this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
@@ -4874,7 +5038,7 @@ class ConverterIntegral7 {
4874
5038
  powerTransformerEnd2.r = impedanzW2.r;
4875
5039
  powerTransformerEnd2.x = impedanzW2.x;
4876
5040
  powerTransformerEnd2.g = impedanzW2.g;
4877
- powerTransformerEnd2.b = impedanzW2.b;
5041
+ powerTransformerEnd2.b = -1 * impedanzW2.b;
4878
5042
  powerTransformerEnd2.ratedS = sr2;
4879
5043
  powerTransformerEnd2.ratedU = ur2;
4880
5044
  powerTransformerEnd2.powerTransformer = powerTransformer;
@@ -4922,7 +5086,7 @@ class ConverterIntegral7 {
4922
5086
  powerTransformerEnd3.r = impedanzW3.r;
4923
5087
  powerTransformerEnd3.x = impedanzW3.x;
4924
5088
  powerTransformerEnd3.g = impedanzW3.g;
4925
- powerTransformerEnd3.b = impedanzW3.b;
5089
+ powerTransformerEnd3.b = -1 * impedanzW3.b;
4926
5090
  powerTransformerEnd3.ratedS = sr3;
4927
5091
  powerTransformerEnd3.ratedU = ur3;
4928
5092
  powerTransformerEnd3.powerTransformer = powerTransformer;
@@ -4954,6 +5118,15 @@ class ConverterIntegral7 {
4954
5118
  powerTransformerEnd3.r0 = zeroSequImpedanzWx.r03;
4955
5119
  // Transormator Anschlusspunkte nach Spannungsebene sortieren
4956
5120
  this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
5121
+ // Set grounding for autotransformer
5122
+ const pTEnds = powerTransformer.getPowerTransformerEnd().filter(elem => elem.connectionKind === 'A');
5123
+ if (pTEnds.length > 0) {
5124
+ if (pTEnds.filter(elem => elem.grounded === true).length > 0) {
5125
+ for (const end of pTEnds) {
5126
+ end.grounded = true;
5127
+ }
5128
+ }
5129
+ }
4957
5130
  //TODO
4958
5131
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
4959
5132
  * da sonst die Wicklungsnummern, nicht mehr übereinstimmen könnten */
@@ -5148,10 +5321,8 @@ class ConverterIntegral7 {
5148
5321
  sortTransformerEnd(powerTransformer, sortProperty, order) {
5149
5322
  // Store current order of power transformer ends.
5150
5323
  let winding_guids = new Array(powerTransformer.powerTransformerEnd.length);
5151
- let winding_guids_fixed = new Array(powerTransformer.powerTransformerEnd.length);
5152
5324
  for (let i = 0; i < powerTransformer.powerTransformerEnd.length; i++) {
5153
5325
  winding_guids[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5154
- winding_guids_fixed[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5155
5326
  }
5156
5327
  //Sort: This step maybe changes power transformer ends order for this power transformer.
5157
5328
  powerTransformer.powerTransformerEnd.sort(function (w1, w2) {
@@ -5175,8 +5346,19 @@ class ConverterIntegral7 {
5175
5346
  // const isNull = true;
5176
5347
  //}
5177
5348
  }
5349
+ let tmpMapping = new Array(powerTransformer.powerTransformerEnd.length);
5350
+ for (let i = 0; i < winding_guids.length; i++) {
5351
+ tmpMapping[i] = (winding_guids.indexOf(powerTransformer.powerTransformerEnd[i].getUUID()) + 1).toString();
5352
+ }
5353
+ return tmpMapping; //return mapping
5178
5354
  }
5179
5355
  setACLineSegmentProperties(defaultModel, cimModel, acLineSegment, data, cable, defaultValuesConfig) {
5356
+ if ((0, parser_utils_1.isBooleanI7)(data.ltgmonitoring) && (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring)) {
5357
+ acLineSegment.ltgmonitoring = (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring);
5358
+ }
5359
+ else {
5360
+ acLineSegment.ltgmonitoring = false;
5361
+ }
5180
5362
  if ((0, parser_utils_1.isBooleanI7)(data.flag_impedanzlos) && (0, parser_utils_1.convertToBooleanI7)(data.flag_impedanzlos)) {
5181
5363
  data.flag_impedanzlos = 1;
5182
5364
  }
@@ -5277,8 +5459,8 @@ class ConverterIntegral7 {
5277
5459
  * @param equipmentKey Generierung einer persistenter UUID v5. Für PowerTransformer wird UUID des PowerTransformerEnds verwendet. Andernfalls die UUID des ConductingEquipments
5278
5460
  * */
5279
5461
  setConductingEquipmentOperationalLimit(cimModel, name, terminal, equipmentKey, limit, limitType, igrenz) {
5280
- if ((limit !== undefined && limit > 0) && (igrenz !== undefined && igrenz > 0))
5281
- return;
5462
+ if (!(limit !== undefined && limit > 0) || !(igrenz !== undefined && igrenz > 0))
5463
+ return; //if 'limit' and 'igrenz' is not given leave
5282
5464
  /** OperationalLimitSet erstellen */
5283
5465
  const operationalLimitSetKey = terminal.getUUID() + equipmentKey;
5284
5466
  const operationalLimitSetUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.OperationalLimitSet, this.configUuid, operationalLimitSetKey);
@@ -5363,6 +5545,9 @@ class ConverterIntegral7 {
5363
5545
  terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
5364
5546
  }
5365
5547
  }
5548
+ if (terminal !== undefined && terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
5549
+ const stop = true;
5550
+ }
5366
5551
  return terminal;
5367
5552
  }
5368
5553
  createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
@@ -5879,7 +6064,7 @@ class ConverterIntegral7 {
5879
6064
  // Topologie
5880
6065
  powerTransformerEnd.terminal = terminal;
5881
6066
  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);
5882
- if (powerTransformer.getUUID() === '4d14cd95-215c-45f3-8136-b06d69ee0191') {
6067
+ if (powerTransformer.getUUID() === '3c3928be-e691-453d-8216-df30bd11845e') {
5883
6068
  const stop = true;
5884
6069
  }
5885
6070
  let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
@@ -5935,36 +6120,34 @@ class ConverterIntegral7 {
5935
6120
  }
5936
6121
  convertTapChangers(i7Data, transformerEnds, cimModel, transformerinfo, connectivityNode, spannungsband) {
5937
6122
  var _a, _b, _c, _d, _e, _f, _g, _h;
5938
- /*if(getUUID(i7Data.guid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
5939
- let stop = true; DONE
6123
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'c0ba4bd1102c4f4fa4fc66865a60f462') { //Zeile53 - Typ Meeden'
6124
+ let stop = true;
6125
+ }
6126
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === '2e8057ed695147f9903023cb5e9d4a0c') { //Zeile55 - SR und LR'
6127
+ let stop = true;
5940
6128
  }
5941
- if(getUUID(i7Data.guid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
5942
- let stop = true; DONE
5943
- }*/
5944
- /*if(getUUID(i7Data.guid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
5945
- let stop = true;
5946
- }*/
5947
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
6129
+ if ((0, parser_utils_1.getUUID)(i7Data.guid).toLowerCase() === 'd7a25b80-b439-48a0-b67e-108903063237') { //Zeile81 - SR statt LR'
5948
6130
  let stop = true;
5949
6131
  }
5950
- /*if(getUUID(i7Data.guid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
5951
- let stop = true;
5952
- }*/
5953
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
6132
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'b81485dd-5115-4241-b31a-c87a3eec9803') {
5954
6133
  let stop = true;
5955
6134
  }
5956
- /*if(getUUID(i7Data.guid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
5957
- let stop = true;
5958
- }*/
5959
6135
  let ratioPhaseTapChangerPresent = false;
5960
6136
  //Check if tap changer exists. (power transformer winding)
5961
6137
  let tapChangerNumberI7 = []; //Number of tap changer
5962
6138
  let tapChangerNumber = [];
5963
- //let transformerEndInfo:EVPowerTransformerEndInfo[] = [];
6139
+ //collect information about tap changers (without type)
5964
6140
  for (let tapChangerPos = 1; tapChangerPos <= 2; tapChangerPos++) {
5965
6141
  if ((0, parser_utils_1.isNumericI7)(i7Data[`gestufte_seite_s${tapChangerPos}`])) {
5966
- tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
5967
- tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6142
+ if (i7Data[`gestufte_seite_s${tapChangerPos}`] !== 0) {
6143
+ tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6144
+ tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6145
+ }
6146
+ else if (i7Data[`gestufte_seite_s${tapChangerPos}`] === 0) {
6147
+ const controlledSide = getHVSideNumber(transformerEnds);
6148
+ tapChangerNumberI7.push(controlledSide);
6149
+ tapChangerNumber.push(controlledSide);
6150
+ }
5968
6151
  }
5969
6152
  }
5970
6153
  //collect information about tap changers (type)
@@ -5979,15 +6162,15 @@ class ConverterIntegral7 {
5979
6162
  //If there is a phase tap changer and a ratio tap changer reorder the tap changers to process ratio tap changer first.
5980
6163
  let index = undefined;
5981
6164
  if (tapChangerNumberI7.length > 1) {
5982
- for (let entry of tapChangerNumberI7) {
6165
+ for (let i = 0; i < tapChangerNumberI7.length; i++) {
5983
6166
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
5984
- const transformerEndInfo = (_d = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _d === void 0 ? void 0 : _d.find(elem => elem.endNumber === entry);
6167
+ 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]);
5985
6168
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
5986
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entry}`])
5987
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entry}`])
6169
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6170
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
5988
6171
  : (_e = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _e === void 0 ? void 0 : _e.value;
5989
- if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && tapChangerNumberI7.indexOf(entry) > 0) {
5990
- index = tapChangerNumberI7.indexOf(entry);
6172
+ if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && i > 0) {
6173
+ index = i; //This only works for two tapchanger definitions per power transformer
5991
6174
  ratioPhaseTapChangerPresent = true;
5992
6175
  }
5993
6176
  }
@@ -5997,15 +6180,15 @@ class ConverterIntegral7 {
5997
6180
  tapChangerNumber[1] = tapChangerNumberI7[0];
5998
6181
  }
5999
6182
  /** I7 Modell max. 2 Stufenschalter */
6000
- for (let entry of tapChangerNumber) {
6183
+ for (let i = 0; i < tapChangerNumber.length; i++) {
6001
6184
  /**
6002
6185
  * 0 Oberspannungsseite
6003
6186
  * 1 Seite 1
6004
6187
  * 2 Seite 2
6005
6188
  * - Stufenschalter nicht vorhanden
6006
6189
  */
6007
- let entryI7 = tapChangerNumberI7.indexOf(entry) + 1;
6008
- let gestufteSeite = tapChangerNumberI7[entryI7 - 1];
6190
+ let entryI7 = i + 1;
6191
+ let gestufteSeite = tapChangerNumberI7[i];
6009
6192
  const transformerEndInfo = (_f = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _f === void 0 ? void 0 : _f.find(elem => elem.endNumber === entryI7);
6010
6193
  const transformerEnd = transformerEnds.find(elem => elem.endNumber === entryI7);
6011
6194
  if ((0, parser_utils_1.isNumericI7)(gestufteSeite)) {
@@ -6025,8 +6208,8 @@ class ConverterIntegral7 {
6025
6208
  continue;
6026
6209
  }
6027
6210
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
6028
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entryI7}`])
6029
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entryI7}`])
6211
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6212
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
6030
6213
  : (_h = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _h === void 0 ? void 0 : _h.value;
6031
6214
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
6032
6215
  //const neutralU = transformerEnd.ratedU;
@@ -6158,7 +6341,7 @@ class ConverterIntegral7 {
6158
6341
  * */
6159
6342
  /** Regelung */
6160
6343
  const ratioTapChanger = new RatioTapChanger_1.RatioTapChanger((0, parser_utils_1.getUUID)(eval(`i7Data.guid_tch${tapChangerNumber}`), this.objectMappingConfig.standardiseUuid), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
6161
- ratioTapChanger.ltcFlag = (0, parser_utils_1.isNumericI7)(`i7Data.unter_last_nicht_verstellbar_s${gestufteSeite}`) ? !(0, parser_utils_1.convertToBooleanI7)(`i7Data.unter_last_nicht_verstellbar_s${gestufteSeite}`) : false;
6344
+ ratioTapChanger.ltcFlag = (0, parser_utils_1.isNumericI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${gestufteSeite}`)) ? !(0, parser_utils_1.convertToBooleanI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${gestufteSeite}`)) : true;
6162
6345
  ratioTapChanger.transformerEnd = transformerEnd;
6163
6346
  //transformerEnd.ratioTapChanger = ratioTapChanger;
6164
6347
  ratioTapChanger.neutralU = transformerEnd.ratedU;
@@ -6258,9 +6441,9 @@ class ConverterIntegral7 {
6258
6441
  }
6259
6442
  }
6260
6443
  // Attribute
6261
- phaseTapChanger.ltcFlag = (0, parser_utils_1.isNumericI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`)) ? (0, parser_utils_1.convertToBooleanI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`)) : false;
6444
+ phaseTapChanger.ltcFlag = (0, parser_utils_1.isNumericI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`)) ? !(0, parser_utils_1.convertToBooleanI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`)) : true;
6262
6445
  phaseTapChanger.transformerEnd = transformerEnd;
6263
- //transformerEnd.phaseTapChanger = phaseTapChanger;
6446
+ phaseTapChanger.neutralU = transformerEnd.ratedU;
6264
6447
  // Wirkleistungsregelung Anschluss
6265
6448
  const pRegulationToNode = (0, parser_utils_1.isNumericI7)(i7Data.nach_a_nr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.nach_a_nr) : undefined;
6266
6449
  const regulatingTransformerEnd = transformerEnds.find(elem => elem.endNumber === pRegulationToNode);
@@ -6313,65 +6496,99 @@ class ConverterIntegral7 {
6313
6496
  * @param sternpunktKnotenMap Map mit den Sterpunktknoten aus der I7 Datenbank
6314
6497
  * */
6315
6498
  convertTrafoGrounding(frame, powerTransformer, powerTransformerEnd, i7Modell, stpKnoten, defaultValuesConfig) {
6316
- var _a, _b, _c, _d, _e, _f;
6317
- /** Trafo ist geerdet */
6499
+ /**
6500
+ * Five cases for transformer grounding model has to be checked:
6501
+ * Case 1: no grounding ... no 'Sternpunktknoten' is present ... ''
6502
+ * Case 2: no grounding ... 'Sternpunktknoten', 'SternpunktSchaltelement', 'Sternpunktschiene' is present but no 'KDrossel' ... 'isoliert'
6503
+ * Case 3: grounding is present ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 1 ... 'starr' or 'direkt'
6504
+ * Case 4: grounding is present ... only 'Sternpunktknoten' and 'Kdrossel' is present ... 'über Impedanz'
6505
+ * Case 5: grounding is present ... 'Sternpunktknoten', 'Sternpunktschaltelement', 'Sternpunktschiene' and 'Kdrossel' is present ... 'über Impedanz'
6506
+ * Case 6: no grounding ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 0 ... ''
6507
+ */
6318
6508
  const cimModel = frame.cimModel;
6509
+ let groundDisconnectorUUID = undefined;
6510
+ let connectivityNodeN = undefined;
6511
+ let groundDisconnector = undefined;
6512
+ let voltageLevel = undefined;
6319
6513
  if (stpKnoten) {
6320
- const junctionUUID = i7Modell.sternPunktImpModel.stpSchieneJunctionUUIDs.get(stpKnoten.schaltelement1pelem);
6321
- const junction = i7Modell.sternPunktImpModel.junctions.get(junctionUUID);
6322
- powerTransformerEnd.grounded = true;
6323
- // TODO
6324
- powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground;
6325
- if (!junctionUUID) {
6326
- /** Fall 1 Wenn der Knoten kein Schaltelement hat, dann direkte Erdung */
6327
- //TODO
6328
- // rground und xground aus der default-config verwenden?
6329
- powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground;
6514
+ groundDisconnectorUUID = i7Modell.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.get(stpKnoten.schaltelement1pelem);
6515
+ connectivityNodeN = i7Modell.sternPunktImpModel.stpSchieneIdConnectivityNode.get(i7Modell.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.get(groundDisconnectorUUID));
6516
+ groundDisconnector = i7Modell.sternPunktImpModel.groundDisconnectors.get(groundDisconnectorUUID);
6517
+ if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size === 1) {
6518
+ const cn = powerTransformerEnd.getTerminal().getConnectivityNode();
6519
+ this.createConnection(cimModel, groundDisconnector, cn, PhaseCode_1.PhaseCode.ABCN, true);
6520
+ }
6521
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size < 1) {
6522
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is not successfully connected.`);
6523
+ }
6524
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size > 2) {
6525
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is referenced by more than two Terminal objects.`);
6526
+ }
6527
+ /** EquipmentContainer - Voltage Level*/
6528
+ voltageLevel = (this.determineEquipmentContainer('VoltageLevel', cimModel, powerTransformerEnd.getTerminal().connectivityNode.connectivityNodeContainer));
6529
+ }
6530
+ if (stpKnoten && groundDisconnector === undefined) { //Case 3 and Case 4
6531
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.stpKnotenStpImp.get(stpKnoten.id);
6532
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 4 ... 'Kdrossel' is modelled as a GroundingImpedanz
6533
+ //cimModel.addGroundingImpedance(earthFaultCompensator as GroundingImpedance);//set grounded to 'true' if PetersenCoil is present
6534
+ const groundingImpedance = earthFaultCompensator;
6535
+ powerTransformerEnd.xground = groundingImpedance.x;
6536
+ powerTransformerEnd.rground = groundingImpedance.r;
6537
+ powerTransformerEnd.grounded = true;
6538
+ }
6539
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 4 ... 'Kdrossel' is modelled as a PetersenCoil
6540
+ //cimModel.addPetersenCoil(earthFaultCompensator as PetersenCoil); //set grounded to 'true' if GroundingImpedance is present
6541
+ const petersenCoil = earthFaultCompensator;
6542
+ 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);
6543
+ powerTransformerEnd.rground = petersenCoil.r;
6544
+ powerTransformerEnd.grounded = true;
6545
+ }
6546
+ else if (stpKnoten.geerdet === 1) { //Case 3
6547
+ powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground; //it is assumed that rground and xground is zero in case of solidly grounding
6548
+ powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground; //it is assumed that rground and xground is zero in case of solidly grounding
6549
+ powerTransformerEnd.grounded = true;
6550
+ }
6551
+ else { //Case 6
6552
+ powerTransformerEnd.grounded = false;
6553
+ }
6554
+ }
6555
+ else if (connectivityNodeN !== undefined && groundDisconnector !== undefined) {
6556
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.groundDisconnectorUUIDstpImp.get(groundDisconnectorUUID);
6557
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 5 ... 'Kdrossel' is modelled as a GroundingImpedanz
6558
+ cimModel.addGroundingImpedance(earthFaultCompensator);
6559
+ cimModel.addGroundDisconnector(groundDisconnector);
6560
+ cimModel.addConnectivityNode(connectivityNodeN);
6561
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if GroundingImpedance is present
6562
+ }
6563
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 5 ... 'Kdrossel' is modelled as a PetersenCoil
6564
+ cimModel.addPetersenCoil(earthFaultCompensator);
6565
+ cimModel.addGroundDisconnector(groundDisconnector);
6566
+ cimModel.addConnectivityNode(connectivityNodeN);
6567
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if PetersenCoil is present
6568
+ }
6569
+ else { //Case 2
6570
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if no GroundingImpedance or PetersenCoil is present ... 'isolierte Sternpunktschiene'
6571
+ }
6572
+ /** BaseVoltage */
6573
+ if (voltageLevel !== undefined) {
6574
+ groundDisconnector.baseVoltage = voltageLevel.baseVoltage ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6575
+ groundDisconnector.equipmentContainer = voltageLevel;
6576
+ if (earthFaultCompensator !== undefined) {
6577
+ earthFaultCompensator.equipmentContainer = voltageLevel;
6578
+ }
6579
+ connectivityNodeN.connectivityNodeContainer = voltageLevel;
6580
+ connectivityNodeN.key = voltageLevel.key + connectivityNodeN.key;
6330
6581
  }
6331
6582
  else {
6332
- /** Fall 2 Trafo ist über eine Sternpunktschiene geerdet
6333
- * Nur Verbindung zur Junction herstellen */
6334
- let terminal;
6335
- 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)) {
6336
- 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);
6337
- terminal = this.createBoundaryConnection(frame, junction, i7ObjectID, PhaseCode_1.PhaseCode.ABC);
6338
- }
6339
- else {
6340
- terminal = this.createConnection(cimModel, junction, (_e = powerTransformerEnd.terminal) === null || _e === void 0 ? void 0 : _e.connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
6341
- }
6342
- if (terminal) {
6343
- terminal.name = 't_stp_trafo';
6344
- if (junction)
6345
- junction.name = (junction === null || junction === void 0 ? void 0 : junction.name) + '/Trafo';
6346
- const pSpuleGroundImpedance = i7Modell.sternPunktImpModel.junctionUUIDstpImp.get(junctionUUID);
6347
- /** EquipmentContainer - Voltage Level*/
6348
- const voltageLevel = this.getVoltageLevelByVoltage((_f = powerTransformer.equipmentContainer) === null || _f === void 0 ? void 0 : _f.voltageLevels, powerTransformerEnd.ratedU);
6349
- if (!voltageLevel) {
6350
- this.logger.debug(`Trafo ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat kein EquipmentContainer`);
6351
- }
6352
- /** BaseVoltage */
6353
- if (junction && voltageLevel) {
6354
- junction.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6355
- junction.equipmentContainer = voltageLevel;
6356
- cimModel.addJunction(junction);
6357
- }
6358
- else {
6359
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine Junction ${junctionUUID} oder VoltageLevel`);
6360
- }
6361
- if (pSpuleGroundImpedance) {
6362
- pSpuleGroundImpedance.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6363
- pSpuleGroundImpedance.equipmentContainer = voltageLevel;
6364
- cimModel.addGroundingImpedance(pSpuleGroundImpedance);
6365
- }
6366
- else {
6367
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine pSpuleGroundImpedance.`);
6368
- }
6369
- }
6370
- else {
6371
- 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.`);
6372
- }
6583
+ this.logger.debug(`PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} hat kein VoltageLevel`);
6373
6584
  }
6374
6585
  }
6586
+ else { //Case 1
6587
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if there is no 'Sternpunktknoten'
6588
+ }
6589
+ if (powerTransformerEnd.grounded) {
6590
+ powerTransformerEnd.terminal.phases = PhaseCode_1.PhaseCode.ABCN;
6591
+ }
6375
6592
  }
6376
6593
  /** Equipment grounding
6377
6594
  * @param shnt ShuntCompensator object
@@ -6721,4 +6938,48 @@ function logExecutionTime(logger, startTime, text) {
6721
6938
  logger.debug(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6722
6939
  console.log(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6723
6940
  }
6941
+ function getHVSideNumber(transformerEnds) {
6942
+ let retVal = undefined;
6943
+ let urHv = 0;
6944
+ for (let i = 0; i < transformerEnds.length; i++) {
6945
+ if (urHv < transformerEnds[i].ratedU) {
6946
+ retVal = transformerEnds[i].endNumber;
6947
+ urHv = transformerEnds[i].ratedU;
6948
+ }
6949
+ }
6950
+ return retVal;
6951
+ }
6952
+ function createLineName(i7Data, uuid, lineNames) {
6953
+ let retVal = (0, util_create_1.createNotation)([i7Data.bezeichner], 32, false);
6954
+ if (lineNames[retVal] === true) { //try to find another name with i7Data.stkabname as suffix
6955
+ if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length > 0) {
6956
+ retVal = i7Data.bezeichner.substring(0, i7Data.bezeichner.length - (i7Data.bezeichner.length + (i7Data.stkabname.length + 1) - 32)) + '_' + i7Data.stkabname;
6957
+ }
6958
+ else if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length <= 0) {
6959
+ retVal = i7Data.bezeichner.substring(0, i7Data.stkabname.length - (i7Data.bezeichner.length - 32));
6960
+ }
6961
+ else if (i7Data.bezeichner.length <= 0 && i7Data.stkabname.length > 0) {
6962
+ retVal = i7Data.stkabname.substring(0, i7Data.stkabname.length - (i7Data.stkabname.length - 32));
6963
+ }
6964
+ }
6965
+ if (lineNames[retVal] === true) { //use uuid to create a unique name
6966
+ if (retVal.length + 9 <= 32) {
6967
+ retVal = retVal + '_' + normalizeUUID(uuid).substring(0, 8);
6968
+ }
6969
+ else {
6970
+ retVal = retVal.substring(0, retVal.length - (retVal.length + 9 - 32)) + '_' + normalizeUUID(uuid).substring(0, 8);
6971
+ }
6972
+ }
6973
+ return retVal;
6974
+ }
6975
+ function normalizeUUID(uuid) {
6976
+ let retVal = '';
6977
+ if (uuid != undefined && uuid.length > 0) {
6978
+ retVal = uuid.replaceAll('_', '');
6979
+ retVal = retVal.replaceAll('-', '');
6980
+ retVal = retVal.toLowerCase();
6981
+ retVal = retVal.trim();
6982
+ }
6983
+ return retVal;
6984
+ }
6724
6985
  //# sourceMappingURL=converter.integral7.js.map