@enervance/insight-cim-model 0.0.161 → 0.0.162

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 (119) hide show
  1. package/dist/constants/cim-class-names.d.ts +10 -0
  2. package/dist/constants/cim-class-names.js +11 -1
  3. package/dist/constants/cim-class-names.js.map +1 -1
  4. package/dist/converter/integral7/converter.integral7.d.ts +3 -1
  5. package/dist/converter/integral7/converter.integral7.js +219 -243
  6. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  7. package/dist/converter/integral7/dl-convert/data-manager.d.ts +1 -10
  8. package/dist/converter/integral7/dl-convert/data-manager.js +0 -34
  9. package/dist/converter/integral7/dl-convert/data-manager.js.map +1 -1
  10. package/dist/converter/integral7/dl-convert/db/data-types.d.ts +0 -9
  11. package/dist/converter/integral7/dl-convert/db/data-types.js +0 -11
  12. package/dist/converter/integral7/dl-convert/db/data-types.js.map +1 -1
  13. package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +153 -99
  14. package/dist/converter/integral7/dl-convert/dl-converter-i7.js +3401 -1315
  15. package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
  16. package/dist/converter/integral7/dl-convert/executor.d.ts +3 -1
  17. package/dist/converter/integral7/dl-convert/executor.js +4 -3
  18. package/dist/converter/integral7/dl-convert/executor.js.map +1 -1
  19. package/dist/converter/integral7/model/dl-utils/util-functions.d.ts +7 -35
  20. package/dist/converter/integral7/model/dl-utils/util-functions.js +7 -659
  21. package/dist/converter/integral7/model/dl-utils/util-functions.js.map +1 -1
  22. package/dist/converter/integral7/{util-asset.model.d.ts → util-cim.model.d.ts} +5 -1
  23. package/dist/converter/integral7/{util-asset.model.js → util-cim.model.js} +10 -4
  24. package/dist/converter/integral7/util-cim.model.js.map +1 -0
  25. package/dist/converter/integral7/utils-cgmes-export.js +2 -0
  26. package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
  27. package/dist/converter/integral7/utils-trafo3w.d.ts +2 -2
  28. package/dist/converter/integral7/utils-trafo3w.js +21 -4
  29. package/dist/converter/integral7/utils-trafo3w.js.map +1 -1
  30. package/dist/converter/integral7/utils.d.ts +10 -22
  31. package/dist/converter/integral7/utils.js +187 -327
  32. package/dist/converter/integral7/utils.js.map +1 -1
  33. package/dist/etl/etl-dppower/etl-dppower.d.ts +15 -0
  34. package/dist/etl/etl-dppower/etl-dppower.js +204 -0
  35. package/dist/etl/etl-dppower/etl-dppower.js.map +1 -0
  36. package/dist/index.d.ts +2 -0
  37. package/dist/index.js +3 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/interfaces/model/wires/IRegulatingCondEq.d.ts +3 -0
  40. package/dist/model/assetinfo/CableInfo.d.ts +7 -0
  41. package/dist/model/assetinfo/CableInfo.js +49 -0
  42. package/dist/model/assetinfo/CableInfo.js.map +1 -1
  43. package/dist/model/assetinfo/OverheadWireInfo.d.ts +7 -0
  44. package/dist/model/assetinfo/OverheadWireInfo.js +49 -0
  45. package/dist/model/assetinfo/OverheadWireInfo.js.map +1 -1
  46. package/dist/model/assets/Facility.js +17 -3
  47. package/dist/model/assets/Facility.js.map +1 -1
  48. package/dist/model/assets/LifecycleDate.d.ts +1 -0
  49. package/dist/model/assets/LifecycleDate.js +3 -0
  50. package/dist/model/assets/LifecycleDate.js.map +1 -1
  51. package/dist/model/common/Location.js +1 -1
  52. package/dist/model/common/Location.js.map +1 -1
  53. package/dist/model/core/ACDCTerminal.js +2 -1
  54. package/dist/model/core/ACDCTerminal.js.map +1 -1
  55. package/dist/model/core/Equipment.js +6 -1
  56. package/dist/model/core/Equipment.js.map +1 -1
  57. package/dist/model/core/Substation.js +7 -7
  58. package/dist/model/core/Substation.js.map +1 -1
  59. package/dist/model/dc/DCLine.js +17 -17
  60. package/dist/model/dc/DCLineSegment.js +25 -25
  61. package/dist/model/diagram/DiagramObject.js +2 -2
  62. package/dist/model/diagram/DiagramObject.js.map +1 -1
  63. package/dist/model/equivalents/EquivalentInjection.d.ts +10 -0
  64. package/dist/model/equivalents/EquivalentInjection.js +111 -0
  65. package/dist/model/equivalents/EquivalentInjection.js.map +1 -1
  66. package/dist/model/extensions/amprion/core/AMPRIONBay.js.map +1 -1
  67. package/dist/model/extensions/enervance/assets/EVWireObject.js +7 -1
  68. package/dist/model/extensions/enervance/assets/EVWireObject.js.map +1 -1
  69. package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.d.ts +0 -1
  70. package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js +0 -3
  71. package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js.map +1 -1
  72. package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js +8 -1
  73. package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js.map +1 -1
  74. package/dist/model/loadmodel/ConformLoadGroup.js +22 -22
  75. package/dist/model/loadmodel/LoadArea.js +21 -21
  76. package/dist/model/loadmodel/SubLoadArea.js +22 -22
  77. package/dist/model/wires/ACLineSegment.d.ts +3 -0
  78. package/dist/model/wires/ACLineSegment.js +7 -1
  79. package/dist/model/wires/ACLineSegment.js.map +1 -1
  80. package/dist/model/wires/AsynchronousMachine.js +0 -1
  81. package/dist/model/wires/AsynchronousMachine.js.map +1 -1
  82. package/dist/model/wires/ExternalNetworkInjection.js.map +1 -1
  83. package/dist/model/wires/PowerTransformer.js +2 -0
  84. package/dist/model/wires/PowerTransformer.js.map +1 -1
  85. package/dist/model/wires/PowerTransformerEnd.js +1 -0
  86. package/dist/model/wires/PowerTransformerEnd.js.map +1 -1
  87. package/dist/model/wires/RatioTapChanger.js +1 -1
  88. package/dist/model-container/enum/EVSourceSystemKind.d.ts +1 -0
  89. package/dist/model-container/enum/EVSourceSystemKind.js +1 -0
  90. package/dist/model-container/enum/EVSourceSystemKind.js.map +1 -1
  91. package/dist/model-container/model/ModelContainer.d.ts +5 -0
  92. package/dist/model-container/model/ModelContainer.js +9 -0
  93. package/dist/model-container/model/ModelContainer.js.map +1 -1
  94. package/dist/util/util-create.d.ts +1 -1
  95. package/dist/util/util-create.js +4 -2
  96. package/dist/util/util-create.js.map +1 -1
  97. package/dist/util/utils.d.ts +1 -1
  98. package/dist/util/utils.js +4 -2
  99. package/dist/util/utils.js.map +1 -1
  100. package/dist/utils2/cim.model.utils.js +6 -0
  101. package/dist/utils2/cim.model.utils.js.map +1 -1
  102. package/dist/utils2/common.utils.d.ts +1 -0
  103. package/dist/utils2/common.utils.js +6 -2
  104. package/dist/utils2/common.utils.js.map +1 -1
  105. package/dist/utils2/fuseki.utils.js +7 -1
  106. package/dist/utils2/fuseki.utils.js.map +1 -1
  107. package/dist/utils2/import.utils.d.ts +2 -1
  108. package/dist/utils2/import.utils.js +9 -3
  109. package/dist/utils2/import.utils.js.map +1 -1
  110. package/dist/utils2/parser.utils.js +7 -7
  111. package/dist/utils2/parser.utils.js.map +1 -1
  112. package/package.json +5 -2
  113. package/dist/converter/integral7/dl-convert/dl-converter-i7-2.d.ts +0 -157
  114. package/dist/converter/integral7/dl-convert/dl-converter-i7-2.js +0 -3521
  115. package/dist/converter/integral7/dl-convert/dl-converter-i7-2.js.map +0 -1
  116. package/dist/converter/integral7/dl-convert/dl-converter-i7.types.d.ts +0 -3
  117. package/dist/converter/integral7/dl-convert/dl-converter-i7.types.js +0 -3
  118. package/dist/converter/integral7/dl-convert/dl-converter-i7.types.js.map +0 -1
  119. package/dist/converter/integral7/util-asset.model.js.map +0 -1
