@enervance/insight-cim-model 0.0.269 → 0.0.271

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 (91) hide show
  1. package/dist/converter/integral7/config/integral-prefix.d.ts +5 -0
  2. package/dist/converter/integral7/config/integral-prefix.js +6 -1
  3. package/dist/converter/integral7/config/integral-prefix.js.map +1 -1
  4. package/dist/converter/integral7/converter.integral7.d.ts +3 -2
  5. package/dist/converter/integral7/converter.integral7.js +561 -325
  6. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  7. package/dist/converter/integral7/dl-convert/executor.js +1 -1
  8. package/dist/converter/integral7/dl-convert/executor.js.map +1 -1
  9. package/dist/converter/integral7/interface-i7/data-structures-i7.d.ts +17 -11
  10. package/dist/converter/integral7/interface-i7/default-values-config.interface.d.ts +3 -0
  11. package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +10 -8
  12. package/dist/converter/integral7/interface-i7/export-frame-i7.js +16 -10
  13. package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
  14. package/dist/converter/integral7/model/interfaces.d.ts +26 -0
  15. package/dist/converter/integral7/model/interfaces.js.map +1 -1
  16. package/dist/converter/integral7/sql/integral.sql.d.ts +3 -0
  17. package/dist/converter/integral7/sql/integral.sql.js +17 -3
  18. package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
  19. package/dist/converter/integral7/utils-cgmes-export.js +1 -0
  20. package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
  21. package/dist/converter/integral7/utils.d.ts +12 -3
  22. package/dist/converter/integral7/utils.js +91 -14
  23. package/dist/converter/integral7/utils.js.map +1 -1
  24. package/dist/data-structures/graph/graph-interfaces.d.ts +18 -2
  25. package/dist/data-structures/graph/graph-interfaces.js +12 -0
  26. package/dist/data-structures/graph/graph-interfaces.js.map +1 -1
  27. package/dist/data-structures/graph/graph-util.d.ts +5 -3
  28. package/dist/data-structures/graph/graph-util.js +23 -13
  29. package/dist/data-structures/graph/graph-util.js.map +1 -1
  30. package/dist/etl/etl-neplan/etl-neplan-csv.js +0 -1
  31. package/dist/etl/etl-neplan/etl-neplan-csv.js.map +1 -1
  32. package/dist/etl/etl-neplan/etl-neplan.js +1 -1
  33. package/dist/etl/etl-neplan/etl-neplan.js.map +1 -1
  34. package/dist/etl/etl-neplan/neplan-contingency-analysis.d.ts +0 -1
  35. package/dist/etl/etl-neplan/neplan-contingency-analysis.js +111 -132
  36. package/dist/etl/etl-neplan/neplan-contingency-analysis.js.map +1 -1
  37. package/dist/interfaces/model/core/ITerminal.d.ts +2 -1
  38. package/dist/model/core/ConductingEquipment.js +1 -1
  39. package/dist/model/core/ConductingEquipment.js.map +1 -1
  40. package/dist/model/dc/ACDCConverter.js +0 -2
  41. package/dist/model/dc/ACDCConverter.js.map +1 -1
  42. package/dist/model/dc/DCLineSegment.d.ts +2 -0
  43. package/dist/model/dc/DCLineSegment.js +16 -0
  44. package/dist/model/dc/DCLineSegment.js.map +1 -1
  45. package/dist/model/dc/VsCapabilityCurve.js.map +1 -1
  46. package/dist/model/dc/VsConverter.d.ts +1 -0
  47. package/dist/model/dc/VsConverter.js +13 -0
  48. package/dist/model/dc/VsConverter.js.map +1 -1
  49. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.d.ts +1 -0
  50. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js +1 -0
  51. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js.map +1 -1
  52. package/dist/model/extensions/enervance/operations/EVSwitchingPlanKind.d.ts +5 -0
  53. package/dist/model/extensions/enervance/operations/EVSwitchingPlanKind.js +10 -0
  54. package/dist/model/extensions/enervance/operations/EVSwitchingPlanKind.js.map +1 -0
  55. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.d.ts +1 -0
  56. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.js.map +1 -1
  57. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.d.ts +3 -0
  58. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js +14 -0
  59. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js.map +1 -1
  60. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformerInfo.js.map +1 -1
  61. package/dist/model/extensions/integral/dc/DCLineSegment.d.ts +10 -0
  62. package/dist/model/extensions/integral/dc/DCLineSegment.js +31 -0
  63. package/dist/model/extensions/integral/dc/DCLineSegment.js.map +1 -0
  64. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.d.ts +2 -0
  65. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js +8 -0
  66. package/dist/model/extensions/integral/wires/INTEGRALACLineSegment.js.map +1 -1
  67. package/dist/model/operationallimits/ApparentPowerLimit.js +2 -2
  68. package/dist/model/operationallimits/ApparentPowerLimit.js.map +1 -1
  69. package/dist/model/operations/SwitchingPlan.d.ts +3 -0
  70. package/dist/model/operations/SwitchingPlan.js +10 -0
  71. package/dist/model/operations/SwitchingPlan.js.map +1 -1
  72. package/dist/model/wires/GroundDisconnector.d.ts +3 -0
  73. package/dist/model/wires/GroundDisconnector.js +14 -0
  74. package/dist/model/wires/GroundDisconnector.js.map +1 -1
  75. package/dist/model/wires/PowerTransformer.js +1 -1
  76. package/dist/model/wires/PowerTransformer.js.map +1 -1
  77. package/dist/model/wires/SeriesCompensator.js +6 -4
  78. package/dist/model/wires/SeriesCompensator.js.map +1 -1
  79. package/dist/model/wires/Switch.js +1 -1
  80. package/dist/model/wires/Switch.js.map +1 -1
  81. package/dist/model-container/model/ModelContainer.d.ts +1 -0
  82. package/dist/model-container/model/ModelContainer.js +4 -0
  83. package/dist/model-container/model/ModelContainer.js.map +1 -1
  84. package/dist/util/util-create.js +9 -1
  85. package/dist/util/util-create.js.map +1 -1
  86. package/dist/utils2/parser.utils.js +2 -2
  87. package/dist/utils2/parser.utils.js.map +1 -1
  88. package/dist/utils2/permutation.utils.d.ts +9 -0
  89. package/dist/utils2/permutation.utils.js +37 -0
  90. package/dist/utils2/permutation.utils.js.map +1 -0
  91. package/package.json +1 -1
@@ -28,7 +28,6 @@ const CsConverter_1 = require("../../model/dc/CsConverter.js");
28
28
  const CsOperatingModeKind_1 = require("../../model/dc/CsOperatingModeKind.js");
29
29
  const DCConverterOperatingModeKind_1 = require("../../model/dc/DCConverterOperatingModeKind.js");
30
30
  const DCLine_1 = require("../../model/dc/DCLine.js");
31
- const DCLineSegment_1 = require("../../model/dc/DCLineSegment.js");
32
31
  const DCNode_1 = require("../../model/dc/DCNode.js");
33
32
  const DCTerminal_1 = require("../../model/dc/DCTerminal.js");
34
33
  const VsConverter_1 = require("../../model/dc/VsConverter.js");
@@ -143,9 +142,12 @@ const INTEGRALPowerTransformer2WInfo_1 = require("../../model/extensions/integra
143
142
  const impedance_utils_1 = require("./impedance.utils.js");
144
143
  const util_cim_model_1 = require("./util-cim.model.js");
145
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");
146
147
  const i7_graph_utils_1 = require("./model/i7-graph-utils.js");
147
148
  const TopologicalNode_1 = require("../../model/topology/TopologicalNode.js");
148
149
  const geodata_util_1 = require("../../util/geodata.util.js");
150
+ const DCLineSegment_1 = require("../../model/extensions/integral/dc/DCLineSegment.js");
149
151
  class ConverterIntegral7 {
150
152
  set configurableDLConvertOptions(arg) {
151
153
  tslib_1.__classPrivateFieldSet(this, _ConverterIntegral7_configurableDLConvertOptions, arg, "f");
@@ -217,6 +219,7 @@ class ConverterIntegral7 {
217
219
  yield this.queryErsatzLaengsAnschlussIDs();
218
220
  yield this.queryLkondensatorAnschlussIDs();
219
221
  /** BD Profile */
222
+ this.logger.debug('Convert BD Profiles');
220
223
  console.log('Convert BD Profiles');
221
224
  let boundaryEqUUId = undefined;
222
225
  for (const entry of this.exportFramesBoundary.entries()) {
@@ -228,6 +231,7 @@ class ConverterIntegral7 {
228
231
  continue;
229
232
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
230
233
  }
234
+ this.logger.debug('Convert MAS Profiles');
231
235
  console.log('Convert MAS Profiles');
232
236
  for (const entry of this.exportFrames.entries()) {
233
237
  const geoRegionUUID = entry[0];
@@ -236,6 +240,7 @@ class ConverterIntegral7 {
236
240
  if (!geoRegion)
237
241
  continue;
238
242
  // frame.addDependentModel(RDF_XML.PROFILE_EQ_BD, this.exportFramesBoundary.entries().next()?.value[1].getModelUUID(RDF_XML.PROFILE_EQ_BD));
243
+ this.logger.debug(`Convert MAS profile: ${frame.mas}`);
239
244
  console.log(`Convert MAS profile: ${frame.mas}`);
240
245
  yield this.convertFrame(frame, geoRegion, objectMappingConfig, energyTypesConfig, defaultValuesConfig, energySourceTypeMappingConfig);
241
246
  if (boundaryEqUUId) {
@@ -245,6 +250,7 @@ class ConverterIntegral7 {
245
250
  frame.purgeData();
246
251
  const startTime = perf_hooks.performance.now();
247
252
  frame.openXMLModel();
253
+ this.logger.debug(`Serialize MAS profile: ${frame.mas}`);
248
254
  console.log(`Serialize MAS profile: ${frame.mas}`);
249
255
  frame.serializeModel(defaultValuesConfig);
250
256
  yield frame.closeXMLModel();
@@ -252,7 +258,7 @@ class ConverterIntegral7 {
252
258
  frame.cimModel.purgeData();
253
259
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
254
260
  }
255
- console.log('Serialize BD Profiles');
261
+ this.logger.debug('Serialize BD Profiles');
256
262
  for (const entry of this.exportFramesBoundary.entries()) {
257
263
  const geoRegionUUID = entry[0];
258
264
  const frame = entry[1];
@@ -271,7 +277,7 @@ class ConverterIntegral7 {
271
277
  let endTime = perf_hooks.performance.now();
272
278
  console.log(`\nSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds\n`);
273
279
  }
274
- console.log('Serialize Default Profile');
280
+ this.logger.debug('Serialize Default Profile');
275
281
  this.exportFrameDefault.openXMLModel();
276
282
  this.exportFrameDefault.serializeModel(defaultValuesConfig);
277
283
  yield this.exportFrameDefault.closeXMLModel();
@@ -497,9 +503,9 @@ class ConverterIntegral7 {
497
503
  startTime = perf_hooks.performance.now();
498
504
  const stpSchieneID = yield this.convertSternpunktSchienen(cimModel, integral7Modell, standortIDs);
499
505
  /** KDrossel -> GroundingImpedance/PetersenCoil */
500
- yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID);
506
+ yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID, defaultValuesConfig);
501
507
  /** Schaltzustand der Schaltelemente */
502
- yield this.convertStpSchaltelemente(integral7Modell, stpSchieneID);
508
+ yield this.convertStpSchaltelemente(cimModel, integral7Modell, stpSchieneID);
503
509
  logExecutionTime(this.logger, startTime, `convertSternpunkte`);
504
510
  }
505
511
  /** Statcom -> StaticVarCompensator */
@@ -780,7 +786,7 @@ class ConverterIntegral7 {
780
786
  .then((result) => {
781
787
  for (const i7Data of result) {
782
788
  const i7Schluessel = integral_prefix_1.GEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
783
- 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);
789
+ 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);
784
790
  //region.i7key = i7Schluessel;
785
791
  this.addIdMapping(i7Data.id, region.mrid, integral_sql_1.Integral7TableNames.REGION);
786
792
  regions.push(region);
@@ -828,11 +834,12 @@ class ConverterIntegral7 {
828
834
  .then((result) => {
829
835
  for (const i7Data of result) {
830
836
  const i7Schluesel = integral_prefix_1.SUBGEOREGION_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
831
- 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);
837
+ 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)
838
+ ]), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluesel);
832
839
  const regionUUID = this.integralID2UUID.get(i7Data.georegion);
833
840
  let region = regions.find(elem => elem.mrid === regionUUID);
834
841
  if (!region) {
835
- region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name, '_GR']), this.configUuid);
842
+ region = (0, utils_1.createIfNotExitsGeoregionByName)(this.cimModelDefault, (0, util_create_1.createNotation)([defaultValuesConfig.GeographicalRegion.name]), this.configUuid);
836
843
  this.logger.debug(`SubGeographicalRegion UUID ${subregion.mrid} I7-ID ${i7Data.id} Name ${i7Data.bezeichner} hat keine Region.`);
837
844
  }
838
845
  subregion.region = region;
@@ -923,7 +930,7 @@ class ConverterIntegral7 {
923
930
  i7Data.un +
924
931
  integral_prefix_1.MITTIGER_PUNKT +
925
932
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
926
- const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
933
+ const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
927
934
  vl.key = i7Schluessel;
928
935
  const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, vl, cim_constants_1.CimAssetAliasNames.VoltageLevel, this.configUuid);
929
936
  if (i7Data.baujahr) {
@@ -1012,23 +1019,31 @@ class ConverterIntegral7 {
1012
1019
  });
1013
1020
  }
1014
1021
  convertKnotenSo(frame, integral7, standortIDs, defaultValuesConfig) {
1022
+ var _a, _b;
1015
1023
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1016
1024
  const cimModel = frame.cimModel;
1017
1025
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_SO)) {
1018
1026
  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));
1027
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
1019
1028
  for (const i7Data of result) {
1029
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
1020
1030
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
1021
1031
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1022
- // const vl = new VoltageLevel(getUUID(i7Data.guid_v, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
1023
1032
  const vl = new VoltageLevel_1.VoltageLevel(common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VoltageLevel, this.configUuid, rdfid), i7Data.bezeichner, i7Data.kurzname);
1024
- //const rdfid = getUUID(i7Data.guid); /**This is the mrid for TopologicalNode */
1025
1033
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
1034
+ if (connectivityNode.getUUID() === '98d0e9eb-bfb0-4da4-9700-660626da1c56' || connectivityNode.getName() === 'XDU_SL12') {
1035
+ let stop = true;
1036
+ }
1026
1037
  connectivityNode.setConnectivityNodeContainer(vl);
1027
1038
  vl.addConnectivityNode(connectivityNode);
1028
1039
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
1040
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
1029
1041
  if (frame.boundary) {
1030
1042
  connectivityNode.boundaryPoint = true;
1031
1043
  }
1044
+ const key = integral_sql_1.I7Objects.KNOTEN_SO + ((_b = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _b !== void 0 ? _b : '');
1045
+ 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"]));
1046
+ this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
1032
1047
  const un = (0, utils_2.getU)(i7Data.un);
1033
1048
  const baseVoltage = (0, util_create_1.createBaseVoltageIfNotExists)(cimModel, un, this.configUuid, this.exportFramesBoundary);
1034
1049
  /** Spannungsband */
@@ -1044,7 +1059,7 @@ class ConverterIntegral7 {
1044
1059
  integral_prefix_1.MITTIGER_PUNKT +
1045
1060
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
1046
1061
  vl.key = i7Schluessel;
1047
- connectivityNode.description = i7Schluessel;
1062
+ connectivityNode.key = i7Schluessel;
1048
1063
  }
1049
1064
  else {
1050
1065
  this.logger.debug(`KnotenSo ${i7Data.id} ${vl.mrid} besitzt keine Substation.`);
@@ -1086,21 +1101,27 @@ class ConverterIntegral7 {
1086
1101
  });
1087
1102
  }
1088
1103
  convertSammelschienenAbschnitte(cimModel, integral7, schaltanlagenAbschnittIDs) {
1089
- var _a, _b;
1104
+ var _a, _b, _c;
1090
1105
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1091
1106
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SAMMELSCHIENE)) {
1092
1107
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SAMMELSCHIENE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SAMMELSCHIENE), schaltanlagenAbschnittIDs));
1108
+ const netzGruppe = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.NETZGRUPPE, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.NETZGRUPPE), []));
1093
1109
  for (const i7Data of result) {
1094
1110
  const i7Schaltanlagenabschnitt = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1095
- //const rdfid: string = getUUID(i7Data.guid); /** this is the mrid for TopologicalNode*/
1111
+ const netzgruppe = netzGruppe.filter(elem => elem.id === i7Data.netzgruppe);
1112
+ let saab = undefined;
1113
+ if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1114
+ saab = integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt);
1115
+ }
1096
1116
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
1097
1117
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, i7Data.bezeichner, i7Data.kurzname);
1098
1118
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Schaltanlagenabschnitt.id));
1099
1119
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
1120
+ connectivityNode.netzGruppe = (_a = netzgruppe === null || netzgruppe === void 0 ? void 0 : netzgruppe.at(0)) === null || _a === void 0 ? void 0 : _a.bezeichner;
1100
1121
  const keyBusbarSection = [
1101
1122
  integral_sql_1.I7Objects.SAMMELSCHIENE,
1102
- (_a = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID()) !== null && _a !== void 0 ? _a : '',
1103
- (_b = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _b !== void 0 ? _b : ''
1123
+ (_b = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.getUUID()) !== null && _b !== void 0 ? _b : '',
1124
+ (_c = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.getUUID()) !== null && _c !== void 0 ? _c : ''
1104
1125
  ].join('');
1105
1126
  const uuidBusbarSection = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.BusbarSection, this.configUuid, keyBusbarSection);
