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

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 (131) hide show
  1. package/dist/constants/rdf-xml.d.ts +2 -0
  2. package/dist/constants/rdf-xml.js +2 -0
  3. package/dist/constants/rdf-xml.js.map +1 -1
  4. package/dist/converter/integral7/config/integral-prefix.d.ts +5 -0
  5. package/dist/converter/integral7/config/integral-prefix.js +6 -1
  6. package/dist/converter/integral7/config/integral-prefix.js.map +1 -1
  7. package/dist/converter/integral7/converter.integral7.d.ts +9 -3
  8. package/dist/converter/integral7/converter.integral7.js +590 -334
  9. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  10. package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +3 -0
  11. package/dist/converter/integral7/dl-convert/dl-converter-i7.js +7 -9
  12. package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
  13. package/dist/converter/integral7/dl-convert/executor.d.ts +31 -3
  14. package/dist/converter/integral7/dl-convert/executor.js +90 -24
  15. package/dist/converter/integral7/dl-convert/executor.js.map +1 -1
  16. package/dist/converter/integral7/interface-i7/data-structures-i7.d.ts +17 -11
  17. package/dist/converter/integral7/interface-i7/data-structures-i7.js.map +1 -1
  18. package/dist/converter/integral7/interface-i7/default-values-config.interface.d.ts +3 -0
  19. package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +10 -8
  20. package/dist/converter/integral7/interface-i7/export-frame-i7.js +17 -10
  21. package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
  22. package/dist/converter/integral7/model/integral/Netzbereich.d.ts +10 -0
  23. package/dist/converter/integral7/model/integral/Netzbereich.js +20 -0
  24. package/dist/converter/integral7/model/integral/Netzbereich.js.map +1 -0
  25. package/dist/converter/integral7/model/integral/NetzbereichRand.d.ts +7 -0
  26. package/dist/converter/integral7/model/integral/NetzbereichRand.js +12 -0
  27. package/dist/converter/integral7/model/integral/NetzbereichRand.js.map +1 -0
  28. package/dist/converter/integral7/model/interfaces.d.ts +45 -0
  29. package/dist/converter/integral7/model/interfaces.js.map +1 -1
  30. package/dist/converter/integral7/sql/integral.sql.d.ts +11 -0
  31. package/dist/converter/integral7/sql/integral.sql.js +51 -3
  32. package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
  33. package/dist/converter/integral7/tp-bd-profile/convert-functions/convert-netzbereiche.d.ts +0 -0
  34. package/dist/converter/integral7/tp-bd-profile/convert-functions/convert-netzbereiche.js +2 -0
  35. package/dist/converter/integral7/tp-bd-profile/convert-functions/convert-netzbereiche.js.map +1 -0
  36. package/dist/converter/integral7/tp-bd-profile/model/BoundaryPoint.d.ts +8 -0
  37. package/dist/converter/integral7/tp-bd-profile/model/BoundaryPoint.js +13 -0
  38. package/dist/converter/integral7/tp-bd-profile/model/BoundaryPoint.js.map +1 -0
  39. package/dist/converter/integral7/tp-bd-profile/model/BoundarySet.d.ts +9 -0
  40. package/dist/converter/integral7/tp-bd-profile/model/BoundarySet.js +24 -0
  41. package/dist/converter/integral7/tp-bd-profile/model/BoundarySet.js.map +1 -0
  42. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.d.ts +6 -0
  43. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.js +26 -0
  44. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.js.map +1 -0
  45. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.types.d.ts +9 -0
  46. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.types.js +3 -0
  47. package/dist/converter/integral7/tp-bd-profile/tb-bd-converter.utilities.types.js.map +1 -0
  48. package/dist/converter/integral7/tp-bd-profile/tp-bd-converter.d.ts +20 -0
  49. package/dist/converter/integral7/tp-bd-profile/tp-bd-converter.js +146 -0
  50. package/dist/converter/integral7/tp-bd-profile/tp-bd-converter.js.map +1 -0
  51. package/dist/converter/integral7/utils-cgmes-export.d.ts +1 -0
  52. package/dist/converter/integral7/utils-cgmes-export.js +9 -1
  53. package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
  54. package/dist/converter/integral7/utils.d.ts +12 -3
  55. package/dist/converter/integral7/utils.js +91 -14
  56. package/dist/converter/integral7/utils.js.map +1 -1
  57. package/dist/data-structures/graph/edges/GraphEdge.js.map +1 -1
  58. package/dist/data-structures/graph/graph-util.d.ts +1 -1
  59. package/dist/data-structures/graph/graph-util.js +1 -1
  60. package/dist/data-structures/graph/graph-util.js.map +1 -1
  61. package/dist/etl/etl-neplan/etl-neplan-contingency-analysis.js.map +1 -1
  62. package/dist/etl/etl-neplan/etl-neplan.js +1 -1
  63. package/dist/etl/etl-neplan/etl-neplan.js.map +1 -1
  64. package/dist/etl/etl-neplan/neplan-contingency-analysis.d.ts +8 -0
  65. package/dist/etl/etl-neplan/neplan-contingency-analysis.js +170 -22
  66. package/dist/etl/etl-neplan/neplan-contingency-analysis.js.map +1 -1
  67. package/dist/interfaces/model/core/ITerminal.d.ts +1 -1
  68. package/dist/model/core/ConductingEquipment.d.ts +1 -1
  69. package/dist/model/core/ConductingEquipment.js +2 -2
  70. package/dist/model/core/ConductingEquipment.js.map +1 -1
  71. package/dist/model/core/ConnectivityNode.js +2 -2
  72. package/dist/model/core/ConnectivityNode.js.map +1 -1
  73. package/dist/model/core/IdentifiedObject.js +8 -0
  74. package/dist/model/core/IdentifiedObject.js.map +1 -1
  75. package/dist/model/dc/ACDCConverter.js +0 -2
  76. package/dist/model/dc/ACDCConverter.js.map +1 -1
  77. package/dist/model/dc/DCLineSegment.d.ts +2 -0
  78. package/dist/model/dc/DCLineSegment.js +16 -0
  79. package/dist/model/dc/DCLineSegment.js.map +1 -1
  80. package/dist/model/dc/VsCapabilityCurve.js.map +1 -1
  81. package/dist/model/dc/VsConverter.d.ts +1 -0
  82. package/dist/model/dc/VsConverter.js +13 -0
  83. package/dist/model/dc/VsConverter.js.map +1 -1
  84. package/dist/model/diagram/Diagram.js +2 -2
  85. package/dist/model/diagram/Diagram.js.map +1 -1
  86. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.d.ts +1 -0
  87. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js +2 -1
  88. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js.map +1 -1
  89. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.d.ts +1 -0
  90. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.js.map +1 -1
  91. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.d.ts +3 -0
  92. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js +14 -0
  93. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js.map +1 -1
  94. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformerInfo.js.map +1 -1
  95. package/dist/model/extensions/integral/dc/DCLineSegment.d.ts +10 -0
  96. package/dist/model/extensions/integral/dc/DCLineSegment.js +31 -0
  97. package/dist/model/extensions/integral/dc/DCLineSegment.js.map +1 -0
  98. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.d.ts +2 -0
  99. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js +8 -0
  100. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js.map +1 -1
  101. package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js.map +1 -1
  102. package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js +26 -5
  103. package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js.map +1 -1
  104. package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js +12 -2
  105. package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js.map +1 -1
  106. package/dist/model/operationallimits/ApparentPowerLimit.js +2 -2
  107. package/dist/model/operationallimits/ApparentPowerLimit.js.map +1 -1
  108. package/dist/model/topology/TopologicalNode.d.ts +1 -0
  109. package/dist/model/topology/TopologicalNode.js.map +1 -1
  110. package/dist/model/wires/GroundDisconnector.d.ts +4 -1
  111. package/dist/model/wires/GroundDisconnector.js +15 -1
  112. package/dist/model/wires/GroundDisconnector.js.map +1 -1
  113. package/dist/model/wires/PowerTransformer.js +7 -4
  114. package/dist/model/wires/PowerTransformer.js.map +1 -1
  115. package/dist/model/wires/SeriesCompensator.js +6 -4
  116. package/dist/model/wires/SeriesCompensator.js.map +1 -1
  117. package/dist/model/wires/Switch.js +1 -1
  118. package/dist/model/wires/Switch.js.map +1 -1
  119. package/dist/model-container/model/ModelContainer.d.ts +5 -1
  120. package/dist/model-container/model/ModelContainer.js +14 -0
  121. package/dist/model-container/model/ModelContainer.js.map +1 -1
  122. package/dist/util/util-create.js +9 -1
  123. package/dist/util/util-create.js.map +1 -1
  124. package/dist/utils2/import.utils.js +5 -1
  125. package/dist/utils2/import.utils.js.map +1 -1
  126. package/dist/utils2/parser.utils.d.ts +1 -0
  127. package/dist/utils2/parser.utils.js +5 -2
  128. package/dist/utils2/parser.utils.js.map +1 -1
  129. package/dist/utils2/sparql.utils.js +1 -1
  130. package/dist/utils2/sparql.utils.js.map +1 -1
  131. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ var _ConverterIntegral7_configurableDLConvertOptions;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.getGeoCoordinates = exports.ConverterIntegral7 = void 0;
4
5
  const tslib_1 = require("tslib");
@@ -27,7 +28,6 @@ const CsConverter_1 = require("../../model/dc/CsConverter.js");
27
28
  const CsOperatingModeKind_1 = require("../../model/dc/CsOperatingModeKind.js");
28
29
  const DCConverterOperatingModeKind_1 = require("../../model/dc/DCConverterOperatingModeKind.js");
29
30
  const DCLine_1 = require("../../model/dc/DCLine.js");
30
- const DCLineSegment_1 = require("../../model/dc/DCLineSegment.js");
31
31
  const DCNode_1 = require("../../model/dc/DCNode.js");
32
32
  const DCTerminal_1 = require("../../model/dc/DCTerminal.js");
33
33
  const VsConverter_1 = require("../../model/dc/VsConverter.js");