@@ -136,7 +136,7 @@ const ApparentPowerLimit_1 = require("../../model/operationallimits/ApparentPowe
136
136
  const executor_1 = require("./dl-convert/executor.js");
137
137
  const Diagram_1 = require("../../model/diagram/Diagram.js");
138
138
  const DiagramObject_1 = require("../../model/diagram/DiagramObject.js");
139
- const util_asset_model_1 = require("./util-asset.model.js");
139
+ const util_cim_model_1 = require("./util-cim.model.js");
140
140
  const cim_constants_1 = require("../../constants/cim-constants.js");
141
141
  const EVWireObject_1 = require("../../model/extensions/enervance/assets/EVWireObject.js");
142
142
  class ConverterIntegral7 {
@@ -279,6 +279,7 @@ class ConverterIntegral7 {
279
279
  });
280
280
  }
281
281
  convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig) {
282
+ var _a;
282
283
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
283
284
  const integral7Modell = frame.getI7Model();
284
285
  const cimModel = frame.cimModel;
@@ -329,7 +330,7 @@ class ConverterIntegral7 {
329
330
  logExecutionTime(this.logger, startTime, `convertLaengskupplungen()`);
330
331
  }
331
332
  /** START Integral 7 Knoten */
332
- /** Abzweigpunkte KnotenSo -> ConnectivityNode*/
333
+ /** Abzweigpunkte KnotenSo -> ConnectivityNode */
333
334
  startTime = perf_hooks.performance.now();
334
335
  if (standortIDs.length)
335
336
  yield this.convertKnotenSo(frame, integral7Modell, standortIDs, defaultValuesConfig);
@@ -531,7 +532,7 @@ class ConverterIntegral7 {
531
532
  logExecutionTime(this.logger, startTime, `assignment of sequence number`);
532
533
  /** DC Model */
533
534
  /** DL Profile */
534
- this.executor = new executor_1.Executor(this.mysqlController);
535
+ this.executor = new executor_1.Executor(this.mysqlController, this.configUuid);
535
536
  yield this.executor.mergeDataFromIntegralID2UUID(this.integralID2UUID);
536
537
  yield this.executor.mergeDataFromFrame(frame);
537
538
  yield this.executor.loadAllSchemaVariants();
@@ -581,43 +582,23 @@ class ConverterIntegral7 {
581
582
  const resultingObjects = yield this.executor.convert(convertOptions);
582
583
  for (const resultingObject of resultingObjects) {
583
584
  if (resultingObject instanceof Diagram_1.Diagram) {
585
+ // UUIDs von Diagram-Objekten werden aus I7 übernommen
584
586
  frame.cimModel.addDiagram(resultingObject);
585
587
  }
586
588
  else if (resultingObject instanceof DiagramObject_1.DiagramObject) {
589
+ // UUIDs gemäß UUID v5 generieren
590
+ const diagramObject = resultingObject;
591
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObject, this.configUuid, diagramObject.getIdentifiedObjectUUID());
592
+ diagramObject.mrid = uuid;
593
+ for (const diagramObjectPoint of diagramObject.diagramObjectPoints) {
594
+ const key = uuid + String((_a = diagramObjectPoint.sequenceNumber) !== null && _a !== void 0 ? _a : 1);
595
+ const pointUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObjectPoint, this.configUuid, key);
596
+ diagramObjectPoint.mrid = pointUuid;
597
+ }
587
598
  frame.cimModel.addDiagramObject(resultingObject);
588
599
  }
589
600
  }
590
- console.log('c7666206-429d-478d-bd9e-9f1440598d99');
591
- console.log('752bcf18-68fc-4df0-9913-e843a982b997');
592
- // this.dlConverterI7.prepare(this.mysqlController, this.logger);
593
- //
594
- // const powerTransformers = cimModel.powerTransformer;
595
- // const powerTransformerEnds = cimModel.powerTransformerEnds;
596
- // const lines = cimModel.lines;
597
- // const objects = cimModel.objects;
598
- //
599
- // await this.dlConverterI7.convert(this.availableTableNames, true, {
600
- // standortIDs,
601
- // schaltanlagenIDs,
602
- // schaltanlagenAbschnittIDs,
603
- // knotenSoIDs,
604
- // schaltfeldIDs,
605
- // laengskupplungIDs: integral7Modell.laengskupplungIDs,
606
- // querkupplungIDs: integral7Modell.querkupplungIDs,
607
- // integralID2UUID: this.integralID2UUID,
608
- // integralSchaltfelder: integral7Modell.integralSchaltfelder,
609
- // integralLaengskupplungen: integral7Modell.integralLaengskupplungen,
610
- // powerTransformers,
611
- // powerTransformerEnds,
612
- // integralLeitungen: integral7Modell.integralLeitungen,
613
- // integralHgueLeitungen: integral7Modell.integralHgueLeitungen,
614
- // lines,
615
- // objects
616
- // }
617
- // );
618
- //
619
- // this.dlConverterI7.addCimObjects2Model(cimModel);
620
- // this.dlConverterI7.cleanUp();
601
+ console.log('over');
621
602
  });
622
603
  }
623
604
  assignTerminalSequenceNumber(cimModel) {
@@ -695,6 +676,7 @@ class ConverterIntegral7 {
695
676
  for (const i7Data of result) {
696
677
  const i7Schluessel = integral_prefix_1.GEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
697
678
  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);
679
+ //region.i7key = i7Schluessel;
698
680
  this.addIdMapping(i7Data.id, region.mrid, integral_sql_1.Integral7TableNames.REGION);
699
681
  regions.push(region);
700
682
  }
@@ -835,9 +817,9 @@ class ConverterIntegral7 {
835
817
  integral_prefix_1.MITTIGER_PUNKT +
836
818
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
837
819
  const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', i7Data.un.toString(), '_VL']), i7Data.kurzname, i7Schluessel);
838
- const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, vl, cim_constants_1.CimAssetAliasNames.VoltageLevel, this.configUuid);
820
+ const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, vl, cim_constants_1.CimAssetAliasNames.VoltageLevel, this.configUuid);
839
821
  if (i7Data.baujahr) {
840
- util_asset_model_1.UtilAssetModel.setLifecycleDate(facility, i7Data.baujahr);
822
+ util_cim_model_1.UtilCimModel.setLifecycleDate(facility, i7Data.baujahr);
841
823
  }
842
824
  const un = (0, utils_2.getU)(i7Data.un);
843
825
  const baseVoltage = (0, util_create_1.createBaseVoltageIfNotExists)(cimModel, un, this.configUuid, this.exportFramesBoundary);
@@ -898,6 +880,9 @@ class ConverterIntegral7 {
898
880
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
899
881
  const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
900
882
  const bay = new AMPRIONBay_1.AMPRIONBay(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_B'], 32, true), i7Data.kurzname, i7Schluessel);
883
+ if (i7Data.feldnummer > 0) {
884
+ const stop = true;
885
+ }
901
886
  bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
902
887
  bay.locationID = i7Data.ips_folder_id;
903
888
  bay.voltageLevel = voltageLevel;
@@ -991,20 +976,23 @@ class ConverterIntegral7 {
991
976
  });
992
977
  }
993
978
  convertSammelschienenAbschnitte(cimModel, integral7, schaltanlagenAbschnittIDs) {
979
+ var _a;
994
980
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
995
981
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SAMMELSCHIENE)) {
996
982
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SAMMELSCHIENE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SAMMELSCHIENE), schaltanlagenAbschnittIDs));
997
983
  for (const i7Data of result) {
998
984
  const i7Schaltanlagenabschnitt = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
999
- const busbarSection = new BusbarSection_1.BusbarSection(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Schaltanlagenabschnitt), '_BBS']), i7Schaltanlagenabschnitt.kurzname);
1000
- busbarSection.ipMax = i7Data.limit_ip;
1001
- // die Sammelschienen sind nicht aggregiert.
1002
- busbarSection.aggregate = false;
1003
985
  //const rdfid: string = getUUID(i7Data.guid); /** this is the mrid for TopologicalNode*/