1106
1127
  const busbarSection = new BusbarSection_1.BusbarSection(uuidBusbarSection, i7Data.bezeichner, i7Schaltanlagenabschnitt.kurzname);
@@ -1116,11 +1137,15 @@ class ConverterIntegral7 {
1116
1137
  voltageLevel.highVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umax) : voltageLevel.highVoltageLimit;
1117
1138
  // umin
1118
1139
  voltageLevel.lowVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umin) : voltageLevel.lowVoltageLimit;
1119
- /**const i7Schluessel = voltageLevel.substation.name +
1120
- SAMMELSCHIENENABSCHNITT_PRAEFIX +
1121
- ueberpruefeZeichenkette(i7Data.bezeichner);
1122
- busbarSection.description = i7Schluessel;
1123
- connectivityNode.description = i7Schluessel;*/
1140
+ //define INTEGRAL Schluessel for ConnectivityNode
1141
+ if (saab !== undefined) {
1142
+ const i7Schluessel = voltageLevel.key +
1143
+ integral_prefix_1.SCHALTANLAGENABSCHNITT_PRAEFIX +
1144
+ (0, utils_2.ueberpruefeZeichenkette)(saab.bezeichner) +
1145
+ integral_prefix_1.SAMMELSCHIENENABSCHNITT_PRAEFIX +
1146
+ (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
1147
+ connectivityNode.key = i7Schluessel;
1148
+ }
1124
1149
  /** Spannungsband */
1125
1150
  integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
1126
1151
  // TODO VoltageLimits?
@@ -1133,7 +1158,7 @@ class ConverterIntegral7 {
1133
1158
  cimModel.addConnectivityNode(connectivityNode);
1134
1159
  cimModel.addBusbarSection(busbarSection);
1135
1160
  /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
1136
- if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1161
+ if (saab !== undefined) {
1137
1162
  integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt).ssab.push(i7Data);
1138
1163
  }
1139
1164
  }
@@ -1150,10 +1175,11 @@ class ConverterIntegral7 {
1150
1175
  const result = yield this.queryDataInChuncks(integral_sql_1.I7Objects.KNOTEN_SF, schaltfeldIDs);
1151
1176
  for (const i7Data of result) {
1152
1177
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.schaltfeld));
1153
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode((0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'knotensf', `${bay.description}/${i7Data.bezeichner}`);
1154
- if (bay) {
1178
+ 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));
1179
+ if (bay !== undefined) {
1155
1180
  connectivityNode.connectivityNodeContainer = bay;
1156
1181
  bay.addConnectivityNode(connectivityNode);
1182
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_SF_PRAEFIX + i7Data.bezeichner;
1157
1183
  }
1158
1184
  else {
1159
1185
  this.logger.debug(`KnotenSf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1178,11 +1204,11 @@ class ConverterIntegral7 {
1178
1204
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.kpfeld));
1179
1205
  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);
1180
1206
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1181
- // const connectivityNode = new ConnectivityNode(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), '_CN']), 'knotenkf');
1182
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'knotenkf');
1207
+ 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));
1183
1208
  if (bay) {
1184
1209
  connectivityNode.connectivityNodeContainer = bay;
1185
1210
  bay.addConnectivityNode(connectivityNode);
1211
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_KF_PRAEFIX + i7Data.bezeichner;
1186
1212
  }
1187
1213
  else {
1188
1214
  this.logger.debug(`KnotenKf ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1205,11 +1231,12 @@ class ConverterIntegral7 {
1205
1231
  const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.lkupplung));
1206
1232
  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);
1207
1233
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
1208
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, i7Data.bezeichner, 'KnotenLk');
1209
- // const connectivityNode = new ConnectivityNode(CommonUtils.generateUUID(), createNotation([getName(i7Data), '_CN']), 'KnotenLk');
1234
+ const name = (0, util_create_1.createNotation)([i7Data.bezeichner, '_CN'], 32, false);
1235
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuid, name, name);
1210
1236
  if (bay) {
1211
1237
  connectivityNode.connectivityNodeContainer = bay;
1212
1238
  bay.addConnectivityNode(connectivityNode);
1239
+ connectivityNode.key = bay.key + integral_prefix_1.KNOTEN_LK_PRAEFIX + i7Data.bezeichner;
1213
1240
  }