@@ -142,10 +142,21 @@ const INTEGRALPowerTransformer2WInfo_1 = require("../../model/extensions/integra
142
142
  const impedance_utils_1 = require("./impedance.utils.js");
143
143
  const util_cim_model_1 = require("./util-cim.model.js");
144
144
  const EVAssetOriginKind_1 = require("../../model/extensions/enervance/assets/EVAssetOriginKind.js");
145
+ const PetersenCoilModeKind_1 = require("../../model/wires/PetersenCoilModeKind.js");
146
+ const GroundDisconnector_1 = require("../../model/wires/GroundDisconnector.js");
145
147
  const i7_graph_utils_1 = require("./model/i7-graph-utils.js");
146
148
  const TopologicalNode_1 = require("../../model/topology/TopologicalNode.js");
147
149
  const geodata_util_1 = require("../../util/geodata.util.js");
150
+ const DCLineSegment_1 = require("../../model/extensions/integral/dc/DCLineSegment.js");
151
+ const tp_bd_converter_1 = require("./tp-bd-profile/tp-bd-converter.js");
148
152
  class ConverterIntegral7 {
153
+ set configurableDLConvertOptions(arg) {
154
+ tslib_1.__classPrivateFieldSet(this, _ConverterIntegral7_configurableDLConvertOptions, arg, "f");
155
+ }
156
+ get configurableDLConvertOptions() {
157
+ return tslib_1.__classPrivateFieldGet(this, _ConverterIntegral7_configurableDLConvertOptions, "f");
158
+ }
159
+ /* ---------- ---------- ---------- */
149
160
  constructor() {
150
161
  /** Exportnetze gemäß Konfiguration */
151
162
  this.exportFrames = new Map();
@@ -180,6 +191,7 @@ class ConverterIntegral7 {
180
191
  this.ersatzZweigAnschlussKnotenIDs = new Set();
181
192
  /** List of Blocktransformatoren */
182
193
  this.blocktransformatoren = [];
194
+ _ConverterIntegral7_configurableDLConvertOptions.set(this, {});
183
195
  }
184
196
  /**
185
197
  * Konvertiert das Netz aus der MySQL Datenbank
@@ -208,7 +220,12 @@ class ConverterIntegral7 {
208
220
  yield this.queryLDroselAnschlussIDs();
209
221
  yield this.queryErsatzLaengsAnschlussIDs();
210
222
  yield this.queryLkondensatorAnschlussIDs();
223
+ this.tpBdConverter = new tp_bd_converter_1.TpBdConverter(this.mysqlController, this.logger, configUuid);
224
+ this.tpBdConverter.initDatabaseMetaData(this.availableTableNames);
225
+ this.tpBdConverter.setupLookupMaps(this.integralID2UUID);
226
+ this.tpBdConverter.setExportTempDirPath(tempDirPath);
211
227
  /** BD Profile */
228
+ this.logger.debug('Convert BD Profiles');
212
229
  console.log('Convert BD Profiles');
213
230
  let boundaryEqUUId = undefined;
214
231
  for (const entry of this.exportFramesBoundary.entries()) {
@@ -220,6 +237,7 @@ class ConverterIntegral7 {
220
237
  continue;
221
238
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
222
239
  }
240
+ this.logger.debug('Convert MAS Profiles');
223
241
  console.log('Convert MAS Profiles');
224
242
  for (const entry of this.exportFrames.entries()) {
225
243
  const geoRegionUUID = entry[0];
@@ -228,6 +246,7 @@ class ConverterIntegral7 {
228
246
  if (!geoRegion)
229
247
  continue;
230
248
  // frame.addDependentModel(RDF_XML.PROFILE_EQ_BD, this.exportFramesBoundary.entries().next()?.value[1].getModelUUID(RDF_XML.PROFILE_EQ_BD));
249
+ this.logger.debug(`Convert MAS profile: ${frame.mas}`);
231
250
  console.log(`Convert MAS profile: ${frame.mas}`);
232
251
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
233
252
  if (boundaryEqUUId) {
@@ -237,6 +256,7 @@ class ConverterIntegral7 {
237
256
  frame.purgeData();
238
257
  const startTime = perf_hooks.performance.now();
239
258
  frame.openXMLModel();
259
+ this.logger.debug(`Serialize MAS profile: ${frame.mas}`);
240
260
  console.log(`Serialize MAS profile: ${frame.mas}`);
241
261
  frame.serializeModel(defaultValuesConfig);
242
262
  yield frame.closeXMLModel();
@@ -244,7 +264,7 @@ class ConverterIntegral7 {
244
264
  frame.cimModel.purgeData();
245
265
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
246
266
  }
247
- console.log('Serialize BD Profiles');
267
+ this.logger.debug('Serialize BD Profiles');
248
268
  for (const entry of this.exportFramesBoundary.entries()) {
249
269
  const geoRegionUUID = entry[0];
250
270
  const frame = entry[1];
@@ -263,7 +283,10 @@ class ConverterIntegral7 {
263
283
  let endTime = perf_hooks.performance.now();
264
284
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
265
285
  }
266
- console.log('Serialize Default Profile');
286
+ this.logger.debug('Serialize TP-BD Profiles');
287
+ console.log('Serialize TP-BD Profiles');
288
+ yield this.tpBdConverter.serialize(defaultValuesConfig);
289
+ this.logger.debug('Serialize Default Profile');
267
290
  this.exportFrameDefault.openXMLModel();
268
291
  this.exportFrameDefault.serializeModel(defaultValuesConfig);
269
292
  yield this.exportFrameDefault.closeXMLModel();
@@ -290,6 +313,7 @@ class ConverterIntegral7 {
290
313
  });
291
314
  }
292
315
  convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig) {
316
+ var _a;
293
317
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
294
318
  const integral7Modell = frame.getI7Model();
295
319
  const cimModel = frame.cimModel;
@@ -488,9 +512,9 @@ class ConverterIntegral7 {
488
512
  startTime = perf_hooks.performance.now();
489
513
  const stpSchieneID = yield this.convertSternpunktSchienen(cimModel, integral7Modell, standortIDs);
490
514
  /** KDrossel -> GroundingImpedance/PetersenCoil */
491
- yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID);
515
+ yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID, defaultValuesConfig);
492
516
  /** Schaltzustand der Schaltelemente */
493
- yield this.convertStpSchaltelemente(integral7Modell, stpSchieneID);
517
+ yield this.convertStpSchaltelemente(cimModel, integral7Modell, stpSchieneID);
494
518
  logExecutionTime(this.logger, startTime, `convertSternpunkte`);
495
519
  }
496
520
  /** Statcom -> StaticVarCompensator */
@@ -545,10 +569,10 @@ class ConverterIntegral7 {
545
569
  if (schaltfeldIDs.length)
546
570
  yield this.createTopologicalNodes(cimModel);
547
571
  logExecutionTime(this.logger, startTime, `createTopologicalNodes()`);
548
- startTime = perf_hooks.performance.now();
549
- if (schaltfeldIDs.length)
550
- yield this.createTopologicalNodes(cimModel);
551
- logExecutionTime(this.logger, startTime, `createTopologicalNodes()`);
572
+ /** TP-BD Profile */
573
+ if (!frame.boundary) {
574
+ yield this.tpBdConverter.convert(frame.cimModel);
575
+ }
552
576
  /** DL Profile */
553
577
  if (!frame.boundary) {
554
578
  this.executor = new executor_1.Executor(this.mysqlController, this.configUuid);
@@ -561,6 +585,7 @@ class ConverterIntegral7 {
561
585
  const netz_standortIds = standortIDs.map(standortId => {
562
586
  return { id: standortId };
563
587
  });
588
+ const boundary_standortIds = [];
564
589
  const netz_knotensoIds = knotenSoIDs.map(knotenSoId => {
565
590
  return { id: knotenSoId };
566
591
  });
@@ -570,6 +595,7 @@ class ConverterIntegral7 {
570
595
  });
571
596
  entry[1].integral7Modell.integralKnotenSo.forEach((_, key) => {
572
597
  netz_knotensoIds.push({ id: key });
598
+ boundary_standortIds.push({ id: key });
573
599
  });
574
600
  }
575
601
  const netzLeitungIds = [...integral7Modell.integralLeitungen.keys()];
@@ -577,9 +603,8 @@ class ConverterIntegral7 {
577
603
  const netzErsatzlaengszweigIds = [...integral7Modell.integalErsatzLaengszweigIds.values()];
578
604
  const netzStreckenlastIds = [...integral7Modell.integralLeitungen.values()].map(leitung => leitung.streckenlastId).filter(id => id !== undefined && id !== null);
579
605
  const allLeitungIds = [...new Set([...netzLeitungIds, ...netzHgueLeitungIds, ...netzErsatzlaengszweigIds, ...netzStreckenlastIds]).values()];
580
- const convertOptions = {
581
- visible_only: true,
582
- only: {
606
+ const overall_substation_amount = ((_a = standortIDs === null || standortIDs === void 0 ? void 0 : standortIDs.length) !== null && _a !== void 0 ? _a : 0);
607
+ const convertOptions = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(this.configurableDLConvertOptions))), { overall_substation_amount: overall_substation_amount, visible_only: true, boundary_standortIds, only: {
583
608
  netz_standortIds,
584
609
  netz_knotensoIds,
585
610
  netz_schaltanlagenIds: schaltanlagenIDs.map(schaltanlagenId => {
@@ -594,8 +619,8 @@ class ConverterIntegral7 {
594
619
  netz_leitungIds: allLeitungIds.map(leitungId => {
595
620
  return { id: leitungId };
596
621
  })
597
- }
598
- };
622
+ } });
623
+ frame.cimModel.addDiagramStyle(this.executor.dlConverter.diagramStyles[cim_constants_1.DiagramLayoutTypes.NODE_BREAKER]);
599
624
  const resultingObjects = yield this.executor.convert(convertOptions);
600
625
  for (const resultingObject of resultingObjects) {
601
626
  if (resultingObject instanceof Diagram_1.Diagram) {
@@ -769,7 +794,7 @@ class ConverterIntegral7 {
769
794
  .then((result) => {
770
795
  for (const i7Data of result) {
771
796
  const i7Schluessel = integral_prefix_1.GEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
772
- const region = new GeographicalRegion_1.GeographicalRegion((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner), '_GR']), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluessel);
797
+ const region = new GeographicalRegion_1.GeographicalRegion((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner)]), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluessel);
773
798
  //region.i7key = i7Schluessel;
774
799
  this.addIdMapping(i7Data.id, region.mrid, integral_sql_1.Integral7TableNames.REGION);
775
800
  regions.push(region);
@@ -817,11 +842,12 @@ class ConverterIntegral7 {
817
842
  .then((result) => {
818
843
  for (const i7Data of result) {
819
844
  const i7Schluesel = integral_prefix_1.SUBGEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
820
- const subregion = new SubGeographicalRegion_1.SubGeographicalRegion((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner), '_SGR']), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluesel);
845
+ 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)
846
+ ]), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluesel);
821
847
  const regionUUID = this.integralID2UUID.get(i7Data.georegion);
822
848
  let region = regions.find(elem => elem.mrid === regionUUID);
823
849
  if (!region) {
824
- region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name, '_GR']), this.configUuid);
850
+ region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name]), this.configUuid);
825
851
  this.logger.debug(`SubGeographicalRegion UUID ${subregion.mrid} I7-ID ${i7Data.id} Name ${i7Data.bezeichner} hat keine Region.`);
826
852
  }
827
853
  subregion.region = region;
@@ -912,7 +938,7 @@ class ConverterIntegral7 {
912
938
  i7Data.un +
913
939
  integral_prefix_1.MITTIGER_PUNKT +
914
940
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
915
- const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
941
+ const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
916
942
  vl.key = i7Schluessel;
917
943
  const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, vl, cim_constants_1.CimAssetAliasNames.VoltageLevel, this.configUuid);
918
944
  if (i7Data.baujahr) {
@@ -1001,23 +1027,31 @@ class ConverterIntegral7 {
1001
1027
  });
1002
1028
  }
1003
1029
  convertKnotenSo(frame, integral7, standortIDs, defaultValuesConfig) {
1030
+ var _a, _b;
1004
1031
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1005
1032
  const cimModel = frame.cimModel;
1006
1033
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_SO)) {
1007
1034
  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));
1035
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
1008
1036
  for (const i7Data of result) {
1037
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
1009
1038
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
1010
1039
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1011
- // const vl = new VoltageLevel(getUUID(i7Data.guid_v, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
1012
1040
  const vl = new VoltageLevel_1.VoltageLevel(common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VoltageLevel, this.configUuid, rdfid), i7Data.bezeichner, i7Data.kurzname);
1013
- //const rdfid = getUUID(i7Data.guid); /**This is the mrid for TopologicalNode */
1014
1041
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
1042
+ if (connectivityNode.getUUID() === '98d0e9eb-bfb0-4da4-9700-660626da1c56' || connectivityNode.getName() === 'XDU_SL12') {
1043
+ let stop = true;
1044
+ }
1015
1045
  connectivityNode.setConnectivityNodeContainer(vl);
1016
1046
  vl.addConnectivityNode(connectivityNode);
1017
1047
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
1048
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
1018
1049
  if (frame.boundary) {
1019
1050
  connectivityNode.boundaryPoint = true;
1020
1051
  }
1052
+ const key = integral_sql_1.I7Objects.KNOTEN_SO + ((_b = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _b !== void 0 ? _b : '');
1053
+ 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']));
1054
+ this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
1021
1055
  const un = (0, utils_2.getU)(i7Data.un);
1022
1056
  const baseVoltage = (0, util_create_1.createBaseVoltageIfNotExists)(cimModel, un, this.configUuid, this.exportFramesBoundary);
1023
1057
  /** Spannungsband */
@@ -1033,7 +1067,7 @@ class ConverterIntegral7 {
1033
1067
  integral_prefix_1.MITTIGER_PUNKT +
1034
1068
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
1035
1069
  vl.key = i7Schluessel;
1036
- connectivityNode.description = i7Schluessel;
1070
+ connectivityNode.key = i7Schluessel;
1037
1071
  }
1038
1072
  else {
1039
1073
  this.logger.debug(`KnotenSo ${i7Data.id} ${vl.mrid} besitzt keine Substation.`);
@@ -1075,21 +1109,27 @@ class ConverterIntegral7 {
1075
1109
  });
1076
1110
  }
1077
1111
  convertSammelschienenAbschnitte(cimModel, integral7, schaltanlagenAbschnittIDs) {
1078
- var _a, _b;
1112
+ var _a, _b, _c;
1079
1113
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1080
1114
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SAMMELSCHIENE)) {
1081
1115
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SAMMELSCHIENE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SAMMELSCHIENE), schaltanlagenAbschnittIDs));
1116
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
1082
1117
  for (const i7Data of result) {
1083
1118
  const i7Schaltanlagenabschnitt = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1084
- //const rdfid: string = getUUID(i7Data.guid); /** this is the mrid for TopologicalNode*/
1119
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
1120
+ let saab = undefined;
1121
+ if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1122
+ saab = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1123
+ }
1085
1124
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1086
1125
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname);
1087
1126
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Schaltanlagenabschnitt.id));
1088
1127
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
1128
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
1089
1129
  const keyBusbarSection = [
1090
1130
  integral_sql_1.I7Objects.SAMMELSCHIENE,
1091
- (_a = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID()) !== null && _a !== void 0 ? _a : '',
1092
- (_b = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _b !== void 0 ? _b : ''
1131
+ (_b = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID()) !== null && _b !== void 0 ? _b : '',
1132
+ (_c = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _c !== void 0 ? _c : ''
1093
1133
  ].join('');
1094
1134
  const uuidBusbarSection = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.BusbarSection, this.configUuid, keyBusbarSection);
1095
1135
  const busbarSection = new BusbarSection_1.BusbarSection(uuidBusbarSection, i7Data.bezeichner, i7Schaltanlagenabschnitt.kurzname);
@@ -1105,11 +1145,15 @@ class ConverterIntegral7 {
1105
1145
  voltageLevel.highVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umax) : voltageLevel.highVoltageLimit;
1106
1146
  // umin
1107
1147
  voltageLevel.lowVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umin) : voltageLevel.lowVoltageLimit;
1108
- /**const i7Schluessel = voltageLevel.substation.name +
1109
- SAMMELSCHIENENABSCHNITT_PRAEFIX +
1110
- ueberpruefeZeichenkette(i7Data.bezeichner);
1111
- busbarSection.description = i7Schluessel;
1112
- connectivityNode.description = i7Schluessel;*/
1148
+ //define INTEGRAL Schluessel for ConnectivityNode
1149
+ if (saab !== undefined) {
1150
+ const i7Schluessel = voltageLevel.key +
1151
+ integral_prefix_1.SCHALTANLAGENABSCHNITT_PRAEFIX +
1152
+ (0, utils_2.ueberpruefeZeichenkette)(saab.bezeichner) +
1153
+ integral_prefix_1.SAMMELSCHIENENABSCHNITT_PRAEFIX +
1154
+ (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
1155
+ connectivityNode.key = i7Schluessel;
1156
+ }
1113
1157
  /** Spannungsband */
1114
1158
  integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
1115
1159
  // TODO VoltageLimits?
@@ -1122,7 +1166,7 @@ class ConverterIntegral7 {
1122
1166
  cimModel.addConnectivityNode(connectivityNode);
1123
1167
  cimModel.addBusbarSection(busbarSection);
1124
1168
  /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
1125
- if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1169
+ if (saab !== undefined) {
1126
1170
  integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt).ssab.push(i7Data);
1127
1171
  }
1128
1172
  }
@@ -1139,10 +1183,11 @@ class ConverterIntegral7 {
1139
1183
  const result = yield this.queryDataInChuncks(integral_sql_1.I7Objects.KNOTEN_SF, schaltfeldIDs);
1140
1184
  for (const i7Data of result) {
1141
1185
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.schaltfeld));
1142
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode((0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'knotensf', `${bay.description}/${i7Data.bezeichner}`);
1143
- if (bay) {
1186
+ 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));
1187
+ if (bay !== undefined) {
1144
1188
  connectivityNode.connectivityNodeContainer = bay;
1145
1189
  bay.addConnectivityNode(connectivityNode);
1190
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_SF_PRAEFIX + i7Data.bezeichner;
1146
1191
  }