1004
986
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1005
987
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_' + i7Data.pos.toString(), '_' + rdfid.substring(0, 8), '_CN'], 32, true), i7Data.kurzname);
1006
988
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Schaltanlagenabschnitt.id));
1007
989
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
990
+ const keyBusbarSection = (_a = integral_sql_1.I7Objects.SAMMELSCHIENE + (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID())) !== null && _a !== void 0 ? _a : '' + (connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID());
991
+ const uuidBusbarSection = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.BusbarSection, this.configUuid, keyBusbarSection);
992
+ const busbarSection = new BusbarSection_1.BusbarSection(uuidBusbarSection, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Schaltanlagenabschnitt), '_BBS']), i7Schaltanlagenabschnitt.kurzname);
993
+ busbarSection.ipMax = i7Data.limit_ip;
994
+ // die Sammelschienen sind nicht aggregiert.
995
+ busbarSection.aggregate = false;
1008
996
  if (voltageLevel) {
1009
997
  busbarSection.equipmentContainer = voltageLevel;
1010
998
  voltageLevel.addEquipment(busbarSection);
@@ -1626,10 +1614,10 @@ class ConverterIntegral7 {
1626
1614
  }
1627
1615
  asynchronousMachine.normallyInService = inBetrieb;
1628
1616
  //EQ core profile content
1629
- asynchronousMachine.ratedPowerFactor = cosphir;
1630
1617
  asynchronousMachine.ratedS = (0, parser_utils_1.isNumericI7)(i7Data.sr) ? i7Data.sr : assetType === null || assetType === void 0 ? void 0 : assetType.sr;
1631
- asynchronousMachine.ratedU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? i7Data.ur : assetType === null || assetType === void 0 ? void 0 : assetType.ur;
1632
1618
  //EQ short circuit profile content
1619
+ asynchronousMachine.ratedPowerFactor = cosphir;
1620
+ asynchronousMachine.ratedU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? i7Data.ur : assetType === null || assetType === void 0 ? void 0 : assetType.ur;
1633
1621
  asynchronousMachine.converterFedDrive = false;
1634
1622
  asynchronousMachine.efficiency = wirkungsgrad * 100;
1635
1623
  asynchronousMachine.iaIrRatio = (0, parser_utils_1.isNumericI7)(i7Data.ilr_ir) ? i7Data.ilr_ir : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.ilr_ir) ? assetType.ilr_ir : undefined);