1214
1241
  else {
1215
1242
  this.logger.debug(`KnotenLk ${i7Data.id} besitzt kein Schaltfeld.`);
@@ -1232,8 +1259,12 @@ class ConverterIntegral7 {
1232
1259
  const key = integral_sql_1.I7Objects.SCHLAUFE + String(i7Data.id);
1233
1260
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
1234
1261
  const terminal = new Terminal_1.Terminal(uuid, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar);
1262
+ if (terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
1263
+ const stop = true;
1264
+ }
1235
1265
  terminal.connected = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
1236
1266
  terminal.phases = PhaseCode_1.PhaseCode.ABC;
1267
+ terminal.key = integral_prefix_1.SCHLAUFE_PRAEFIX + i7Data.bezeichner;
1237
1268
  this.addIdMapping(i7Data.id, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1238
1269
  this.addIdMapping(i7Data.knotenzw, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
1239
1270
  integral7.kontenZwIDs.push(i7Data.knotenzw);
@@ -1341,6 +1372,101 @@ class ConverterIntegral7 {
1341
1372
  }
1342
1373
  });
1343
1374
  }
1375
+ convertVollUmrichterEinspeisung(cimModel, targetVoltages, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
1376
+ var _a;
1377
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1378
+ const targetClass = objectMappingConfig.Einspeisung.class;
1379
+ if (this.isTableAvailable(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG)) {
1380
+ const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.VOLLUMRICHTEREINSPEISUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG), knotenSfIDs));
1381
+ for (const i7Data of result) {
1382
+ try {
1383
+ const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
1384
+ 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);
1385
+ externalNetworkInjection.nameprimaertyp = 'Wind Onshore';
1386
+ let mf = undefined;
1387
+ mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
1388
+ if (mf) {
1389
+ cimModel.addMultiplierFactor(mf);
1390
+ externalNetworkInjection.multiplierFactorUUID = mf.getUUID();
1391
+ }
1392
+ /** Convert EQ-profile dataset. */
1393
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
1394
+ externalNetworkInjection.maxP = maxP;
1395
+ const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
1396
+ externalNetworkInjection.governorSCD = governorscd;
1397
+ const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
1398
+ externalNetworkInjection.maxQ = maxQ;
1399
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
1400
+ externalNetworkInjection.minP = minP;
1401
+ const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
1402
+ externalNetworkInjection.minQ = minQ;
1403
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
1404
+ /**Convert short circuit constants */
1405
+ const r0X0 = undefined;
1406
+ const r1X1 = undefined;
1407
+ const z0Z1 = undefined;
1408
+ const maxR0X0Ratio = r0X0;
1409
+ externalNetworkInjection.maxR0ToX0Ratio = maxR0X0Ratio;
1410
+ const maxR1X1Ratio = r1X1;
1411
+ externalNetworkInjection.maxR1ToX1Ratio = maxR1X1Ratio;
1412
+ const maxZ0Z1Ratio = z0Z1;
1413
+ externalNetworkInjection.maxZ0ToZ1Ratio = maxZ0Z1Ratio;
1414
+ const minR0X0Ratio = r0X0;
1415
+ externalNetworkInjection.minR0ToX0Ratio = minR0X0Ratio;
1416
+ const minR1X1Ratio = r1X1;
1417
+ externalNetworkInjection.minR1ToX1Ratio = minR1X1Ratio;
1418
+ const minZ0Z1Ratio = z0Z1;
1419
+ externalNetworkInjection.minZ0ToZ1Ratio = minZ0Z1Ratio;
1420
+ const i2sk1 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk1) : undefined;
1421
+ const i2sk2 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2) : undefined;
1422
+ const i2sk2e = (0, parser_utils_1.isNumericI7)(i7Data.i2sk2e) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk2e) : undefined;
1423
+ const i2sk3 = (0, parser_utils_1.isNumericI7)(i7Data.i2sk3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.i2sk3) : undefined;
1424
+ const ikMin = (0, utils_2.transformShortCircuitCurrent)(Math.min(i2sk1, i2sk2, i2sk2e, i2sk3));
1425
+ const ikMax = (0, utils_2.transformShortCircuitCurrent)(Math.max(i2sk1, i2sk2, i2sk2e, i2sk3));
1426
+ externalNetworkInjection.minInitialSymShCCurrent = ikMin;
1427
+ externalNetworkInjection.maxInitialSymShCCurrent = ikMax;
1428
+ const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
1429
+ /** Convert SSH-profile dataset. */
1430
+ /**
1431
+ * @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'.
1432
+ * einspprio having no effect in loadflow calculation if voltage control does not exists.
1433
+ * */
1434
+ let prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
1435
+ if (((_a = externalNetworkInjection.regulatingControl) === null || _a === void 0 ? void 0 : _a.mode) === RegulatingControlModeKind_1.RegulatingControlModeKind.voltage) {
1436
+ if (prio !== undefined && prio > 0) {
1437
+ externalNetworkInjection.referencePriority = prio + 1; //TODO: SLACK is a injection with maximum prio in the network section and active voltage control.
1438
+ }
1439
+ else if (prio !== undefined && prio === 0) {
1440
+ externalNetworkInjection.referencePriority = prio;
1441
+ }
1442
+ else {
1443
+ externalNetworkInjection.referencePriority = undefined;
1444
+ }
1445
+ }
1446
+ const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
1447
+ const p = powerData[0];
1448
+ const q = powerData[1];
1449
+ externalNetworkInjection.setActivePower(p * -1); //convert to load sign system
1450
+ externalNetworkInjection.setReactivePower(q * -1); //convert to load sign system
1451
+ // AMPI7 profile
1452
+ 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;
1453
+ externalNetworkInjection.cos_phi = cosPhi;
1454
+ externalNetworkInjection.p_mf = (mf && powerData[2]) ? powerData[2] * -1 : undefined;
1455
+ externalNetworkInjection.q_mf = (mf && powerData[3]) ? powerData[3] * -1 : undefined;
1456
+ externalNetworkInjection.normallyInService = inBetrieb;
1457
+ cimModel.addExternalNetworkInjection(externalNetworkInjection);
1458
+ this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
1459
+ }
1460
+ catch (err) {
1461
+ this.logger.error(`error --- convertVollumrichtereinspeisung ${i7Data.id} ${err}`);
1462
+ }
1463
+ }
1464
+ }
1465
+ else {
1466
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.VOLLUMRICHTEREINSPEISUNG} ist nicht vorhanden.`);
1467
+ }
1468
+ });
1469
+ }
1344
1470
  convertErsatzQuerZweige(cimModel, targetVoltages, knotenSfIDs, targetClass) {
1345
1471
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1346
1472
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
@@ -1373,6 +1499,9 @@ class ConverterIntegral7 {
1373
1499
  for (const i7Data of result) {
1374
1500
  const genType = this.generatorTypen.get(i7Data.nametyp);
1375
1501
  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);
1502
+ if (synchronousMachine.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F') {
1503
+ let stop = true;
1504
+ }
1376
1505
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
1377
1506
  const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
1378
1507
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
@@ -1474,7 +1603,7 @@ class ConverterIntegral7 {
1474
1603
  const qType = Math.sqrt(Math.pow(genType === null || genType === void 0 ? void 0 : genType.sr, 2) - Math.pow(pType, 2));
1475
1604
  // AMP I7 Profil
1476
1605
  synchronousMachine.cos_phi = i7Data.cos_phi;
1477
- if (synchronousMachine.getUUID() === '03ee3f18-9984-48eb-bc26-09e8c182fbda') {
1606
+ if (synchronousMachine.getUUID() === '69718d2d-5988-49a9-b5c8-d53d0cf0e89a') {
1478
1607
  let stop = true;
1479
1608
  }
1480
1609
  if (synchronousMachine.getUUID() === 'f6d81d19-dca0-48e9-a43e-4ab1f6bf697d') {
@@ -1526,7 +1655,7 @@ class ConverterIntegral7 {
1526
1655
  // synchronousMachine.voltageRegulationRange: number;
1527
1656
  /** Create ReactiveCapabilityCurves */
1528
1657
  if (minP !== undefined && maxP !== undefined && minQvonPmin !== undefined && maxQvonPmax !== undefined) {
1529
- 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']));
1658
+ 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']));
1530
1659
  reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
1531
1660
  reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
1532
1661
  reactiveCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -1609,6 +1738,9 @@ class ConverterIntegral7 {
1609
1738
  // TODO: genControlSource is not required.
1610
1739
  //generatingUnit.genControlSource = GeneratorControlSource.onAGC;
1611
1740
  /**Complete GeneratingUnit data */
1741
+ if (generatingUnit.getUUID() === '70810e1e74aa4359b387bef9158f4767' || synchronousMachine.getUUID() === '70810e1e74aa4359b387bef9158f4767') {
1742
+ const stop = true;
1743
+ }
1612
1744
  generatingUnit.initialP = (0, parser_utils_1.isNumericI7)(i7Data.p0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p0) : undefined;
1613
1745
  // generatingUnit.longPF
1614
1746
  // generatingUnit.maximumAllowableSpinningReserve
@@ -1760,7 +1892,7 @@ class ConverterIntegral7 {
1760
1892
  //EQ core profile content
1761
1893
  const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
1762
1894
  if (connectivityNode) {
1763
- (0, util_create_1.createConnection)(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC);
1895
+ this.createConnection(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
1764
1896
  const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()));
1765
1897
  if (equipmentContainer) {
1766
1898
  equipmentContainer.addEquipment(asynchronousMachine);
@@ -2341,6 +2473,9 @@ class ConverterIntegral7 {
2341
2473
  const qr = (0, parser_utils_1.isNumericI7)(i7Data.qr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qr) : undefined;
2342
2474
  const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2343
2475
  shunt.nomU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2476
+ if (shunt.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
2477
+ let stop = true;
2478
+ }
2344
2479
  // Set electrical properties (EQ core)
2345
2480
  if ((0, parser_utils_1.isNumericI7)(i7Data.aktstufe) && (0, parser_utils_1.isNumericI7)(i7Data.maxstufe)) {
2346
2481
  shunt.sections = (0, parser_utils_1.convertToNumberI7)(i7Data.aktstufe);
@@ -2480,7 +2615,7 @@ class ConverterIntegral7 {
2480
2615
  /** EQ */
2481
2616
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2482
2617
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2483
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2618
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2484
2619
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2485
2620
  statVarCom.aggregate = false;
2486
2621
  /** EQ-SC */
@@ -2489,7 +2624,6 @@ class ConverterIntegral7 {
2489
2624
  /** SV */
2490
2625
  //statVarCom.svpowerflow
2491
2626
  /** Regelung */
2492
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_rc);
2493
2627
  const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, true);
2494
2628
  /** EQ */
2495
2629
  if (regulatingControl) {
@@ -2517,7 +2651,7 @@ class ConverterIntegral7 {
2517
2651
  /** EQ */
2518
2652
  statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2519
2653
  statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2520
- statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2654
+ statVarCom.slope = (0, parser_utils_1.isNumericI7)(mrez) && mrez !== 0 ? 1 / (0, parser_utils_1.convertToNumberI7)(mrez) : 0;
2521
2655
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2522
2656
  statVarCom.aggregate = false;
2523
2657
  /** EQ-SC */
@@ -2529,11 +2663,11 @@ class ConverterIntegral7 {
2529
2663
  /** EQ */
2530
2664
  statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
2531
2665
  cimModel.addStaticVarCompensator(statVarCom);
2532
- this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
2666
+ this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.SVC);
2533
2667
  }
2534
2668
  }
2535
2669
  else {
2536
- this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STATCOM} ist nicht vorhanden.`);
2670
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SVC} ist nicht vorhanden.`);
2537
2671
  }
2538
2672
  });
2539
2673
  }
@@ -2586,9 +2720,10 @@ class ConverterIntegral7 {
2586
2720
  csConverter.ratedIdc = (0, utils_2.calculateRatedIdc)(csConverter.ratedUdc, pr);
2587
2721
  /** spannungsabhängige Wirk-Verluste in kW bei Leerlauf mit Bemessungsspannung in kV*/
2588
2722
  csConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2589
- csConverter.maxUdc = csConverter.ratedUdc * 1.05; // +5% * ratedUdc
2590
- csConverter.minUdc = csConverter.ratedUdc * 0.95; // -5% * ratedUdc
2591
- csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2723
+ csConverter.maxUdc = csConverter.ratedUdc * 1.08; // +5% * ratedUdc
2724
+ csConverter.minUdc = csConverter.ratedUdc * 0.98; // -5% * ratedUdc
2725
+ //R=U^2/P
2726
+ 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;
2592
2727
  csConverter.switchingLoss = 0;
2593
2728
  /* csConverter.numberOfValves
2594
2729
  csConverter.valveU0*/
@@ -2682,21 +2817,21 @@ class ConverterIntegral7 {
2682
2817
  /** Bemessungsleistung (Gleichstromseite) in MW
2683
2818
  * im CS-Fall S = P?
2684
2819
  * Abhängig vom */
2685
- vsConverter.baseS = i7Data.pr;
2820
+ vsConverter.baseS = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2686
2821
  /** Bemessungsspannung (Gleichstromseite) in kV*/
2687
2822
  //If udc is set in Integral data model set converter.ratedUdc as i7Data.udc else take the data value for i7Data.ur (Bemessungsspannung)
2688
2823
  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);
2689
- /** spannungsabhängige Wirk-Verluste bei Leerlauf mit Bemessungsspannung in kV*/
2824
+ /** spannungsabhängige Wirk-Verluste in MW bei Leerlauf mit Bemessungsspannung in kV*/
2690
2825
  vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2691
- vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +5% * ratedUdc
2692
- vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -5% * ratedUdc
2693
- vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2826
+ vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +8% * ratedUdc
2827
+ vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -2% * ratedUdc
2828
+ 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;
2694
2829
  vsConverter.switchingLoss = undefined;
2695
2830
  /* csConverter.maxModulationIndex = ;
2696
2831
  csConverter.maxValveCurrent = */
2697
2832
  /** CapabilityCurveData */
2698
- const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2699
- const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
2833
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : vsConverter.baseS;
2834
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : -1 * vsConverter.baseS;
2700
2835
  const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
2701
2836
  const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
2702
2837
  /** SSH export values */
@@ -2719,11 +2854,11 @@ class ConverterIntegral7 {
2719
2854
  vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2720
2855
  acDCConverterDCTerminal.dcNode = dcNode;
2721
2856
  dcNode.dcTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2722
- /** Create ReactiveCapabilityCurves */
2857
+ /** Create VsCapabilityCurves */
2723
2858
  if (minP !== undefined && maxP !== undefined && minQ != undefined && maxQ !== undefined) {
2724
2859
  let keyVsCapabilityCurve = cim_class_names_1.ClassNames.VsCapabilityCurve + i7Data.id + vsConverter.getUUID();
2725
2860
  let uuidVsCapabilityCurve = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VsCapabilityCurve, this.configUuid, keyVsCapabilityCurve);
2726
- const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', vsConverter.getUUID().substring(0, 8), '_VCC']));
2861
+ const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', '_', vsConverter.getUUID().substring(0, 8), '_VCC']));
2727
2862
  vsCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
2728
2863
  vsCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
2729
2864
  vsCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
@@ -2734,7 +2869,7 @@ class ConverterIntegral7 {
2734
2869
  const curveData1 = new CurveData_1.CurveData(uuidCurveData);
2735
2870
  curveData1.curve = vsCapabilityCurve;
2736
2871
  curveData1.xvalue = minP; //pMin
2737
- curveData1.y1value = minQ; //qMin
2872
+ curveData1.y1value = minQ; //qMin pMax
2738
2873
  curveData1.y2value = maxQ; //qMax pMin
2739
2874
  cimModel.addCurveData(curveData1);
2740
2875
  //reactive capability curve data for pmax
@@ -2744,7 +2879,7 @@ class ConverterIntegral7 {
2744
2879
  curveData2.curve = vsCapabilityCurve;
2745
2880
  curveData2.xvalue = maxP; //pMax
2746
2881
  curveData2.y1value = minQ; //qMin pMax
2747
- curveData2.y2value = maxQ; //qMin pMax
2882
+ curveData2.y2value = maxQ; //qMax pMax
2748
2883
  cimModel.addCurveData(curveData2);
2749
2884
  cimModel.addVsCapabilityCurve(vsCapabilityCurve);
2750
2885
  vsConverter.capabilityCurve = vsCapabilityCurve;
@@ -2863,7 +2998,6 @@ class ConverterIntegral7 {
2863
2998
  if (i7Data.guid === '_ab64e281-72d0-45fb-8cb3-da4ae99a4f8c') {
2864
2999
  const stop = true;
2865
3000
  }
2866
- let einspeisePrioritaet = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
2867
3001
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2868
3002
  externalNetworkInjection.maxP = maxP;
2869
3003
  const governorscd = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
@@ -2895,9 +3029,10 @@ class ConverterIntegral7 {
2895
3029
  const skAkt = (0, parser_utils_1.isNumericI7)(i7Data.sk_akt) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_akt) : undefined;
2896
3030
  const skMin = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_min) : skAkt;
2897
3031
  const skMax = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_max) : skAkt;
2898
- const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(skMin) / Math.sqrt(3) * skMin : undefined;
3032
+ const nomV = externalNetworkInjection.getTerminals().values().next().value.getConnectivityNode().getBaseVoltageAsNumber();
3033
+ const minIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, utils_2.calculateShortCircuitCurrent)(skMin, nomV) : undefined;
2899
3034
  externalNetworkInjection.minInitialSymShCCurrent = minIkSecond;
2900
- const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(skMax) / Math.sqrt(3) * skMax : undefined;
3035
+ const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, utils_2.calculateShortCircuitCurrent)(skMax, nomV) : undefined;
2901
3036
  externalNetworkInjection.maxInitialSymShCCurrent = maxIkSecond;
2902
3037
  const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
2903
3038
  /** Convert SSH-profile dataset. */
@@ -2960,6 +3095,9 @@ class ConverterIntegral7 {
2960
3095
  if (condEquip instanceof RotatingMachine_1.RotatingMachine || condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection || condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
2961
3096
  i7DataEinsp = i7Data;
2962
3097
  i7DataRQ = i7Data;
3098
+ if (condEquip.getUUID() === '10409E08-E2C0-4EBD-AD4C-5370178ED62F' || condEquip.getUUID() === '0c67bf21-a557-46ea-af63-2a3ac116bd2e') {
3099
+ const stop = true;
3100
+ }
2963
3101
  }
2964
3102
  if (condEquip instanceof SynchronousMachine_1.SynchronousMachine) {
2965
3103
  suffix = '_SM';
@@ -2980,16 +3118,26 @@ class ConverterIntegral7 {
2980
3118
  suffix = '_EI';
2981
3119
  }
2982
3120
  else if (condEquip instanceof StaticVarCompensator_1.StaticVarCompensator) {
3121
+ if (condEquip.getUUID() === '18e12018-03dd-4d6e-a626-ea404017050f' || condEquip.getUUID() === '4352ad9f-c841-4dcb-9a42-3ccabcb56487'
3122
+ || condEquip.getUUID() === '3d060069-9253-4e68-bb75-74d92982bb1a' || condEquip.getUUID() === '03c53185-aaa7-4040-8b43-76f79fac82b9' || condEquip.getUUID() === '02ba5072-a387-47c6-b9ce-b9d3def21964') {
3123
+ let stop = true;
3124
+ }
2983
3125
  i7DataSVC = i7Data;
2984
3126
  i7DataRQ = i7Data;
2985
3127
  suffix = '_SVC';
2986
3128
  }
2987
3129
  else if (condEquip instanceof LinearShuntCompensator_1.LinearShuntCompensator) {
3130
+ if (condEquip.getUUID() === '547B9591-C41B-4496-9954-2215B8945124') {
3131
+ let stop = true;
3132
+ }
2988
3133
  i7DataKomp = i7Data;
2989
3134
  i7DataRQ = i7Data;
2990
3135
  suffix = '_LSC';
2991
3136
  }
2992
3137
  else if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
3138
+ if (condEquip.getUUID() === '71331a6b-000d-4049-89cc-9319a69367f6') {
3139
+ let stop = true;
3140
+ }
2993
3141
  i7DataHgue = i7Data;
2994
3142
  suffix = '_ACDCC';
2995
3143
  }
@@ -3026,62 +3174,61 @@ class ConverterIntegral7 {
3026
3174
  let tVMax = undefined; //maximum target voltage
3027
3175
  let tVMin = undefined; //minimum target voltage
3028
3176
  const regCondEquip = condEquip;
3029
- if (spannungsregelungLokal || spannungsregelungRemote) {
3030
- //get rated voltage of controlled node.
3031
- if (knotenSpgGeregelt && spannungsregelungRemote) {
3032
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3033
- if (cterminal === undefined) {
3034
- let stop = true;
3035
- }
3036
- if (cterminal) {
3037
- tCn = cterminal.getConnectivityNode();
3038
- if (tCn) {
3039
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3040
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3041
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3042
- }
3043
- else {
3044
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3045
- }
3177
+ //get rated voltage of controlled node.
3178
+ if (knotenSpgGeregelt && spannungsregelungRemote) {
3179
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3180
+ if (cterminal === undefined) {
3181
+ let stop = true;
3182
+ }
3183
+ if (cterminal) {
3184
+ tCn = cterminal.getConnectivityNode();
3185
+ if (tCn) {
3186
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3187
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3188
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3046
3189
  }
3047
3190
  else {
3048
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3191
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3049
3192
  }
3050
3193
  }
3051
- if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3052
- switch (knotenSpgGeregelt) {
3053
- case undefined: {
3054
- if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3055
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3056
- }
3057
- if (cterminal === undefined) {
3058
- cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3059
- }
3060
- break;
3194
+ else {
3195
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3196
+ }
3197
+ }
3198
+ if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3199
+ switch (knotenSpgGeregelt) {
3200
+ case undefined: {
3201
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3202
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3061
3203
  }
3062
- default: {
3063
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3204
+ if (cterminal === undefined) {
3205
+ cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3064
3206
  }
3207
+ break;
3065
3208
  }
3066
- if (cterminal) {
3067
- tCn = cterminal.getConnectivityNode();
3068
- if (tCn) {
3069
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3070
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3071
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3072
- }
3073
- else {
3074
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
3075
- }
3209
+ default: {
3210
+ cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3076
3211
  }
3077
3212
  }
3078
- 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;
3079
- if (uband === undefined) {
3213
+ if (cterminal) {
3214
+ tCn = cterminal.getConnectivityNode();
3080
3215
  if (tCn) {
3081
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3216
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3217
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3218
+ usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3219
+ }
3220
+ else {
3221
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
3082
3222
  }
3083
3223
  }
3084
3224
  }
3225
+ 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;
3226
+ if (uband === undefined) {
3227
+ if (tCn) {
3228
+ uband = tCn.getBaseVoltageAsNumber() * 0.1;
3229
+ }
3230
+ }
3231
+ usoll = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : usoll;
3085
3232
  //Create and define regulating control for voltage control
3086
3233
  if (cterminal !== undefined) {
3087
3234
  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);
@@ -3094,6 +3241,9 @@ class ConverterIntegral7 {
3094
3241
  rControl.targetDeadband = (0, parser_utils_1.isNumericI7)(uband) ? uband : undefined; //zulässiges Spannungsband
3095
3242
  /** Spannung in kilo*/
3096
3243
  //TODO TEMP FIX bei lokaler Regelegung bleibt usoll = null.
3244
+ if (cterminal !== undefined && cterminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
3245
+ const stop = true;
3246
+ }
3097
3247
  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());
3098
3248
  const guidSuffix = (_a = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8);
3099
3249
  rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
@@ -3109,7 +3259,7 @@ class ConverterIntegral7 {
3109
3259
  }
3110
3260
  }
3111
3261
  }
3112
- else if (isRegulatingControl && i7DataSVC) {
3262
+ else if (isRegulatingControl && i7DataSVC !== undefined) {
3113
3263
  /** Regelung */
3114
3264
  const regCondEquip = condEquip;
3115
3265
  const cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
@@ -3130,12 +3280,12 @@ class ConverterIntegral7 {
3130
3280
  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;
3131
3281
  if (uband === undefined) {
3132
3282
  if (tCn) {
3133
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
3283
+ uband = (0, parser_utils_1.isNumericI7)(uref) ? uref * 0.1 : ((0, parser_utils_1.isNumericI7)(usoll) ? usoll * 0.1 : tCn.getBaseVoltageAsNumber() * 0.1);
3134
3284
  }
3135
3285
  }
3136
3286
  if (cterminal !== undefined) {
3137
3287
  const uuid = (0, parser_utils_1.getUUID)(i7DataSVC.guid_rc);
3138
- 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);
3288
+ 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);
3139
3289
  rControl.enabled = true;
3140
3290
  if (isStatcom) {
3141
3291
  rControl.discrete = true;
@@ -3208,20 +3358,23 @@ class ConverterIntegral7 {
3208
3358
  usoll = (0, parser_utils_1.isNumericI7)(i7DataHgue.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.usoll) : undefined;
3209
3359
  if (regelungU) {
3210
3360
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
3211
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3361
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3362
+ condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3212
3363
  }
3213
3364
  else if (regelungP) {
3214
3365
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
3215
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3366
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3216
3367
  }
3217
- if ((spannungsregelungLokal || spannungsregelungRemote) && usoll == undefined) {
3218
- //get rated voltage of controlled node.
3368
+ if (isRegulatingControl) { //voltage control for AC-side
3219
3369
  let cterminal = undefined; //connection point terminal of this device
3220
3370
  let tVMax = undefined; //maximum target voltage
3221
3371
  let tVMin = undefined; //minimum target voltage
3222
- //get target voltage of controlled node.
3372
+ //get rated voltage of controlled node.
3223
3373
  if (knotenSpgGeregelt && spannungsregelungRemote) {
3224
3374
  cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3375
+ if (cterminal === undefined) {
3376
+ let stop = true;
3377
+ }
3225
3378
  if (cterminal) {
3226
3379
  tCn = cterminal.getConnectivityNode();
3227
3380
  if (tCn) {
@@ -3240,7 +3393,9 @@ class ConverterIntegral7 {
3240
3393
  if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3241
3394
  switch (knotenSpgGeregelt) {
3242
3395
  case undefined: {
3243
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3396
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
3397
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3398
+ }
3244
3399
  if (cterminal === undefined) {
3245
3400
  cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3246
3401
  }
@@ -3262,10 +3417,10 @@ class ConverterIntegral7 {
3262
3417
  }
3263
3418
  }
3264
3419
  }
3420
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3265
3421
  }
3266
3422
  condEquip.targetUpcc = usoll;
3267
- condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
3268
- condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3423
+ //(condEquip as VsConverter).targetQpcc = 0; //ReactivePower, ReactivePowerCapabilityCurve is set in advance
3269
3424
  condEquip.targetPpcc = condEquip.baseS * -1;
3270
3425
  }
3271
3426
  }
@@ -3365,47 +3520,10 @@ class ConverterIntegral7 {
3365
3520
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_STARR)) {
3366
3521
  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));
3367
3522
  for (const i7Data of result) {
3368
- //const junction = new Junction(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data),"_J",`_${cimModel.junctions]), 'JNCT', 'starre Verbindung');
3369
3523
  const breaker = new Breaker_1.Breaker((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, 'Breaker', 'starre Verbindung');
3370
3524
  yield this.convertSwitch(breaker, cimModel, i7Data);
3371
3525
  cimModel.addBreaker(breaker);
3372
3526
  this.addIdMapping(i7Data.id, breaker.mrid, integral_sql_1.Integral7TableNames.LEISTUNGSSCHALTER);
3373
- /**const schaltzustand = convertToBooleanI7(i7Data.schaltzustand);
3374
-
3375
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer);
3376
-
3377
- if (equipmentContainer) {
3378
- equipmentContainer.addEquipment(junction);
3379
- junction.equipmentContainer = equipmentContainer;
3380
- } else {
3381
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen EquipmentContainer.`);
3382
- }
3383
- const cnStart = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
3384
- const cnZiel = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
3385
-
3386
- if (cnStart) {
3387
- const terminal = this.createConnection(cimModel, junction, cnStart, PhaseCode.ABC, true, 1);
3388
- if (schaltzustand === false) {
3389
- terminal.connected = schaltzustand;
3390
- }
3391
- } else {
3392
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Anfangsknoten.`);
3393
- }
3394
- if (cnZiel) {
3395
- const terminal = this.createConnection(cimModel, junction, cnZiel, PhaseCode.ABC, true, 2);
3396
- if (schaltzustand === false) {
3397
- terminal.connected = schaltzustand;
3398
- }
3399
- } else {
3400
- this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Zielknoten.`);
3401
- }
3402
- const baseVoltage = getTerminalUn(cimModel, junction);
3403
- if (baseVoltage) {
3404
- junction.baseVoltage = baseVoltage;
3405
- }
3406
- this.addIdMapping(i7Data.id, junction.mrid, Integral7TableNames.KNOTEN_STARR);
3407
- cimModel.addJunction(junction);
3408
- **/
3409
3527
  }
3410
3528
  }
3411
3529
  else {
@@ -3514,7 +3632,7 @@ class ConverterIntegral7 {
3514
3632
  const start = cimModel.objects.get(this.integralID2UUID.get(i7Data.aknoten));
3515
3633
  let startTerminal;
3516
3634
  if (start) {
3517
- startTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, 1);
3635
+ startTerminal = this.createConnection(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, true);
3518
3636
  }
3519
3637
  else {
3520
3638
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Anfangsknoten.`);
@@ -3523,7 +3641,7 @@ class ConverterIntegral7 {
3523
3641
  const target = cimModel.objects.get(this.integralID2UUID.get(i7Data.eknoten));
3524
3642
  let targetTerminal;
3525
3643
  if (target) {
3526
- targetTerminal = (0, util_create_1.createConnection)(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, 2);
3644
+ targetTerminal = this.createConnection(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, true);
3527
3645
  }
3528
3646
  else {
3529
3647
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Zielknoten.`);
@@ -3540,7 +3658,7 @@ class ConverterIntegral7 {
3540
3658
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3541
3659
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3542
3660
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3543
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir);
3661
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir, seriesCompensator.r);
3544
3662
  seriesCompensator.varistorPresent = false;
3545
3663
  /** EQ-SC */
3546
3664
  seriesCompensator.r0 = seriesCompensator.r;
@@ -3626,8 +3744,8 @@ class ConverterIntegral7 {
3626
3744
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3627
3745
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
3628
3746
  seriesCompensator.r = (0, utils_2.calculateRSeriesCompensator)(ir, pkr);
3629
- seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1);
3630
- seriesCompensator.varistorPresent = false;
3747
+ seriesCompensator.x = (0, utils_2.calculateXSeriesCompensator)(ur, ukr, ir * -1, seriesCompensator.r);
3748
+ //seriesCompensator.varistorPresent = false;
3631
3749
  /** EQ-SC */
3632
3750
  seriesCompensator.r0 = seriesCompensator.r;
3633
3751
  seriesCompensator.x0 = seriesCompensator.x;
@@ -3692,28 +3810,14 @@ class ConverterIntegral7 {
3692
3810
  for (const i7DataSchiene of stpSchiene) {
3693
3811
  try {
3694
3812
  stpSchieneIDs.push(i7DataSchiene.id);
3695
- const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7DataSchiene.id)));
3696
- const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3813
+ const keyConnectivityNode = cim_class_names_1.ClassNames.ConnectivityNode + i7DataSchiene.id;
3697
3814
  const uuidConnectivityNode = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, keyConnectivityNode);
3698
- const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN']));
3699
- const keyJunction = cim_class_names_1.ClassNames.Junction + i7DataSchiene.id + (equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getUUID()) || '';
3700
- const uuidJunction = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Junction, this.configUuid, keyJunction);
3701
- const junction = new Junction_1.Junction(uuidJunction, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_J']));
3702
- connectivityNode.setConnectivityNodeContainer(equipmentContainer);
3703
- if (equipmentContainer) {
3704
- equipmentContainer.addEquipment(junction);
3705
- junction.equipmentContainer = equipmentContainer;
3706
- }
3707
- else {
3708
- this.logger.debug(`Sternpunktschiene ${i7DataSchiene.id} besitzt keinen EquipmentContainer.`);
3709
- }
3815
+ const name = (0, util_create_1.createNotation)([(0, utils_2.getName)(i7DataSchiene), '_CN'], 32, false);
3816
+ const connectivityNode = new ConnectivityNode_1.ConnectivityNode(uuidConnectivityNode, name, name);
3817
+ connectivityNode.key = integral_prefix_1.CKnoten1PSO_PRAEFIX + i7DataSchiene.bezeichner;
3710
3818
  // Verbindung herstellen
3711
- const terminal = this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3712
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3819
+ integral7.sternPunktImpModel.stpSchieneIdConnectivityNode.set(i7DataSchiene.id, connectivityNode);
3713
3820
  integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
3714
- integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
3715
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
3716
- integral7.sternPunktImpModel.stpSchieneTerminal.set(i7DataSchiene.id, terminal);
3717
3821
  this.addIdMapping(i7DataSchiene.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHIENE);
3718
3822
  }
3719
3823
  catch (e) {
@@ -3728,41 +3832,63 @@ class ConverterIntegral7 {
3728
3832
  }));
3729
3833
  });
3730
3834
  }
3731
- convertKdrossel(cimModel, integral7, stpScheinenID) {
3835
+ convertKdrossel(cimModel, integral7, stpSchienenID, defaultValuesConfig) {
3732
3836
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3733
3837
  try {
3734
3838
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ)) {
3735
- if (stpScheinenID.length) {
3736
- 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));
3839
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3840
+ 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));
3737
3841
  for (const i7Data of result) {
3738
3842
  const kdType = this.kdrosseltypen.get(i7Data.nametyp);
3843
+ 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);
3844
+ 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);
3845
+ 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);
3739
3846
  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);
3740
3847
  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);
3741
3848
  const connectivityNode = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.anschluss));
3742
- const junctionUUID = integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get((i7Data.anschluss));
3743
- let conductingEquip;
3744
- if (imax && imin) {
3849
+ let conductingEquip = undefined;
3850
+ if (iakt !== undefined && xne !== undefined || xne !== undefined && ur !== undefined || iakt !== undefined && ur !== undefined) {
3745
3851
  /** PetersenCoil */
3746
3852
  const petersenCoil = new PetersenCoil_1.PetersenCoil((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname);
3747
- integral7.sternPunktImpModel.petersenCoils.set(petersenCoil.mrid, petersenCoil);
3748
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, petersenCoil);
3853
+ if (xne !== undefined && ur !== undefined) {
3854
+ petersenCoil.xGroundNominal = xne;
3855
+ petersenCoil.nominalU = ur;
3856
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3857
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3858
+ }
3859
+ else if (iakt !== undefined && xne !== undefined) {
3860
+ petersenCoil.xGroundNominal = xne;
3861
+ petersenCoil.nominalU = iakt * xne * Math.pow(10, -3);
3862
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3863
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3864
+ }
3865
+ else if (iakt !== undefined && ur !== undefined) {
3866
+ petersenCoil.nominalU = ur;
3867
+ petersenCoil.xGroundNominal = petersenCoil.nominalU * Math.pow(10, 3) / iakt;
3868
+ petersenCoil.xGroundMax = (0, parser_utils_1.isNumericI7)(imin) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imin : undefined;
3869
+ petersenCoil.xGroundMin = (0, parser_utils_1.isNumericI7)(imax) && (0, parser_utils_1.isNumericI7)(petersenCoil.nominalU) ? petersenCoil.nominalU * Math.pow(10, 3) / imax : undefined;
3870
+ }
3871
+ petersenCoil.mode = PetersenCoilModeKind_1.PetersenCoilModeKind.automaticPositioning;
3749
3872
  this.addIdMapping(i7Data.id, petersenCoil.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3750
3873
  conductingEquip = petersenCoil;
3751
3874
  }
3752
3875
  else {
3753
3876
  /** GroundingImpedance */
3754
3877
  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);
3755
- 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);
3756
- 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);
3878
+ 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);
3879
+ groundingImpedance.x = xne;
3757
3880
  integral7.sternPunktImpModel.groundingImpedances.set(groundingImpedance.mrid, groundingImpedance);
3758
- integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3881
+ //integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
3759
3882
  this.addIdMapping(i7Data.id, groundingImpedance.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
3760
3883
  conductingEquip = groundingImpedance;
3761
3884
  }
3762
- // Verbindung herstellen
3885
+ // Create connection for PetersenCoil and GroundingImpedance connected with 'Sternpunktschiene'. PetersenCoil and GroundingImpedance connected to 'Sternpunktknoten' is connected during convertTrafo2w and convertTrafo3w
3763
3886
  if (connectivityNode) {
3764
- const terminal = this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3765
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3887
+ this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3888
+ integral7.sternPunktImpModel.stpSchieneUUIDStpImp.set(connectivityNode.getUUID(), conductingEquip);
3889
+ }
3890
+ else {
3891
+ integral7.sternPunktImpModel.stpKnotenStpImp.set(i7Data.anschluss, conductingEquip);
3766
3892
  }
3767
3893
  }
3768
3894
  }
@@ -3783,26 +3909,37 @@ class ConverterIntegral7 {
3783
3909
  });
3784
3910
  }
3785
3911
  /** Den Schaltzuszand bestimmen und zuvor angelegten (convertSternpunktSchienen) Terminalinstanz zuweisen. */
3786
- convertStpSchaltelemente(integral7, stpSchienenID) {
3912
+ convertStpSchaltelemente(cimModel, integral7, stpSchienenID) {
3787
3913
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3788
3914
  try {
3789
3915
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER)) {
3790
- if (stpSchienenID.length) {
3916
+ if (stpSchienenID !== undefined && stpSchienenID.length > 0) {
3791
3917
  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));
3792
3918
  for (const i7Data of result) {
3793
- const terminal = integral7.sternPunktImpModel.stpSchieneTerminal.get(i7Data.eknoten);
3794
- if (terminal) {
3795
- terminal.connected = (0, parser_utils_1.isBooleanI7)(i7Data.schaltzustand) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand) : true;
3919
+ const connectivityNodeAbcn = cimModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.aknoten)); //connection point of 'PowerTransformerEnd' is assigned during convertTrafo2w and convertTrafo3w
3920
+ const connectivityNodeN = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.eknoten)); //connection point of 'Sternpunktschiene'
3921
+ if (connectivityNodeN != undefined) {
3922
+ const schaltzustand = (0, parser_utils_1.convertToBooleanI7)(i7Data.schaltzustand);
3923
+ const keyGroundDisconnector = cim_class_names_1.ClassNames.GroundDisconnector + i7Data.aknoten + i7Data.eknoten;
3924
+ const uuidGroundDisconnector = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.GroundDisconnector, this.configUuid, keyGroundDisconnector);
3925
+ const groundDisconnector = new GroundDisconnector_1.GroundDisconnector(uuidGroundDisconnector, i7Data.bezeichner, i7Data.kurzname, i7Data.kommentar, schaltzustand, false);
3926
+ //Set connection to ConnectivityNode at neutral side to GroundingImpedance or PetersenCoil
3927
+ this.createConnection(cimModel, groundDisconnector, connectivityNodeN, PhaseCode_1.PhaseCode.N, true);
3928
+ //cimModel.addGroundDisconnector(groundDisconnector);
3929
+ integral7.sternPunktImpModel.groundDisconnectors.set(groundDisconnector.getUUID(), groundDisconnector);
3930
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3931
+ integral7.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.set(i7Data.id, groundDisconnector.getUUID());
3932
+ /** SchaltelementID mit GroundDisconnector UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3933
+ integral7.sternPunktImpModel.groundDisconnectorsUUIDsStpSchieneUUID.set(groundDisconnector.getUUID(), connectivityNodeN.getUUID());
3934
+ /** SternpunktknotenID mit GroundDisconnector UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
3935
+ integral7.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.set(groundDisconnector.getUUID(), i7Data.eknoten);
3936
+ /** set connection to terminal of powertransformerend*/
3937
+ let earthFaultCompensator = integral7.sternPunktImpModel.stpSchieneUUIDStpImp.get(connectivityNodeN.getUUID());
3938
+ integral7.sternPunktImpModel.groundDisconnectorUUIDstpImp.set(groundDisconnector.getUUID(), earthFaultCompensator);
3939
+ this.addIdMapping(i7Data.id, groundDisconnector.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER);
3796
3940
  }
3797
- /** SchaltelementID mit Junstion UUID verknüpfen, um Topologie des netz_knoten1pelem-Elements herstellen zu können */
3798
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.id, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3799
- /** Sternpunktknoten mit Junstion UUID verknüpfen, um Topologie der AssetElemente herstellen zu können */
3800
- integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.aknoten, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
3801
3941
  }
3802
3942
  }
3803
- else {
3804
- this.logger.debug(`StpSchaltelemente Keine Sternpunktschienen vorhanden.`);
3805
- }
3806
3943
  }
3807
3944
  else {
3808
3945
  this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER} ist nicht vorhanden.`);
@@ -3920,6 +4057,7 @@ class ConverterIntegral7 {
3920
4057
  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));
3921
4058
  }
3922
4059
  for (const i7Data of result) {
4060
+ let lineNames = new Map;
3923
4061
  /** Alle Stromkreisabschnitte */
3924
4062
  const stromkreisabschnitte = leitungStromkreisabschnitt.filter(elem => elem.leitung === i7Data.id);
3925
4063
  if (!((stromkreisabschnitte === null || stromkreisabschnitte === void 0 ? void 0 : stromkreisabschnitte.length) > 0))
@@ -3943,8 +4081,9 @@ class ConverterIntegral7 {
3943
4081
  '-' +
3944
4082
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.stkabname);
3945
4083
  /** Wenn kein Stromkreisobjekt vorhanden ist, dann erstelle ein neues Objekt. */
3946
- const uuidString = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3947
- const line = new AMPRIONLine_1.AMPRIONLine(uuidString, i7Schluessel);
4084
+ const uuidString = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Line, this.configUuid, i7Schluessel);
4085
+ let lineName = createLineName(i7Data, uuidString, lineNames);
4086
+ const line = new AMPRIONLine_1.AMPRIONLine(uuidString, lineName);
3948
4087
  line.ukz = i7Data.ukz;
3949
4088
  line.key = i7Schluessel;
3950
4089
  let acLineSegments = [];
@@ -3957,7 +4096,7 @@ class ConverterIntegral7 {
3957
4096
  '-' +
3958
4097
  (0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
3959
4098
  const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3960
- const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Schluessel);
4099
+ const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Data.kommentar);
3961
4100
  const key = acLineSegment.getUUID();
3962
4101
  const uuidWireObject = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.EVWireObject, this.configUuid, key);
3963
4102
  acLineSegment.key = i7Schluessel;
@@ -4020,7 +4159,7 @@ class ConverterIntegral7 {
4020
4159
  /**Connectivity Node to connect end of line and start of neighbouring line.*/
4021
4160
  const key = acLineSegment1.getUUID() + acLineSegment2.getUUID();
4022
4161
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.ConnectivityNode, this.configUuid, key);
4023
- const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.name, '_', acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, true));
4162
+ const cn = new ConnectivityNode_1.ConnectivityNode(uuid, (0, util_create_1.createNotation)([acLineSegment1.getUUID().substring(0, 8), '_CN'], 32, false));
4024
4163
  /**Connect end of aclinesegment i*/
4025
4164
  cn.connectivityNodeContainer = acLineSegment1.equipmentContainer;
4026
4165
  tmp_terminal = this.createConnection(cimModel, acLineSegment1, cn, PhaseCode_1.PhaseCode.ABC, true);
@@ -4079,7 +4218,6 @@ class ConverterIntegral7 {
4079
4218
  /** In any case assign Georegion to aclinesegments */
4080
4219
  let idx = 0;
4081
4220
  while (idx < acLineSegments.length && !(line.subGeographicalRegion)) {
4082
- let jdx = 0;
4083
4221
  let values = acLineSegments[idx].terminals.values();
4084
4222
  let tmp_terminal = values.next();
4085
4223
  while (tmp_terminal.value && !(line.subGeographicalRegion)) {
@@ -4149,6 +4287,9 @@ class ConverterIntegral7 {
4149
4287
  let dcLineNeutral = undefined;
4150
4288
  const i7Schluessel = integral_prefix_1.HGUELEITUNG_PRAEFIX +
4151
4289
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4290
+ if (dcLine.getUUID() === 'f125f0f3-a621-43e7-8af7-9873d52239a0') {
4291
+ const stop = true;
4292
+ }
4152
4293
  /** operationMode der Anfangs- und Zielkopfstation setzen */
4153
4294
  let converterStart = false;
4154
4295
  let converterStartNeg = false;
@@ -4163,7 +4304,7 @@ class ConverterIntegral7 {
4163
4304
  let dcNodeStartMiddle = undefined;
4164
4305
  let dcNodeTargetMiddle = undefined;
4165
4306
  //Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
4166
- const dcLineSegment = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4307
+ const dcLineSegment = new DCLineSegment_1.INTEGRALDCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
4167
4308
  dcLineSegmentSet.push(dcLineSegment);
4168
4309
  let dcLineSegmentNeg = undefined;
4169
4310
  let dcLineSegmentNeutral = undefined;
@@ -4172,19 +4313,21 @@ class ConverterIntegral7 {
4172
4313
  dcLineSegment.capacitance = undefined;
4173
4314
  dcLineSegment.inductance = undefined;
4174
4315
  /**EQ: given directly by the INTEGRAL system model */
4175
- dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4316
+ 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;
4317
+ dcLineSegment.ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4176
4318
  dcLineSegment.equipmentContainer = dcLine;
4177
4319
  //create second dcLineSegment in case this dcLine is a bipol.
4178
4320
  if (bipole) {
4179
4321
  const dcLineKey = dcLine.getUUID();
4180
4322
  const dcLineUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4181
4323
  dcLineNeg = new DCLine_1.DCLine(dcLineUuid, i7Data.bezeichner);
4182
- 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);
4324
+ 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);
4183
4325
  dcLineSegmentSet.push(dcLineSegmentNeg);
4184
4326
  dcLineSegmentNeg.length = dcLineSegment.length;
4185
4327
  dcLineSegmentNeg.capacitance = undefined;
4186
4328
  dcLineSegmentNeg.inductance = undefined;
4187
- dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4329
+ dcLineSegmentNeg.resistance = dcLineSegment.resistance;
4330
+ dcLineSegmentNeg.ur = dcLineSegment.ur;
4188
4331
  dcLineSegmentNeg.equipmentContainer = dcLineNeg;
4189
4332
  }
4190
4333
  //create metallic return
@@ -4192,12 +4335,13 @@ class ConverterIntegral7 {
4192
4335
  const dcLineNeutralUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4193
4336
  const dcLineSegmentUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLineSegment, this.configUuid, dcLineNeutralUuid);
4194
4337
  dcLineNeutral = new DCLine_1.DCLine(dcLineNeutralUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCL']));
4195
- 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);
4338
+ 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);
4196
4339
  dcLineSegmentSet.push(dcLineSegmentNeutral);
4197
4340
  dcLineSegmentNeutral.length = dcLineSegment.length;
4198
4341
  dcLineSegmentNeutral.capacitance = undefined;
4199
4342
  dcLineSegmentNeutral.inductance = undefined;
4200
- dcLineSegmentNeutral.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4343
+ dcLineSegmentNeutral.resistance = dcLineSegment.resistance;
4344
+ dcLineSegmentNeutral.ur = dcLineSegment.ur;
4201
4345
  dcLineSegmentNeutral.equipmentContainer = dcLineNeutral;
4202
4346
  //get ACDCConverter at both ends of DCLine
4203
4347
  const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
@@ -4375,8 +4519,10 @@ class ConverterIntegral7 {
4375
4519
  const equipmentKey = dcTerminal.getUUID();
4376
4520
  for (const elem of dcTerminal.dcNode.dcTerminals.values()) {
4377
4521
  if (elem instanceof ACDCConverterDCTerminal_1.ACDCConverterDCTerminal) {
4378
- const pR = elem.dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4379
- const uR = acDCConverterStart.ratedUdc; //voltage in kV
4522
+ //const pR: number = (elem as ACDCConverterDCTerminal).dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4523
+ //const uR: number = acDCConverterStart.ratedUdc; //voltage in kV
4524
+ const pR = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
4525
+ const uR = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
4380
4526
  if (pR != undefined && uR != undefined) {
4381
4527
  let ir = (pR * Math.pow(10, 6)) / (uR * Math.pow(10, 3)); //assumption: pr is BaseS
4382
4528
  if (bipole) {
@@ -4436,6 +4582,7 @@ class ConverterIntegral7 {
4436
4582
  typTrafo.r0kr2 = i7Data.r0kr2;
4437
4583
  typTrafo.r00r1 = i7Data.r00r1;
4438
4584
  typTrafo.r00r2 = i7Data.r00r2;
4585
+ typTrafo.s_dauer = i7Data.s_dauer;
4439
4586
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4440
4587
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4441
4588
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4487,6 +4634,9 @@ class ConverterIntegral7 {
4487
4634
  typTrafo.r0kr2 = i7Data.r0kr2;
4488
4635
  typTrafo.r00r1 = i7Data.r00r1;
4489
4636
  typTrafo.r00r2 = i7Data.r00r2;
4637
+ typTrafo.s_dauer_1 = i7Data.s_dauer_1;
4638
+ typTrafo.s_dauer_2 = i7Data.s_dauer_2;
4639
+ typTrafo.s_dauer_3 = i7Data.s_dauer_3;
4490
4640
  const typWicklung1 = new INTEGRALPowerTransformerEndInfo_1.INTEGRALPowerTransformerEndInfo(common_utils_1.CommonUtils.generateUUID());
4491
4641
  typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr1, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
4492
4642
  this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
@@ -4605,30 +4755,18 @@ class ConverterIntegral7 {
4605
4755
  integral_prefix_1.TRAFO2W_PRAEFIX +
4606
4756
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4607
4757
  powerTransformer.key = i7Schluessel;
4608
- if (powerTransformer.getUUID() === '515508dc-5982-4686-ad26-08d39db91421') {
4609
- let stop = true;
4610
- } // kein Typ in D4
4611
- if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') {
4612
- let stop = true;
4613
- } //Typ in D8
4614
- if (powerTransformer.getUUID() === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') {
4758
+ if (powerTransformer.getUUID() === '21def4394e814e77b3f25acbad7bda16') {
4615
4759
  let stop = true;
4616
- } //kein Typ in BE
4617
- if (powerTransformer.getUUID() === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9') {
4618
- let stop = true;
4619
- } //Typ in D7
4760
+ }
4620
4761
  if (powerTransformer.getUUID() === '8eca3fedd32c49369f8946ac4ce70e17') { //Stufenstellerkonvertierung fehlgeschlagen
4621
4762
  let stop = true;
4622
4763
  }
4623
4764
  if (powerTransformer.getUUID() === 'b9d8bd48e1554af7b6153c1f7da052e1') {
4624
4765
  let stop = true;
4625
4766
  } //Phasenschieber zu falscher Winkel und falsches stepIncrement.
4626
- if (powerTransformer.getUUID() === '2ACF34B9-9DC9-4607-9B8A-032EBC2C31A5') {
4767
+ if (powerTransformer.getUUID() === '012416f2d9584971baa93360fcf40be2') { //pkr, ukr, ... konnte nicht aus Typ ermittelt werden.
4627
4768
  let stop = true;
4628
4769
  } //Längsregeltransformator mit symmetrischem Phasenschieber.
4629
- if (i7Data.nametyp) {
4630
- const stop = true;
4631
- }
4632
4770
  const powerTransformerInfo = this.cimModelDefault.getPowerTransformerInfoByName(i7Data.nametyp);
4633
4771
  if (powerTransformerInfo) {
4634
4772
  facility.setAssetInfo(powerTransformerInfo);
@@ -4646,12 +4784,13 @@ class ConverterIntegral7 {
4646
4784
  // Wicklung 1
4647
4785
  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}`);
4648
4786
  powerTransformerEnd1.endNumber = 1;
4649
- const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4650
- const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4787
+ const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4788
+ const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, undefined, false);
4651
4789
  const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
4652
4790
  const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4653
4791
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4654
- const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
4792
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, false);
4793
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, false);
4655
4794
  // P0 Lastverluste im I7 Modell p_leer
4656
4795
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4657
4796
  // Leerlaufverluste
@@ -4699,7 +4838,7 @@ class ConverterIntegral7 {
4699
4838
  const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode.ABC, true, 1) : undefined;*/
4700
4839
  if (!startTerminal)
4701
4840
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
4702
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig);
4841
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig);
4703
4842
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4704
4843
  let equivalentInjection = undefined;
4705
4844
  if (startTerminal) {
@@ -4731,7 +4870,7 @@ class ConverterIntegral7 {
4731
4870
  const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
4732
4871
  if (!zielTerminal)
4733
4872
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
4734
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, undefined, i7Data, defaultValuesConfig);
4873
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, sdauer2, i7Data, defaultValuesConfig);
4735
4874
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4736
4875
  if (zielTerminal) {
4737
4876
  let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
@@ -4746,9 +4885,6 @@ class ConverterIntegral7 {
4746
4885
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
4747
4886
  powerTransformerEnd2.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd2.endNumber, powerTransformerEnd2.grounded);
4748
4887
  powerTransformerEnd2.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd2.endNumber);
4749
- if (uuid === '402aec99-ba2c-42fa-b4ed-b4928901f47b') {
4750
- let stop = true;
4751
- }
4752
4888
  // NullSystem Impedanzen (nur Reaktanzen)
4753
4889
  let starconnectionCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) <= 1 ? (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) : 1;
4754
4890
  const retVal = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2], starconnectionCount, powerTransformer);
@@ -4761,7 +4897,7 @@ class ConverterIntegral7 {
4761
4897
  powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4762
4898
  powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4763
4899
  /** Transormator Anschlusspunkte nach Spannungsebene sortieren */
4764
- this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4900
+ //this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
4765
4901
  // TODO
4766
4902
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
4767
4903
  * da sonst die Wicklungsnummern nicht mehr übereinstimmen könnten */
@@ -4835,6 +4971,9 @@ class ConverterIntegral7 {
4835
4971
  for (const i7Data of result) {
4836
4972
  const sternpunktKnotenMap = new Map();
4837
4973
  const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
4974
+ if (uuid === 'b81485dd-5115-4241-b31a-c87a3eec9803' || uuid === '4eadc602-7dc5-41e4-bb8b-38993c03a80a') {
4975
+ const stop = true;
4976
+ }
4838
4977
  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);
4839
4978
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
4840
4979
  if (substation) {
@@ -4885,9 +5024,9 @@ class ConverterIntegral7 {
4885
5024
  const ur1 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4886
5025
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4887
5026
  const ur3 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 3);
4888
- const sdauer1 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_1) : sr1;
4889
- const sdauer2 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_2) : sr2;
4890
- const sdauer3 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_3) : sr3;
5027
+ const sdauer1 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 1, true);
5028
+ const sdauer2 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 2, true);
5029
+ const sdauer3 = (0, utils_2.getSdauerTrafo)(i7Data, powerTransformerInfo, 3, true);
4891
5030
  //Leerlaufverluste in kW
4892
5031
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4893
5032
  // Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
@@ -4942,7 +5081,7 @@ class ConverterIntegral7 {
4942
5081
  powerTransformerEnd1.r = impedanzW1.r;
4943
5082
  powerTransformerEnd1.x = impedanzW1.x;
4944
5083
  powerTransformerEnd1.g = impedanzW1.g;
4945
- powerTransformerEnd1.b = impedanzW1.b;
5084
+ powerTransformerEnd1.b = -1 * impedanzW1.b;
4946
5085
  powerTransformerEnd1.ratedU = ur1;
4947
5086
  powerTransformerEnd1.ratedS = sr1;
4948
5087
  this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
@@ -4989,7 +5128,7 @@ class ConverterIntegral7 {
4989
5128
  powerTransformerEnd2.r = impedanzW2.r;
4990
5129
  powerTransformerEnd2.x = impedanzW2.x;
4991
5130
  powerTransformerEnd2.g = impedanzW2.g;
4992
- powerTransformerEnd2.b = impedanzW2.b;
5131
+ powerTransformerEnd2.b = -1 * impedanzW2.b;
4993
5132
  powerTransformerEnd2.ratedS = sr2;
4994
5133
  powerTransformerEnd2.ratedU = ur2;
4995
5134
  powerTransformerEnd2.powerTransformer = powerTransformer;
@@ -5037,7 +5176,7 @@ class ConverterIntegral7 {
5037
5176
  powerTransformerEnd3.r = impedanzW3.r;
5038
5177
  powerTransformerEnd3.x = impedanzW3.x;
5039
5178
  powerTransformerEnd3.g = impedanzW3.g;
5040
- powerTransformerEnd3.b = impedanzW3.b;
5179
+ powerTransformerEnd3.b = -1 * impedanzW3.b;
5041
5180
  powerTransformerEnd3.ratedS = sr3;
5042
5181
  powerTransformerEnd3.ratedU = ur3;
5043
5182
  powerTransformerEnd3.powerTransformer = powerTransformer;
@@ -5069,6 +5208,15 @@ class ConverterIntegral7 {
5069
5208
  powerTransformerEnd3.r0 = zeroSequImpedanzWx.r03;
5070
5209
  // Transormator Anschlusspunkte nach Spannungsebene sortieren
5071
5210
  this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
5211
+ // Set grounding for autotransformer
5212
+ const pTEnds = powerTransformer.getPowerTransformerEnd().filter(elem => elem.connectionKind === 'A');
5213
+ if (pTEnds.length > 0) {
5214
+ if (pTEnds.filter(elem => elem.grounded === true).length > 0) {
5215
+ for (const end of pTEnds) {
5216
+ end.grounded = true;
5217
+ }
5218
+ }
5219
+ }
5072
5220
  //TODO
5073
5221
  /** Stufenschalter werden vor der Sortierung der Wicklung nach der Spannungsebene angelegt,
5074
5222
  * da sonst die Wicklungsnummern, nicht mehr übereinstimmen könnten */
@@ -5263,10 +5411,8 @@ class ConverterIntegral7 {
5263
5411
  sortTransformerEnd(powerTransformer, sortProperty, order) {
5264
5412
  // Store current order of power transformer ends.
5265
5413
  let winding_guids = new Array(powerTransformer.powerTransformerEnd.length);
5266
- let winding_guids_fixed = new Array(powerTransformer.powerTransformerEnd.length);
5267
5414
  for (let i = 0; i < powerTransformer.powerTransformerEnd.length; i++) {
5268
5415
  winding_guids[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5269
- winding_guids_fixed[i] = powerTransformer.powerTransformerEnd[i].getUUID();
5270
5416
  }
5271
5417
  //Sort: This step maybe changes power transformer ends order for this power transformer.
5272
5418
  powerTransformer.powerTransformerEnd.sort(function (w1, w2) {
@@ -5290,8 +5436,19 @@ class ConverterIntegral7 {
5290
5436
  // const isNull = true;
5291
5437
  //}
5292
5438
  }
5439
+ let tmpMapping = new Array(powerTransformer.powerTransformerEnd.length);
5440
+ for (let i = 0; i < winding_guids.length; i++) {
5441
+ tmpMapping[i] = (winding_guids.indexOf(powerTransformer.powerTransformerEnd[i].getUUID()) + 1).toString();
5442
+ }
5443
+ return tmpMapping; //return mapping
5293
5444
  }
5294
5445
  setACLineSegmentProperties(defaultModel, cimModel, acLineSegment, data, cable, defaultValuesConfig) {
5446
+ if ((0, parser_utils_1.isBooleanI7)(data.ltgmonitoring) && (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring)) {
5447
+ acLineSegment.ltgmonitoring = (0, parser_utils_1.convertToBooleanI7)(data.ltgmonitoring);
5448
+ }
5449
+ else {
5450
+ acLineSegment.ltgmonitoring = false;
5451
+ }
5295
5452
  if ((0, parser_utils_1.isBooleanI7)(data.flag_impedanzlos) && (0, parser_utils_1.convertToBooleanI7)(data.flag_impedanzlos)) {
5296
5453
  data.flag_impedanzlos = 1;
5297
5454
  }
@@ -5392,8 +5549,8 @@ class ConverterIntegral7 {
5392
5549
  * @param equipmentKey Generierung einer persistenter UUID v5. Für PowerTransformer wird UUID des PowerTransformerEnds verwendet. Andernfalls die UUID des ConductingEquipments
5393
5550
  * */
5394
5551
  setConductingEquipmentOperationalLimit(cimModel, name, terminal, equipmentKey, limit, limitType, igrenz) {
5395
- if ((limit !== undefined && limit > 0) && (igrenz !== undefined && igrenz > 0))
5396
- return;
5552
+ if (!(limit !== undefined && limit > 0) || !(igrenz !== undefined && igrenz > 0))
5553
+ return; //if 'limit' and 'igrenz' is not given leave
5397
5554
  /** OperationalLimitSet erstellen */
5398
5555
  const operationalLimitSetKey = terminal.getUUID() + equipmentKey;
5399
5556
  const operationalLimitSetUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.OperationalLimitSet, this.configUuid, operationalLimitSetKey);
@@ -5478,6 +5635,9 @@ class ConverterIntegral7 {
5478
5635
  terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
5479
5636
  }
5480
5637
  }
5638
+ if (terminal !== undefined && terminal.getUUID() === '7564eef1-6cd6-59c2-957e-825c6593fdf2') {
5639
+ const stop = true;
5640
+ }
5481
5641
  return terminal;
5482
5642
  }
5483
5643
  createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
@@ -5995,7 +6155,7 @@ class ConverterIntegral7 {
5995
6155
  // Topologie
5996
6156
  powerTransformerEnd.terminal = terminal;
5997
6157
  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);
5998
- if (powerTransformer.getUUID() === '4d14cd95-215c-45f3-8136-b06d69ee0191') {
6158
+ if (powerTransformer.getUUID() === '3c3928be-e691-453d-8216-df30bd11845e') {
5999
6159
  const stop = true;
6000
6160
  }
6001
6161
  let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
@@ -6051,36 +6211,34 @@ class ConverterIntegral7 {
6051
6211
  }
6052
6212
  convertTapChangers(i7Data, transformerEnds, cimModel, transformerinfo, connectivityNode, spannungsband) {
6053
6213
  var _a, _b, _c, _d, _e, _f, _g, _h;
6054
- /*if(getUUID(i7Data.guid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
6055
- let stop = true; DONE
6214
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'c0ba4bd1102c4f4fa4fc66865a60f462') { //Zeile53 - Typ Meeden'
6215
+ let stop = true;
6216
+ }
6217
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === '2e8057ed695147f9903023cb5e9d4a0c') { //Zeile55 - SR und LR'
6218
+ let stop = true;
6056
6219
  }
6057
- if(getUUID(i7Data.guid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
6058
- let stop = true; DONE
6059
- }*/
6060
- /*if(getUUID(i7Data.guid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
6061
- let stop = true;
6062
- }*/
6063
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
6220
+ if ((0, parser_utils_1.getUUID)(i7Data.guid).toLowerCase() === 'd7a25b80-b439-48a0-b67e-108903063237') { //Zeile81 - SR statt LR'
6064
6221
  let stop = true;
6065
6222
  }
6066
- /*if(getUUID(i7Data.guid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
6067
- let stop = true;
6068
- }*/
6069
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
6223
+ if ((0, parser_utils_1.getUUID)(i7Data.guid) === 'b81485dd-5115-4241-b31a-c87a3eec9803') {
6070
6224
  let stop = true;
6071
6225
  }
6072
- /*if(getUUID(i7Data.guid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
6073
- let stop = true;
6074
- }*/
6075
6226
  let ratioPhaseTapChangerPresent = false;
6076
6227
  //Check if tap changer exists. (power transformer winding)
6077
6228
  let tapChangerNumberI7 = []; //Number of tap changer
6078
6229
  let tapChangerNumber = [];
6079
- //let transformerEndInfo:EVPowerTransformerEndInfo[] = [];
6230
+ //collect information about tap changers (without type)
6080
6231
  for (let tapChangerPos = 1; tapChangerPos <= 2; tapChangerPos++) {
6081
6232
  if ((0, parser_utils_1.isNumericI7)(i7Data[`gestufte_seite_s${tapChangerPos}`])) {
6082
- tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6083
- tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6233
+ if (i7Data[`gestufte_seite_s${tapChangerPos}`] !== 0) {
6234
+ tapChangerNumberI7.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6235
+ tapChangerNumber.push(i7Data[`gestufte_seite_s${tapChangerPos}`]);
6236
+ }
6237
+ else if (i7Data[`gestufte_seite_s${tapChangerPos}`] === 0) {
6238
+ const controlledSide = getHVSideNumber(transformerEnds);
6239
+ tapChangerNumberI7.push(controlledSide);
6240
+ tapChangerNumber.push(controlledSide);
6241
+ }
6084
6242
  }
6085
6243
  }
6086
6244
  //collect information about tap changers (type)
@@ -6095,15 +6253,15 @@ class ConverterIntegral7 {
6095
6253
  //If there is a phase tap changer and a ratio tap changer reorder the tap changers to process ratio tap changer first.
6096
6254
  let index = undefined;
6097
6255
  if (tapChangerNumberI7.length > 1) {
6098
- for (let entry of tapChangerNumberI7) {
6256
+ for (let i = 0; i < tapChangerNumberI7.length; i++) {
6099
6257
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
6100
- const transformerEndInfo = (_d = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _d === void 0 ? void 0 : _d.find(elem => elem.endNumber === entry);
6258
+ 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]);
6101
6259
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
6102
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entry}`])
6103
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entry}`])
6260
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6261
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
6104
6262
  : (_e = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _e === void 0 ? void 0 : _e.value;
6105
- if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && tapChangerNumberI7.indexOf(entry) > 0) {
6106
- index = tapChangerNumberI7.indexOf(entry);
6263
+ if (!((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) != 0 || spezialRegelung) && i > 0) {
6264
+ index = i; //This only works for two tapchanger definitions per power transformer
6107
6265
  ratioPhaseTapChangerPresent = true;
6108
6266
  }
6109
6267
  }
@@ -6113,15 +6271,15 @@ class ConverterIntegral7 {
6113
6271
  tapChangerNumber[1] = tapChangerNumberI7[0];
6114
6272
  }
6115
6273
  /** I7 Modell max. 2 Stufenschalter */
6116
- for (let entry of tapChangerNumber) {
6274
+ for (let i = 0; i < tapChangerNumber.length; i++) {
6117
6275
  /**
6118
6276
  * 0 Oberspannungsseite
6119
6277
  * 1 Seite 1
6120
6278
  * 2 Seite 2
6121
6279
  * - Stufenschalter nicht vorhanden
6122
6280
  */
6123
- let entryI7 = tapChangerNumberI7.indexOf(entry) + 1;
6124
- let gestufteSeite = tapChangerNumberI7[entryI7 - 1];
6281
+ let entryI7 = i + 1;
6282
+ let gestufteSeite = tapChangerNumberI7[i];
6125
6283
  const transformerEndInfo = (_f = transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.transformerEndInfos) === null || _f === void 0 ? void 0 : _f.find(elem => elem.endNumber === entryI7);
6126
6284
  const transformerEnd = transformerEnds.find(elem => elem.endNumber === entryI7);
6127
6285
  if ((0, parser_utils_1.isNumericI7)(gestufteSeite)) {
@@ -6141,8 +6299,8 @@ class ConverterIntegral7 {
6141
6299
  continue;
6142
6300
  }
6143
6301
  const tapChangerInfo = transformerEndInfo === null || transformerEndInfo === void 0 ? void 0 : transformerEndInfo.tapChangerInfo;
6144
- const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${entryI7}`])
6145
- ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${entryI7}`])
6302
+ const angle = (0, parser_utils_1.isNumericI7)(i7Data[`uzus_winkel_s${i + 1}`])
6303
+ ? (0, parser_utils_1.convertToNumberI7)(i7Data[`uzus_winkel_s${i + 1}`])
6146
6304
  : (_h = tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.stepPhaseIncrement) === null || _h === void 0 ? void 0 : _h.value;
6147
6305
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
6148
6306
  //const neutralU = transformerEnd.ratedU;
@@ -6429,65 +6587,99 @@ class ConverterIntegral7 {
6429
6587
  * @param sternpunktKnotenMap Map mit den Sterpunktknoten aus der I7 Datenbank
6430
6588
  * */
6431
6589
  convertTrafoGrounding(frame, powerTransformer, powerTransformerEnd, i7Modell, stpKnoten, defaultValuesConfig) {
6432
- var _a, _b, _c, _d, _e, _f;
6433
- /** Trafo ist geerdet */
6590
+ /**
6591
+ * Five cases for transformer grounding model has to be checked:
6592
+ * Case 1: no grounding ... no 'Sternpunktknoten' is present ... ''
6593
+ * Case 2: no grounding ... 'Sternpunktknoten', 'SternpunktSchaltelement', 'Sternpunktschiene' is present but no 'KDrossel' ... 'isoliert'
6594
+ * Case 3: grounding is present ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 1 ... 'starr' or 'direkt'
6595
+ * Case 4: grounding is present ... only 'Sternpunktknoten' and 'Kdrossel' is present ... 'über Impedanz'
6596
+ * Case 5: grounding is present ... 'Sternpunktknoten', 'Sternpunktschaltelement', 'Sternpunktschiene' and 'Kdrossel' is present ... 'über Impedanz'
6597
+ * Case 6: no grounding ... only 'Sternpunktknoten' is present and 'Sternpunktknoten.geerdet' == 0 ... ''
6598
+ */
6434
6599
  const cimModel = frame.cimModel;
6600
+ let groundDisconnectorUUID = undefined;
6601
+ let connectivityNodeN = undefined;
6602
+ let groundDisconnector = undefined;
6603
+ let voltageLevel = undefined;
6435
6604
  if (stpKnoten) {
6436
- const junctionUUID = i7Modell.sternPunktImpModel.stpSchieneJunctionUUIDs.get(stpKnoten.schaltelement1pelem);
6437
- const junction = i7Modell.sternPunktImpModel.junctions.get(junctionUUID);
6438
- powerTransformerEnd.grounded = true;
6439
- // TODO
6440
- powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground;
6441
- if (!junctionUUID) {
6442
- /** Fall 1 Wenn der Knoten kein Schaltelement hat, dann direkte Erdung */
6443
- //TODO
6444
- // rground und xground aus der default-config verwenden?
6445
- powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground;
6605
+ groundDisconnectorUUID = i7Modell.sternPunktImpModel.stpSchaltelementeIdGroundDisconnectorUUID.get(stpKnoten.schaltelement1pelem);
6606
+ connectivityNodeN = i7Modell.sternPunktImpModel.stpSchieneIdConnectivityNode.get(i7Modell.sternPunktImpModel.GroundDisconnectorUuidStpSchieneId.get(groundDisconnectorUUID));
6607
+ groundDisconnector = i7Modell.sternPunktImpModel.groundDisconnectors.get(groundDisconnectorUUID);
6608
+ if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size === 1) {
6609
+ const cn = powerTransformerEnd.getTerminal().getConnectivityNode();
6610
+ this.createConnection(cimModel, groundDisconnector, cn, PhaseCode_1.PhaseCode.ABCN, true);
6611
+ }
6612
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size < 1) {
6613
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is not successfully connected.`);
6614
+ }
6615
+ else if (groundDisconnector !== undefined && groundDisconnector.getTerminals().size > 2) {
6616
+ this.logger.debug(`GroundDisconnector of PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} is referenced by more than two Terminal objects.`);
6617
+ }
6618
+ /** EquipmentContainer - Voltage Level*/
6619
+ voltageLevel = (this.determineEquipmentContainer('VoltageLevel', cimModel, powerTransformerEnd.getTerminal().connectivityNode.connectivityNodeContainer));
6620
+ }
6621
+ if (stpKnoten && groundDisconnector === undefined) { //Case 3 and Case 4
6622
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.stpKnotenStpImp.get(stpKnoten.id);
6623
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 4 ... 'Kdrossel' is modelled as a GroundingImpedanz
6624
+ //cimModel.addGroundingImpedance(earthFaultCompensator as GroundingImpedance);//set grounded to 'true' if PetersenCoil is present
6625
+ const groundingImpedance = earthFaultCompensator;
6626
+ powerTransformerEnd.xground = groundingImpedance.x;
6627
+ powerTransformerEnd.rground = groundingImpedance.r;
6628
+ powerTransformerEnd.grounded = true;
6629
+ }
6630
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 4 ... 'Kdrossel' is modelled as a PetersenCoil
6631
+ //cimModel.addPetersenCoil(earthFaultCompensator as PetersenCoil); //set grounded to 'true' if GroundingImpedance is present
6632
+ const petersenCoil = earthFaultCompensator;
6633
+ 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);
6634
+ powerTransformerEnd.rground = petersenCoil.r;
6635
+ powerTransformerEnd.grounded = true;
6636
+ }
6637
+ else if (stpKnoten.geerdet === 1) { //Case 3
6638
+ powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground; //it is assumed that rground and xground is zero in case of solidly grounding
6639
+ powerTransformerEnd.xground = defaultValuesConfig.TransformerEnd.xground; //it is assumed that rground and xground is zero in case of solidly grounding
6640
+ powerTransformerEnd.grounded = true;
6641
+ }
6642
+ else { //Case 6
6643
+ powerTransformerEnd.grounded = false;
6644
+ }
6645
+ }
6646
+ else if (connectivityNodeN !== undefined && groundDisconnector !== undefined) {
6647
+ const earthFaultCompensator = i7Modell.sternPunktImpModel.groundDisconnectorUUIDstpImp.get(groundDisconnectorUUID);
6648
+ if (earthFaultCompensator instanceof GroundingImpedance_1.GroundingImpedance) { //Case 5 ... 'Kdrossel' is modelled as a GroundingImpedanz
6649
+ cimModel.addGroundingImpedance(earthFaultCompensator);
6650
+ cimModel.addGroundDisconnector(groundDisconnector);
6651
+ cimModel.addConnectivityNode(connectivityNodeN);
6652
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if GroundingImpedance is present
6653
+ }
6654
+ else if (earthFaultCompensator instanceof PetersenCoil_1.PetersenCoil) { //Case 5 ... 'Kdrossel' is modelled as a PetersenCoil
6655
+ cimModel.addPetersenCoil(earthFaultCompensator);
6656
+ cimModel.addGroundDisconnector(groundDisconnector);
6657
+ cimModel.addConnectivityNode(connectivityNodeN);
6658
+ powerTransformerEnd.grounded = true; //set grounded to 'true' if PetersenCoil is present
6659
+ }
6660
+ else { //Case 2
6661
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if no GroundingImpedance or PetersenCoil is present ... 'isolierte Sternpunktschiene'
6662
+ }
6663
+ /** BaseVoltage */
6664
+ if (voltageLevel !== undefined) {
6665
+ groundDisconnector.baseVoltage = voltageLevel.baseVoltage ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6666
+ groundDisconnector.equipmentContainer = voltageLevel;
6667
+ if (earthFaultCompensator !== undefined) {
6668
+ earthFaultCompensator.equipmentContainer = voltageLevel;
6669
+ }
6670
+ connectivityNodeN.connectivityNodeContainer = voltageLevel;
6671
+ connectivityNodeN.key = voltageLevel.key + connectivityNodeN.key;
6446
6672
  }
6447
6673
  else {
6448
- /** Fall 2 Trafo ist über eine Sternpunktschiene geerdet
6449
- * Nur Verbindung zur Junction herstellen */
6450
- let terminal;
6451
- 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)) {
6452
- 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);
6453
- terminal = this.createBoundaryConnection(frame, junction, i7ObjectID, PhaseCode_1.PhaseCode.ABC);
6454
- }
6455
- else {
6456
- terminal = this.createConnection(cimModel, junction, (_e = powerTransformerEnd.terminal) === null || _e === void 0 ? void 0 : _e.connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
6457
- }
6458
- if (terminal) {
6459
- terminal.name = 't_stp_trafo';
6460
- if (junction)
6461
- junction.name = (junction === null || junction === void 0 ? void 0 : junction.name) + '/Trafo';
6462
- const pSpuleGroundImpedance = i7Modell.sternPunktImpModel.junctionUUIDstpImp.get(junctionUUID);
6463
- /** EquipmentContainer - Voltage Level*/
6464
- const voltageLevel = this.getVoltageLevelByVoltage((_f = powerTransformer.equipmentContainer) === null || _f === void 0 ? void 0 : _f.voltageLevels, powerTransformerEnd.ratedU);
6465
- if (!voltageLevel) {
6466
- this.logger.debug(`Trafo ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat kein EquipmentContainer`);
6467
- }
6468
- /** BaseVoltage */
6469
- if (junction && voltageLevel) {
6470
- junction.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6471
- junction.equipmentContainer = voltageLevel;
6472
- cimModel.addJunction(junction);
6473
- }
6474
- else {
6475
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine Junction ${junctionUUID} oder VoltageLevel`);
6476
- }
6477
- if (pSpuleGroundImpedance) {
6478
- pSpuleGroundImpedance.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
6479
- pSpuleGroundImpedance.equipmentContainer = voltageLevel;
6480
- cimModel.addGroundingImpedance(pSpuleGroundImpedance);
6481
- }
6482
- else {
6483
- this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine pSpuleGroundImpedance.`);
6484
- }
6485
- }
6486
- else {
6487
- 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.`);
6488
- }
6674
+ this.logger.debug(`PowerTransformerEnd ${powerTransformerEnd === null || powerTransformerEnd === void 0 ? void 0 : powerTransformerEnd.mrid} hat kein VoltageLevel`);
6489
6675
  }
6490
6676
  }
6677
+ else { //Case 1
6678
+ powerTransformerEnd.grounded = false; //set grounded to 'false' if there is no 'Sternpunktknoten'
6679
+ }
6680
+ if (powerTransformerEnd.grounded) {
6681
+ powerTransformerEnd.terminal.phases = PhaseCode_1.PhaseCode.ABCN;
6682
+ }
6491
6683
  }
6492
6684
  /** Equipment grounding
6493
6685
  * @param shnt ShuntCompensator object
@@ -6855,4 +7047,48 @@ function logExecutionTime(logger, startTime, text) {
6855
7047
  logger.debug(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6856
7048
  console.log(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6857
7049
  }
7050
+ function getHVSideNumber(transformerEnds) {
7051
+ let retVal = undefined;
7052
+ let urHv = 0;
7053
+ for (let i = 0; i < transformerEnds.length; i++) {
7054
+ if (urHv < transformerEnds[i].ratedU) {
7055
+ retVal = transformerEnds[i].endNumber;
7056
+ urHv = transformerEnds[i].ratedU;
7057
+ }
7058
+ }
7059
+ return retVal;
7060
+ }
7061
+ function createLineName(i7Data, uuid, lineNames) {
7062
+ let retVal = (0, util_create_1.createNotation)([i7Data.bezeichner], 32, false);
7063
+ if (lineNames[retVal] === true) { //try to find another name with i7Data.stkabname as suffix
7064
+ if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length > 0) {
7065
+ retVal = i7Data.bezeichner.substring(0, i7Data.bezeichner.length - (i7Data.bezeichner.length + (i7Data.stkabname.length + 1) - 32)) + '_' + i7Data.stkabname;
7066
+ }
7067
+ else if (i7Data.bezeichner.length > 0 && i7Data.stkabname.length <= 0) {
7068
+ retVal = i7Data.bezeichner.substring(0, i7Data.stkabname.length - (i7Data.bezeichner.length - 32));
7069
+ }
7070
+ else if (i7Data.bezeichner.length <= 0 && i7Data.stkabname.length > 0) {
7071
+ retVal = i7Data.stkabname.substring(0, i7Data.stkabname.length - (i7Data.stkabname.length - 32));
7072
+ }
7073
+ }
7074
+ if (lineNames[retVal] === true) { //use uuid to create a unique name
7075
+ if (retVal.length + 9 <= 32) {
7076
+ retVal = retVal + '_' + normalizeUUID(uuid).substring(0, 8);
7077
+ }
7078
+ else {
7079
+ retVal = retVal.substring(0, retVal.length - (retVal.length + 9 - 32)) + '_' + normalizeUUID(uuid).substring(0, 8);
7080
+ }
7081
+ }
7082
+ return retVal;
7083
+ }
7084
+ function normalizeUUID(uuid) {
7085
+ let retVal = '';
7086
+ if (uuid != undefined && uuid.length > 0) {
7087
+ retVal = uuid.replaceAll('_', '');
7088
+ retVal = retVal.replaceAll('-', '');
7089
+ retVal = retVal.toLowerCase();
7090
+ retVal = retVal.trim();
7091
+ }
7092
+ return retVal;
7093
+ }
6858
7094
  //# sourceMappingURL=converter.integral7.js.map