1147
1192
  else {
1148
1193
  this.logger.debug(`KnotenSf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1167,11 +1212,11 @@ class ConverterIntegral7 {
1167
1212
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.kpfeld));
1168
1213
  const key = integral_sql_1.I7Objects.KNOTEN_KF + ((_a = bay === null || bay === void 0 ? void 0 : bay.getUUID()) !== null && _a !== void 0 ? _a : '') + String(i7Data.id) + String(i7Data.kpfeld);
1169
1214
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1170
- // const connectivityNode = new ConnectivityNode(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), '_CN']), 'knotenkf');
1171
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'knotenkf');
1215
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false), (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false));
1172
1216
  if (bay) {
1173
1217
  connectivityNode.connectivityNodeContainer = bay;
1174
1218
  bay.addConnectivityNode(connectivityNode);
1219
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_KF_PRAEFIX + i7Data.bezeichner;
1175
1220
  }
1176
1221
  else {
1177
1222
  this.logger.debug(`KnotenKf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1194,11 +1239,12 @@ class ConverterIntegral7 {
1194
1239
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.lkupplung));
1195
1240
  const key = integral_sql_1.I7Objects.KNOTEN_LK + ((_a = bay === null || bay === void 0 ? void 0 : bay.getUUID()) !== null && _a !== void 0 ? _a : '') + String(i7Data.id) + String(i7Data.lkupplung);
1196
1241
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1197
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'KnotenLk');
1198
- // const connectivityNode = new ConnectivityNode(CommonUtils.generateUUID(), createNotation([getName(i7Data), '_CN']), 'KnotenLk');
1242
+ const name = (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false);
1243
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, name, name);
1199
1244
  if (bay) {
1200
1245
  connectivityNode.connectivityNodeContainer = bay;
1201
1246
  bay.addConnectivityNode(connectivityNode);
1247
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_LK_PRAEFIX + i7Data.bezeichner;
1202
1248
  }
1203
1249
  else {
1204
1250
  this.logger.debug(`KnotenLk ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1221,8 +1267,12 @@ class ConverterIntegral7 {
1221
1267
  const key = integral_sql_1.I7Objects.SCHLAUFE + String(i7Data.id);
1222
1268
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
1223
1269
  const terminal = new Terminal_1.Terminal(uuid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
1270
+ if (terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
1271
+ const stop = true;
1272
+ }
1224
1273
  terminal.connected = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
1225
1274
  terminal.phases = PhaseCode_1.PhaseCode.ABC;
1275
+ terminal.key = integral_prefix_1.SCHLAUFE_PRAEFIX + i7Data.bezeichner;
1226
1276
  this.addIdMapping(i7Data.id, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1227
1277
  this.addIdMapping(i7Data.knotenzw, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1228
1278
  integral7.kontenZwIDs.push(i7Data.knotenzw);
@@ -1330,6 +1380,101 @@ class ConverterIntegral7 {
1330
1380
  }
1331
1381
  });
1332
1382
  }
1383
+ convertVollUmrichterEinspeisung(cimModel, targetVoltages, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
1384
+ var _a;
1385
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1386
+ const targetClass = objectMappingConfig.Einspeisung.class;
1387
+ if (this.isTableAvailable(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG)) {
1388
+ const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.VOLLUMRICHTEREINSPEISUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG), knotenSfIDs));
1389
+ for (const i7Data of result) {
1390
+ try {
1391
+ const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
1392
+ 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);
1393
+ externalNetworkInjection.nameprimaertyp = 'Wind Onshore';
1394
+ let mf = undefined;
1395
+ mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
1396
+ if (mf) {
1397
+ cimModel.addMultiplierFactor(mf);
1398
+ externalNetworkInjection.multiplierFactorUUID = mf.getUUID();
1399
+ }
1400
+ /** Convert EQ-profile dataset. */
1401
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
1402
+ externalNetworkInjection.maxP = maxP;
1403
+ const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
1404
+ externalNetworkInjection.governorSCD = governorscd;
1405
+ const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
1406
+ externalNetworkInjection.maxQ = maxQ;
1407
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
1408
+ externalNetworkInjection.minP = minP;
1409
+ const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
1410
+ externalNetworkInjection.minQ = minQ;
1411
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
1412
+ /**Convert short circuit constants */
1413
+ const r0X0 = undefined;
1414
+ const r1X1 = undefined;
1415
+ const z0Z1 = undefined;
1416
+ const maxR0X0Ratio = r0X0;
1417
+ externalNetworkInjection.maxR0ToX0Ratio = maxR0X0Ratio;
1418
+ const maxR1X1Ratio = r1X1;
1419
+ externalNetworkInjection.maxR1ToX1Ratio = maxR1X1Ratio;
1420
+ const maxZ0Z1Ratio = z0Z1;
1421
+ externalNetworkInjection.maxZ0ToZ1Ratio = maxZ0Z1Ratio;
1422
+ const minR0X0Ratio = r0X0;
1423
+ externalNetworkInjection.minR0ToX0Ratio = minR0X0Ratio;
1424
+ const minR1X1Ratio = r1X1;
1425
+ externalNetworkInjection.minR1ToX1Ratio = minR1X1Ratio;
1426
+ const minZ0Z1Ratio = z0Z1;
1427
+ externalNetworkInjection.minZ0ToZ1Ratio = minZ0Z1Ratio;
1428
+ const i2sk1 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk1) : undefined;
1429
+ const i2sk2 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2) : undefined;
1430
+ const i2sk2e = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2e) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2e) : undefined;
1431
+ const i2sk3 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk3) : undefined;
1432
+ const ikMin = (0, utils_2.transformShortCircuitCurrent)(Math.min(i2sk1, i2sk2, i2sk2e, i2sk3));
1433
+ const ikMax = (0, utils_2.transformShortCircuitCurrent)(Math.max(i2sk1, i2sk2, i2sk2e, i2sk3));
1434
+ externalNetworkInjection.minInitialSymShCCurrent = ikMin;
1435
+ externalNetworkInjection.maxInitialSymShCCurrent = ikMax;
1436
+ const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
1437
+ /** Convert SSH-profile dataset. */
1438
+ /**
1439
+ * @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'.
1440
+ * einspprio having no effect in loadflow calculation if voltage control does not exists.
1441
+ * */
1442
+ let prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
1443
+ if (((_a = externalNetworkInjection.regulatingControl) === null || _a === void 0 ? void 0 : _a.mode) === RegulatingControlModeKind_1.RegulatingControlModeKind.voltage) {
1444
+ if (prio !== undefined && prio > 0) {
1445
+ externalNetworkInjection.referencePriority = prio + 1; //TODO: SLACK is a injection with maximum prio in the network section and active voltage control.
1446
+ }
1447
+ else if (prio !== undefined && prio === 0) {
1448
+ externalNetworkInjection.referencePriority = prio;
1449
+ }
1450
+ else {
1451
+ externalNetworkInjection.referencePriority = undefined;
1452
+ }
1453
+ }
1454
+ const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
1455
+ const p = powerData[0];
1456
+ const q = powerData[1];
1457
+ externalNetworkInjection.setActivePower(p * -1); //convert to load sign system
1458
+ externalNetworkInjection.setReactivePower(q * -1); //convert to load sign system
1459
+ // AMPI7 profile
1460
+ 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;
1461
+ externalNetworkInjection.cos_phi = cosPhi;
1462
+ externalNetworkInjection.p_mf = (mf && powerData[2]) ? powerData[2] * -1 : undefined;
1463
+ externalNetworkInjection.q_mf = (mf && powerData[3]) ? powerData[3] * -1 : undefined;
1464
+ externalNetworkInjection.normallyInService = inBetrieb;
1465
+ cimModel.addExternalNetworkInjection(externalNetworkInjection);
1466
+ this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
1467
+ }
1468
+ catch (err) {
1469
+ this.logger.error(`error --- convertVollumrichtereinspeisung ${i7Data.id} ${err}`);
1470
+ }
1471
+ }
1472
+ }
1473
+ else {
1474
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG} ist nicht vorhanden.`);
1475
+ }
1476
+ });
1477
+ }
1333
1478
  convertErsatzQuerZweige(cimModel, targetVoltages, knotenSfIDs, targetClass) {
1334
1479
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1335
1480
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
@@ -1362,6 +1507,9 @@ class ConverterIntegral7 {
1362
1507
  for (const i7Data of result) {
1363
1508
  const genType = this.generatorTypen.get(i7Data.nametyp);
1364
1509
  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);
1510
+ if (synchronousMachine.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F') {
1511
+ let stop = true;
1512
+ }
1365
1513
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
1366
1514
  const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
1367
1515
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
@@ -1463,7 +1611,7 @@ class ConverterIntegral7 {
1463
1611
  const qType = Math.sqrt(Math.pow(genType === null || genType === void 0 ? void 0 : genType.sr, 2) - Math.pow(pType, 2));
1464
1612
  // AMP I7 Profil
1465
1613
  synchronousMachine.cos_phi = i7Data.cos_phi;
1466
- if (synchronousMachine.getUUID() === '03ee3f18-9984-48eb-bc26-09e8c182fbda') {
1614
+ if (synchronousMachine.getUUID() === '69718d2d-5988-49a9-b5c8-d53d0cf0e89a') {
1467
1615
  let stop = true;
1468
1616
  }
1469
1617
  if (synchronousMachine.getUUID() === 'f6d81d19-dca0-48e9-a43e-4ab1f6bf697d') {
@@ -1515,7 +1663,7 @@ class ConverterIntegral7 {
1515
1663
  // synchronousMachine.voltageRegulationRange: number;
1516
1664
  /** Create ReactiveCapabilityCurves */
1517
1665
  if (minP !== undefined && maxP !== undefined && minQvonPmin !== undefined && maxQvonPmax !== undefined) {
1518
- const reactiveCapabilityCurve = new ReactiveCapabilityCurve_1.ReactiveCapabilityCurve((0, parser_utils_1.getUUID)(i7Data.guid_rcc, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)(['CurveData', synchronousMachine.mrid, '_RCC']));
1666
+ const reactiveCapabilityCurve = new ReactiveCapabilityCurve_1.ReactiveCapabilityCurve((0, parser_utils_1.getUUID)(i7Data.guid_rcc, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)(['CurveData', '_', synchronousMachine.getUUID().substring(0, 8), '_RCC']));
1519
1667
  reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
1520
1668
  reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
1521
1669
  reactiveCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -1598,6 +1746,9 @@ class ConverterIntegral7 {
1598
1746
  // TODO: genControlSource is not required.
1599
1747
  //generatingUnit.genControlSource = GeneratorControlSource.onAGC;
1600
1748
  /**Complete GeneratingUnit data */
1749
+ if (generatingUnit.getUUID() === '70810e1e74aa4359b387bef9158f4767' || synchronousMachine.getUUID() === '70810e1e74aa4359b387bef9158f4767') {
1750
+ const stop = true;
1751
+ }
1601
1752
  generatingUnit.initialP = (0, parser_utils_1.isNumericI7)(i7Data.p0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p0) : undefined;
1602
1753
  // generatingUnit.longPF
1603
1754
  // generatingUnit.maximumAllowableSpinningReserve
@@ -1749,7 +1900,7 @@ class ConverterIntegral7 {
1749
1900
  //EQ core profile content
1750
1901
  const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
1751
1902
  if (connectivityNode) {
1752
- (0, util_create_1.createConnection)(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC);
1903
+ this.createConnection(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
1753
1904
  const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()));
1754
1905
  if (equipmentContainer) {
1755
1906
  equipmentContainer.addEquipment(asynchronousMachine);
@@ -2330,6 +2481,9 @@ class ConverterIntegral7 {
2330
2481
  const qr = (0, parser_utils_1.isNumericI7)(i7Data.qr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qr) : undefined;
2331
2482
  const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2332
2483
  shunt.nomU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2484
+ if (shunt.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
2485
+ let stop = true;
2486
+ }
2333
2487
  // Set electrical properties (EQ core)
2334
2488
  if ((0, parser_utils_1.isNumericI7)(i7Data.aktstufe) && (0, parser_utils_1.isNumericI7)(i7Data.maxstufe)) {
2335
2489
  shunt.sections = (0, parser_utils_1.convertToNumberI7)(i7Data.aktstufe);
@@ -2469,7 +2623,7 @@ class ConverterIntegral7 {
2469
2623
  /** EQ */
2470
2624
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2471
2625
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2472
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2626
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2473
2627
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2474
2628
  statVarCom.aggregate = false;
2475
2629
  /** EQ-SC */
@@ -2478,7 +2632,6 @@ class ConverterIntegral7 {
2478
2632
  /** SV */
2479
2633
  //statVarCom.svpowerflow
2480
2634
  /** Regelung */
2481
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_rc);
2482
2635
  const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, true);
2483
2636
  /** EQ */
2484
2637
  if (regulatingControl) {
@@ -2506,7 +2659,7 @@ class ConverterIntegral7 {
2506
2659
  /** EQ */
2507
2660
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2508
2661
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2509
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2662
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2510
2663
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2511
2664
  statVarCom.aggregate = false;
2512
2665
  /** EQ-SC */
@@ -2518,11 +2671,11 @@ class ConverterIntegral7 {
2518
2671
  /** EQ */
2519
2672
  statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
2520
2673
  cimModel.addStaticVarCompensator(statVarCom);
2521
- this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
2674
+ this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.SVC);
2522
2675
  }
2523
2676
  }
2524
2677
  else {
2525
- this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STATCOM} ist nicht vorhanden.`);
2678
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SVC} ist nicht vorhanden.`);
2526
2679
  }
2527
2680
  });
2528
2681
  }
@@ -2575,9 +2728,10 @@ class ConverterIntegral7 {
2575
2728
  csConverter.ratedIdc = (0, utils_2.calculateRatedIdc)(csConverter.ratedUdc, pr);
2576
2729
  /** spannungsabhängige Wirk-Verluste in kW bei Leerlauf mit Bemessungsspannung in kV*/
2577
2730
  csConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2578
- csConverter.maxUdc = csConverter.ratedUdc * 1.05; // +5% * ratedUdc
2579
- csConverter.minUdc = csConverter.ratedUdc * 0.95; // -5% * ratedUdc
2580
- csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2731
+ csConverter.maxUdc = csConverter.ratedUdc * 1.08; // +5% * ratedUdc
2732
+ csConverter.minUdc = csConverter.ratedUdc * 0.98; // -5% * ratedUdc
2733
+ //R=U^2/P
2734
+ csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? Math.pow(csConverter.ratedUdc, 2) / ((0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, 3)) : undefined;
2581
2735
  csConverter.switchingLoss = 0;
2582
2736
  /* csConverter.numberOfValves
2583
2737
  csConverter.valveU0*/
@@ -2671,21 +2825,21 @@ class ConverterIntegral7 {
2671
2825
  /** Bemessungsleistung (Gleichstromseite) in MW
2672
2826
  * im CS-Fall S = P?
2673
2827
  * Abhängig vom */
2674
- vsConverter.baseS = i7Data.pr;
2828
+ vsConverter.baseS = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2675
2829
  /** Bemessungsspannung (Gleichstromseite) in kV*/
2676
2830
  //If udc is set in Integral data model set converter.ratedUdc as i7Data.udc else take the data value for i7Data.ur (Bemessungsspannung)
2677
2831
  vsConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.udc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.udc) : ((0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined);
2678
- /** spannungsabhängige Wirk-Verluste bei Leerlauf mit Bemessungsspannung in kV*/
2832
+ /** spannungsabhängige Wirk-Verluste in MW bei Leerlauf mit Bemessungsspannung in kV*/
2679
2833
  vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2680
- vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +5% * ratedUdc
2681
- vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -5% * ratedUdc
2682
- vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2834
+ vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +8% * ratedUdc
2835
+ vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -2% * ratedUdc
2836
+ vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? Math.pow(vsConverter.ratedUdc, 2) / ((0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, 3)) : undefined;
2683
2837
  vsConverter.switchingLoss = undefined;
2684
2838
  /* csConverter.maxModulationIndex = ;
2685
2839
  csConverter.maxValveCurrent = */
2686
2840
  /** CapabilityCurveData */
2687
- const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2688
- const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
2841
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : vsConverter.baseS;
2842
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : -1 * vsConverter.baseS;
2689
2843
  const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
2690
2844
  const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
2691
2845
  /** SSH export values */
@@ -2708,11 +2862,11 @@ class ConverterIntegral7 {
2708
2862
  vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2709
2863
  acDCConverterDCTerminal.dcNode = dcNode;
2710
2864
  dcNode.dcTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2711
- /** Create ReactiveCapabilityCurves */
2865
+ /** Create VsCapabilityCurves */
2712
2866
  if (minP !== undefined && maxP !== undefined && minQ != undefined && maxQ !== undefined) {
2713
2867
  let keyVsCapabilityCurve = cim_class_names_1.ClassNames.VsCapabilityCurve + i7Data.id + vsConverter.getUUID();
2714
2868
  let uuidVsCapabilityCurve = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VsCapabilityCurve, this.configUuid, keyVsCapabilityCurve);
2715
- const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', vsConverter.getUUID().substring(0, 8), '_VCC']));
2869
+ const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', '_', vsConverter.getUUID().substring(0, 8), '_VCC']));
2716
2870
  vsCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
2717
2871
  vsCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
2718
2872
  vsCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -2723,7 +2877,7 @@ class ConverterIntegral7 {
2723
2877
  const curveData1 = new CurveData_1.CurveData(uuidCurveData);
2724
2878
  curveData1.curve = vsCapabilityCurve;
2725
2879
  curveData1.xvalue = minP; //pMin
2726
- curveData1.y1value = minQ; //qMin
2880
+ curveData1.y1value = minQ; //qMin pMax
2727
2881
  curveData1.y2value = maxQ; //qMax pMin
2728
2882
  cimModel.addCurveData(curveData1);
2729
2883
  //reactive capability curve data for pmax
@@ -2733,7 +2887,7 @@ class ConverterIntegral7 {
2733
2887
  curveData2.curve = vsCapabilityCurve;
2734
2888
  curveData2.xvalue = maxP; //pMax
2735
2889
  curveData2.y1value = minQ; //qMin pMax
2736
- curveData2.y2value = maxQ; //qMin pMax
2890
+ curveData2.y2value = maxQ; //qMax pMax
2737
2891
  cimModel.addCurveData(curveData2);
2738
2892
  cimModel.addVsCapabilityCurve(vsCapabilityCurve);
2739
2893
  vsConverter.capabilityCurve = vsCapabilityCurve;
@@ -2852,7 +3006,6 @@ class ConverterIntegral7 {
2852
3006
  if (i7Data.guid === '_ab64e281-72d0-45fb-8cb3-da4ae99a4f8c') {
2853
3007
  const stop = true;
2854
3008
  }
2855
- let einspeisePrioritaet = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
2856
3009
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2857
3010
  externalNetworkInjection.maxP = maxP;
2858
3011
  const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
@@ -2884,9 +3037,10 @@ class ConverterIntegral7 {
2884
3037
  const skAkt = (0, parser_utils_1.isNumericI7)(i7Data.sk_akt) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_akt) : undefined;
2885
3038
  const skMin = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_min) : skAkt;
2886
3039
  const skMax = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_max) : skAkt;
2887
- const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(skMin) / Math.sqrt(3) * skMin : undefined;
3040
+ const nomV = externalNetworkInjection.getTerminals().values().next().value.getConnectivityNode().getBaseVoltageAsNumber();
3041
+ const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, utils_2.calculateShortCircuitCurrent)(skMin, nomV) : undefined;
2888
3042
  externalNetworkInjection.minInitialSymShCCurrent = minIkSecond;
2889
- const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(skMax) / Math.sqrt(3) * skMax : undefined;
3043
+ const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, utils_2.calculateShortCircuitCurrent)(skMax, nomV) : undefined;
2890
3044
  externalNetworkInjection.maxInitialSymShCCurrent = maxIkSecond;
2891
3045
  const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
2892
3046
  /** Convert SSH-profile dataset. */
@@ -2949,6 +3103,9 @@ class ConverterIntegral7 {
2949
3103
  if (condEquip instanceof RotatingMachine_1.RotatingMachine || condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection || condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
2950
3104
  i7DataEinsp = i7Data;
2951
3105
  i7DataRQ = i7Data;
3106
+ if (condEquip.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F' || condEquip.getUUID() === '0c67bf21-a557-46ea-af63-2a3ac116bd2e') {
3107
+ const stop = true;
3108
+ }
2952
3109
  }
2953
3110
  if (condEquip instanceof SynchronousMachine_1.SynchronousMachine) {
2954
3111
  suffix = '_SM';
@@ -2969,16 +3126,26 @@ class ConverterIntegral7 {
2969
3126
  suffix = '_EI';
2970
3127
  }
2971
3128
  else if (condEquip instanceof StaticVarCompensator_1.StaticVarCompensator) {
3129
+ if (condEquip.getUUID() === '18e12018-03dd-4d6e-a626-ea404017050f' || condEquip.getUUID() === '4352ad9f-c841-4dcb-9a42-3ccabcb56487'
3130
+ || condEquip.getUUID() === '3d060069-9253-4e68-bb75-74d92982bb1a' || condEquip.getUUID() === '03c53185-aaa7-4040-8b43-76f79fac82b9' || condEquip.getUUID() === '02ba5072-a387-47c6-b9ce-b9d3def21964') {
3131
+ let stop = true;
3132
+ }
2972
3133
  i7DataSVC = i7Data;
2973
3134
  i7DataRQ = i7Data;
2974
3135
  suffix = '_SVC';
2975
3136
  }
2976
3137
  else if (condEquip instanceof LinearShuntCompensator_1.LinearShuntCompensator) {
3138
+ if (condEquip.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
3139
+ let stop = true;
3140
+ }
2977
3141
  i7DataKomp = i7Data;
2978
3142
  i7DataRQ = i7Data;
2979
3143
  suffix = '_LSC';
2980
3144
  }
2981
3145
  else if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
3146
+ if (condEquip.getUUID() === '71331a6b-000d-4049-89cc-9319a69367f6') {
3147
+ let stop = true;
3148
+ }
2982
3149
  i7DataHgue = i7Data;
2983
3150
  suffix = '_ACDCC';
2984
3151
  }
@@ -3015,62 +3182,61 @@ class ConverterIntegral7 {
3015
3182
  let tVMax = undefined; //maximum target voltage
3016
3183
  let tVMin = undefined; //minimum target voltage
3017
3184
  const regCondEquip = condEquip;
3018
- if (spannungsregelungLokal || spannungsregelungRemote) {
3019
- //get rated voltage of controlled node.
3020
- if (knotenSpgGeregelt && spannungsregelungRemote) {
3021
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3022
- if (cterminal === undefined) {
3023
- let stop = true;
3024
- }
3025
- if (cterminal) {
3026
- tCn = cterminal.getConnectivityNode();
3027
- if (tCn) {
3028
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3029
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3030
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3031
- }
3032
- else {
3033
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3034
- }
3185
+ //get rated voltage of controlled node.
3186
+ if (knotenSpgGeregelt && spannungsregelungRemote) {
3187
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3188
+ if (cterminal === undefined) {
3189
+ let stop = true;
3190
+ }
3191
+ if (cterminal) {
3192
+ tCn = cterminal.getConnectivityNode();
3193
+ if (tCn) {
3194
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3195
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3196
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3035
3197
  }
3036
3198
  else {
3037
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3199
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3038
3200
  }
3039
3201
  }
3040
- if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3041
- switch (knotenSpgGeregelt) {
3042
- case undefined: {
3043
- if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3044
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3045
- }
3046
- if (cterminal === undefined) {
3047
- cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3048
- }
3049
- break;
3202
+ else {
3203
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3204
+ }
3205
+ }
3206
+ if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3207
+ switch (knotenSpgGeregelt) {
3208
+ case undefined: {
3209
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3210
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3050
3211
  }
3051
- default: {
3052
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3212
+ if (cterminal === undefined) {
3213
+ cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3053
3214
  }
3215
+ break;
3054
3216
  }
3055
- if (cterminal) {
3056
- tCn = cterminal.getConnectivityNode();
3057
- if (tCn) {
3058
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3059
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3060
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3061
- }
3062
- else {
3063
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
3064
- }
3217
+ default: {
3218
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3065
3219
  }
3066
3220
  }
3067
- uband = (0, parser_utils_1.isNumericI7)(tVMax) && (0, parser_utils_1.isNumericI7)(tVMin) ? (0, parser_utils_1.convertToNumberI7)(tVMax) - (0, parser_utils_1.convertToNumberI7)(tVMin) : undefined;
3068
- if (uband === undefined) {
3221
+ if (cterminal) {
3222
+ tCn = cterminal.getConnectivityNode();
3069
3223
  if (tCn) {
3070
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3224
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3225
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3226
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3227
+ }
3228
+ else {
3229
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
3071
3230
  }
3072
3231
  }
3073
3232
  }
3233
+ 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;
3234
+ if (uband === undefined) {
3235
+ if (tCn) {
3236
+ uband = tCn.getBaseVoltageAsNumber() * 0.1;
3237
+ }
3238
+ }
3239
+ usoll = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : usoll;
3074
3240
  //Create and define regulating control for voltage control
3075
3241
  if (cterminal !== undefined) {
3076
3242
  rControl = (0, utils_2.createRegulatingControl)((0, parser_utils_1.getUUID)(i7DataRQ.guid_rc), (0, util_create_1.createNotation)([regCondEquip.getUUID().substring(0, 8), suffix]), true, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
@@ -3083,6 +3249,9 @@ class ConverterIntegral7 {
3083
3249
  rControl.targetDeadband = (0, parser_utils_1.isNumericI7)(uband) ? uband : undefined; //zulässiges Spannungsband
3084
3250
  /** Spannung in kilo*/
3085
3251
  //TODO TEMP FIX bei lokaler Regelegung bleibt usoll = null.
3252
+ if (cterminal !== undefined && cterminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
3253
+ const stop = true;
3254
+ }
3086
3255
  rControl.targetValue = (0, parser_utils_1.isNumericI7)(usoll) ? usoll : ((0, parser_utils_1.isNumericI7)(i7DataEinsp === null || i7DataEinsp === void 0 ? void 0 : i7DataEinsp.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataEinsp.usoll) : tCn.getBaseVoltageAsNumber());
3087
3256
  const guidSuffix = (_a = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8);
3088
3257
  rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
@@ -3098,7 +3267,7 @@ class ConverterIntegral7 {
3098
3267
  }
3099
3268
  }
3100
3269
  }
3101
- else if (isRegulatingControl && i7DataSVC) {
3270
+ else if (isRegulatingControl && i7DataSVC !== undefined) {
3102
3271
  /** Regelung */
3103
3272
  const regCondEquip = condEquip;
3104
3273
  const cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
@@ -3119,12 +3288,12 @@ class ConverterIntegral7 {
3119
3288
  uband = (0, parser_utils_1.isNumericI7)(tVMax) && (0, parser_utils_1.isNumericI7)(tVMin) ? (0, parser_utils_1.convertToNumberI7)(tVMax) - (0, parser_utils_1.convertToNumberI7)(tVMin) : undefined;
3120
3289
  if (uband === undefined) {
3121
3290
  if (tCn) {
3122
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3291
+ uband = (0, parser_utils_1.isNumericI7)(uref) ? uref * 0.1 : ((0, parser_utils_1.isNumericI7)(usoll) ? usoll * 0.1 : tCn.getBaseVoltageAsNumber() * 0.1);
3123
3292
  }
3124
3293
  }
3125
3294
  if (cterminal !== undefined) {
3126
3295
  const uuid = (0, parser_utils_1.getUUID)(i7DataSVC.guid_rc);
3127
- rControl = (0, utils_2.createRegulatingControl)(uuid, (0, util_create_1.createNotation)([condEquip.getUUID().substring(0, 8), suffix]), inBetrieb, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
3296
+ rControl = (0, utils_2.createRegulatingControl)(uuid, (0, util_create_1.createNotation)([condEquip.getUUID().substring(0, 8), suffix]), true, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
3128
3297
  rControl.enabled = true;
3129
3298
  if (isStatcom) {
3130
3299
  rControl.discrete = true;
@@ -3197,20 +3366,23 @@ class ConverterIntegral7 {
3197
3366
  usoll = (0, parser_utils_1.isNumericI7)(i7DataHgue.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.usoll) : undefined;
3198
3367
  if (regelungU) {
3199
3368
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
3200
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3369
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3370
+ condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3201
3371
  }
3202
3372
  else if (regelungP) {
3203
3373
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
3204
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3374
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3205
3375
  }
3206
- if ((spannungsregelungLokal || spannungsregelungRemote) && usoll == undefined) {
3207
- //get rated voltage of controlled node.
3376
+ if (isRegulatingControl) { //voltage control for AC-side
3208
3377
  let cterminal = undefined; //connection point terminal of this device
3209
3378
  let tVMax = undefined; //maximum target voltage
3210
3379
  let tVMin = undefined; //minimum target voltage
3211
- //get target voltage of controlled node.
3380
+ //get rated voltage of controlled node.
3212
3381
  if (knotenSpgGeregelt && spannungsregelungRemote) {
3213
3382
  cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3383
+ if (cterminal === undefined) {
3384
+ let stop = true;
3385
+ }
3214
3386
  if (cterminal) {
3215
3387
  tCn = cterminal.getConnectivityNode();
3216
3388
  if (tCn) {
@@ -3229,7 +3401,9 @@ class ConverterIntegral7 {
3229
3401
  if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3230
3402
  switch (knotenSpgGeregelt) {
3231
3403
  case undefined: {
3232
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3404
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3405
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3406
+ }
3233
3407
  if (cterminal === undefined) {
3234
3408
  cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3235
3409
  }
@@ -3251,10 +3425,10 @@ class ConverterIntegral7 {
3251
3425
  }
3252
3426
  }
3253
3427
  }
3428
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3254
3429
  }
3255
3430
  condEquip.targetUpcc = usoll;
3256
- condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
3257
- condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3431
+ //(condEquip as VsConverter).targetQpcc = 0; //ReactivePower, ReactivePowerCapabilityCurve is set in advance
3258
3432
  condEquip.targetPpcc = condEquip.baseS * -1;
3259
3433
  }
3260
3434
  }
@@ -3354,47 +3528,10 @@ class ConverterIntegral7 {
3354
3528
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_STARR)) {
3355
3529
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KNOTEN_STARR, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KNOTEN_STARR), containerIDs));
3356
3530
  for (const i7Data of result) {
3357
- //const junction = new Junction(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data),"_J",`_${cimModel.junctions]), 'JNCT', 'starre Verbindung');
3358
3531
  const breaker = new Breaker_1.Breaker((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'Breaker', 'starre Verbindung');
3359
3532
  yield this.convertSwitch(breaker, cimModel, i7Data);
3360
3533
  cimModel.addBreaker(breaker);
3361
3534
  this.addIdMapping(i7Data.id, breaker.mrid, integral_sql_1.Integral7TableNames.LEISTUNGSSCHALTER);
3362
- /**const schaltzustand = convertToBooleanI7(i7Data.schaltzustand);
3363
-
3364
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer);
3365
-
3366
- if (equipmentContainer) {
3367
- equipmentContainer.addEquipment(junction);
3368
- junction.equipmentContainer = equipmentContainer;
3369
- } else {
3370
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen EquipmentContainer.`);
3371
- }
3372
- const cnStart = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
3373
- const cnZiel = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
3374
-
3375
- if (cnStart) {
3376
- const terminal = this.createConnection(cimModel, junction, cnStart, PhaseCode.ABC, true, 1);
3377
- if (schaltzustand === false) {
3378
- terminal.connected = schaltzustand;
3379
- }
3380
- } else {
3381
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Anfangsknoten.`);
3382
- }
3383
- if (cnZiel) {
3384
- const terminal = this.createConnection(cimModel, junction, cnZiel, PhaseCode.ABC, true, 2);
3385
- if (schaltzustand === false) {
3386
- terminal.connected = schaltzustand;
3387
- }
3388
- } else {
3389
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Zielknoten.`);
3390
- }
3391
- const baseVoltage = getTerminalUn(cimModel, junction);
3392
- if (baseVoltage) {
3393
- junction.baseVoltage = baseVoltage;
3394
- }
3395
- this.addIdMapping(i7Data.id, junction.mrid, Integral7TableNames.KNOTEN_STARR);
3396
- cimModel.addJunction(junction);
3397
- **/
3398
3535
  }
3399
3536
  }
3400
3537
  else {
@@ -3503,7 +3640,7 @@ class ConverterIntegral7 {
3503
3640
  const start = cimModel.objects.get(this.integralID2UUID.get(i7Data.aknoten));
3504
3641
  let startTerminal;
3505
3642
  if (start) {
3506
- startTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, 1);
3643
+ startTerminal = this.createConnection(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, true);
3507
3644
  }
3508
3645
  else {
3509
3646
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Anfangsknoten.`);
@@ -3512,7 +3649,7 @@ class ConverterIntegral7 {
3512
3649
  const target = cimModel.objects.get(this.integralID2UUID.get(i7Data.eknoten));
3513
3650
  let targetTerminal;
3514
3651
  if (target) {
3515
- targetTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, 2);
3652
+ targetTerminal = this.createConnection(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, true);
3516
3653
  }
3517
3654
  else {
3518
3655
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Zielknoten.`);
@@ -3529,7 +3666,7 @@ class ConverterIntegral7 {
3529
3666
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3530
3667
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3531
3668
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3532
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir);
3669
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir, seriesCompensator.r);
3533
3670
  seriesCompensator.varistorPresent = false;
3534
3671
  /** EQ-SC */
3535
3672
  seriesCompensator.r0 = seriesCompensator.r;
@@ -3615,8 +3752,8 @@ class ConverterIntegral7 {
3615
3752
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3616
3753
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3617
3754
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3618
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1);
3619
- seriesCompensator.varistorPresent = false;
3755
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1, seriesCompensator.r);
3756
+ //seriesCompensator.varistorPresent = false;
3620
3757
  /** EQ-SC */
3621
3758
  seriesCompensator.r0 = seriesCompensator.r;
3622
3759
  seriesCompensator.x0 = seriesCompensator.x;
@@ -3681,28 +3818,14 @@ class ConverterIntegral7 {
3681
3818
  for (const i7DataSchiene of stpSchiene) {
3682
3819
  try {
3683
3820
  stpSchieneIDs.push(i7DataSchiene.id);
3684
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7DataSchiene.id)));
3685
- const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3821
+ const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id;
3686
3822
  const uuidConnectivityNode = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, keyConnectivityNode);
3687
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN']));
3688
- const keyJunction = cim_class_names_1.ClassNames.Junction + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3689
- const uuidJunction = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Junction, this.configUuid, keyJunction);
3690
- const junction = new Junction_1.Junction(uuidJunction, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_J']));
3691
- connectivityNode.setConnectivityNodeContainer(equipmentContainer);
3692
- if (equipmentContainer) {
3693
- equipmentContainer.addEquipment(junction);
3694
- junction.equipmentContainer = equipmentContainer;
3695
- }
3696
- else {
3697
- this.logger.debug(`Sternpunktschiene ${i7DataSchiene.id} besitzt keinen EquipmentContainer.`);
3698
- }
3823
+ const name = (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN'], 32, false);
3824
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, name, name);
3825
+ connectivityNode.key = integral_prefix_1.CKnoten1PSO_PRAEFIX + i7DataSchiene.bezeichner;
3699
3826
  // Verbindung herstellen
3700
- const terminal = this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3701
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3827
+ integral7.sternPunktImpModel.stpSchieneIdConnectivityNode.set(i7DataSchiene.id, connectivityNode);
3702
3828
  integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
3703
- integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
3704
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
3705
- integral7.sternPunktImpModel.stpSchieneTerminal.set(i7DataSchiene.id, terminal);
3706
3829
  this.addIdMapping(i7DataSchiene.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHIENE);
3707
3830
  }
3708
3831
  catch (e) {
@@ -3717,41 +3840,63 @@ class ConverterIntegral7 {
3717
3840
  }));
3718
3841
  });
3719
3842
  }
3720
- convertKdrossel(cimModel, integral7, stpScheinenID) {
3843
+ convertKdrossel(cimModel, integral7, stpSchienenID, defaultValuesConfig) {
3721
3844
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3722
3845
  try {
3723
3846
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ)) {
3724
- if (stpScheinenID.length) {
3725
- const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STERNPUNKT_IMPEDANZ, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ), stpScheinenID));
3847
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3848
+ const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STERNPUNKT_IMPEDANZ, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ), stpSchienenID));
3726
3849
  for (const i7Data of result) {
3727
3850
  const kdType = this.kdrosseltypen.get(i7Data.nametyp);
3851
+ 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);
3852
+ 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);
3853
+ const ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.xne) ? (0, parser_utils_1.convertToNumberI7)(kdType === null || kdType === void 0 ? void 0 : kdType.xne) : undefined);
3728
3854
  const imax = (0, parser_utils_1.isNumericI7)(i7Data.imax) ? i7Data.imax : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.imax) ? kdType === null || kdType === void 0 ? void 0 : kdType.imax : undefined);
3729
3855
  const imin = (0, parser_utils_1.isNumericI7)(i7Data.imin) ? i7Data.imin : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.imin) ? kdType === null || kdType === void 0 ? void 0 : kdType.imin : undefined);
3730
3856
  const connectivityNode = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.anschluss));
3731
- const junctionUUID = integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get((i7Data.anschluss));
3732
- let conductingEquip;
3733
- if (imax && imin) {
3857
+ let conductingEquip = undefined;
3858
+ if (iakt !== undefined && xne !== undefined || xne !== undefined && ur !== undefined || iakt !== undefined && ur !== undefined) {
3734
3859
  /** PetersenCoil */
3735
3860
  const petersenCoil = new PetersenCoil_1.PetersenCoil((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
3736
- integral7.sternPunktImpModel.petersenCoils.set(petersenCoil.mrid, petersenCoil);
3737
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, petersenCoil);
3861
+ if (xne !== undefined && ur !== undefined) {
3862
+ petersenCoil.xGroundNominal = xne;
3863
+ petersenCoil.nominalU = ur;
3864
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3865
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3866
+ }
3867
+ else if (iakt !== undefined && xne !== undefined) {
3868
+ petersenCoil.xGroundNominal = xne;
3869
+ petersenCoil.nominalU = iakt * xne * Math.pow(10, -3);
3870
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3871
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3872
+ }
3873
+ else if (iakt !== undefined && ur !== undefined) {
3874
+ petersenCoil.nominalU = ur;
3875
+ petersenCoil.xGroundNominal = petersenCoil.nominalU * Math.pow(10, 3) / iakt;
3876
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3877
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3878
+ }
3879
+ petersenCoil.mode = PetersenCoilModeKind_1.PetersenCoilModeKind.automaticPositioning;
3738
3880
  this.addIdMapping(i7Data.id, petersenCoil.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3739
3881
  conductingEquip = petersenCoil;
3740
3882
  }
3741
3883
  else {
3742
3884
  /** GroundingImpedance */
3743
3885
  const groundingImpedance = new GroundingImpedance_1.GroundingImpedance((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_GI']), i7Data.kurzname);
3744
- groundingImpedance.r = (0, parser_utils_1.isNumericI7)(i7Data.rne) ? i7Data.rne : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.rne) ? kdType === null || kdType === void 0 ? void 0 : kdType.rne : undefined);
3745
- groundingImpedance.x = (0, parser_utils_1.isNumericI7)(i7Data.xne) ? i7Data.xne : ((0, parser_utils_1.isNumericI7)(kdType === null || kdType === void 0 ? void 0 : kdType.xne) ? kdType === null || kdType === void 0 ? void 0 : kdType.xne : undefined);
3886
+ 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);
3887
+ groundingImpedance.x = xne;
3746
3888
  integral7.sternPunktImpModel.groundingImpedances.set(groundingImpedance.mrid, groundingImpedance);
3747
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3889
+ //integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3748
3890
  this.addIdMapping(i7Data.id, groundingImpedance.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3749
3891
  conductingEquip = groundingImpedance;
3750
3892
  }
3751
- // Verbindung herstellen
3893
+ // Create connection for PetersenCoil and GroundingImpedance connected with 'Sternpunktschiene'. PetersenCoil and GroundingImpedance connected to 'Sternpunktknoten' is connected during convertTrafo2w and convertTrafo3w
3752
3894
  if (connectivityNode) {
3753
- const terminal = this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3754
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3895
+ this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3896
+ integral7.sternPunktImpModel.stpSchieneUUIDStpImp.set(connectivityNode.getUUID(), conductingEquip);
3897
+ }
3898
+ else {
3899
+ integral7.sternPunktImpModel.stpKnotenStpImp.set(i7Data.anschluss, conductingEquip);
3755
3900
  }
3756
3901
  }
3757
3902
  }
@@ -3772,26 +3917,37 @@ class ConverterIntegral7 {
3772
3917
  });
3773
3918
  }
3774
3919
  /** Den Schaltzuszand bestimmen und zuvor angelegten (convertSternpunktSchienen) Terminalinstanz zuweisen. */
3775
- convertStpSchaltelemente(integral7, stpSchienenID) {
3920
+ convertStpSchaltelemente(cimModel, integral7, stpSchienenID) {
3776
3921
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3777
3922
  try {
3778
3923
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER)) {
3779
- if (stpSchienenID.length) {
3924
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3780
3925
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STERNPUNKT_SCHALTER, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER), stpSchienenID));
3781
3926
  for (const i7Data of result) {
3782
- const terminal = integral7.sternPunktImpModel.stpSchieneTerminal.get(i7Data.eknoten);
3783
- if (terminal) {
3784
- terminal.connected = (0, parser_utils_1.isBooleanI7)(i7Data.schaltzustand) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand) : true;
3927
+ const connectivityNodeAbcn = cimModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.aknoten)); //connection point of 'PowerTransformerEnd' is assigned during convertTrafo2w and convertTrafo3w
3928
+ const connectivityNodeN = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.eknoten)); //connection point of 'Sternpunktschiene'
3929
+ if (connectivityNodeN != undefined) {
3930
+ const schaltzustand = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
3931
+ const keyGroundDisconnector = cim_class_names_1.ClassNames.GroundDisconnector + i7Data.aknoten + i7Data.eknoten;
3932
+ const uuidGroundDisconnector = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.GroundDisconnector, this.configUuid, keyGroundDisconnector);
3933
+ const groundDisconnector = new GroundDisconnector_1.GroundDisconnector(uuidGroundDisconnector, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar, schaltzustand, false);
3934
+ //Set connection to ConnectivityNode at neutral side to GroundingImpedance or PetersenCoil
3935
+ this.createConnection(cimModel, groundDisconnector, connectivityNodeN, PhaseCode_1.PhaseCode.N, true);
3936
+ //cimModel.addGroundDisconnector(groundDisconnector);
3937
+ integral7.sternPunktImpModel.groundDisconnectors.set(groundDisconnector.getUUID(), groundDisconnector);
3938
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3939
+ integral7.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.set(i7Data.id, groundDisconnector.getUUID());
3940
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3941
+ integral7.sternPunktImpModel.groundDisconnectorsUUIDsStpSchieneUUID.set(groundDisconnector.getUUID(), connectivityNodeN.getUUID());
3942
+ /** SternpunktknotenID mit GroundDisconnector UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
3943
+ integral7.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.set(groundDisconnector.getUUID(), i7Data.eknoten);
3944
+ /** set connection to terminal of powertransformerend*/
3945
+ let earthFaultCompensator = integral7.sternPunktImpModel.stpSchieneUUIDStpImp.get(connectivityNodeN.getUUID());
3946
+ integral7.sternPunktImpModel.groundDisconnectorUUIDstpImp.set(groundDisconnector.getUUID(), earthFaultCompensator);
3947
+ this.addIdMapping(i7Data.id, groundDisconnector.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER);
3785
3948
  }
3786
- /** SchaltelementID mit Junstion UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3787
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.id, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3788
- /** Sternpunktknoten mit Junstion UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
3789
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.aknoten, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3790
3949
  }
3791
3950
  }
3792
- else {
3793
- this.logger.debug(`StpSchaltelemente Keine Sternpunktschienen vorhanden.`);
3794
- }
3795
3951
  }
3796
3952
  else {
3797
3953
  this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER} ist nicht vorhanden.`);
@@ -3909,6 +4065,7 @@ class ConverterIntegral7 {
3909
4065
  result_ohl = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STROMKREISABSCHNITT_FREILEITUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.FREILEITUNG), leitungIDs));
3910
4066
  }
3911
4067
  for (const i7Data of result) {
4068
+ let lineNames = new Map;
3912
4069
  /** Alle Stromkreisabschnitte */
3913
4070
  const stromkreisabschnitte = leitungStromkreisabschnitt.filter(elem => elem.leitung === i7Data.id);
3914
4071
  if (!((stromkreisabschnitte === null || stromkreisabschnitte === void 0 ? void 0 : stromkreisabschnitte.length) > 0))
@@ -3932,8 +4089,9 @@ class ConverterIntegral7 {
3932
4089
  '-' +
3933
4090
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.stkabname);
3934
4091
  /** Wenn kein Stromkreisobjekt vorhanden ist, dann erstelle ein neues Objekt. */
3935
- const uuidString = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3936
- const line = new AMPRIONLine_1.AMPRIONLine(uuidString, i7Schluessel);
4092
+ const uuidString = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Line, this.configUuid, i7Schluessel);
4093
+ let lineName = createLineName(i7Data, uuidString, lineNames);
4094
+ const line = new AMPRIONLine_1.AMPRIONLine(uuidString, lineName);
3937
4095
  line.ukz = i7Data.ukz;
3938
4096
  line.key = i7Schluessel;
3939
4097
  let acLineSegments = [];
@@ -3946,7 +4104,7 @@ class ConverterIntegral7 {
3946
4104
  '-' +
3947
4105
  (0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
3948
4106
  const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3949
- const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Schluessel);
4107
+ const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Data.kommentar);
3950
4108
  const key = acLineSegment.getUUID();
3951
4109
  const uuidWireObject = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.EVWireObject, this.configUuid, key);
3952
4110
  acLineSegment.key = i7Schluessel;
@@ -4009,7 +4167,7 @@ class ConverterIntegral7 {
4009
4167
  /**Connectivity Node to connect end of line and start of neighbouring line.*/
4010
4168
  const key = acLineSegment1.getUUID() + acLineSegment2.getUUID();
4011
4169
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
4012
- const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.name, '_', acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, true));
4170
+ const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, false));
4013
4171
  /**Connect end of aclinesegment i*/
4014
4172
  cn.connectivityNodeContainer = acLineSegment1.equipmentContainer;
4015
4173
  tmp_terminal = this.createConnection(cimModel, acLineSegment1, cn, PhaseCode_1.PhaseCode.ABC, true);
@@ -4068,7 +4226,6 @@ class ConverterIntegral7 {
4068
4226
  /** In any case assign Georegion to aclinesegments */
4069
4227
  let idx = 0;
4070
4228
  while (idx < acLineSegments.length && !(line.subGeographicalRegion)) {
4071
- let jdx = 0;
4072
4229
  let values = acLineSegments[idx].terminals.values();
4073
4230
  let tmp_terminal = values.next();
4074
4231
  while (tmp_terminal.value && !(line.subGeographicalRegion)) {
@@ -4138,6 +4295,9 @@ class ConverterIntegral7 {
4138
4295
  let dcLineNeutral = undefined;
4139
4296
  const i7Schluessel = integral_prefix_1.HGUELEITUNG_PRAEFIX +
4140
4297
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4298
+ if (dcLine.getUUID() === 'f125f0f3-a621-43e7-8af7-9873d52239a0') {
4299
+ const stop = true;
4300
+ }
4141
4301
  /** operationMode der Anfangs- und Zielkopfstation setzen */
4142
4302
  let converterStart = false;
4143
4303
  let converterStartNeg = false;
@@ -4152,7 +4312,7 @@ class ConverterIntegral7 {
4152
4312
  let dcNodeStartMiddle = undefined;
4153
4313
  let dcNodeTargetMiddle = undefined;
4154
4314
  //Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
4155
- const dcLineSegment = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4315
+ const dcLineSegment = new DCLineSegment_1.INTEGRALDCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4156
4316
  dcLineSegmentSet.push(dcLineSegment);
4157
4317
  let dcLineSegmentNeg = undefined;
4158
4318
  let dcLineSegmentNeutral = undefined;
@@ -4161,19 +4321,21 @@ class ConverterIntegral7 {
4161
4321
  dcLineSegment.capacitance = undefined;
4162
4322
  dcLineSegment.inductance = undefined;
4163
4323
  /**EQ: given directly by the INTEGRAL system model */
4164
- dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4324
+ 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;
4325
+ dcLineSegment.ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4165
4326
  dcLineSegment.equipmentContainer = dcLine;
4166
4327
  //create second dcLineSegment in case this dcLine is a bipol.
4167
4328
  if (bipole) {
4168
4329
  const dcLineKey = dcLine.getUUID();
4169
4330
  const dcLineUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4170
4331
  dcLineNeg = new DCLine_1.DCLine(dcLineUuid, i7Data.bezeichner);
4171
- dcLineSegmentNeg = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, (0, util_create_1.createNotation)([i7Data.kurzname, '_neg'], 12, true), i7Schluessel);
4332
+ dcLineSegmentNeg = new DCLineSegment_1.INTEGRALDCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, (0, util_create_1.createNotation)([i7Data.kurzname, '_neg'], 12, true), i7Schluessel);
4172
4333
  dcLineSegmentSet.push(dcLineSegmentNeg);
4173
4334
  dcLineSegmentNeg.length = dcLineSegment.length;
4174
4335
  dcLineSegmentNeg.capacitance = undefined;
4175
4336
  dcLineSegmentNeg.inductance = undefined;
4176
- dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4337
+ dcLineSegmentNeg.resistance = dcLineSegment.resistance;
4338
+ dcLineSegmentNeg.ur = dcLineSegment.ur;
4177
4339
  dcLineSegmentNeg.equipmentContainer = dcLineNeg;
4178
4340
  }
4179
4341
  //create metallic return
@@ -4181,12 +4343,13 @@ class ConverterIntegral7 {
4181
4343
  const dcLineNeutralUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4182
4344
  const dcLineSegmentUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLineSegment, this.configUuid, dcLineNeutralUuid);
4183
4345
  dcLineNeutral = new DCLine_1.DCLine(dcLineNeutralUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCL']));
4184
- dcLineSegmentNeutral = new DCLineSegment_1.DCLineSegment(dcLineSegmentUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCLS'], 32, true), (0, util_create_1.createNotation)([i7Data.kurzname, '_mid'], 12, true), i7Schluessel);
4346
+ dcLineSegmentNeutral = new DCLineSegment_1.INTEGRALDCLineSegment(dcLineSegmentUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCLS'], 32, true), (0, util_create_1.createNotation)([i7Data.kurzname, '_mid'], 12, true), i7Schluessel);
4185
4347
  dcLineSegmentSet.push(dcLineSegmentNeutral);
4186
4348
  dcLineSegmentNeutral.length = dcLineSegment.length;
4187
4349
  dcLineSegmentNeutral.capacitance = undefined;
4188
4350
  dcLineSegmentNeutral.inductance = undefined;
4189
- dcLineSegmentNeutral.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4351
+ dcLineSegmentNeutral.resistance = dcLineSegment.resistance;
4352
+ dcLineSegmentNeutral.ur = dcLineSegment.ur;
4190
4353
  dcLineSegmentNeutral.equipmentContainer = dcLineNeutral;
4191
4354
  //get ACDCConverter at both ends of DCLine
4192
4355
  const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
@@ -4364,8 +4527,10 @@ class ConverterIntegral7 {
4364
4527
  const equipmentKey = dcTerminal.getUUID();
4365
4528
  for (const elem of dcTerminal.dcNode.dcTerminals.values()) {
4366
4529
  if (elem instanceof ACDCConverterDCTerminal_1.ACDCConverterDCTerminal) {
4367
- const pR = elem.dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4368
- const uR = acDCConverterStart.ratedUdc; //voltage in kV
4530
+ //const pR: number = (elem as ACDCConverterDCTerminal).dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4531
+ //const uR: number = acDCConverterStart.ratedUdc; //voltage in kV
4532
+ const pR = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
4533
+ const uR = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4369
4534
  if (pR != undefined && uR != undefined) {
4370
4535
  let ir = (pR * Math.pow(10, 6)) / (uR * Math.pow(10, 3)); //assumption: pr is BaseS
4371
4536
  if (bipole) {
@@ -4425,6 +4590,7 @@ class ConverterIntegral7 {
4425
4590
  typTrafo.r0kr2 = i7Data.r0kr2;
4426
4591
  typTrafo.r00r1 = i7Data.r00r1;
4427
4592
  typTrafo.r00r2 = i7Data.r00r2;
4593
+ typTrafo.s_dauer = i7Data.s_dauer;
4428
4594
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4429
4595
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4430
4596
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4476,6 +4642,9 @@ class ConverterIntegral7 {
4476
4642
  typTrafo.r0kr2 = i7Data.r0kr2;
4477
4643
  typTrafo.r00r1 = i7Data.r00r1;
4478
4644
  typTrafo.r00r2 = i7Data.r00r2;
4645
+ typTrafo.s_dauer_1 = i7Data.s_dauer_1;
4646
+ typTrafo.s_dauer_2 = i7Data.s_dauer_2;
4647
+ typTrafo.s_dauer_3 = i7Data.s_dauer_3;
4479
4648
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4480
4649
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr1, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4481
4650
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4594,30 +4763,18 @@ class ConverterIntegral7 {
4594
4763
  integral_prefix_1.TRAFO2W_PRAEFIX +
4595
4764
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4596
4765
  powerTransformer.key = i7Schluessel;
4597
- if (powerTransformer.getUUID() === '515508dc-5982-4686-ad26-08d39db91421') {
4598
- let stop = true;
4599
- } // kein Typ in D4
4600
- if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') {
4766
+ if (powerTransformer.getUUID() === '21def4394e814e77b3f25acbad7bda16') {
4601
4767
  let stop = true;
4602
- } //Typ in D8
4603
- if (powerTransformer.getUUID() === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') {
4604
- let stop = true;
4605
- } //kein Typ in BE
4606
- if (powerTransformer.getUUID() === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9') {
4607
- let stop = true;
4608
- } //Typ in D7
4768
+ }
4609
4769
  if (powerTransformer.getUUID() === '8eca3fedd32c49369f8946ac4ce70e17') { //Stufenstellerkonvertierung fehlgeschlagen
4610
4770
  let stop = true;
4611
4771
  }
4612
4772
  if (powerTransformer.getUUID() === 'b9d8bd48e1554af7b6153c1f7da052e1') {
4613
4773
  let stop = true;
4614
4774
  } //Phasenschieber zu falscher Winkel und falsches stepIncrement.
4615
- if (powerTransformer.getUUID() === '2ACF34B9-9DC9-4607-9B8A-032EBC2C31A5') {
4775
+ if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') { //pkr, ukr, ... konnte nicht aus Typ ermittelt werden.
4616
4776
  let stop = true;
4617
4777
  } //Längsregeltransformator mit symmetrischem Phasenschieber.
4618
- if (i7Data.nametyp) {
4619
- const stop = true;
4620
- }
4621
4778
  const powerTransformerInfo = this.cimModelDefault.getPowerTransformerInfoByName(i7Data.nametyp);
4622
4779
  if (powerTransformerInfo) {
4623
4780
  facility.setAssetInfo(powerTransformerInfo);
@@ -4635,12 +4792,13 @@ class ConverterIntegral7 {
4635
4792
  // Wicklung 1
4636
4793
  const powerTransformerEnd1 = new PowerTransformerEnd_1.PowerTransformerEnd((0, parser_utils_1.getUUID)(i7Data.guid_w1, this.objectMappingConfig.standardiseUuid), `W1-${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name}`);
4637
4794
  powerTransformerEnd1.endNumber = 1;
4638
- const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4639
- const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4795
+ const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4796
+ const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4640
4797
  const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
4641
4798
  const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4642
4799
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4643
- const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
4800
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, false);
4801
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, false);
4644
4802
  // P0 Lastverluste im I7 Modell p_leer
4645
4803
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4646
4804
  // Leerlaufverluste
@@ -4688,7 +4846,7 @@ class ConverterIntegral7 {
4688
4846
  const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode.ABC, true, 1) : undefined;*/
4689
4847
  if (!startTerminal)
4690
4848
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
4691
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig);
4849
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig);
4692
4850
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4693
4851
  let equivalentInjection = undefined;
4694
4852
  if (startTerminal) {
@@ -4720,7 +4878,7 @@ class ConverterIntegral7 {
4720
4878
  const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
4721
4879
  if (!zielTerminal)
4722
4880
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
4723
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, undefined, i7Data, defaultValuesConfig);
4881
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, sdauer2, i7Data, defaultValuesConfig);
4724
4882
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4725
4883
  if (zielTerminal) {
4726
4884
  let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
@@ -4735,9 +4893,6 @@ class ConverterIntegral7 {
4735
4893
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
4736
4894
  powerTransformerEnd2.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd2.endNumber, powerTransformerEnd2.grounded);
4737
4895
  powerTransformerEnd2.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd2.endNumber);
4738
- if (uuid === '402aec99-ba2c-42fa-b4ed-b4928901f47b') {
4739
- let stop = true;
4740
- }
4741
4896
  // NullSystem Impedanzen (nur Reaktanzen)
4742
4897
  let starconnectionCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) <= 1 ? (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) : 1;
4743
4898
  const retVal = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2], starconnectionCount, powerTransformer);
@@ -4750,7 +4905,7 @@ class ConverterIntegral7 {
4750
4905
  powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4751
4906
  powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4752
4907
  /** Transormator Anschlusspunkte nach Spannungsebene sortieren */
4753
- this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4908
+ //this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4754
4909
  // TODO
4755
4910
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
4756
4911
  * da sonst die Wicklungsnummern nicht mehr übereinstimmen könnten */
@@ -4824,6 +4979,9 @@ class ConverterIntegral7 {
4824
4979
  for (const i7Data of result) {
4825
4980
  const sternpunktKnotenMap = new Map();
4826
4981
  const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
4982
+ if (uuid === 'b81485dd-5115-4241-b31a-c87a3eec9803' || uuid === '4eadc602-7dc5-41e4-bb8b-38993c03a80a') {
4983
+ const stop = true;
4984
+ }
4827
4985
  const powerTransformer = new PowerTransformer_1.PowerTransformer(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_PT']), i7Data.kurzname, i7Data.kommentar);
4828
4986
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
4829
4987
  if (substation) {
@@ -4874,9 +5032,9 @@ class ConverterIntegral7 {
4874
5032
  const ur1 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4875
5033
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4876
5034
  const ur3 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 3);
4877
- const sdauer1 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_1) : sr1;
4878
- const sdauer2 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_2) : sr2;
4879
- const sdauer3 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_3) : sr3;
5035
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, true);
5036
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, true);
5037
+ const sdauer3 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 3, true);
4880
5038
  //Leerlaufverluste in kW
4881
5039
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4882
5040
  // Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
@@ -4931,7 +5089,7 @@ class ConverterIntegral7 {
4931
5089
  powerTransformerEnd1.r = impedanzW1.r;
4932
5090
  powerTransformerEnd1.x = impedanzW1.x;
4933
5091
  powerTransformerEnd1.g = impedanzW1.g;
4934
- powerTransformerEnd1.b = impedanzW1.b;
5092
+ powerTransformerEnd1.b = -1 * impedanzW1.b;
4935
5093
  powerTransformerEnd1.ratedU = ur1;
4936
5094
  powerTransformerEnd1.ratedS = sr1;
4937
5095
  this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
@@ -4978,7 +5136,7 @@ class ConverterIntegral7 {
4978
5136
  powerTransformerEnd2.r = impedanzW2.r;
4979
5137
  powerTransformerEnd2.x = impedanzW2.x;
4980
5138
  powerTransformerEnd2.g = impedanzW2.g;
4981
- powerTransformerEnd2.b = impedanzW2.b;
5139
+ powerTransformerEnd2.b = -1 * impedanzW2.b;
4982
5140
  powerTransformerEnd2.ratedS = sr2;
4983
5141
  powerTransformerEnd2.ratedU = ur2;
4984
5142
  powerTransformerEnd2.powerTransformer = powerTransformer;
@@ -5026,7 +5184,7 @@ class ConverterIntegral7 {
5026
5184
  powerTransformerEnd3.r = impedanzW3.r;
5027
5185
  powerTransformerEnd3.x = impedanzW3.x;
5028
5186
  powerTransformerEnd3.g = impedanzW3.g;
5029
- powerTransformerEnd3.b = impedanzW3.b;
5187
+ powerTransformerEnd3.b = -1 * impedanzW3.b;
5030
5188
  powerTransformerEnd3.ratedS = sr3;
5031
5189
  powerTransformerEnd3.ratedU = ur3;
5032
5190
  powerTransformerEnd3.powerTransformer = powerTransformer;
@@ -5058,6 +5216,15 @@ class ConverterIntegral7 {
5058
5216
  powerTransformerEnd3.r0 = zeroSequImpedanzWx.r03;
5059
5217
  // Transormator Anschlusspunkte nach Spannungsebene sortieren
5060
5218
  this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
5219
+ // Set grounding for autotransformer
5220
+ const pTEnds = powerTransformer.getPowerTransformerEnd().filter(elem => elem.connectionKind === 'A');
5221
+ if (pTEnds.length > 0) {
5222
+ if (pTEnds.filter(elem => elem.grounded === true).length > 0) {
5223
+ for (const end of pTEnds) {
5224
+ end.grounded = true;
5225
+ }
5226
+ }
5227
+ }
5061
5228
  //TODO
5062
5229
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
5063
5230
  * da sonst die Wicklungsnummern, nicht mehr übereinstimmen könnten */
@@ -5252,10 +5419,8 @@ class ConverterIntegral7 {
5252
5419
  sortTransformerEnd(powerTransformer, sortProperty, order) {
5253
5420
  // Store current order of power transformer ends.
5254
5421
  let winding_guids = new Array(powerTransformer.powerTransformerEnd.length);
5255
- let winding_guids_fixed = new Array(powerTransformer.powerTransformerEnd.length);
5256
5422
  for (let i = 0; i < powerTransformer.powerTransformerEnd.length; i++) {
5257
5423
  winding_guids[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5258
- winding_guids_fixed[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5259
5424
  }
5260
5425
  //Sort: This step maybe changes power transformer ends order for this power transformer.
5261
5426
  powerTransformer.powerTransformerEnd.sort(function (w1, w2) {
@@ -5279,8 +5444,19 @@ class ConverterIntegral7 {
5279
5444
  // const isNull = true;
5280
5445
  //}
5281
5446
  }
5447
+ let tmpMapping = new Array(powerTransformer.powerTransformerEnd.length);
5448
+ for (let i = 0; i < winding_guids.length; i++) {
5449
+ tmpMapping[i] = (winding_guids.indexOf(powerTransformer.powerTransformerEnd[i].getUUID()) + 1).toString();
5450
+ }
5451
+ return tmpMapping; //return mapping
5282
5452
  }
5283
5453
  setACLineSegmentProperties(defaultModel, cimModel, acLineSegment, data, cable, defaultValuesConfig) {
5454
+ if ((0, parser_utils_1.isBooleanI7)(data.ltgmonitoring) && (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring)) {
5455
+ acLineSegment.ltgmonitoring = (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring);
5456
+ }
5457
+ else {
5458
+ acLineSegment.ltgmonitoring = false;
5459
+ }
5284
5460
  if ((0, parser_utils_1.isBooleanI7)(data.flag_impedanzlos) && (0, parser_utils_1.convertToBooleanI7)(data.flag_impedanzlos)) {
5285
5461
  data.flag_impedanzlos = 1;
5286
5462
  }
@@ -5381,8 +5557,8 @@ class ConverterIntegral7 {
5381
5557
  * @param equipmentKey Generierung einer persistenter UUID v5. Für PowerTransformer wird UUID des PowerTransformerEnds verwendet. Andernfalls die UUID des ConductingEquipments
5382
5558
  * */
5383
5559
  setConductingEquipmentOperationalLimit(cimModel, name, terminal, equipmentKey, limit, limitType, igrenz) {
5384
- if ((limit !== undefined && limit > 0) && (igrenz !== undefined && igrenz > 0))
5385
- return;
5560
+ if (!(limit !== undefined && limit > 0) || !(igrenz !== undefined && igrenz > 0))
5561
+ return; //if 'limit' and 'igrenz' is not given leave
5386
5562
  /** OperationalLimitSet erstellen */
5387
5563
  const operationalLimitSetKey = terminal.getUUID() + equipmentKey;
5388
5564
  const operationalLimitSetUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.OperationalLimitSet, this.configUuid, operationalLimitSetKey);
@@ -5467,6 +5643,9 @@ class ConverterIntegral7 {
5467
5643
  terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
5468
5644
  }
5469
5645
  }
5646
+ if (terminal !== undefined && terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
5647
+ const stop = true;
5648
+ }
5470
5649
  return terminal;
5471
5650
  }
5472
5651
  createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
@@ -5984,7 +6163,7 @@ class ConverterIntegral7 {
5984
6163
  // Topologie
5985
6164
  powerTransformerEnd.terminal = terminal;
5986
6165
  this.setConductingEquipmentOperationalLimit(cimModel, `W${powerTransformerEnd.endNumber}${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name}`, terminal, powerTransformer.getUUID(), sdauer, cim_class_names_1.ClassNames.ApparentPowerLimit);
5987
- if (powerTransformer.getUUID() === '4d14cd95-215c-45f3-8136-b06d69ee0191') {
6166
+ if (powerTransformer.getUUID() === '3c3928be-e691-453d-8216-df30bd11845e') {
5988
6167
  const stop = true;
5989
6168
  }
5990
6169
  let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
@@ -6040,36 +6219,34 @@ class ConverterIntegral7 {
6040
6219
  }
6041
6220
  convertTapChangers(i7Data, transformerEnds, cimModel, transformerinfo, connectivityNode, spannungsband) {
6042
6221
  var _a, _b, _c, _d, _e, _f, _g, _h;
6043
- /*if(getUUID(i7Data.guid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
6044
- let stop = true; DONE
6222
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'c0ba4bd1102c4f4fa4fc66865a60f462') { //Zeile53 - Typ Meeden'
6223
+ let stop = true;
6224
+ }
6225
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === '2e8057ed695147f9903023cb5e9d4a0c') { //Zeile55 - SR und LR'
6226
+ let stop = true;
6045
6227
  }
6046
- if(getUUID(i7Data.guid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
6047
- let stop = true; DONE
6048
- }*/
6049
- /*if(getUUID(i7Data.guid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
6050
- let stop = true;
6051
- }*/
6052
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
6228
+ if ((0, parser_utils_1.getUUID)(i7Data.guid).toLowerCase() === 'd7a25b80-b439-48a0-b67e-108903063237') { //Zeile81 - SR statt LR'
6053
6229
  let stop = true;
6054
6230
  }
6055
- /*if(getUUID(i7Data.guid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
6056
- let stop = true;
6057
- }*/
6058
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
6231
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'b81485dd-5115-4241-b31a-c87a3eec9803') {
6059
6232
  let stop = true;
6060
6233
  }
6061
- /*if(getUUID(i7Data.guid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
6062
- let stop = true;
6063
- }*/
6064
6234
  let ratioPhaseTapChangerPresent = false;
6065
6235
  //Check if tap changer exists. (power transformer winding)
6066
6236
  let tapChangerNumberI7 = []; //Number of tap changer
6067
6237
  let tapChangerNumber = [];
6068
- //let transformerEndInfo:EVPowerTransformerEndInfo[] = [];
6238
+ //collect information about tap changers (without type)
6069
6239
  for (let tapChangerPos = 1; tapChangerPos <= 2; tapChangerPos++) {
6070
6240
  if ((0, parser_utils_1.isNumericI7)(i7Data[`gestufte_seite_s${tapChangerPos}`])) {
6071
- tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6072
- tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6241
+ if (i7Data[`gestufte_seite_s${tapChangerPos}`] !== 0) {
6242
+ tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6243
+ tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6244
+ }
6245
+ else if (i7Data[`gestufte_seite_s${tapChangerPos}`] === 0) {
6246
+ const controlledSide = getHVSideNumber(transformerEnds);
6247
+ tapChangerNumberI7.push(controlledSide);
6248
+ tapChangerNumber.push(controlledSide);
6249
+ }
6073
6250
  }
6074
6251
  }
6075
6252
  //collect information about tap changers (type)
@@ -6084,15 +6261,15 @@ class ConverterIntegral7 {
6084
6261
  //If there is a phase tap changer and a ratio tap changer reorder the tap changers to process ratio tap changer first.
6085
6262
  let index = undefined;
6086
6263
  if (tapChangerNumberI7.length > 1) {
6087
- for (let entry of tapChangerNumberI7) {
6264
+ for (let i = 0; i < tapChangerNumberI7.length; i++) {
6088
6265
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
6089
- const transformerEndInfo = (_d = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _d === void 0 ? void 0 : _d.find(elem => elem.endNumber === entry);
6266
+ const transformerEndInfo = (_d = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _d === void 0 ? void 0 : _d.find(elem => elem.endNumber === tapChangerNumberI7[i]);
6090
6267
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
6091
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entry}`])
6092
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entry}`])
6268
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6269
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
6093
6270
  : (_e = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _e === void 0 ? void 0 : _e.value;
6094
- if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && tapChangerNumberI7.indexOf(entry) > 0) {
6095
- index = tapChangerNumberI7.indexOf(entry);
6271
+ if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && i > 0) {
6272
+ index = i; //This only works for two tapchanger definitions per power transformer
6096
6273
  ratioPhaseTapChangerPresent = true;
6097
6274
  }
6098
6275
  }
@@ -6102,15 +6279,15 @@ class ConverterIntegral7 {
6102
6279
  tapChangerNumber[1] = tapChangerNumberI7[0];
6103
6280
  }
6104
6281
  /** I7 Modell max. 2 Stufenschalter */
6105
- for (let entry of tapChangerNumber) {
6282
+ for (let i = 0; i < tapChangerNumber.length; i++) {
6106
6283
  /**
6107
6284
  * 0 Oberspannungsseite
6108
6285
  * 1 Seite 1
6109
6286
  * 2 Seite 2
6110
6287
  * - Stufenschalter nicht vorhanden
6111
6288
  */
6112
- let entryI7 = tapChangerNumberI7.indexOf(entry) + 1;
6113
- let gestufteSeite = tapChangerNumberI7[entryI7 - 1];
6289
+ let entryI7 = i + 1;
6290
+ let gestufteSeite = tapChangerNumberI7[i];
6114
6291
  const transformerEndInfo = (_f = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _f === void 0 ? void 0 : _f.find(elem => elem.endNumber === entryI7);
6115
6292
  const transformerEnd = transformerEnds.find(elem => elem.endNumber === entryI7);
6116
6293
  if ((0, parser_utils_1.isNumericI7)(gestufteSeite)) {
@@ -6130,8 +6307,8 @@ class ConverterIntegral7 {
6130
6307
  continue;
6131
6308
  }
6132
6309
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
6133
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entryI7}`])
6134
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entryI7}`])
6310
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6311
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
6135
6312
  : (_h = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _h === void 0 ? void 0 : _h.value;
6136
6313
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
6137
6314
  //const neutralU = transformerEnd.ratedU;
@@ -6418,65 +6595,99 @@ class ConverterIntegral7 {
6418
6595
  * @param sternpunktKnotenMap Map mit den Sterpunktknoten aus der I7 Datenbank
6419
6596
  * */
6420
6597
  convertTrafoGrounding(frame, powerTransformer, powerTransformerEnd, i7Modell, stpKnoten, defaultValuesConfig) {
6421
- var _a, _b, _c, _d, _e, _f;
6422
- /** Trafo ist geerdet */
6598
+ /**
6599
+ * Five cases for transformer grounding model has to be checked:
6600
+ * Case 1: no grounding ... no 'Sternpunktknoten' is present ... ''
6601
+ * Case 2: no grounding ... 'Sternpunktknoten', 'SternpunktSchaltelement', 'Sternpunktschiene' is present but no 'KDrossel' ... 'isoliert'
6602
+ * Case 3: grounding is present ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 1 ... 'starr' or 'direkt'
6603
+ * Case 4: grounding is present ... only 'Sternpunktknoten' and 'Kdrossel' is present ... 'über Impedanz'
6604
+ * Case 5: grounding is present ... 'Sternpunktknoten', 'Sternpunktschaltelement', 'Sternpunktschiene' and 'Kdrossel' is present ... 'über Impedanz'
6605
+ * Case 6: no grounding ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 0 ... ''
6606
+ */
6423
6607
  const cimModel = frame.cimModel;
6608
+ let groundDisconnectorUUID = undefined;
6609
+ let connectivityNodeN = undefined;
6610
+ let groundDisconnector = undefined;
6611
+ let voltageLevel = undefined;
6424
6612
  if (stpKnoten) {
6425
- const junctionUUID = i7Modell.sternPunktImpModel.stpSchieneJunctionUUIDs.get(stpKnoten.schaltelement1pelem);
6426
- const junction = i7Modell.sternPunktImpModel.junctions.get(junctionUUID);
6427
- powerTransformerEnd.grounded = true;
6428
- // TODO
6429
- powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground;
6430
- if (!junctionUUID) {
6431
- /** Fall 1 Wenn der Knoten kein Schaltelement hat, dann direkte Erdung */
6432
- //TODO
6433
- // rground und xground aus der default-config verwenden?
6434
- powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground;
6613
+ groundDisconnectorUUID = i7Modell.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.get(stpKnoten.schaltelement1pelem);
6614
+ connectivityNodeN = i7Modell.sternPunktImpModel.stpSchieneIdConnectivityNode.get(i7Modell.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.get(groundDisconnectorUUID));
6615
+ groundDisconnector = i7Modell.sternPunktImpModel.groundDisconnectors.get(groundDisconnectorUUID);
6616
+ if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size === 1) {
6617
+ const cn = powerTransformerEnd.getTerminal().getConnectivityNode();
6618
+ this.createConnection(cimModel, groundDisconnector, cn, PhaseCode_1.PhaseCode.ABCN, true);
6619
+ }
6620
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size < 1) {
6621
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is not successfully connected.`);
6622
+ }
6623
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size > 2) {
6624
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is referenced by more than two Terminal objects.`);
6625
+ }
6626
+ /** EquipmentContainer - Voltage Level*/
6627
+ voltageLevel = (this.determineEquipmentContainer('VoltageLevel', cimModel, powerTransformerEnd.getTerminal().connectivityNode.connectivityNodeContainer));
6628
+ }
6629
+ if (stpKnoten && groundDisconnector === undefined) { //Case 3 and Case 4
6630
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.stpKnotenStpImp.get(stpKnoten.id);
6631
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 4 ... 'Kdrossel' is modelled as a GroundingImpedanz
6632
+ //cimModel.addGroundingImpedance(earthFaultCompensator as GroundingImpedance);//set grounded to 'true' if PetersenCoil is present
6633
+ const groundingImpedance = earthFaultCompensator;
6634
+ powerTransformerEnd.xground = groundingImpedance.x;
6635
+ powerTransformerEnd.rground = groundingImpedance.r;
6636
+ powerTransformerEnd.grounded = true;
6637
+ }
6638
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 4 ... 'Kdrossel' is modelled as a PetersenCoil
6639
+ //cimModel.addPetersenCoil(earthFaultCompensator as PetersenCoil); //set grounded to 'true' if GroundingImpedance is present
6640
+ const petersenCoil = earthFaultCompensator;
6641
+ 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);
6642
+ powerTransformerEnd.rground = petersenCoil.r;
6643
+ powerTransformerEnd.grounded = true;
6644
+ }
6645
+ else if (stpKnoten.geerdet === 1) { //Case 3
6646
+ powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground; //it is assumed that rground and xground is zero in case of solidly grounding
6647
+ powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground; //it is assumed that rground and xground is zero in case of solidly grounding
6648
+ powerTransformerEnd.grounded = true;
6649
+ }
6650
+ else { //Case 6
6651
+ powerTransformerEnd.grounded = false;
6652
+ }
6653
+ }
6654
+ else if (connectivityNodeN !== undefined && groundDisconnector !== undefined) {
6655
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.groundDisconnectorUUIDstpImp.get(groundDisconnectorUUID);
6656
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 5 ... 'Kdrossel' is modelled as a GroundingImpedanz
6657
+ cimModel.addGroundingImpedance(earthFaultCompensator);
6658
+ cimModel.addGroundDisconnector(groundDisconnector);
6659
+ cimModel.addConnectivityNode(connectivityNodeN);
6660
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if GroundingImpedance is present
6661
+ }
6662
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 5 ... 'Kdrossel' is modelled as a PetersenCoil
6663
+ cimModel.addPetersenCoil(earthFaultCompensator);
6664
+ cimModel.addGroundDisconnector(groundDisconnector);
6665
+ cimModel.addConnectivityNode(connectivityNodeN);
6666
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if PetersenCoil is present
6667
+ }
6668
+ else { //Case 2
6669
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if no GroundingImpedance or PetersenCoil is present ... 'isolierte Sternpunktschiene'
6670
+ }
6671
+ /** BaseVoltage */
6672
+ if (voltageLevel !== undefined) {
6673
+ groundDisconnector.baseVoltage = voltageLevel.baseVoltage ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6674
+ groundDisconnector.equipmentContainer = voltageLevel;
6675
+ if (earthFaultCompensator !== undefined) {
6676
+ earthFaultCompensator.equipmentContainer = voltageLevel;
6677
+ }
6678
+ connectivityNodeN.connectivityNodeContainer = voltageLevel;
6679
+ connectivityNodeN.key = voltageLevel.key + connectivityNodeN.key;
6435
6680
  }
6436
6681
  else {
6437
- /** Fall 2 Trafo ist über eine Sternpunktschiene geerdet
6438
- * Nur Verbindung zur Junction herstellen */
6439
- let terminal;
6440
- if (!((_a = powerTransformerEnd.terminal) === null || _a === void 0 ? void 0 : _a.connectivityNode) && this.UUID2Integral7ID.has((_b = powerTransformerEnd.terminal) === null || _b === void 0 ? void 0 : _b.connectivityNodeUUID)) {
6441
- const i7ObjectID = (_d = this.UUID2Integral7ID.get((_c = powerTransformerEnd.terminal) === null || _c === void 0 ? void 0 : _c.connectivityNodeUUID)) === null || _d === void 0 ? void 0 : _d.find(elem => elem);
6442
- terminal = this.createBoundaryConnection(frame, junction, i7ObjectID, PhaseCode_1.PhaseCode.ABC);
6443
- }
6444
- else {
6445
- terminal = this.createConnection(cimModel, junction, (_e = powerTransformerEnd.terminal) === null || _e === void 0 ? void 0 : _e.connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
6446
- }
6447
- if (terminal) {
6448
- terminal.name = 't_stp_trafo';
6449
- if (junction)
6450
- junction.name = (junction === null || junction === void 0 ? void 0 : junction.name) + '/Trafo';
6451
- const pSpuleGroundImpedance = i7Modell.sternPunktImpModel.junctionUUIDstpImp.get(junctionUUID);
6452
- /** EquipmentContainer - Voltage Level*/
6453
- const voltageLevel = this.getVoltageLevelByVoltage((_f = powerTransformer.equipmentContainer) === null || _f === void 0 ? void 0 : _f.voltageLevels, powerTransformerEnd.ratedU);
6454
- if (!voltageLevel) {
6455
- this.logger.debug(`Trafo ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat kein EquipmentContainer`);
6456
- }
6457
- /** BaseVoltage */
6458
- if (junction && voltageLevel) {
6459
- junction.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6460
- junction.equipmentContainer = voltageLevel;
6461
- cimModel.addJunction(junction);
6462
- }
6463
- else {
6464
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine Junction ${junctionUUID} oder VoltageLevel`);
6465
- }
6466
- if (pSpuleGroundImpedance) {
6467
- pSpuleGroundImpedance.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6468
- pSpuleGroundImpedance.equipmentContainer = voltageLevel;
6469
- cimModel.addGroundingImpedance(pSpuleGroundImpedance);
6470
- }
6471
- else {
6472
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine pSpuleGroundImpedance.`);
6473
- }
6474
- }
6475
- else {
6476
- this.logger.error(`Die Erdnung TrafoObjekts ID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} konnte nicht abgebildet werden, da der Anschluss nicht bestimmt werden konnte.`);
6477
- }
6682
+ this.logger.debug(`PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} hat kein VoltageLevel`);
6478
6683
  }
6479
6684
  }
6685
+ else { //Case 1
6686
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if there is no 'Sternpunktknoten'
6687
+ }
6688
+ if (powerTransformerEnd.grounded) {
6689
+ powerTransformerEnd.terminal.phases = PhaseCode_1.PhaseCode.ABCN;
6690
+ }
6480
6691
  }
6481
6692
  /** Equipment grounding
6482
6693
  * @param shnt ShuntCompensator object
@@ -6703,6 +6914,7 @@ class ConverterIntegral7 {
6703
6914
  }
6704
6915
  }
6705
6916
  exports.ConverterIntegral7 = ConverterIntegral7;
6917
+ _ConverterIntegral7_configurableDLConvertOptions = new WeakMap();
6706
6918
  function getGeoCoordinates(i7Data) {
6707
6919
  /** Fall 1
6708
6920
  * geokoor_pl_breite_h && geokoor_pl_breite_m geokoor_pl_breite_s sind gepflegt */
@@ -6843,4 +7055,48 @@ function logExecutionTime(logger, startTime, text) {
6843
7055
  logger.debug(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6844
7056
  console.log(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6845
7057
  }
7058
+ function getHVSideNumber(transformerEnds) {
7059
+ let retVal = undefined;
7060
+ let urHv = 0;
7061
+ for (let i = 0; i < transformerEnds.length; i++) {
7062
+ if (urHv < transformerEnds[i].ratedU) {
7063
+ retVal = transformerEnds[i].endNumber;
7064
+ urHv = transformerEnds[i].ratedU;
7065
+ }
7066
+ }
7067
+ return retVal;
7068
+ }
7069
+ function createLineName(i7Data, uuid, lineNames) {
7070
+ let retVal = (0, util_create_1.createNotation)([i7Data.bezeichner], 32, false);
7071
+ if (lineNames[retVal] === true) { //try to find another name with i7Data.stkabname as suffix
7072
+ if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length > 0) {
7073
+ retVal = i7Data.bezeichner.substring(0, i7Data.bezeichner.length - (i7Data.bezeichner.length + (i7Data.stkabname.length + 1) - 32)) + '_' + i7Data.stkabname;
7074
+ }
7075
+ else if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length <= 0) {
7076
+ retVal = i7Data.bezeichner.substring(0, i7Data.stkabname.length - (i7Data.bezeichner.length - 32));
7077
+ }
7078
+ else if (i7Data.bezeichner.length <= 0 && i7Data.stkabname.length > 0) {
7079
+ retVal = i7Data.stkabname.substring(0, i7Data.stkabname.length - (i7Data.stkabname.length - 32));
7080
+ }
7081
+ }
7082
+ if (lineNames[retVal] === true) { //use uuid to create a unique name
7083
+ if (retVal.length + 9 <= 32) {
7084
+ retVal = retVal + '_' + normalizeUUID(uuid).substring(0, 8);
7085
+ }
7086
+ else {
7087
+ retVal = retVal.substring(0, retVal.length - (retVal.length + 9 - 32)) + '_' + normalizeUUID(uuid).substring(0, 8);
7088
+ }
7089
+ }
7090
+ return retVal;
7091
+ }
7092
+ function normalizeUUID(uuid) {
7093
+ let retVal = '';
7094
+ if (uuid != undefined && uuid.length > 0) {
7095
+ retVal = uuid.replaceAll('_', '');
7096
+ retVal = retVal.replaceAll('-', '');
7097
+ retVal = retVal.toLowerCase();
7098
+ retVal = retVal.trim();
7099
+ }
7100
+ return retVal;
7101
+ }
6846
7102
  //# sourceMappingURL=converter.integral7.js.map