@@ -1733,21 +1721,25 @@ class ConverterIntegral7 {
1733
1721
  const generatingUnitConfig = energyTypesConfig[i7Data.nameprimaertyp];
1734
1722
  /** Wenn ein Config für den Primärenergietyp vorhanden*/
1735
1723
  let generatingUnit;
1724
+ const generatingUnitKey = synchronousMachine.getUUID();
1736
1725
  if (generatingUnitConfig) {
1737
1726
  switch (generatingUnitConfig.class) {
1738
1727
  case 'ThermalGeneratingUnit': {
1739
- generatingUnit = new ThermalGeneratingUnit_1.ThermalGeneratingUnit((0, parser_utils_1.getUUID)(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1728
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ThermalGeneratingUnit, this.configUuid, generatingUnitKey);
1729
+ generatingUnit = new ThermalGeneratingUnit_1.ThermalGeneratingUnit(uuid, 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1740
1730
  if (generatingUnitConfig.fuelType) {
1741
1731
  (0, utils_2.generateFuelType)(i7Data.nameprimaertyp, generatingUnitConfig.fuelType, generatingUnit, cimModel);
1742
1732
  }
1743
1733
  break;
1744
1734
  }
1745
1735
  case 'SolarGeneratingUnit': {
1746
- generatingUnit = new SolarGeneratingUnit_1.SolarGeneratingUnit((0, parser_utils_1.getUUID)(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1736
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.SolarGeneratingUnit, this.configUuid, generatingUnitKey);
1737
+ generatingUnit = new SolarGeneratingUnit_1.SolarGeneratingUnit(uuid, 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1747
1738
  break;
1748
1739
  }
1749
1740
  case 'WindGeneratingUnit': {
1750
- generatingUnit = new WindGeneratingUnit_1.WindGeneratingUnit((0, parser_utils_1.getUUID)(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1741
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.WindGeneratingUnit, this.configUuid, generatingUnitKey);
1742
+ generatingUnit = new WindGeneratingUnit_1.WindGeneratingUnit(uuid, 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1751
1743
  switch (generatingUnitConfig.fuelType) {
1752
1744
  case 'onshore': {
1753
1745
  generatingUnit.windGenUnitType = WindGenUnitKind_1.WindGenUnitKind.onshore;
@@ -1765,13 +1757,15 @@ class ConverterIntegral7 {
1765
1757
  break;
1766
1758
  }
1767
1759
  case 'NuclearGeneratingUnit': {
1768
- generatingUnit = new NuclearGeneratingUnit_1.NuclearGeneratingUnit((0, parser_utils_1.getUUID)(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
1760
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.NuclearGeneratingUnit, this.configUuid, generatingUnitKey);
1761
+ generatingUnit = new NuclearGeneratingUnit_1.NuclearGeneratingUnit(uuid, 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
1769
1762
  break;
1770
1763
  }
1771
1764
  }
1772
1765
  }
1773
1766
  if (!generatingUnit) {
1774
- generatingUnit = new GeneratingUnit_1.GeneratingUnit((0, parser_utils_1.getUUID)(''), 'KWBlock' + i7Data.bezeichner, i7Data.kurzname);
1767
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.GeneratingUnit, this.configUuid, generatingUnitKey);
1768
+ generatingUnit = new GeneratingUnit_1.GeneratingUnit(uuid, 'KWBlock' + i7Data.bezeichner, i7Data.kurzname);
1775
1769
  }
1776
1770
  generatingUnit.genControlSource = GeneratorControlSource_1.GeneratorControlSource.unavailable;
1777
1771
  generatingUnit.initialP = (0, parser_utils_1.isNumericI7)(i7Data.p0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p0) : undefined;
@@ -1871,6 +1865,9 @@ class ConverterIntegral7 {
1871
1865
  const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : undefined;
1872
1866
  const x1 = (0, parser_utils_1.isNumericI7)(i7Data.x1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x1) : undefined;
1873
1867
  const equivalentInjection = new INTEGRALEquivalentInjection_1.INTEGRALEquivalentInjection((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_EI']), i7Data.kurzname);
1868
+ /*if(equivalentInjection.getUUID() === '41b1d0bf-2c36-4e34-aa2a-a283b8c32e7f'){
1869
+ let stop = true;
1870
+ }*/
1874
1871
  /** Export Extended Ward equivalent with voltage regulation */
1875
1872
  if (flag_lfl && !flag_ks && usoll && (r_ext !== 0 || x_ext !== 0)) {
1876
1873
  //is regulating equivalent equipment
@@ -1886,21 +1883,12 @@ class ConverterIntegral7 {
1886
1883
  equivalentInjection.x0 = 1e9;
1887
1884
  equivalentInjection.x2 = 1e9;
1888
1885
  }
1889
- /** Export Extended Ward equivalent with no voltage regulation */
1890
- else if ((r_ext !== 0 || x_ext !== 0)) {
1891
- equivalentInjection.regulationCapability = false;
1886
+ else if (flag_lfl && usoll && einspeisePrio) {
1887
+ equivalentInjection.regulationCapability = true;
1888
+ equivalentInjection.regulationStatus = true;
1889
+ equivalentInjection.regulationTarget = usoll;
1892
1890
  equivalentInjection.rExt = r_ext;
1893
- equivalentInjection.r = 1e9;
1894
- equivalentInjection.r0 = 1e9;
1895
- equivalentInjection.r2 = 1e9;
1896
1891
  equivalentInjection.xExt = x_ext;
1897
- equivalentInjection.x = 1e9;
1898
- equivalentInjection.x0 = 1e9;
1899
- equivalentInjection.x2 = 1e9;
1900
- }
1901
- /** Export equivalent with only short circuit computation capability */
1902
- else if (!flag_lfl && flag_ks) {
1903
- equivalentInjection.regulationCapability = false;
1904
1892
  equivalentInjection.r = r1;
1905
1893
  equivalentInjection.r0 = r0;
1906
1894
  equivalentInjection.r2 = r1;
@@ -1908,10 +1896,8 @@ class ConverterIntegral7 {
1908
1896
  equivalentInjection.x0 = x0;
1909
1897
  equivalentInjection.x2 = x1;
1910
1898
  }
1911
- else if (flag_lfl && usoll && einspeisePrio) {
1912
- equivalentInjection.regulationCapability = true;
1913
- equivalentInjection.regulationStatus = true;
1914
- equivalentInjection.regulationTarget = usoll;
1899
+ else if (flag_lfl || flag_ks) {
1900
+ equivalentInjection.regulationCapability = false;
1915
1901
  equivalentInjection.r = r1;
1916
1902
  equivalentInjection.r0 = r0;
1917
1903
  equivalentInjection.r2 = r1;
@@ -1919,6 +1905,18 @@ class ConverterIntegral7 {
1919
1905
  equivalentInjection.x0 = x0;
1920
1906
  equivalentInjection.x2 = x1;
1921
1907
  }
1908
+ /** Export Extended Ward equivalent with no voltage regulation */
1909
+ else if (((r_ext !== undefined && r_ext !== 0) || (x_ext !== undefined && x_ext !== 0))) {
1910
+ equivalentInjection.regulationCapability = false;
1911
+ equivalentInjection.rExt = r_ext;
1912
+ equivalentInjection.r = 1e9;
1913
+ equivalentInjection.r0 = 1e9;
1914
+ equivalentInjection.r2 = 1e9;
1915
+ equivalentInjection.xExt = x_ext;
1916
+ equivalentInjection.x = 1e9;
1917
+ equivalentInjection.x0 = 1e9;
1918
+ equivalentInjection.x2 = 1e9;
1919
+ }
1922
1920
  else {
1923
1921
  equivalentInjection.regulationCapability = false;
1924
1922
  equivalentInjection.r = 1e9;
@@ -2093,32 +2091,32 @@ class ConverterIntegral7 {
2093
2091
  * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt */
2094
2092
  this.createBoundaryConnection(frame, equivalentBranch, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
2095
2093
  this.createBoundaryConnection(frame, equivalentBranch, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
2094
+ if (equivalentBranch.getUUID() === '67528dfe-be93-4c44-81db-5708ecd9377e') {
2095
+ let stop = true;
2096
+ }
2096
2097
  /**EQ */
2097
2098
  if (flag_lfl && !flag_ks) {
2098
- equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
2099
- equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
2100
- /*equivalentBranch.r21 = isNumericI7(i7Data.r21_lfl) ? convertToNumberI7(i7Data.r21_lfl) : equivalentBranch.r;
2101
- equivalentBranch.x21 = isNumericI7(i7Data.x21_lfl) ? convertToNumberI7(i7Data.x21_lfl) : equivalentBranch.x;
2102
-
2103
- equivalentBranch.positiveR12 = isNumericI7(i7Data.r12_ks) ? convertToNumberI7(i7Data.r12_ks) : 10e9;
2099
+ equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 10e9;
2100
+ equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 10e9;
2101
+ equivalentBranch.r21 = (0, parser_utils_1.isNumericI7)(i7Data.r21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r21_lfl) : equivalentBranch.r;
2102
+ equivalentBranch.x21 = (0, parser_utils_1.isNumericI7)(i7Data.x21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x21_lfl) : equivalentBranch.x;
2103
+ equivalentBranch.positiveR12 = (0, parser_utils_1.isNumericI7)(i7Data.r12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_ks) : 10e9;
2104
2104
  equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
2105
- equivalentBranch.positiveX12 = isNumericI7(i7Data.x12_ks) ? convertToNumberI7(i7Data.x12_ks) : 10e9;
2105
+ equivalentBranch.positiveX12 = (0, parser_utils_1.isNumericI7)(i7Data.x12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_ks) : 10e9;
2106
2106
  equivalentBranch.positiveX21 = equivalentBranch.positiveX12;
2107
-
2108
2107
  equivalentBranch.negativeR12 = equivalentBranch.positiveR12;
2109
2108
  equivalentBranch.negativeR21 = equivalentBranch.positiveR21;
2110
2109
  equivalentBranch.negativeX12 = equivalentBranch.positiveX12;
2111
2110
  equivalentBranch.negativeX21 = equivalentBranch.positiveX21;
2112
-
2113
- equivalentBranch.zeroR12 = isNumericI7(i7Data.r0) ? convertToNumberI7(i7Data.r0) : 10e9;
2111
+ equivalentBranch.zeroR12 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r0) : 10e9;
2114
2112
  equivalentBranch.zeroR21 = equivalentBranch.zeroR12;
2115
- equivalentBranch.zeroX12 = isNumericI7(i7Data.x0) ? convertToNumberI7(i7Data.x0) : 10e9
2116
- equivalentBranch.zeroX21 = equivalentBranch.zeroX12;*/
2113
+ equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
2114
+ equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
2117
2115
  }
2118
2116
  else if (!flag_lfl && flag_ks) {
2119
2117
  /**EQ-SC */
2120
- equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
2121
- equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
2118
+ equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 10e9;
2119
+ equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 10e9;
2122
2120
  equivalentBranch.positiveR12 = (0, parser_utils_1.isNumericI7)(i7Data.r12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_ks) : 10e9;
2123
2121
  equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
2124
2122
  equivalentBranch.positiveX12 = (0, parser_utils_1.isNumericI7)(i7Data.x12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_ks) : 10e9;
@@ -2133,8 +2131,8 @@ class ConverterIntegral7 {
2133
2131
  equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
2134
2132
  }
2135
2133
  else { //If flag_lfl and flag_ks are specified or neither flag_lfl nor flag_ks are specified, any impedance value that is specified will be exported.
2136
- equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
2137
- equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
2134
+ equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 10e9;
2135
+ equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 10e9;
2138
2136
  equivalentBranch.r21 = (0, parser_utils_1.isNumericI7)(i7Data.r21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r21_lfl) : equivalentBranch.r;
2139
2137
  equivalentBranch.x21 = (0, parser_utils_1.isNumericI7)(i7Data.x21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x21_lfl) : equivalentBranch.x;
2140
2138
  equivalentBranch.positiveR12 = (0, parser_utils_1.isNumericI7)(i7Data.r12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_ks) : 10e9;
@@ -2622,7 +2620,7 @@ class ConverterIntegral7 {
2622
2620
  typeName = (0, utils_1.getTypeNameFromStringByRegEx)(mf.name, energySourceTypeMappingConfig);
2623
2621
  }
2624
2622
  if (typeName) {
2625
- const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, typeName);
2623
+ const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, typeName, this.configUuid);
2626
2624
  energySource.psrTypeUUID = psrType.mrid;
2627
2625
  }
2628
2626
  if (typeName === 'Wasserkraft') {
@@ -2911,7 +2909,6 @@ class ConverterIntegral7 {
2911
2909
  }
2912
2910
  //Create and define regulating control for voltage control
2913
2911
  if (cterminal !== undefined) {
2914
- const uuid = (0, parser_utils_1.getUUID)(i7DataRQ.guid_rc);
2915
2912
  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);
2916
2913
  if (i7DataEinsp) {
2917
2914
  rControl.discrete = false; //default for ExternalNetworkInjection is false. s. CGMES Doku
@@ -3171,39 +3168,6 @@ class ConverterIntegral7 {
3171
3168
  }
3172
3169
  });
3173
3170
  }
3174
- convertLaegskupplungen(cimModel, integral7, schaltanlagenIDs) {
3175
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
3176
- if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
3177
- const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.LAENGSKUPPLUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG), schaltanlagenIDs));
3178
- for (const i7Data of result) {
3179
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3180
- const bay = new AMPRIONBay_1.AMPRIONBay(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_B']), i7Data.kurzname, 'Laengskupplung');
3181
- const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
3182
- bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
3183
- bay.locationID = i7Data.ips_folder_id;
3184
- if (voltageLevel) {
3185
- bay.voltageLevel = voltageLevel;
3186
- voltageLevel.addBay(bay);
3187
- const i7Schluessel = voltageLevel.description +
3188
- '/LK-' +
3189
- (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
3190
- bay.description = i7Schluessel;
3191
- }
3192
- else {
3193
- this.logger.debug(`debug --- Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
3194
- }
3195
- const lKupplungImpl = new Laengskupplung_1.LaengskupplungImpl(i7Data);
3196
- integral7.integralLaengskupplungen.set(i7Data.id, lKupplungImpl);
3197
- integral7.laengskupplungIDs.push(i7Data.id);
3198
- this.addIdMapping(i7Data.id, bay.mrid, integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG);
3199
- cimModel.addBay(bay);
3200
- }
3201
- }
3202
- else {
3203
- this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
3204
- }
3205
- });
3206
- }
3207
3171
  convertStarreVerbindungen(cimModel, containerIDs) {
3208
3172
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3209
3173
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_STARR)) {
@@ -3392,7 +3356,7 @@ class ConverterIntegral7 {
3392
3356
  /** CurrentLimit */
3393
3357
  const terminal = startTerminal;
3394
3358
  if (terminal) {
3395
- this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
3359
+ this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, seriesCompensator.getUUID(), ir, cim_class_names_1.ClassNames.CurrentLimit);
3396
3360
  }
3397
3361
  else {
3398
3362
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
@@ -3415,7 +3379,7 @@ class ConverterIntegral7 {
3415
3379
  this.logger.debug(`Längsdrossel ${i7Data.id} besitzt kein VoltageLevel Ur ${i7Data.ur}.`);
3416
3380
  }
3417
3381
  /** PSR Types */
3418
- const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, 'Längsdrossel');
3382
+ const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, 'Längsdrossel', this.configUuid);
3419
3383
  seriesCompensator.psrTypeUUID = psrType.mrid;
3420
3384
  cimModel.addSeriesCompensator(seriesCompensator);
3421
3385
  this.addIdMapping(i7Data.id, seriesCompensator.mrid, integral_sql_1.Integral7TableNames.LAENGSDROSSEL);
@@ -3478,7 +3442,7 @@ class ConverterIntegral7 {
3478
3442
  /** CurrentLimit */
3479
3443
  const terminal = startTerminal;
3480
3444
  if (terminal) {
3481
- this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
3445
+ this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, seriesCompensator.getUUID(), ir, cim_class_names_1.ClassNames.CurrentLimit);
3482
3446
  }
3483
3447
  else {
3484
3448
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
@@ -3498,7 +3462,7 @@ class ConverterIntegral7 {
3498
3462
  this.logger.debug(`Längskondensator ${i7Data.id} besitzt kein VoltageLevel Ur ${i7Data.ur}.`);
3499
3463
  }
3500
3464
  /** PSR Types */
3501
- const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, 'Längskondensator');
3465
+ const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, 'Längskondensator', this.configUuid);
3502
3466
  seriesCompensator.psrType = psrType;
3503
3467
  cimModel.addSeriesCompensator(seriesCompensator);
3504
3468
  this.addIdMapping(i7Data.id, seriesCompensator.mrid, integral_sql_1.Integral7TableNames.LAENGSKONDENSATOR);
@@ -3536,9 +3500,13 @@ class ConverterIntegral7 {
3536
3500
  for (const i7DataSchiene of stpSchiene) {
3537
3501
  try {
3538
3502
  stpSchieneIDs.push(i7DataSchiene.id);
3539
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN']));
3540
- const junction = new Junction_1.Junction(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_J']));
3541
3503
  const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7DataSchiene.id)));
3504
+ const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3505
+ const uuidConnectivityNode = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, keyConnectivityNode);
3506
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN']));
3507
+ const keyJunction = cim_class_names_1.ClassNames.Junction + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3508
+ const uuidJunction = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Junction, this.configUuid, keyJunction);
3509
+ const junction = new Junction_1.Junction(uuidJunction, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_J']));
3542
3510
  connectivityNode.setConnectivityNodeContainer(equipmentContainer);
3543
3511
  if (equipmentContainer) {
3544
3512
  equipmentContainer.addEquipment(junction);
@@ -3792,12 +3760,14 @@ class ConverterIntegral7 {
3792
3760
  const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3793
3761
  const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, (0, util_create_1.createNotation)([name, '_' + stk.pos.toString(), '_' + uuid.substring(0, 8), '_ACLS'], 32, true), i7Data.stkabname, i7Schluessel);
3794
3762
  if (stk.baujahr) {
3795
- const wire = new EVWireObject_1.EVWireObject(common_utils_1.CommonUtils.generateUUID(), stk.name);
3763
+ const key = acLineSegment.getUUID();
3764
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.EVWireObject, this.configUuid, key);
3765
+ const wire = new EVWireObject_1.EVWireObject(uuid, stk.name);
3796
3766
  wire.type = 'Stromkreisabschnitt';
3797
3767
  wire.addPowerSystemResource(acLineSegment);
3798
3768
  acLineSegment.addAsset(wire);
3799
3769
  cimModel.addWireObject(wire);
3800
- util_asset_model_1.UtilAssetModel.setLifecycleDate(wire, stk.baujahr);
3770
+ util_cim_model_1.UtilCimModel.setLifecycleDate(wire, stk.baujahr);
3801
3771
  }
3802
3772
  let mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(stk.multfaktor));
3803
3773
  if (mf) {
@@ -3847,8 +3817,11 @@ class ConverterIntegral7 {
3847
3817
  let tmp_terminal = undefined;
3848
3818
  for (let i = 0; i < anzahl - 1; i++) {
3849
3819
  const acLineSegment1 = acLineSegments[i];
3820
+ const acLineSegment2 = acLineSegments[i + 1];
3850
3821
  /**Connectivity Node to connect end of line and start of neighbouring line.*/
3851
- const cn = new ConnectivityNode_1.ConnectivityNode(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([acLineSegment1.name, '_', acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, true));
3822
+ const key = acLineSegment1.getUUID() + acLineSegment2.getUUID();
3823
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
3824
+ const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.name, '_', acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, true));
3852
3825
  /**Connect end of aclinesegment i*/
3853
3826
  cn.connectivityNodeContainer = acLineSegment1.equipmentContainer;
3854
3827
  tmp_terminal = this.createConnection(cimModel, acLineSegment1, cn, PhaseCode_1.PhaseCode.ABC, true);
@@ -3859,7 +3832,6 @@ class ConverterIntegral7 {
3859
3832
  }
3860
3833
  this.setACLineSegmentProperties(this.cimModelDefault, cimModel, acLineSegments[i], stromkreisabschnitte[i], defaultValuesConfig);
3861
3834
  /**Connect end of aclinesegment i+1*/
3862
- const acLineSegment2 = acLineSegments[i + 1];
3863
3835
  tmp_terminal = this.createConnection(cimModel, acLineSegment2, cn, PhaseCode_1.PhaseCode.ABC, true);
3864
3836
  //this.setACLineSegmentCurrentLimt(cimModel, acLineSegment2, acLineSegment2.description, tmp_terminal);
3865
3837
  cimModel.addACLineSegment(acLineSegment1);
@@ -3986,7 +3958,9 @@ class ConverterIntegral7 {
3986
3958
  dcLineSegment.equipmentContainer = dcLine;
3987
3959
  //create second dcLineSegment in case this dcLine is a bipol.
3988
3960
  if (bipol) {
3989
- dcLineNeg = new DCLine_1.DCLine(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCL']));
3961
+ const dcLineKey = dcLine.getUUID();
3962
+ const dcLineUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
3963
+ dcLineNeg = new DCLine_1.DCLine(dcLineUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCL']));
3990
3964
  dcLineSegmentNeg = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidn, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCLS'], 32, true), (0, util_create_1.createNotation)([i7Data.kurzname, '_neg'], 12, true), i7Schluessel);
3991
3965
  dcLineSegmentNeg.length = dcLineSegment.length;
3992
3966
  dcLineSegmentNeg.capacitance = undefined;
@@ -4302,10 +4276,10 @@ class ConverterIntegral7 {
4302
4276
  const stop = true;
4303
4277
  }
4304
4278
  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);
4305
- const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer, this.configUuid);
4279
+ const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer, this.configUuid);
4306
4280
  /** AssetInfos */
4307
4281
  if (i7Data.baujahr) {
4308
- util_asset_model_1.UtilAssetModel.setLifecycleDate(facility, i7Data.baujahr);
4282
+ util_cim_model_1.UtilCimModel.setLifecycleDate(facility, i7Data.baujahr);
4309
4283
  }
4310
4284
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
4311
4285
  if (substation) {
@@ -4374,10 +4348,14 @@ class ConverterIntegral7 {
4374
4348
  powerTransformerEnd1.ratedU = ur;
4375
4349
  powerTransformerEnd1.ratedS = sr;
4376
4350
  //Short-Circuit data export EQ-SC profile //TODO: Read data for enervancetransformertype object.
4377
- const x00r1 = (0, parser_utils_1.isNumericI7)(i7Data.x00r1) ? i7Data.x00r1 : 0;
4378
- const x0kr1 = (0, parser_utils_1.isNumericI7)(i7Data.x0kr1) ? i7Data.x0kr1 : 0;
4379
- const x00r2 = (0, parser_utils_1.isNumericI7)(i7Data.x00r2) ? i7Data.x00r2 : 0;
4380
- const r00r1 = (0, parser_utils_1.isNumericI7)(i7Data.r00r1) ? i7Data.r00r1 : 0;
4351
+ const r0kr1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r0kr1');
4352
+ const x0kr1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x0kr1');
4353
+ const r00r1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r00r1');
4354
+ const x00r1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x00r1');
4355
+ const r0kr2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r0kr2');
4356
+ const x0kr2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x0kr2');
4357
+ const r00r2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r00r2');
4358
+ const x00r2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x00r2');
4381
4359
  /** Topologie 3 moegliche Anschluesse
4382
4360
  * KontenSo -> Anschluesspunkt
4383
4361
  * KnotenSf -> Schaltfeldpunkt
@@ -4404,16 +4382,10 @@ class ConverterIntegral7 {
4404
4382
  const sr2 = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber, false);
4405
4383
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber);
4406
4384
  // Berechnung
4407
- // NullSystem Impedanzen (nur Reaktanzen)
4408
- const zeroSequImpedanzWx = (0, utils_trafo3w_1.calculateZeroSequImpedanzenTrafo2W)(r00r1, x00r1, x0kr1, x00r2, ur, ur2);
4409
4385
  powerTransformerEnd2.r = 0;
4410
4386
  powerTransformerEnd2.x = 0;
4411
4387
  powerTransformerEnd2.ratedS = sr2;
4412
4388
  powerTransformerEnd2.ratedU = ur2;
4413
- powerTransformerEnd1.x0 = zeroSequImpedanzWx.x01;
4414
- powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
4415
- powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4416
- powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4417
4389
  /* const ziel = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
4418
4390
  const zielTerminal = ziel ? this.createConnection(cimModel, powerTransformer, ziel, PhaseCode.ABC, true, 2) : undefined;*/
4419
4391
  const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
@@ -4434,6 +4406,14 @@ class ConverterIntegral7 {
4434
4406
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
4435
4407
  powerTransformerEnd2.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd2.endNumber, powerTransformerEnd2.grounded);
4436
4408
  powerTransformerEnd2.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd2.endNumber);
4409
+ // NullSystem Impedanzen (nur Reaktanzen)
4410
+ let starconnectionCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer);
4411
+ //const zeroSequImpedanzWx = calculateZeroSequImpedanzenTrafo2W([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2]);
4412
+ const zeroSequImpedanzWx = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2], starconnectionCount)[0];
4413
+ powerTransformerEnd1.x0 = zeroSequImpedanzWx.x01;
4414
+ powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
4415
+ powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4416
+ powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4437
4417
  /** Transormator Anschlusspunkte nach Spannungsebene sortieren */
4438
4418
  this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4439
4419
  // TODO
@@ -4517,10 +4497,10 @@ class ConverterIntegral7 {
4517
4497
  else {
4518
4498
  this.logger.debug(`Trafo3W ${i7Data.id} besitzt keine Umspannanlage.`);
4519
4499
  }
4520
- const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer, this.configUuid);
4500
+ const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer, this.configUuid);
4521
4501
  /** AssetInfos */
4522
4502
  if (i7Data.baujahr) {
4523
- util_asset_model_1.UtilAssetModel.setLifecycleDate(facility, i7Data.baujahr);
4503
+ util_cim_model_1.UtilCimModel.setLifecycleDate(facility, i7Data.baujahr);
4524
4504
  }
4525
4505
  const powerTransformerInfo = this.cimModelDefault.getPowerTransformerInfoByName(i7Data.nametyp);
4526
4506
  if (powerTransformerInfo) {
@@ -4538,12 +4518,14 @@ class ConverterIntegral7 {
4538
4518
  if (i7Data.nametyp) {
4539
4519
  const stop = true;
4540
4520
  }
4541
- const x00r1 = (0, parser_utils_1.isNumericI7)(i7Data.x00r1) ? i7Data.x00r1 : 0;
4542
- const x0kr1 = (0, parser_utils_1.isNumericI7)(i7Data.x0kr1) ? i7Data.x0kr1 : 0;
4543
- const x00r2 = (0, parser_utils_1.isNumericI7)(i7Data.x00r2) ? i7Data.x00r2 : 0;
4544
- const r00r1 = (0, parser_utils_1.isNumericI7)(i7Data.r00r1) ? i7Data.r00r1 : 0;
4545
- const r0kr1 = (0, parser_utils_1.isNumericI7)(i7Data.r0kr1) ? i7Data.r0kr1 : 0;
4546
- const r00r2 = (0, parser_utils_1.isNumericI7)(i7Data.r00r2) ? i7Data.r00r2 : 0;
4521
+ const x00r1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x00r1');
4522
+ const x0kr1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x0kr1');
4523
+ const x00r2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x00r2');
4524
+ const x0kr2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x0kr2');
4525
+ const r00r1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r00r1');
4526
+ const r0kr1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r0kr1');
4527
+ const r00r2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r00r2');
4528
+ const r0kr2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r0kr2');
4547
4529
  const pkr12 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12');
4548
4530
  const pkr13 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '13');
4549
4531
  const pkr23 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '23');
@@ -4567,8 +4549,9 @@ class ConverterIntegral7 {
4567
4549
  const impedanzW1 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(1, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, pLeer, iLeer);
4568
4550
  const impedanzW2 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(2, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, 0, 0);
4569
4551
  const impedanzW3 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(3, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, 0, 0);
4570
- // NullSystem Impedanzen (nur Reaktanzen)
4571
- const zeroSequImpedanzWx = (0, utils_trafo3w_1.calculateZeroSequImpedanzenTrafo3W)(r00r1, r0kr1, r00r2, x00r1, x0kr1, x00r2, ur1, ur2, ur3);
4552
+ if (powerTransformer.getUUID() === '120a9c2c93ff4a81b494ff63d356c266') {
4553
+ let stop = true;
4554
+ }
4572
4555
  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}`);
4573
4556
  powerTransformerEnd1.endNumber = 1;
4574
4557
  // Topologie
@@ -4607,8 +4590,6 @@ class ConverterIntegral7 {
4607
4590
  powerTransformerEnd1.x = impedanzW1.x;
4608
4591
  powerTransformerEnd1.g = impedanzW1.g;
4609
4592
  powerTransformerEnd1.b = impedanzW1.b;
4610
- powerTransformerEnd1.x0 = zeroSequImpedanzWx.x01;
4611
- powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
4612
4593
  powerTransformerEnd1.ratedU = ur1;
4613
4594
  powerTransformerEnd1.ratedS = sr1;
4614
4595
  this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
@@ -4659,8 +4640,6 @@ class ConverterIntegral7 {
4659
4640
  powerTransformerEnd2.x = impedanzW2.x;
4660
4641
  powerTransformerEnd2.g = impedanzW2.g;
4661
4642
  powerTransformerEnd2.b = impedanzW2.b;
4662
- powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4663
- powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4664
4643
  powerTransformerEnd2.ratedS = sr2;
4665
4644
  powerTransformerEnd2.ratedU = ur2;
4666
4645
  powerTransformerEnd2.powerTransformer = powerTransformer;
@@ -4709,8 +4688,6 @@ class ConverterIntegral7 {
4709
4688
  powerTransformerEnd3.x = impedanzW3.x;
4710
4689
  powerTransformerEnd3.g = impedanzW3.g;
4711
4690
  powerTransformerEnd3.b = impedanzW3.b;
4712
- powerTransformerEnd3.x0 = zeroSequImpedanzWx.x03;
4713
- powerTransformerEnd3.r0 = zeroSequImpedanzWx.r03;
4714
4691
  powerTransformerEnd3.ratedS = sr3;
4715
4692
  powerTransformerEnd3.ratedU = ur3;
4716
4693
  powerTransformerEnd3.powerTransformer = powerTransformer;
@@ -4727,6 +4704,19 @@ class ConverterIntegral7 {
4727
4704
  //set transformer end winding connection
4728
4705
  powerTransformerEnd3.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd3.endNumber, powerTransformerEnd3.grounded);
4729
4706
  powerTransformerEnd3.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd3.endNumber);
4707
+ // NullSystem Impedanzen (nur Reaktanzen)
4708
+ let groundingCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer);
4709
+ const retVal = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur1, ur2, ur3], groundingCount, powerTransformer);
4710
+ if (retVal[1] == false) { //return value is false, thus there was an error in computation
4711
+ this.logger.warn(`PowerTransformer3W ${i7Data.id} ${powerTransformer.mrid} hat unterbestimmte Definitionen in den Nullsystemdaten.`);
4712
+ }
4713
+ const zeroSequImpedanzWx = retVal[0];
4714
+ powerTransformerEnd1.x0 = zeroSequImpedanzWx.x01;
4715
+ powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
4716
+ powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4717
+ powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4718
+ powerTransformerEnd3.x0 = zeroSequImpedanzWx.x03;
4719
+ powerTransformerEnd3.r0 = zeroSequImpedanzWx.r03;
4730
4720
  // Transormator Anschlusspunkte nach Spannungsebene sortieren
4731
4721
  this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4732
4722
  //TODO
@@ -5044,93 +5034,70 @@ class ConverterIntegral7 {
5044
5034
  for (const terminal of acLineSegment.terminals.values()) {
5045
5035
  const ir = (0, parser_utils_1.isNumericI7)(data.ir) ? (0, parser_utils_1.convertToNumberI7)(data.ir) : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.ratedCurrent) ? (0, parser_utils_1.convertToNumberI7)(assetType.ratedCurrent) : undefined);
5046
5036
  const igrenz = (0, parser_utils_1.isNumericI7)(data.igrenz) ? (0, parser_utils_1.convertToNumberI7)(data.igrenz) : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.limitingCurrent) ? (0, parser_utils_1.convertToNumberI7)(assetType.limitingCurrent) : undefined);
5047
- this.setConductingEquipmentOperationalLimit(cimModel, acLineSegment.name, terminal, ir, new CurrentLimit_1.CurrentLimit(common_utils_1.CommonUtils.generateUUID(), acLineSegment.name), igrenz);
5037
+ const equipmentKey = acLineSegment.getUUID();
5038
+ this.setConductingEquipmentOperationalLimit(cimModel, acLineSegment.name, terminal, equipmentKey, ir, cim_class_names_1.ClassNames.CurrentLimit, igrenz);
5048
5039
  //PSRType
5049
- const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, data.typ);
5040
+ const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, data.typ, this.configUuid);
5050
5041
  acLineSegment.psrTypeUUID = psrType.mrid;
5051
5042
  }
5052
5043
  }
5053
- setConductingEquipmentOperationalLimit(cimModel, name, terminal, physLimit, limit, igrenz) {
5054
- let operationalLimitSet = undefined;
5055
- let operationalLimitTypePatl = undefined;
5056
- if (limit instanceof CurrentLimit_1.CurrentLimit) {
5057
- //mandatory for aclinesegments and powertransformers
5058
- const ir = physLimit;
5059
- let currentLimitTatl = undefined;
5060
- let currentLimitPatl = undefined;
5061
- let operationalLimitTypeTatl = undefined;
5062
- if (ir) {
5063
- currentLimitPatl = limit;
5064
- currentLimitPatl.value = new CurrentFlow_1.CurrentFlow(ir, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
5065
- cimModel.addCurrentLimit(currentLimitPatl);
5066
- }
5067
- //optional
5068
- if (igrenz) {
5069
- currentLimitTatl = new CurrentLimit_1.CurrentLimit(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5070
- currentLimitTatl.value = new CurrentFlow_1.CurrentFlow(igrenz, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
5071
- cimModel.addCurrentLimit(currentLimitTatl);
5072
- }
5073
- if (currentLimitPatl && currentLimitTatl) {
5074
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5075
- cimModel.addOperationalLimitSet(operationalLimitSet);
5076
- operationalLimitSet.addOperationalLimit(currentLimitPatl);
5077
- currentLimitPatl.operationalLimitSet = operationalLimitSet;
5078
- operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5079
- operationalLimitTypePatl.addOperationalLimit(currentLimitPatl);
5080
- currentLimitPatl.operationalLimitType = operationalLimitTypePatl;
5081
- operationalLimitSet.terminal = terminal;
5082
- operationalLimitSet.addOperationalLimit(currentLimitTatl);
5083
- currentLimitTatl.operationalLimitSet = operationalLimitSet;
5084
- operationalLimitTypeTatl = this.createIfNotExistOperationalLimitType(cimModel, 'tatl', LimitTypeKind_1.LimitTypeKind.tatl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5085
- operationalLimitTypeTatl.addOperationalLimit(currentLimitTatl);
5086
- currentLimitTatl.operationalLimitType = operationalLimitTypeTatl;
5087
- }
5088
- else if (currentLimitPatl) {
5089
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5090
- cimModel.addOperationalLimitSet(operationalLimitSet);
5091
- operationalLimitSet.addOperationalLimit(currentLimitPatl);
5092
- currentLimitPatl.operationalLimitSet = operationalLimitSet;
5093
- operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5094
- operationalLimitTypePatl.addOperationalLimit(currentLimitPatl);
5095
- currentLimitPatl.operationalLimitType = operationalLimitTypePatl;
5096
- operationalLimitSet.terminal = terminal;
5097
- }
5098
- else if (currentLimitTatl) {
5099
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5100
- cimModel.addOperationalLimitSet(operationalLimitSet);
5101
- operationalLimitSet.addOperationalLimit(currentLimitTatl);
5102
- currentLimitTatl.operationalLimitSet = operationalLimitSet;
5103
- operationalLimitTypeTatl = this.createIfNotExistOperationalLimitType(cimModel, 'tatl', LimitTypeKind_1.LimitTypeKind.tatl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5104
- operationalLimitTypeTatl.addOperationalLimit(currentLimitTatl);
5105
- currentLimitTatl.operationalLimitType = operationalLimitTypeTatl;
5106
- operationalLimitSet.terminal = terminal;
5044
+ /**
5045
+ * @param equipmentKey Generierung einer persistenter UUID v5. Für PowerTransformer wird UUID des PowerTransformerEnds verwendet. Andernfalls die UUID des ConductingEquipments
5046
+ * */
5047
+ setConductingEquipmentOperationalLimit(cimModel, name, terminal, equipmentKey, limit, limitType, igrenz) {
5048
+ if ((limit !== undefined && limit > 0) && (igrenz !== undefined && igrenz > 0))
5049
+ return;
5050
+ /** OperationalLimitSet erstellen */
5051
+ const operationalLimitSetKey = terminal.getUUID() + equipmentKey;
5052
+ const operationalLimitSetUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.OperationalLimitSet, this.configUuid, operationalLimitSetKey);
5053
+ const operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(operationalLimitSetUUID, `${name}`);
5054
+ operationalLimitSet.terminal = terminal;
5055
+ cimModel.addOperationalLimitSet(operationalLimitSet);
5056
+ switch (limitType) {
5057
+ case cim_class_names_1.ClassNames.CurrentLimit: {
5058
+ if (limit !== undefined && limit > 0) {
5059
+ const operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5060
+ const currentLimitPatlKey = operationalLimitTypePatl.getUUID() + operationalLimitSet.getUUID();
5061
+ const currentLimitPatlUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.CurrentLimit, this.configUuid, currentLimitPatlKey);
5062
+ const currentLimitPatl = new CurrentLimit_1.CurrentLimit(currentLimitPatlUuid, `${name}`);
5063
+ currentLimitPatl.value = new CurrentFlow_1.CurrentFlow(limit, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
5064
+ util_cim_model_1.UtilCimModel.associateOperationalLimitWithSetType(currentLimitPatl, operationalLimitSet, operationalLimitTypePatl);
5065
+ cimModel.addCurrentLimit(currentLimitPatl);
5066
+ }
5067
+ if (igrenz !== undefined && igrenz > 0) {
5068
+ const operationalLimitTypeTatl = this.createIfNotExistOperationalLimitType(cimModel, 'tatl', LimitTypeKind_1.LimitTypeKind.tatl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5069
+ const currentLimitTatlKey = operationalLimitTypeTatl.getUUID() + operationalLimitSet.getUUID();
5070
+ const currentLimitTatlUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.CurrentLimit, this.configUuid, currentLimitTatlKey);
5071
+ const currentLimitTatl = new CurrentLimit_1.CurrentLimit(currentLimitTatlUuid, `${name}`);
5072
+ currentLimitTatl.value = new CurrentFlow_1.CurrentFlow(igrenz, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
5073
+ util_cim_model_1.UtilCimModel.associateOperationalLimitWithSetType(currentLimitTatl, operationalLimitSet, operationalLimitTypeTatl);
5074
+ cimModel.addCurrentLimit(currentLimitTatl);
5075
+ }
5076
+ break;
5107
5077
  }
5108
- }
5109
- else if (limit instanceof ApparentPowerLimit_1.ApparentPowerLimit) {
5110
- let apparentPowerLimit = undefined;
5111
- if (physLimit != undefined) {
5112
- apparentPowerLimit = limit;
5113
- apparentPowerLimit.uuid = common_utils_1.CommonUtils.generateUUID();
5114
- apparentPowerLimit.name = `${name}`;
5115
- cimModel.addCurrentLimit(apparentPowerLimit);
5116
- apparentPowerLimit.value = new ApparentPower_1.ApparentPower(physLimit, UnitMultiplier_1.UnitMultiplier.M, UnitSymbol_1.UnitSymbol.VA);
5117
- if (apparentPowerLimit) {
5118
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5119
- cimModel.addOperationalLimitSet(operationalLimitSet);
5120
- operationalLimitSet.addOperationalLimit(apparentPowerLimit);
5121
- apparentPowerLimit.operationalLimitSet = operationalLimitSet;
5122
- operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5123
- operationalLimitTypePatl.addOperationalLimit(apparentPowerLimit);
5124
- apparentPowerLimit.operationalLimitType = operationalLimitTypePatl;
5125
- operationalLimitSet.terminal = terminal;
5078
+ case cim_class_names_1.ClassNames.ApparentPowerLimit: {
5079
+ if (limit !== undefined && limit > 0) {
5080
+ const operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5081
+ const apparentLimitPatlKey = operationalLimitTypePatl.getUUID() + operationalLimitSet.getUUID();
5082
+ const apparentLimitPatlUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ApparentPowerLimit, this.configUuid, apparentLimitPatlKey);
5083
+ const apparentLimitPatl = new ApparentPowerLimit_1.ApparentPowerLimit(apparentLimitPatlUuid, `${name}`);
5084
+ apparentLimitPatl.value = new ApparentPower_1.ApparentPower(limit, UnitMultiplier_1.UnitMultiplier.M, UnitSymbol_1.UnitSymbol.VA);
5085
+ util_cim_model_1.UtilCimModel.associateOperationalLimitWithSetType(apparentLimitPatl, operationalLimitSet, operationalLimitTypePatl);
5086
+ cimModel.addApparentPowerLimit(apparentLimitPatl);
5126
5087
  }
5088
+ break;
5089
+ }
5090
+ default: {
5091
+ console.log(`setConductingEquipmentOperationalLimit: unknown limit type ${limitType}`);
5127
5092
  }
5128
5093
  }
5129
5094
  }
5130
5095
  createIfNotExistOperationalLimitType(cimModel, name, type, direction) {
5131
5096
  let operationalLimitType = cimModel.getOperationalLimitTypeByName(name);
5132
5097
  if (!operationalLimitType) {
5133
- operationalLimitType = new OperationalLimitType_1.OperationalLimitType(common_utils_1.CommonUtils.generateUUID(), name);
5098
+ const key = type + direction;
5099
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.OperationalLimitType, this.configUuid, key);
5100
+ operationalLimitType = new OperationalLimitType_1.OperationalLimitType(uuid, name);
5134
5101
  operationalLimitType.direction = direction;
5135
5102
  operationalLimitType.limitType = type;
5136
5103
  cimModel.addOperationalLimitType(operationalLimitType);
@@ -5142,7 +5109,9 @@ class ConverterIntegral7 {
5142
5109
  let terminal;
5143
5110
  if (object instanceof ConnectivityNode_1.ConnectivityNode) {
5144
5111
  const cn = object;
5145
- terminal = new Terminal_1.Terminal(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_T']));
5112
+ const key = cn.getUUID() + (conductingEquipment === null || conductingEquipment === void 0 ? void 0 : conductingEquipment.getUUID());
5113
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
5114
+ terminal = new Terminal_1.Terminal(uuid, (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_T']));
5146
5115
  isNameSet = true;
5147
5116
  terminal.setConnectivityNode(cn);
5148
5117
  //terminal.setConnectivityNodeUUID(cn.getUUID());
@@ -5194,7 +5163,9 @@ class ConverterIntegral7 {
5194
5163
  const object = cimModelBD.getObject(anschlussUUID);
5195
5164
  if (object instanceof ConnectivityNode_1.ConnectivityNode) {
5196
5165
  cn = object;
5197
- terminal = new Terminal_1.Terminal(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_', cn.getUUID().substring(0, 8), '_BD_T']));
5166
+ const key = cn.getUUID() + (conductingEquipment === null || conductingEquipment === void 0 ? void 0 : conductingEquipment.getUUID());
5167
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
5168
+ terminal = new Terminal_1.Terminal(uuid, (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_', cn.getUUID().substring(0, 8), '_BD_T']));
5198
5169
  /** wchtig uuid zu setzen, da sonst ein memory leak entsteht */
5199
5170
  terminal.connectivityNodeUUID = cn.mrid;
5200
5171
  terminal.phases = phase;
@@ -5248,7 +5219,7 @@ class ConverterIntegral7 {
5248
5219
  createBoundaryEquivalentInjection(frame, cn) {
5249
5220
  let equivalentInjection = undefined;
5250
5221
  //Test if frame is boundary.
5251
- if (!frame.boundary) {
5222
+ if (false /*!frame.boundary*/) {
5252
5223
  //Test if boundary Injection for this mas already exists
5253
5224
  let equivinj_exists = false;
5254
5225
  frame.cimModel.equivalentInjections.forEach((equivinj, uuid) => {
@@ -5258,14 +5229,18 @@ class ConverterIntegral7 {
5258
5229
  }
5259
5230
  });
5260
5231
  if (!equivinj_exists) {
5232
+ const keyEquivalentInjection = frame.tsoName + cn.getUUID();
5233
+ const uuidEquivalentInjection = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.EquivalentInjection, this.configUuid, keyEquivalentInjection);
5234
+ equivalentInjection = new EquivalentInjection_1.EquivalentInjection(uuidEquivalentInjection, (0, util_create_1.createNotation)([frame.tsoName, '_BD-EI', '_' + cn.mrid.substring(0, 8)], 32, true));
5261
5235
  //create terminal
5262
- let tmp_terminal = new Terminal_1.Terminal(common_utils_1.CommonUtils.generateUUID());
5236
+ const key = cn.getUUID() + equivalentInjection.getUUID();
5237
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
5238
+ let tmp_terminal = new Terminal_1.Terminal(uuid);
5263
5239
  tmp_terminal.setConnectivityNodeUUID(cn.mrid);
5264
5240
  tmp_terminal.phases = PhaseCode_1.PhaseCode.ABC;
5265
5241
  tmp_terminal.connected = true;
5266
5242
  tmp_terminal.sequenceNumber = 1;
5267
5243
  //create equivalent injection as boundary injection
5268
- equivalentInjection = new EquivalentInjection_1.EquivalentInjection(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([frame.tsoName, '_BD-EI', '_' + cn.mrid.substring(0, 8)], 32, true));
5269
5244
  equivalentInjection.p = 0;
5270
5245
  equivalentInjection.q = 0;
5271
5246
  equivalentInjection.regulationStatus = false;
@@ -5676,8 +5651,7 @@ class ConverterIntegral7 {
5676
5651
  if (terminal) {
5677
5652
  // Topologie
5678
5653
  powerTransformerEnd.terminal = terminal;
5679
- // ApparentPowerLimit
5680
- this.setConductingEquipmentOperationalLimit(cimModel, `W${powerTransformerEnd.endNumber}` + (powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name), terminal, sdauer, new ApparentPowerLimit_1.ApparentPowerLimit());
5654
+ 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);
5681
5655
  let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
5682
5656
  // Erdung / Sternpunkt
5683
5657
  if (sternpunktKnotenMap.has(i7Data.id) && isTrafo2w) {
@@ -5883,36 +5857,38 @@ class ConverterIntegral7 {
5883
5857
  if (uMax === uMin) {
5884
5858
  const stop = true;
5885
5859
  }
5886
- const ratioTapChangerTable = new RatioTapChangerTable_1.RatioTapChangerTable(common_utils_1.CommonUtils.generateUUID(), `${i7Data.bezeichner} W_${tapChangerNumber}`);
5860
+ const keyTable = ratioTapChanger === null || ratioTapChanger === void 0 ? void 0 : ratioTapChanger.getUUID();
5861
+ const uuidTable = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.RatioTapChangerTable, this.configUuid, keyTable);
5862
+ const ratioTapChangerTable = new RatioTapChangerTable_1.RatioTapChangerTable(uuidTable, `${i7Data.bezeichner} W_${tapChangerNumber}`);
5887
5863
  let step_tmp = 0;
5888
5864
  let start_step_tmp = step_tmp;
5889
5865
  //voltage decrement
5890
5866
  if (uMin < 0) {
5891
5867
  for (let i = 0; i < Math.abs(lowerVoltageStepCount); i++) {
5892
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((Math.abs(lowerVoltageStepDecrement) * Math.abs(lowerVoltageStepCount - i)) / 100)));
5868
+ (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((Math.abs(lowerVoltageStepDecrement) * Math.abs(lowerVoltageStepCount - i)) / 100)), this.configUuid);
5893
5869
  step_tmp = i;
5894
5870
  }
5895
5871
  }
5896
5872
  else {
5897
5873
  for (let i = 0; i < Math.abs(lowerVoltageStepCount); i++) {
5898
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((lowerVoltageStepDecrement * Math.abs(lowerVoltageStepCount - i)) / 100)));
5874
+ (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((lowerVoltageStepDecrement * Math.abs(lowerVoltageStepCount - i)) / 100)), this.configUuid);
5899
5875
  step_tmp = i;
5900
5876
  }
5901
5877
  }
5902
5878
  //neutral step
5903
5879
  step_tmp++;
5904
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[step_tmp], 1);
5880
+ (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[step_tmp], 1, this.configUuid);
5905
5881
  step_tmp++;
5906
5882
  start_step_tmp = step_tmp;
5907
5883
  //voltage increment
5908
5884
  if (uMax > 0) {
5909
5885
  for (let i = start_step_tmp; i < start_step_tmp + Math.abs(upperVoltageStepCount); i++) {
5910
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)));
5886
+ (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)), this.configUuid);
5911
5887
  }
5912
5888
  }
5913
5889
  else {
5914
5890
  for (let i = start_step_tmp; i < start_step_tmp + Math.abs(upperVoltageStepCount); i++) {
5915
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)));
5891
+ (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)), this.configUuid);
5916
5892
  }
5917
5893
  }
5918
5894
  tapChanger.ratioTapChangerTable = ratioTapChangerTable;
@@ -6129,7 +6105,7 @@ class ConverterIntegral7 {
6129
6105
  // TODO
6130
6106
  powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground;
6131
6107
  if (!junctionUUID) {
6132
- /** Fall 1 Wenn der Knoten keinen Schaltelement hat, dann direkte Erdung */
6108
+ /** Fall 1 Wenn der Knoten kein Schaltelement hat, dann direkte Erdung */
6133
6109
  //TODO
6134
6110
  // rground und xground aus der default-config verwenden?
6135
6111
  powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground;