@enervance/insight-cim-model 0.0.176 → 0.0.177

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 (83) hide show
  1. package/dist/constants/cim-class-names.d.ts +5 -1
  2. package/dist/constants/cim-class-names.js +5 -1
  3. package/dist/constants/cim-class-names.js.map +1 -1
  4. package/dist/constants/rdf-xml.d.ts +2 -0
  5. package/dist/constants/rdf-xml.js +2 -0
  6. package/dist/constants/rdf-xml.js.map +1 -1
  7. package/dist/converter/integral7/config/integral-prefix.d.ts +4 -2
  8. package/dist/converter/integral7/config/integral-prefix.js +5 -3
  9. package/dist/converter/integral7/config/integral-prefix.js.map +1 -1
  10. package/dist/converter/integral7/converter.integral7.d.ts +6 -6
  11. package/dist/converter/integral7/converter.integral7.js +486 -303
  12. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  13. package/dist/converter/integral7/dl-convert/data-manager.d.ts +1 -1
  14. package/dist/converter/integral7/dl-convert/data-manager.js +41 -3
  15. package/dist/converter/integral7/dl-convert/data-manager.js.map +1 -1
  16. package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +1 -1
  17. package/dist/converter/integral7/dl-convert/dl-converter-i7.js +3 -2
  18. package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
  19. package/dist/converter/integral7/dl-convert/dl-graphs/db-object-graph.js +1 -1
  20. package/dist/converter/integral7/dl-convert/dl-graphs/db-object-graph.js.map +1 -1
  21. package/dist/converter/integral7/dl-convert/executor.d.ts +1 -0
  22. package/dist/converter/integral7/dl-convert/executor.js +145 -143
  23. package/dist/converter/integral7/dl-convert/executor.js.map +1 -1
  24. package/dist/converter/integral7/impedance.utils.d.ts +28 -0
  25. package/dist/converter/integral7/impedance.utils.js +144 -0
  26. package/dist/converter/integral7/impedance.utils.js.map +1 -0
  27. package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +1 -0
  28. package/dist/converter/integral7/interface-i7/export-frame-i7.js +3 -0
  29. package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
  30. package/dist/converter/integral7/model/interfaces.d.ts +1 -1
  31. package/dist/converter/integral7/utils-cgmes-export.js +2 -0
  32. package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
  33. package/dist/converter/integral7/utils-trafo3w.d.ts +8 -25
  34. package/dist/converter/integral7/utils-trafo3w.js +114 -127
  35. package/dist/converter/integral7/utils-trafo3w.js.map +1 -1
  36. package/dist/converter/integral7/utils.d.ts +6 -5
  37. package/dist/converter/integral7/utils.js +222 -63
  38. package/dist/converter/integral7/utils.js.map +1 -1
  39. package/dist/etl/etl-neplan/etl-neplan-geo.js +2 -2
  40. package/dist/etl/etl-neplan/etl-neplan-geo.js.map +1 -1
  41. package/dist/interfaces/model/core/IACDCTerminal.d.ts +3 -0
  42. package/dist/interfaces/model/core/ITerminal.d.ts +0 -3
  43. package/dist/model/core/ACDCTerminal.d.ts +3 -0
  44. package/dist/model/core/ACDCTerminal.js +4 -0
  45. package/dist/model/core/ACDCTerminal.js.map +1 -1
  46. package/dist/model/core/ConductingEquipment.d.ts +1 -0
  47. package/dist/model/core/ConductingEquipment.js +3 -0
  48. package/dist/model/core/ConductingEquipment.js.map +1 -1
  49. package/dist/model/core/Curve.js +16 -18
  50. package/dist/model/core/Curve.js.map +1 -1
  51. package/dist/model/core/Terminal.d.ts +0 -3
  52. package/dist/model/core/Terminal.js +0 -4
  53. package/dist/model/core/Terminal.js.map +1 -1
  54. package/dist/model/dc/ACDCConverter.js.map +1 -1
  55. package/dist/model/dc/DCLine.js +17 -17
  56. package/dist/model/dc/DCLineSegment.js +25 -25
  57. package/dist/model/dc/VsCapabilityCurve.d.ts +10 -0
  58. package/dist/model/dc/VsCapabilityCurve.js +32 -0
  59. package/dist/model/dc/VsCapabilityCurve.js.map +1 -0
  60. package/dist/model/dc/VsConverter.d.ts +2 -0
  61. package/dist/model/dc/VsConverter.js.map +1 -1
  62. package/dist/model/extensions/enervance/assetinfo/EVWireInfo.js +2 -2
  63. package/dist/model/extensions/enervance/assetinfo/EVWireInfo.js.map +1 -1
  64. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.d.ts +15 -0
  65. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.js +29 -0
  66. package/dist/model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.js.map +1 -1
  67. package/dist/model/loadmodel/ConformLoadGroup.js +22 -22
  68. package/dist/model/loadmodel/LoadArea.js +21 -21
  69. package/dist/model/loadmodel/SubLoadArea.js +22 -22
  70. package/dist/model/operationallimits/OperationalLimitSet.d.ts +2 -2
  71. package/dist/model/operationallimits/OperationalLimitSet.js.map +1 -1
  72. package/dist/model-container/model/ModelContainer.d.ts +5 -1
  73. package/dist/model-container/model/ModelContainer.js +18 -2
  74. package/dist/model-container/model/ModelContainer.js.map +1 -1
  75. package/dist/util/collection/util-graph2tree.d.ts +3 -0
  76. package/dist/util/collection/util-graph2tree.js +102 -19
  77. package/dist/util/collection/util-graph2tree.js.map +1 -1
  78. package/dist/util/util-create.d.ts +2 -1
  79. package/dist/util/util-create.js +163 -14
  80. package/dist/util/util-create.js.map +1 -1
  81. package/dist/utils2/model.modification.utils.js +2 -2
  82. package/dist/utils2/model.modification.utils.js.map +1 -1
  83. package/package.json +2 -2
@@ -49,6 +49,11 @@ const INTEGRALPowerTransformerEndInfo_1 = require("../../model/extensions/integr
49
49
  const INTEGRALPowerTransformer3WInfo_1 = require("../../model/extensions/integral/assetinfo/INTEGRALPowerTransformer3WInfo.js");
50
50
  const INTEGRALTapChangerInfo_1 = require("../../model/extensions/integral/assetinfo/INTEGRALTapChangerInfo.js");
51
51
  const EVWireInfo_1 = require("../../model/extensions/enervance/assetinfo/EVWireInfo.js");
52
+ const INTEGRALMultiplierFactor_1 = require("../../model/extensions/integral/common/INTEGRALMultiplierFactor.js");
53
+ const INTEGRALACLineSegment_1 = require("../../model/extensions/integral/wires/INTEGRALACLineSegment.js");
54
+ const INTEGRALAsynchronousMachine_1 = require("../../model/extensions/integral/wires/INTEGRALAsynchronousMachine.js");
55
+ const INTEGRALExternalNetworkInjection_1 = require("../../model/extensions/integral/wires/INTEGRALExternalNetworkInjection.js");
56
+ const INTEGRALSynchronousMachine_1 = require("../../model/extensions/integral/wires/INTEGRALSynchronousMachine.js");
52
57
  const GeneratingUnit_1 = require("../../model/generation/GeneratingUnit.js");
53
58
  const GeneratorControlSource_1 = require("../../model/generation/GeneratorControlSource.js");
54
59
  const HydroEnergyConversionKind_1 = require("../../model/generation/HydroEnergyConversionKind.js");
@@ -56,8 +61,8 @@ const HydroGeneratingUnit_1 = require("../../model/generation/HydroGeneratingUni
56
61
  const NuclearGeneratingUnit_1 = require("../../model/generation/NuclearGeneratingUnit.js");
57
62
  const SolarGeneratingUnit_1 = require("../../model/generation/SolarGeneratingUnit.js");
58
63
  const ThermalGeneratingUnit_1 = require("../../model/generation/ThermalGeneratingUnit.js");
59
- const WindGeneratingUnit_1 = require("../../model/generation/WindGeneratingUnit.js");
60
64
  const WindGenUnitKind_1 = require("../../model/generation/WindGenUnitKind.js");
65
+ const WindGeneratingUnit_1 = require("../../model/generation/WindGeneratingUnit.js");
61
66
  const ConformLoadGroup_1 = require("../../model/loadmodel/ConformLoadGroup.js");
62
67
  const LoadArea_1 = require("../../model/loadmodel/LoadArea.js");
63
68
  const SubLoadArea_1 = require("../../model/loadmodel/SubLoadArea.js");
@@ -93,17 +98,21 @@ const SynchronousMachineOperatingMode_1 = require("../../model/wires/Synchronous
93
98
  const TapChangerControl_1 = require("../../model/wires/TapChangerControl.js");
94
99
  const TransformerControlMode_1 = require("../../model/wires/TransformerControlMode.js");
95
100
  const mysql_controller_1 = require("../../util/database/mysql-controller.js");
96
- const INTEGRALMultiplierFactor_1 = require("../../model/extensions/integral/common/INTEGRALMultiplierFactor.js");
97
- const INTEGRALACLineSegment_1 = require("../../model/extensions/integral/wires/INTEGRALACLineSegment.js");
98
- const INTEGRALAsynchronousMachine_1 = require("../../model/extensions/integral/wires/INTEGRALAsynchronousMachine.js");
99
- const INTEGRALExternalNetworkInjection_1 = require("../../model/extensions/integral/wires/INTEGRALExternalNetworkInjection.js");
100
- const INTEGRALSynchronousMachine_1 = require("../../model/extensions/integral/wires/INTEGRALSynchronousMachine.js");
101
+ const INTEGRALModelContainer_1 = require("../../model-container/model/INTEGRALModelContainer.js");
102
+ const AngleDegrees_1 = require("../../model/domain/AngleDegrees.js");
103
+ const INTEGRALEquivalentInjection_1 = require("../../model/extensions/integral/equivalents/INTEGRALEquivalentInjection.js");
104
+ const INTEGRALConformLoad_1 = require("../../model/extensions/integral/loadmodel/INTEGRALConformLoad.js");
105
+ const AsynchronousMachineKind_1 = require("../../model/wires/AsynchronousMachineKind.js");
106
+ const util_graph2tree_1 = require("../../util/collection/util-graph2tree.js");
101
107
  const util_create_1 = require("../../util/util-create.js");
102
108
  const utils_1 = require("../../util/utils.js");
109
+ const common_utils_1 = require("../../utils2/common.utils.js");
110
+ const parser_utils_1 = require("../../utils2/parser.utils.js");
103
111
  const integral_prefix_1 = require("./config/integral-prefix.js");
104
112
  const data_structures_i7_1 = require("./interface-i7/data-structures-i7.js");
105
113
  const export_frame_i7_1 = require("./interface-i7/export-frame-i7.js");
106
114
  const KnotenSo_1 = require("./model/integral/KnotenSo.js");
115
+ const Laengskupplung_1 = require("./model/integral/Laengskupplung.js");
107
116
  const Leitung_1 = require("./model/integral/Leitung.js");
108
117
  const Schaltanlage_1 = require("./model/integral/Schaltanlage.js");
109
118
  const Schaltanlagenabschnitt_1 = require("./model/integral/Schaltanlagenabschnitt.js");
@@ -112,38 +121,31 @@ const Standort_1 = require("./model/integral/Standort.js");
112
121
  const integral_sql_1 = require("./sql/integral.sql.js");
113
122
  const utils_2 = require("./utils.js");
114
123
  const utils_trafo3w_1 = require("./utils-trafo3w.js");
115
- const INTEGRALModelContainer_1 = require("../../model-container/model/INTEGRALModelContainer.js");
116
- const Laengskupplung_1 = require("./model/integral/Laengskupplung.js");
117
- const INTEGRALConformLoad_1 = require("../../model/extensions/integral/loadmodel/INTEGRALConformLoad.js");
118
- const AngleDegrees_1 = require("../../model/domain/AngleDegrees.js");
119
- const AsynchronousMachineKind_1 = require("../../model/wires/AsynchronousMachineKind.js");
120
- const INTEGRALEquivalentInjection_1 = require("../../model/extensions/integral/equivalents/INTEGRALEquivalentInjection.js");
121
- const util_graph2tree_1 = require("../../util/collection/util-graph2tree.js");
122
- const parser_utils_1 = require("../../utils2/parser.utils.js");
123
- const common_utils_1 = require("../../utils2/common.utils.js");
124
- const SVCControlMode_1 = require("../../model/wires/SVCControlMode.js");
124
+ const CsPpccControlKind_1 = require("../../model/dc/CsPpccControlKind.js");
125
125
  const DCGround_1 = require("../../model/dc/DCGround.js");
126
+ const DCPolarityKind_1 = require("../../model/dc/DCPolarityKind.js");
127
+ const VsCapabilityCurve_1 = require("../../model/dc/VsCapabilityCurve.js");
126
128
  const INTEGRALEquivalentBranch_1 = require("../../model/extensions/amprion/equivalents/INTEGRALEquivalentBranch.js");
127
- const PhaseTapChangerLinear_1 = require("../../model/wires/PhaseTapChangerLinear.js");
128
129
  const DCConverterUnit_1 = require("../../model/extensions/integral/dc/DCConverterUnit.js");
129
- const DCPolarityKind_1 = require("../../model/dc/DCPolarityKind.js");
130
+ const ApparentPowerLimit_1 = require("../../model/operationallimits/ApparentPowerLimit.js");
131
+ const ControlAreaTypeKind_1 = require("../../model/operations/ControlAreaTypeKind.js");
132
+ const AsynchronousMachine_1 = require("../../model/wires/AsynchronousMachine.js");
133
+ const PhaseTapChangerLinear_1 = require("../../model/wires/PhaseTapChangerLinear.js");
130
134
  const RotatingMachine_1 = require("../../model/wires/RotatingMachine.js");
135
+ const SVCControlMode_1 = require("../../model/wires/SVCControlMode.js");
131
136
  const SynchronousMachine_1 = require("../../model/wires/SynchronousMachine.js");
132
- const AsynchronousMachine_1 = require("../../model/wires/AsynchronousMachine.js");
133
- const ControlAreaTypeKind_1 = require("../../model/operations/ControlAreaTypeKind.js");
134
- const CsPpccControlKind_1 = require("../../model/dc/CsPpccControlKind.js");
135
- const ApparentPowerLimit_1 = require("../../model/operationallimits/ApparentPowerLimit.js");
136
137
  const executor_1 = require("./dl-convert/executor.js");
137
138
  const Diagram_1 = require("../../model/diagram/Diagram.js");
138
- const util_cim_model_1 = require("./util-cim.model.js");
139
139
  const cim_constants_1 = require("../../constants/cim-constants.js");
140
140
  const EVWireObject_1 = require("../../model/extensions/enervance/assets/EVWireObject.js");
141
141
  const INTEGRALPowerTransformer2WInfo_1 = require("../../model/extensions/integral/assetinfo/INTEGRALPowerTransformer2WInfo.js");
142
+ const impedance_utils_1 = require("./impedance.utils.js");
143
+ const util_cim_model_1 = require("./util-cim.model.js");
142
144
  class ConverterIntegral7 {
143
145
  constructor() {
144
146
  /** Exportnetze gemäß Konfiguration */
145
147
  this.exportFrames = new Map();
146
- /** Grenznetze gemäß Konfiguration */
148
+ /** Grenznetz gemäß Konfiguration */
147
149
  this.exportFramesBoundary = new Map();
148
150
  /** ContainerModel mit Default-CIM-Instanzen */
149
151
  this.cimModelDefault = new INTEGRALModelContainer_1.INTEGRALModelContainer();
@@ -539,84 +541,86 @@ class ConverterIntegral7 {
539
541
  /**
540
542
  * DL Profile
541
543
  **/
542
- this.executor = new executor_1.Executor(this.mysqlController, this.configUuid);
543
- yield this.executor.mergeDataFromIntegralID2UUID(this.integralID2UUID);
544
- for (const boundaryFrame of this.exportFramesBoundary.values()) {
545
- yield this.executor.mergeDataFromFrame(boundaryFrame);
546
- }
547
- yield this.executor.mergeDataFromFrame(frame);
548
- yield this.executor.loadAllSchemaVariants();
549
- const netz_standortIds = standortIDs.map(standortId => {
550
- return { id: standortId };
551
- });
552
- const netz_knotensoIds = knotenSoIDs.map(knotenSoId => {
553
- return { id: knotenSoId };
554
- });
555
- for (const entry of this.exportFramesBoundary.entries()) {
556
- entry[1].integral7Modell.integralStandorte.forEach((_, key) => {
557
- netz_standortIds.push({ id: key });
544
+ if (!frame.boundary) {
545
+ this.executor = new executor_1.Executor(this.mysqlController, this.configUuid);
546
+ yield this.executor.mergeDataFromIntegralID2UUID(this.integralID2UUID);
547
+ for (const boundaryFrame of this.exportFramesBoundary.values()) {
548
+ yield this.executor.mergeDataFromFrame(boundaryFrame);
549
+ }
550
+ yield this.executor.mergeDataFromFrame(frame);
551
+ yield this.executor.loadAllSchemaVariants();
552
+ const netz_standortIds = standortIDs.map(standortId => {
553
+ return { id: standortId };
558
554
  });
559
- entry[1].integral7Modell.integralKnotenSo.forEach((_, key) => {
560
- netz_knotensoIds.push({ id: key });
555
+ const netz_knotensoIds = knotenSoIDs.map(knotenSoId => {
556
+ return { id: knotenSoId };
561
557
  });
562
- }
563
- const netzLeitungIds = [...integral7Modell.integralLeitungen.keys()];
564
- const netzHgueLeitungIds = [...integral7Modell.integralHgueLeitungIds.values()];
565
- const netzErsatzlaengszweigIds = [...integral7Modell.integalErsatzLaengszweigIds.values()];
566
- const netzStreckenlastIds = [...integral7Modell.integralLeitungen.values()].map(leitung => leitung.streckenlastId).filter(id => id !== undefined && id !== null);
567
- const allLeitungIds = [...new Set([...netzLeitungIds, ...netzHgueLeitungIds, ...netzErsatzlaengszweigIds, ...netzStreckenlastIds]).values()];
568
- const convertOptions = {
569
- only: {
570
- netz_standortIds,
571
- netz_knotensoIds,
572
- netz_schaltanlagenIds: schaltanlagenIDs.map(schaltanlagenId => {
573
- return { id: schaltanlagenId };
574
- }),
575
- netz_saabschnittIds: schaltanlagenAbschnittIDs.map(schaltanlagenAbschnittId => {
576
- return { id: schaltanlagenAbschnittId };
577
- }),
578
- netz_schaltfeldIds: schaltfeldIDs.map(schaltfeldId => {
579
- return { id: schaltfeldId };
580
- }),
581
- netz_leitungIds: allLeitungIds.map(leitungId => {
582
- return { id: leitungId };
583
- })
558
+ for (const entry of this.exportFramesBoundary.entries()) {
559
+ entry[1].integral7Modell.currentSitesBoundary.forEach((_, key) => {
560
+ netz_standortIds.push({ id: key });
561
+ });
562
+ entry[1].integral7Modell.integralKnotenSo.forEach((_, key) => {
563
+ netz_knotensoIds.push({ id: key });
564
+ });
584
565
  }
585
- };
586
- const resultingObjects = yield this.executor.convert(convertOptions);
587
- for (const resultingObject of resultingObjects) {
588
- if (resultingObject instanceof Diagram_1.Diagram) {
589
- // UUIDs von Diagram-Objekten werden aus I7 übernommen
590
- frame.cimModel.addDiagram(resultingObject);
591
- while (resultingObject.diagramElements.length > 0) {
592
- const currentDiagramObject = resultingObject.diagramElements.pop();
593
- // const diagramObject = resultingObject as DiagramObject;
594
- const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObject, this.configUuid, currentDiagramObject.getIdentifiedObjectUUID());
595
- currentDiagramObject.mrid = uuid;
596
- for (const diagramObjectPoint of currentDiagramObject.diagramObjectPoints) {
597
- const key = uuid + String((_a = diagramObjectPoint.sequenceNumber) !== null && _a !== void 0 ? _a : 1);
598
- const pointUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObjectPoint, this.configUuid, key);
599
- diagramObjectPoint.mrid = pointUuid;
566
+ const netzLeitungIds = [...integral7Modell.integralLeitungen.keys()];
567
+ const netzHgueLeitungIds = [...integral7Modell.integralHgueLeitungIds.values()];
568
+ const netzErsatzlaengszweigIds = [...integral7Modell.integalErsatzLaengszweigIds.values()];
569
+ const netzStreckenlastIds = [...integral7Modell.integralLeitungen.values()].map(leitung => leitung.streckenlastId).filter(id => id !== undefined && id !== null);
570
+ const allLeitungIds = [...new Set([...netzLeitungIds, ...netzHgueLeitungIds, ...netzErsatzlaengszweigIds, ...netzStreckenlastIds]).values()];
571
+ const convertOptions = {
572
+ only: {
573
+ netz_standortIds,
574
+ netz_knotensoIds,
575
+ netz_schaltanlagenIds: schaltanlagenIDs.map(schaltanlagenId => {
576
+ return { id: schaltanlagenId };
577
+ }),
578
+ netz_saabschnittIds: schaltanlagenAbschnittIDs.map(schaltanlagenAbschnittId => {
579
+ return { id: schaltanlagenAbschnittId };
580
+ }),
581
+ netz_schaltfeldIds: schaltfeldIDs.map(schaltfeldId => {
582
+ return { id: schaltfeldId };
583
+ }),
584
+ netz_leitungIds: allLeitungIds.map(leitungId => {
585
+ return { id: leitungId };
586
+ })
587
+ }
588
+ };
589
+ const resultingObjects = yield this.executor.convert(convertOptions);
590
+ for (const resultingObject of resultingObjects) {
591
+ if (resultingObject instanceof Diagram_1.Diagram) {
592
+ // UUIDs von Diagram-Objekten werden aus I7 übernommen
593
+ frame.cimModel.addDiagram(resultingObject);
594
+ while (resultingObject.diagramElements.length > 0) {
595
+ const currentDiagramObject = resultingObject.diagramElements.pop();
596
+ // const diagramObject = resultingObject as DiagramObject;
597
+ const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObject, this.configUuid, currentDiagramObject.getIdentifiedObjectUUID());
598
+ currentDiagramObject.mrid = uuid;
599
+ for (const diagramObjectPoint of currentDiagramObject.diagramObjectPoints) {
600
+ const key = uuid + String((_a = diagramObjectPoint.sequenceNumber) !== null && _a !== void 0 ? _a : 1);
601
+ const pointUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObjectPoint, this.configUuid, key);
602
+ diagramObjectPoint.mrid = pointUuid;
603
+ }
604
+ frame.cimModel.addDiagramObject(currentDiagramObject);
600
605
  }
601
- frame.cimModel.addDiagramObject(currentDiagramObject);
602
- }
603
- resultingObject.diagramElements = [];
604
- // } else if (resultingObject instanceof DiagramObject) {
605
- // // UUIDs gemäß UUID v5 generieren
606
- // const diagramObject = resultingObject as DiagramObject;
607
- // const uuid = CommonUtils.generateUUIDv5(ClassNames.DiagramObject, this.configUuid, diagramObject.getIdentifiedObjectUUID());
608
- // diagramObject.mrid = uuid;
609
- //
610
- // for (const diagramObjectPoint of diagramObject.diagramObjectPoints) {
611
- // const key = uuid + String(diagramObjectPoint.sequenceNumber ?? 1);
612
- // const pointUuid = CommonUtils.generateUUIDv5(ClassNames.DiagramObjectPoint, this.configUuid, key);
613
- // diagramObjectPoint.mrid = pointUuid;
614
- // }
615
- // frame.cimModel.addDiagramObject(resultingObject);
616
- }
617
- }
618
- this.executor.dataManager.cimModelGraph.purgeAll();
619
- this.executor.dataManager.dbObjectKeyCimModelUuidGraph.purgeAll();
606
+ resultingObject.diagramElements = [];
607
+ // } else if (resultingObject instanceof DiagramObject) {
608
+ // // UUIDs gemäß UUID v5 generieren
609
+ // const diagramObject = resultingObject as DiagramObject;
610
+ // const uuid = CommonUtils.generateUUIDv5(ClassNames.DiagramObject, this.configUuid, diagramObject.getIdentifiedObjectUUID());
611
+ // diagramObject.mrid = uuid;
612
+ //
613
+ // for (const diagramObjectPoint of diagramObject.diagramObjectPoints) {
614
+ // const key = uuid + String(diagramObjectPoint.sequenceNumber ?? 1);
615
+ // const pointUuid = CommonUtils.generateUUIDv5(ClassNames.DiagramObjectPoint, this.configUuid, key);
616
+ // diagramObjectPoint.mrid = pointUuid;
617
+ // }
618
+ // frame.cimModel.addDiagramObject(resultingObject);
619
+ }
620
+ }
621
+ this.executor.dataManager.cimModelGraph.purgeAll();
622
+ this.executor.dataManager.dbObjectKeyCimModelUuidGraph.purgeAll();
623
+ }
620
624
  });
621
625
  }
622
626
  assignTerminalSequenceNumber(cimModel) {
@@ -900,7 +904,7 @@ class ConverterIntegral7 {
900
904
  integral_prefix_1.SCHALTFELD_PRAEFIX +
901
905
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
902
906
  const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
903
- const bay = new AMPRIONBay_1.AMPRIONBay(cimrdfid, i7Data === null || i7Data === void 0 ? void 0 : i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
907
+ const bay = new AMPRIONBay_1.AMPRIONBay(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_B'], 32, true), i7Data.kurzname, i7Schluessel);
904
908
  bay.key = i7Schluessel;
905
909
  if (i7Data.feldnummer > 0) {
906
910
  const stop = true;
@@ -933,7 +937,7 @@ class ConverterIntegral7 {
933
937
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
934
938
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
935
939
  // const vl = new VoltageLevel(getUUID(i7Data.guid_v, this.objectMappingConfig.standardiseUuid), createNotation([getName(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
936
- const vl = new VoltageLevel_1.VoltageLevel(common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VoltageLevel, this.configUuid, rdfid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
940
+ const vl = new VoltageLevel_1.VoltageLevel(common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VoltageLevel, this.configUuid, rdfid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', i7Data.un.toString(), '_VL']), i7Data.kurzname);
937
941
  //const rdfid = getUUID(i7Data.guid); /**This is the mrid for TopologicalNode */
938
942
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', rdfid.substring(0, 8), '_CN']), i7Data.kurzname, i7Data.kommentar);
939
943
  connectivityNode.setConnectivityNodeContainer(vl);
@@ -970,6 +974,7 @@ class ConverterIntegral7 {
970
974
  integral7.integralKnotenSo.set(i7Data.id, object);
971
975
  object.standort = integral7.integralStandorte.get(object.standortid);
972
976
  cimModel.addVoltageLevel(vl);
977
+ //cimModel.addBaseVoltage(baseVoltage);
973
978
  cimModel.addConnectivityNode(connectivityNode);
974
979
  this.checkAnschlussIDs(i7Data.id, integral7);
975
980
  this.addIdMapping(i7Data.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.KNOTEN_SO);
@@ -1382,6 +1387,15 @@ class ConverterIntegral7 {
1382
1387
  const qType = Math.sqrt(Math.pow(genType === null || genType === void 0 ? void 0 : genType.sr, 2) - Math.pow(pType, 2));
1383
1388
  // AMP I7 Profil
1384
1389
  synchronousMachine.cos_phi = i7Data.cos_phi;
1390
+ if (synchronousMachine.getUUID() === '03ee3f18-9984-48eb-bc26-09e8c182fbda') {
1391
+ let stop = true;
1392
+ }
1393
+ if (synchronousMachine.getUUID() === 'f6d81d19-dca0-48e9-a43e-4ab1f6bf697d') {
1394
+ let stop = true;
1395
+ }
1396
+ if (synchronousMachine.getUUID() === '90d65269-183e-40f4-a437-c089df5b0b63') {
1397
+ let stop = true;
1398
+ }
1385
1399
  // SSH Profil
1386
1400
  synchronousMachine.setActivePower(p * -1); //convert to load sign system
1387
1401
  synchronousMachine.setReactivePower(q * -1); //convert to load sign system
@@ -1422,7 +1436,7 @@ class ConverterIntegral7 {
1422
1436
  // synchronousMachine.shortCircuitRotorType: ShortCircuitRotorKind;
1423
1437
  // synchronousMachine.voltageRegulationRange: number;
1424
1438
  /** Create ReactiveCapabilityCurves */
1425
- if (minP !== undefined && maxP !== undefined && minQvonPmin != undefined && maxQvonPmax !== undefined) {
1439
+ if (minP !== undefined && maxP !== undefined && minQvonPmin !== undefined && maxQvonPmax !== undefined) {
1426
1440
  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']));
1427
1441
  reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
1428
1442
  reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
@@ -2217,8 +2231,7 @@ class ConverterIntegral7 {
2217
2231
  const qr = (0, parser_utils_1.isNumericI7)(i7Data.qr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qr) : undefined;
2218
2232
  const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2219
2233
  shunt.nomU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2220
- // Set electrical properties
2221
- // Set electrical properties (EQ)
2234
+ // Set electrical properties (EQ core)
2222
2235
  if ((0, parser_utils_1.isNumericI7)(i7Data.aktstufe) && (0, parser_utils_1.isNumericI7)(i7Data.maxstufe)) {
2223
2236
  shunt.sections = (0, parser_utils_1.convertToNumberI7)(i7Data.aktstufe);
2224
2237
  shunt.normalSections = (0, parser_utils_1.convertToNumberI7)(i7Data.aktstufe);
@@ -2254,7 +2267,7 @@ class ConverterIntegral7 {
2254
2267
  }
2255
2268
  shunt.bPerSection = (0, utils_2.calculateBPerSection)(qr * -1, shunt.nomU, shunt.maximumSections);
2256
2269
  shunt.gPerSection = (0, utils_2.calculateGPerSection)(pr, shunt.nomU, shunt.maximumSections);
2257
- //SHC section
2270
+ //Set electrical properties (EQ short circuit)
2258
2271
  const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? i7Data.r0 : undefined;
2259
2272
  const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? i7Data.x0 : undefined;
2260
2273
  shunt.b0PerSection = (0, utils_2.calculateB0PerSection)(/*r0,*/ Math.abs(x0)) * -1;
@@ -2351,13 +2364,12 @@ class ConverterIntegral7 {
2351
2364
  for (const i7Data of result) {
2352
2365
  const statVarCom = new StaticVarCompensator_1.StaticVarCompensator((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_SVC']), i7Data.kurzname);
2353
2366
  const ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2354
- const uref = (0, parser_utils_1.isNumericI7)(i7Data.uref) ? (0, parser_utils_1.convertToNumberI7)(i7Data.uref) : undefined;
2355
2367
  const mrez = (0, parser_utils_1.isNumericI7)(i7Data.mrez) ? (0, parser_utils_1.convertToNumberI7)(i7Data.mrez) : undefined;
2356
2368
  const qkapr = (0, parser_utils_1.isNumericI7)(i7Data.qkapr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qkapr) : undefined;
2357
2369
  const qindr = (0, parser_utils_1.isNumericI7)(i7Data.qindr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qindr) : undefined;
2358
2370
  /** EQ */
2359
- statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(uref, qkapr);
2360
- statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(uref, qindr)) * -1;
2371
+ statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2372
+ statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2361
2373
  statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2362
2374
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2363
2375
  statVarCom.aggregate = false;
@@ -2388,15 +2400,13 @@ class ConverterIntegral7 {
2388
2400
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SVC, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SVC), knotenSfIDs));
2389
2401
  for (const i7Data of result) {
2390
2402
  const statVarCom = new StaticVarCompensator_1.StaticVarCompensator((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_SVC']), i7Data.kurzname);
2391
- const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
2392
2403
  const ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2393
- const uref = (0, parser_utils_1.isNumericI7)(i7Data.uref) ? (0, parser_utils_1.convertToNumberI7)(i7Data.uref) : undefined;
2394
2404
  const mrez = (0, parser_utils_1.isNumericI7)(i7Data.mrez) ? (0, parser_utils_1.convertToNumberI7)(i7Data.mrez) : undefined;
2395
2405
  const qkapr = (0, parser_utils_1.isNumericI7)(i7Data.qkapr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qkapr) : undefined;
2396
2406
  const qindr = (0, parser_utils_1.isNumericI7)(i7Data.qindr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qindr) : undefined;
2397
2407
  /** EQ */
2398
- statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(uref, qkapr);
2399
- statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(uref, qindr)) * -1;
2408
+ statVarCom.capacitiveRating = (0, utils_2.calculateStatVarComRating)(ur, qkapr);
2409
+ statVarCom.inductiveRating = Math.abs((0, utils_2.calculateStatVarComRating)(ur, qindr)) * -1;
2400
2410
  statVarCom.slope = mrez !== 0 ? 1 / mrez : 0;
2401
2411
  statVarCom.sVCControlMode = SVCControlMode_1.SVCControlMode.voltage;
2402
2412
  statVarCom.aggregate = false;
@@ -2423,7 +2433,7 @@ class ConverterIntegral7 {
2423
2433
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.HGUE_KOPFSTATION_KLASSISCH, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_KLASSISCH), knotenSfIDs));
2424
2434
  for (const i7Data of result) {
2425
2435
  /** Containment DC DCConverterUnit */
2426
- const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCCU']));
2436
+ const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCCU']));
2427
2437
  dcConverterUnit.governorSCDAc = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
2428
2438
  dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.krdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.krdc) : undefined;
2429
2439
  // Topologie
@@ -2451,9 +2461,10 @@ class ConverterIntegral7 {
2451
2461
  else {
2452
2462
  this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen ConnectivityNode.`);
2453
2463
  }
2454
- const csConverter = new CsConverter_1.CsConverter((0, parser_utils_1.getUUID)(i7Data.guid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_CSC']), i7Data.kurzname);
2464
+ const csConverter = new CsConverter_1.CsConverter((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_CSC']), i7Data.kurzname);
2455
2465
  const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2456
2466
  const pges = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pges) : undefined;
2467
+ const qges = (0, parser_utils_1.isNumericI7)(i7Data.qges) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qges) : undefined;
2457
2468
  /** Wenn Leitungen konvertiert werden, wird das Attribut operationMode gesetzt. */
2458
2469
  csConverter.equipmentContainer = dcConverterUnit;
2459
2470
  /** Bemessungsleistung (Gleichstromseite) in MW
@@ -2480,7 +2491,7 @@ class ConverterIntegral7 {
2480
2491
  csConverter.minGamma = (0, parser_utils_1.isNumericI7)(i7Data.gamma) ? (0, parser_utils_1.convertToNumberI7)(i7Data.gamma) : 21.5;
2481
2492
  /** SSH profile export*/
2482
2493
  csConverter.p = pges ? pges * -1 : 0;
2483
- csConverter.q = (0, parser_utils_1.isNumericI7)(i7Data.qges) ? i7Data.qges * -1 : 0;
2494
+ csConverter.q = qges ? qges * -1 : 0;
2484
2495
  this.setTopologyEnergySourceConsumerObject(cimModel, csConverter, i7Data);
2485
2496
  /** Status */
2486
2497
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
@@ -2522,9 +2533,7 @@ class ConverterIntegral7 {
2522
2533
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.HGUE_KOPFSTATION_VSC, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC), knotenSfIDs));
2523
2534
  for (const i7Data of result) {
2524
2535
  /** Containment DC DCConverterUnit */
2525
- const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCCU']));
2526
- /** target voltage local*/
2527
- const localTargetVoltage = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : undefined;
2536
+ const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCCU']));
2528
2537
  dcConverterUnit.referencePriority = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
2529
2538
  dcConverterUnit.governorSCDAc = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
2530
2539
  dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.krdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.krdc) : undefined;
@@ -2557,10 +2566,7 @@ class ConverterIntegral7 {
2557
2566
  else {
2558
2567
  this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen ConnectivityNode.`);
2559
2568
  }
2560
- const vsConverter = new VsConverter_1.VsConverter((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_VSC']), i7Data.kurzname);
2561
- if (vsConverter.getUUID() === '1b2b2901-0bb9-4aa3-9117-06d68fbbc7cb') {
2562
- let stop = true;
2563
- }
2569
+ const vsConverter = new VsConverter_1.VsConverter((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_VSC']), i7Data.kurzname);
2564
2570
  /** Wenn Leitungen konvertiert werden, wird das Attribut operationMode gesetzt. */
2565
2571
  vsConverter.equipmentContainer = dcConverterUnit;
2566
2572
  /** Bemessungsleistung (Gleichstromseite) in MW
@@ -2578,13 +2584,18 @@ class ConverterIntegral7 {
2578
2584
  vsConverter.switchingLoss = undefined;
2579
2585
  /* csConverter.maxModulationIndex = ;
2580
2586
  csConverter.maxValveCurrent = */
2587
+ /** CapabilityCurveData */
2588
+ const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
2589
+ const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
2590
+ const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
2591
+ const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
2581
2592
  /** SSH export values */
2582
2593
  vsConverter.p = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? i7Data.pges * -1 : 0;
2583
2594
  vsConverter.q = (0, parser_utils_1.isNumericI7)(i7Data.qges) ? i7Data.qges * -1 : 0;
2584
2595
  this.setTopologyEnergySourceConsumerObject(cimModel, vsConverter, i7Data, targetVoltages);
2585
2596
  vsConverter.droop = 0; //pu
2586
2597
  vsConverter.droopCompensation = 0; //Resistance
2587
- vsConverter.qShare = 0; //PerCent
2598
+ vsConverter.qShare = 100; //PerCent
2588
2599
  /** Status */
2589
2600
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
2590
2601
  vsConverter.normallyInService = inBetrieb;
@@ -2598,6 +2609,40 @@ class ConverterIntegral7 {
2598
2609
  vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2599
2610
  acDCConverterDCTerminal.dcNode = dcNode;
2600
2611
  dcNode.dcTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2612
+ /** Create ReactiveCapabilityCurves */
2613
+ if (minP !== undefined && maxP !== undefined && minQ != undefined && maxQ !== undefined) {
2614
+ let keyVsCapabilityCurve = cim_class_names_1.ClassNames.VsCapabilityCurve + i7Data.id + vsConverter.getUUID();
2615
+ let uuidVsCapabilityCurve = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.VsCapabilityCurve, this.configUuid, keyVsCapabilityCurve);
2616
+ const vsCapabilityCurve = new VsCapabilityCurve_1.VsCapabilityCurve(uuidVsCapabilityCurve, (0, util_create_1.createNotation)(['CurveData', vsConverter.getUUID().substring(0, 8), '_VCC']));
2617
+ vsCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
2618
+ vsCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
2619
+ vsCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
2620
+ vsCapabilityCurve.y2Unit = UnitSymbol_1.UnitSymbol.VAr;
2621
+ //reactive capability curve data for pmin
2622
+ let keyCurveData = cim_class_names_1.ClassNames.CurveData + vsCapabilityCurve.getUUID() + 'MINP';
2623
+ let uuidCurveData = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.CurveData, this.configUuid, keyCurveData);
2624
+ const curveData1 = new CurveData_1.CurveData(uuidCurveData);
2625
+ curveData1.curve = vsCapabilityCurve;
2626
+ curveData1.xvalue = minP; //pMin
2627
+ curveData1.y1value = minQ; //qMin
2628
+ curveData1.y2value = maxQ; //qMax pMin
2629
+ cimModel.addCurveData(curveData1);
2630
+ //reactive capability curve data for pmax
2631
+ keyCurveData = cim_class_names_1.ClassNames.CurveData + vsCapabilityCurve.getUUID() + 'MAXP';
2632
+ uuidCurveData = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.CurveData, this.configUuid, keyCurveData);
2633
+ const curveData2 = new CurveData_1.CurveData(uuidCurveData);
2634
+ curveData2.curve = vsCapabilityCurve;
2635
+ curveData2.xvalue = maxP; //pMax
2636
+ curveData2.y1value = minQ; //qMin pMax
2637
+ curveData2.y2value = maxQ; //qMin pMax
2638
+ cimModel.addCurveData(curveData2);
2639
+ cimModel.addVsCapabilityCurve(vsCapabilityCurve);
2640
+ vsConverter.capabilityCurve = vsCapabilityCurve;
2641
+ vsCapabilityCurve.VsConverterDCSides.set(vsConverter.getUUID(), vsConverter);
2642
+ }
2643
+ else {
2644
+ vsConverter.targetQpcc = 0;
2645
+ }
2601
2646
  /** DCNode speichern, um später DCLines anschließen zu können*/
2602
2647
  cimModel.addDCConverterUnit(dcConverterUnit);
2603
2648
  cimModel.addVSConverter(vsConverter);
@@ -2784,7 +2829,7 @@ class ConverterIntegral7 {
2784
2829
  });
2785
2830
  }
2786
2831
  setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data, targetVoltages, generatingUnit, isStatcom) {
2787
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
2832
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
2788
2833
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
2789
2834
  condEquip.normallyInService = inBetrieb;
2790
2835
  const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
@@ -2856,7 +2901,7 @@ class ConverterIntegral7 {
2856
2901
  spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7DataHgue.spannungsgeregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.spannungsgeregelt) : false;
2857
2902
  spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7DataHgue.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.rpv_geregelt) : false;
2858
2903
  knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7DataHgue.knotenspgreg));
2859
- isRegulatingControl = false;
2904
+ isRegulatingControl = spannungsregelungLokal || spannungsregelungRemote;
2860
2905
  }
2861
2906
  else if (i7DataSVC) {
2862
2907
  isRegulatingControl = true;
@@ -2897,7 +2942,9 @@ class ConverterIntegral7 {
2897
2942
  if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
2898
2943
  switch (knotenSpgGeregelt) {
2899
2944
  case undefined: {
2900
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2945
+ if (cpTerminal.connectivityNode.getConnectivityNodeContainer() instanceof Bay_1.Bay) {
2946
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2947
+ }
2901
2948
  if (cterminal === undefined) {
2902
2949
  cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
2903
2950
  }
@@ -2938,7 +2985,7 @@ class ConverterIntegral7 {
2938
2985
  rControl.targetDeadband = (0, parser_utils_1.isNumericI7)(uband) ? uband : undefined; //zulässiges Spannungsband
2939
2986
  /** Spannung in kilo*/
2940
2987
  //TODO TEMP FIX bei lokaler Regelegung bleibt usoll = null.
2941
- rControl.targetValue = !usoll ? i7Data.usoll : usoll;
2988
+ 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());
2942
2989
  const guidSuffix = (_a = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8);
2943
2990
  rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
2944
2991
  rControl.terminalUUID = cterminal.getUUID();
@@ -2952,9 +2999,6 @@ class ConverterIntegral7 {
2952
2999
  term.addRegulatingControl(rControl);
2953
3000
  }
2954
3001
  }
2955
- else {
2956
- const stop = true;
2957
- }
2958
3002
  }
2959
3003
  else if (isRegulatingControl && i7DataSVC) {
2960
3004
  /** Regelung */
@@ -2962,6 +3006,7 @@ class ConverterIntegral7 {
2962
3006
  const cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2963
3007
  let tVMax = undefined;
2964
3008
  let tVMin = undefined;
3009
+ let uref = (0, parser_utils_1.isNumericI7)(i7DataSVC.uref) ? (0, parser_utils_1.convertToNumberI7)(i7DataSVC.uref) : undefined;
2965
3010
  if (cterminal) {
2966
3011
  tCn = cterminal.getConnectivityNode();
2967
3012
  if (tCn) {
@@ -3011,7 +3056,7 @@ class ConverterIntegral7 {
3011
3056
  }
3012
3057
  }
3013
3058
  }
3014
- rControl.targetValue = usoll;
3059
+ rControl.targetValue = uref != undefined && uref > 0 ? uref : usoll;
3015
3060
  rControl.targetDeadband = uband;
3016
3061
  rControl.terminal = cterminal;
3017
3062
  const guidSuffix = (_b = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _b === void 0 ? void 0 : _b.getUUID().substring(0, 8);
@@ -3022,54 +3067,57 @@ class ConverterIntegral7 {
3022
3067
  cterminal.addRegulatingControl(rControl);
3023
3068
  cimModel.addRegulatingControl(rControl);
3024
3069
  }
3025
- else {
3026
- const stop = true;
3027
- }
3028
3070
  }
3029
- else if (i7DataHgue) {
3030
- let cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3071
+ else if (i7DataHgue) { //DC and AC controls for HVDC systems
3031
3072
  const regelungU = (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.u_geregelt);
3032
3073
  const regelungP = (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.p_geregelt);
3033
3074
  condEquip.pccTerminal = cpTerminal;
3034
3075
  if (condEquip instanceof CsConverter_1.CsConverter) {
3035
3076
  if (regelungU) {
3036
- condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.inverter;
3077
+ condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
3037
3078
  condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.dcVoltage;
3038
3079
  condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3080
+ condEquip.targetPpcc = (0, parser_utils_1.isNumericI7)(i7DataHgue.pges) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.pges) : ((0, parser_utils_1.isNumericI7)(i7DataHgue.pr) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.pr) : undefined);
3081
+ condEquip.targetIdc = (0, parser_utils_1.isNumericI7)(condEquip.targetPpcc) && (0, parser_utils_1.isNumericI7)(condEquip.targetUdc) ? condEquip.targetPpcc / condEquip.targetUdc : undefined;
3039
3082
  }
3040
3083
  else if (regelungP) {
3041
- condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
3084
+ condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.inverter;
3042
3085
  condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.activePower;
3086
+ condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3043
3087
  condEquip.targetPpcc = (0, parser_utils_1.isNumericI7)(i7DataHgue.pges) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.pges) : ((0, parser_utils_1.isNumericI7)(i7DataHgue.pr) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.pr) : undefined);
3088
+ condEquip.targetIdc = (0, parser_utils_1.isNumericI7)(condEquip.targetPpcc) && (0, parser_utils_1.isNumericI7)(condEquip.targetUdc) ? condEquip.targetPpcc / condEquip.targetUdc : undefined;
3044
3089
  }
3045
3090
  else {
3046
- condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
3091
+ condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.inverter;
3047
3092
  condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.activePower;
3093
+ condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3048
3094
  condEquip.targetPpcc = (0, parser_utils_1.isNumericI7)(i7DataHgue.pges) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.pges) : ((0, parser_utils_1.isNumericI7)(i7DataHgue.pr) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.pr) : undefined);
3095
+ condEquip.targetIdc = (0, parser_utils_1.isNumericI7)(condEquip.targetPpcc) && (0, parser_utils_1.isNumericI7)(condEquip.targetUdc) ? condEquip.targetPpcc / condEquip.targetUdc : undefined;
3049
3096
  }
3050
3097
  }
3051
3098
  else if (condEquip instanceof VsConverter_1.VsConverter) {
3052
3099
  usoll = (0, parser_utils_1.isNumericI7)(i7DataHgue.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.usoll) : undefined;
3053
3100
  if (regelungU) {
3054
3101
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
3055
- condEquip.targetUdc = condEquip.ratedUdc;
3102
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3056
3103
  }
3057
3104
  else if (regelungP) {
3058
3105
  condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
3059
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3060
- condEquip.targetPpcc = condEquip.baseS * -1; //ActivePower
3061
- condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
3106
+ condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3062
3107
  }
3063
- if (spannungsregelungLokal || spannungsregelungRemote) {
3108
+ if ((spannungsregelungLokal || spannungsregelungRemote) && usoll == undefined) {
3064
3109
  //get rated voltage of controlled node.
3110
+ let cterminal = undefined; //connection point terminal of this device
3111
+ let tVMax = undefined; //maximum target voltage
3112
+ let tVMin = undefined; //minimum target voltage
3113
+ //get target voltage of controlled node.
3065
3114
  if (knotenSpgGeregelt && spannungsregelungRemote) {
3066
3115
  cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3067
- if (cterminal === undefined) {
3068
- let stop = true;
3069
- }
3070
3116
  if (cterminal) {
3071
3117
  tCn = cterminal.getConnectivityNode();
3072
3118
  if (tCn) {
3119
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3120
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3073
3121
  usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3074
3122
  }
3075
3123
  else {
@@ -3080,9 +3128,10 @@ class ConverterIntegral7 {
3080
3128
  this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3081
3129
  }
3082
3130
  }
3083
- else if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal && usoll === undefined) {
3131
+ if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
3084
3132
  switch (knotenSpgGeregelt) {
3085
3133
  case undefined: {
3134
+ cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
3086
3135
  if (cterminal === undefined) {
3087
3136
  cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3088
3137
  }
@@ -3095,18 +3144,20 @@ class ConverterIntegral7 {
3095
3144
  if (cterminal) {
3096
3145
  tCn = cterminal.getConnectivityNode();
3097
3146
  if (tCn) {
3147
+ tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
3148
+ tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
3098
3149
  usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3099
3150
  }
3151
+ else {
3152
+ this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
3153
+ }
3100
3154
  }
3101
3155
  }
3102
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3103
- if (usoll !== undefined) {
3104
- condEquip.targetUpcc = usoll;
3105
- }
3106
- else {
3107
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Sollspannung konnte nicht ermittelt werden.`);
3108
- }
3109
3156
  }
3157
+ condEquip.targetUpcc = usoll;
3158
+ condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
3159
+ condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
3160
+ condEquip.targetPpcc = condEquip.baseS * -1;
3110
3161
  }
3111
3162
  }
3112
3163
  let equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, connectivityNode.connectivityNodeContainer);
@@ -3142,8 +3193,16 @@ class ConverterIntegral7 {
3142
3193
  i7Schluessel = ((_p = (_o = equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) === null || _o === void 0 ? void 0 : _o.key) !== null && _p !== void 0 ? _p : '') +
3143
3194
  integral_prefix_1.HGUEKOPFVSC_PRAEFIX + i7Data.bezeichner;
3144
3195
  }
3145
- else if (condEquip instanceof CsConverter_1.CsConverter) {
3196
+ else if (condEquip instanceof SynchronousMachine_1.SynchronousMachine) {
3146
3197
  i7Schluessel = ((_r = (_q = equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) === null || _q === void 0 ? void 0 : _q.key) !== null && _r !== void 0 ? _r : '') +
3198
+ integral_prefix_1.GENERATOR_PRAEFIX + i7Data.bezeichner;
3199
+ }
3200
+ else if (condEquip instanceof AsynchronousMachine_1.AsynchronousMachine) {
3201
+ i7Schluessel = ((_t = (_s = equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) === null || _s === void 0 ? void 0 : _s.key) !== null && _t !== void 0 ? _t : '') +
3202
+ integral_prefix_1.ASYNCHRONMOTOR_PRAEFIX + i7Data.bezeichner;
3203
+ }
3204
+ else if (condEquip instanceof CsConverter_1.CsConverter) {
3205
+ i7Schluessel = ((_v = (_u = equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) === null || _u === void 0 ? void 0 : _u.key) !== null && _v !== void 0 ? _v : '') +
3147
3206
  integral_prefix_1.HGUEKOPFKLASSISCH_PRAEFIX + i7Data.bezeichner;
3148
3207
  }
3149
3208
  condEquip.key = i7Schluessel;
@@ -3153,11 +3212,11 @@ class ConverterIntegral7 {
3153
3212
  }
3154
3213
  }
3155
3214
  else {
3156
- this.logger.error(`error --- ${(_s = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _s === void 0 ? void 0 : _s.name} ${i7Data.id} besitzt keinen EquipmentContainer.`);
3215
+ this.logger.error(`error --- ${(_w = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _w === void 0 ? void 0 : _w.name} ${i7Data.id} besitzt keinen EquipmentContainer.`);
3157
3216
  }
3158
3217
  }
3159
3218
  else {
3160
- this.logger.error(`error --- ${(_t = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _t === void 0 ? void 0 : _t.name} ${i7Data.id} besitzt keinen ConnectivityNode.`);
3219
+ this.logger.error(`error --- ${(_x = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _x === void 0 ? void 0 : _x.name} ${i7Data.id} besitzt keinen ConnectivityNode.`);
3161
3220
  }
3162
3221
  return rControl;
3163
3222
  }
@@ -3469,7 +3528,7 @@ class ConverterIntegral7 {
3469
3528
  this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, seriesCompensator.getUUID(), ir, cim_class_names_1.ClassNames.CurrentLimit);
3470
3529
  }
3471
3530
  else {
3472
- this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
3531
+ this.logger.debug(`Längskondensator ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
3473
3532
  }
3474
3533
  // Umspannanlage
3475
3534
  const substationUUID = this.integralID2UUID.get(i7Data.standort);
@@ -3688,7 +3747,7 @@ class ConverterIntegral7 {
3688
3747
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.TYP_FREILEITUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.TYP_FREILEITUNG), []));
3689
3748
  for (const i7Data of result) {
3690
3749
  const typ = new EVWireInfo_1.EVWireInfo(common_utils_1.CommonUtils.generateUUID(), i7Data.name);
3691
- this.setWireInfoProperties(typ, i7Data, 'Freileitung');
3750
+ this.setWireInfoProperties(typ, i7Data, integral_sql_1.I7Objects.TYP_FREILEITUNG);
3692
3751
  this.cimModelDefault.addEVWireInfo(typ);
3693
3752
  }
3694
3753
  }
@@ -3700,7 +3759,7 @@ class ConverterIntegral7 {
3700
3759
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.TYP_KABEL, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.TYP_KABEL), []));
3701
3760
  for (const i7Data of result) {
3702
3761
  const typ = new EVWireInfo_1.EVWireInfo(common_utils_1.CommonUtils.generateUUID(), i7Data.name);
3703
- this.setWireInfoProperties(typ, i7Data, 'Kabel');
3762
+ this.setWireInfoProperties(typ, i7Data, integral_sql_1.I7Objects.TYP_KABEL);
3704
3763
  this.cimModelDefault.addEVWireInfo(typ);
3705
3764
  }
3706
3765
  }
@@ -3745,6 +3804,12 @@ class ConverterIntegral7 {
3745
3804
  tableName = integral_sql_1.Integral7TableNames.FREILEITUNG;
3746
3805
  }
3747
3806
  const leitungStromkreisabschnitt = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(type, this.getAvailableColumnNames(tableName), leitungIDs));
3807
+ let result_ohl = undefined;
3808
+ let result_cable = undefined;
3809
+ if (type.match(integral_sql_1.I7Objects.STROMKREISABSCHNITT_KABEL_FREILEITUNG)) {
3810
+ result_cable = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STROMKREISABSCHNITT_KABEL, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KABEL), leitungIDs));
3811
+ 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));
3812
+ }
3748
3813
  for (const i7Data of result) {
3749
3814
  /** Alle Stromkreisabschnitte */
3750
3815
  const stromkreisabschnitte = leitungStromkreisabschnitt.filter(elem => elem.leitung === i7Data.id);
@@ -3783,7 +3848,7 @@ class ConverterIntegral7 {
3783
3848
  '-' +
3784
3849
  (0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
3785
3850
  const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3786
- const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, (0, util_create_1.createNotation)([name, '_' + stk.pos.toString(), '_' + uuid.substring(0, 8), '_ACLS'], 32, true), i7Data.stkabname, i7Schluessel);
3851
+ const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(uuid, stk.bezeichner, i7Data.stkabname, i7Schluessel);
3787
3852
  const key = acLineSegment.getUUID();
3788
3853
  const uuidWireObject = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.EVWireObject, this.configUuid, key);
3789
3854
  acLineSegment.key = i7Schluessel;
@@ -3813,13 +3878,10 @@ class ConverterIntegral7 {
3813
3878
  * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt
3814
3879
  */
3815
3880
  const acLineSegmentStart = acLineSegments[0];
3816
- if (line.getUUID() === '4637c6dc-fad5-45f1-91e0-091d00717a3b' || line.getUUID() === 'a992f3c9-f2e1-4cd6-8cc6-fd3d5d167871') {
3817
- const stop = true;
3818
- }
3819
3881
  const startTerminal = this.createBoundaryConnection(frame, acLineSegmentStart, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
3820
3882
  if (startTerminal) {
3821
3883
  //this.setACLineSegmentCurrentLimt(cimModel, acLineSegmentStart, acLineSegmentStart.description, startTerminal);
3822
- /**Add boundary injection if start is connected to boudarypoint */
3884
+ /**Add boundary injection if start is connected to boundarypoint */
3823
3885
  let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
3824
3886
  let tmp_cn = bdf === null || bdf === void 0 ? void 0 : bdf.cimModel.getConnectivityNode(startTerminal.getConnectivityNodeUUID());
3825
3887
  if (tmp_cn && tmp_cn.boundaryPoint) {
@@ -3836,7 +3898,8 @@ class ConverterIntegral7 {
3836
3898
  else {
3837
3899
  this.logger.debug(`Leitung ${i7Data.id} ${acLineSegmentStart.mrid} besitzt keinen Anfangsknoten. ${i7Data.aknoten} ${this.integralID2UUID.get(i7Data.aknoten)}`);
3838
3900
  }
3839
- this.setACLineSegmentProperties(this.cimModelDefault, cimModel, acLineSegmentStart, stromkreisabschnitte[0], defaultValuesConfig);
3901
+ let cable = result_cable.filter(elem => elem.id === stromkreisabschnitte[0].id);
3902
+ this.setACLineSegmentProperties(this.cimModelDefault, cimModel, acLineSegmentStart, stromkreisabschnitte[0], cable.length > 0, defaultValuesConfig);
3840
3903
  cimModel.addACLineSegment(acLineSegmentStart);
3841
3904
  /** Mitte */
3842
3905
  const anzahl = acLineSegments.length;
@@ -3856,7 +3919,8 @@ class ConverterIntegral7 {
3856
3919
  if (tmp_terminal) {
3857
3920
  tmp_terminal = undefined;
3858
3921
  }
3859
- this.setACLineSegmentProperties(this.cimModelDefault, cimModel, acLineSegments[i], stromkreisabschnitte[i], defaultValuesConfig);
3922
+ cable = result_cable.filter(elem => elem.id === stromkreisabschnitte[i].id);
3923
+ this.setACLineSegmentProperties(this.cimModelDefault, cimModel, acLineSegments[i], stromkreisabschnitte[i], cable.length > 0, defaultValuesConfig);
3860
3924
  /**Connect end of aclinesegment i+1*/
3861
3925
  tmp_terminal = this.createConnection(cimModel, acLineSegment2, cn, PhaseCode_1.PhaseCode.ABC, true);
3862
3926
  //this.setACLineSegmentCurrentLimt(cimModel, acLineSegment2, acLineSegment2.description, tmp_terminal);
@@ -3888,7 +3952,8 @@ class ConverterIntegral7 {
3888
3952
  else {
3889
3953
  this.logger.debug(`Leitung ${i7Data.id} ${acLineSegmentZiel.mrid} besitzt keinen Zielknoten.`);
3890
3954
  }
3891
- this.setACLineSegmentProperties(this.cimModelDefault, cimModel, acLineSegmentZiel, stromkreisabschnitte[stromkreisabschnitte.length - 1], defaultValuesConfig);
3955
+ cable = result_cable.filter(elem => elem.id === stromkreisabschnitte[stromkreisabschnitte.length - 1].id);
3956
+ this.setACLineSegmentProperties(this.cimModelDefault, cimModel, acLineSegmentZiel, stromkreisabschnitte[stromkreisabschnitte.length - 1], cable.length > 0, defaultValuesConfig);
3892
3957
  cimModel.addACLineSegment(acLineSegmentZiel);
3893
3958
  /** BaseVoltages für ACLineSegments*/
3894
3959
  const stkBaseVoltage = acLineSegments.find(elem => elem.baseVoltage !== undefined);
@@ -3950,31 +4015,48 @@ class ConverterIntegral7 {
3950
4015
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_LEITUNG) && integral7.hgueAnschlussKnotenIDs.length > 0) {
3951
4016
  // const result: Hgueleitung[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.HGUE_LEITUNG, limit, offset, []));
3952
4017
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.HGUE_LEITUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.HGUE_LEITUNG), integral7.hgueAnschlussKnotenIDs));
4018
+ let dcLineSegmentSet = [];
3953
4019
  for (const i7Data of result) {
3954
4020
  //console.log(getUUID(i7Data.guid_dcline));
3955
4021
  integral7.integralHgueLeitungIds.add(i7Data.id);
4022
+ /**
4023
+ * Differentiation is done between monopolar and bipolar hvdc systems
4024
+ * Differentiation is done between current source converters (csc, HgueKopfKlassisch) and voltage source converters (vsc, HgueKopfVSC)
4025
+ * CSC:
4026
+ * - only monopole (asymmetrical monopole (metallic return))
4027
+ * - no metallic return in every case
4028
+ * - only power control defined
4029
+ * - a metallic return is always assumed) with two groundings (one per end) is assumed in every case
4030
+ * VSC:
4031
+ * - monopole and bipole possible (asymmetrical monopole (metallic return), bipole)
4032
+ * - metallic return in every case (there is no data about ground return in INTEGRAL)
4033
+ * - power control, voltage control (ac and dc), angle difference
4034
+ * - topology informations of second pole are not available in INTEGRAL model, thus this will be created during conversion
4035
+ * - a metallic return is always assumed) with two groundings (one per end) is assumed in every case
4036
+ */
3956
4037
  const dcLine = new DCLine_1.DCLine((0, parser_utils_1.getUUID)(i7Data.guid_dcline, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCL']));
3957
4038
  let dcLineNeg = undefined;
4039
+ let dcLineNeutral = undefined;
3958
4040
  const i7Schluessel = integral_prefix_1.HGUELEITUNG_PRAEFIX +
3959
4041
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
3960
4042
  /** operationMode der Anfangs- und Zielkopfstation setzen */
3961
4043
  let converterStart = false;
3962
4044
  let converterStartNeg = false;
3963
- let converterUnitStartSide = false;
4045
+ //let converterUnitStartSide: boolean = false;
3964
4046
  let converterTarget = false;
3965
4047
  let converterTargetNeg = false;
3966
- let converterUnitTargetSide = false;
3967
- let bipol = (0, parser_utils_1.convertToBooleanI7)(i7Data.bipol);
3968
- if (bipol === undefined) {
3969
- bipol = false;
4048
+ //let converterUnitTargetSide: boolean = false;
4049
+ let bipole = (0, parser_utils_1.convertToBooleanI7)(i7Data.bipol);
4050
+ if (bipole === undefined) {
4051
+ bipole = false;
3970
4052
  }
3971
- let dcNode = undefined;
4053
+ let dcNodeStartMiddle = undefined;
4054
+ let dcNodeTargetMiddle = undefined;
3972
4055
  //Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
3973
4056
  const dcLineSegment = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidp, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCLS']), i7Data.kurzname, i7Schluessel);
4057
+ dcLineSegmentSet.push(dcLineSegment);
3974
4058
  let dcLineSegmentNeg = undefined;
3975
- if (dcLineSegment.getUUID() === '579b6a04-23c5-452f-b7ad-db283dad1cdb') {
3976
- const stop = true;
3977
- }
4059
+ let dcLineSegmentNeutral = undefined;
3978
4060
  /**EQ: not given directly by the INTEGRAL system model */
3979
4061
  dcLineSegment.length = undefined;
3980
4062
  dcLineSegment.capacitance = undefined;
@@ -3983,92 +4065,118 @@ class ConverterIntegral7 {
3983
4065
  dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
3984
4066
  dcLineSegment.equipmentContainer = dcLine;
3985
4067
  //create second dcLineSegment in case this dcLine is a bipol.
3986
- if (bipol) {
4068
+ if (bipole) {
3987
4069
  const dcLineKey = dcLine.getUUID();
3988
4070
  const dcLineUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
3989
4071
  dcLineNeg = new DCLine_1.DCLine(dcLineUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCL']));
3990
4072
  dcLineSegmentNeg = new DCLineSegment_1.DCLineSegment((0, parser_utils_1.getUUID)(i7Data.guidn, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCLS'], 32, true), (0, util_create_1.createNotation)([i7Data.kurzname, '_neg'], 12, true), i7Schluessel);
4073
+ dcLineSegmentSet.push(dcLineSegmentNeg);
3991
4074
  dcLineSegmentNeg.length = dcLineSegment.length;
3992
4075
  dcLineSegmentNeg.capacitance = undefined;
3993
4076
  dcLineSegmentNeg.inductance = undefined;
3994
4077
  dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
3995
4078
  dcLineSegmentNeg.equipmentContainer = dcLineNeg;
3996
4079
  }
4080
+ //create metallic return
4081
+ const dcLineKey = dcLine.getUUID() + 'mid';
4082
+ const dcLineNeutralUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLine, this.configUuid, dcLineKey);
4083
+ const dcLineSegmentUuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCLineSegment, this.configUuid, dcLineNeutralUuid);
4084
+ dcLineNeutral = new DCLine_1.DCLine(dcLineNeutralUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCL']));
4085
+ dcLineSegmentNeutral = new DCLineSegment_1.DCLineSegment(dcLineSegmentUuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCLS'], 32, true), (0, util_create_1.createNotation)([i7Data.kurzname, '_mid'], 12, true), i7Schluessel);
4086
+ dcLineSegmentSet.push(dcLineSegmentNeutral);
4087
+ dcLineSegmentNeutral.length = dcLineSegment.length;
4088
+ dcLineSegmentNeutral.capacitance = undefined;
4089
+ dcLineSegmentNeutral.inductance = undefined;
4090
+ dcLineSegmentNeutral.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
4091
+ dcLineSegmentNeutral.equipmentContainer = dcLineNeutral;
4092
+ //get ACDCConverter at both ends of DCLine
3997
4093
  const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
3998
4094
  converterStart = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStart !== undefined);
3999
4095
  let acDCConverterStartNeg = undefined;
4000
4096
  const acDCConverterTarget = cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) : undefined;
4001
4097
  converterTarget = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTarget !== undefined);
4002
4098
  let acDCConverterTargetNeg = undefined;
4003
- if (acDCConverterTarget === undefined) {
4004
- const stop = true;
4005
- }
4006
- else if (acDCConverterStart === undefined) {
4007
- const stop = true;
4008
- }
4009
4099
  const int7hguekopfStart = converterStart ? (_a = integral7.integralHgueKopf) === null || _a === void 0 ? void 0 : _a.get(this.UUID2Integral7ID.get(acDCConverterStart.getUUID()).find(elem => elem)) : undefined;
4010
4100
  const int7hguekopfTarget = converterTarget ? (_b = integral7.integralHgueKopf) === null || _b === void 0 ? void 0 : _b.get(this.UUID2Integral7ID.get(acDCConverterTarget.getUUID()).find(elem => elem)) : undefined;
4011
- //Setting acDCConverterStartNeg and acDCConverterTargetNeg in case this DCLine is a bipol
4012
- if (bipol) {
4013
- acDCConverterStartNeg = converterStart && int7hguekopfStart !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfStart, acDCConverterStart.constructor.name, acDCConverterStart) : undefined;
4101
+ //Get DCConverterUnit for HVDC system (positive, negative, ground for both sides)
4102
+ const converterUnitStart = (acDCConverterStart === null || acDCConverterStart === void 0 ? void 0 : acDCConverterStart.equipmentContainer) ? acDCConverterStart.equipmentContainer : undefined;
4103
+ const converterUnitTarget = (acDCConverterTarget === null || acDCConverterTarget === void 0 ? void 0 : acDCConverterTarget.equipmentContainer) ? acDCConverterTarget.equipmentContainer : undefined;
4104
+ let converterUnitStartNeg = undefined;
4105
+ let converterUnitTargetNeg = undefined;
4106
+ let converterUnitStartGround = undefined;
4107
+ let converterUnitTargetGround = undefined;
4108
+ //Setting acDCConverterStartNeg, acDCConverterTargetNeg, in case this DCLine is a bipol
4109
+ if (bipole) {
4110
+ let converterUnitKey = converterUnitStart.getUUID();
4111
+ let converterUnitNegUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCConverterUnit, this.configUuid, converterUnitKey);
4112
+ converterUnitStartNeg = new DCConverterUnit_1.INTEGRALDCConverterUnit(converterUnitNegUUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_NEG_DCCU']), '', 'second converter unit of bipole');
4113
+ converterUnitStartNeg.setSubstation(converterUnitStart.getSubstation());
4114
+ acDCConverterStartNeg = converterStart && int7hguekopfStart !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfStart, acDCConverterStart.constructor.name, acDCConverterStart, converterUnitStartNeg, this.configUuid) : undefined;
4014
4115
  converterStartNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStartNeg !== undefined);
4015
- acDCConverterTargetNeg = converterTarget && int7hguekopfTarget !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfTarget, acDCConverterTarget.constructor.name, acDCConverterTarget) : undefined;
4116
+ converterUnitKey = converterUnitTarget.getUUID();
4117
+ converterUnitNegUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCConverterUnit, this.configUuid, converterUnitKey);
4118
+ converterUnitTargetNeg = new DCConverterUnit_1.INTEGRALDCConverterUnit(converterUnitNegUUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_NEG_DCCU']), '', 'second converter unit of bipole');
4119
+ converterUnitTargetNeg.setSubstation(converterUnitTarget.getSubstation());
4120
+ acDCConverterTargetNeg = converterTarget && int7hguekopfTarget !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfTarget, acDCConverterTarget.constructor.name, acDCConverterTarget, converterUnitTargetNeg, this.configUuid) : undefined;
4016
4121
  converterTargetNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTargetNeg !== undefined);
4017
4122
  }
4018
4123
  //Set grounding for dcConverterUnit
4019
- const converterUnitStart = (acDCConverterStart === null || acDCConverterStart === void 0 ? void 0 : acDCConverterStart.equipmentContainer) ? acDCConverterStart.equipmentContainer : undefined;
4020
- converterUnitStartSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitStart !== undefined);
4021
- const converterUnitTarget = (acDCConverterTarget === null || acDCConverterTarget === void 0 ? void 0 : acDCConverterTarget.equipmentContainer) ? acDCConverterTarget.equipmentContainer : undefined;
4022
- converterUnitTargetSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitTarget !== undefined);
4023
- if (converterStart && !converterStartNeg) {
4024
- dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
4025
- }
4026
- else if (converterStart && converterStartNeg) {
4027
- dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
4028
- connectDCGround(cimModel, acDCConverterStartNeg, int7hguekopfStart, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
4029
- }
4030
- switch (bipol) {
4031
- case true: {
4032
- if (converterUnitStartSide && !converterUnitTargetSide) {
4033
- converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4034
- this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit am Leitungsende konnte nicht ermittelt werden.`);
4035
- }
4036
- else if (converterUnitStartSide && converterUnitTargetSide) {
4124
+ let converterUnitKey = converterUnitStart.getUUID() + 'GROUND';
4125
+ let converterUnitGroundUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCConverterUnit, this.configUuid, converterUnitKey);
4126
+ converterUnitStartGround = new DCConverterUnit_1.INTEGRALDCConverterUnit(converterUnitGroundUUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_GND_DCCU']));
4127
+ converterUnitStartGround.setSubstation(converterUnitStart.getSubstation());
4128
+ converterUnitKey = converterUnitTarget.getUUID() + 'GROUND';
4129
+ converterUnitGroundUUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCConverterUnit, this.configUuid, converterUnitKey);
4130
+ converterUnitTargetGround = new DCConverterUnit_1.INTEGRALDCConverterUnit(converterUnitGroundUUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_GND_DCCU']));
4131
+ converterUnitTargetGround.setSubstation(converterUnitTarget.getSubstation());
4132
+ if (converterStart && converterTarget) {
4133
+ dcNodeStartMiddle = createDCGround(cimModel, acDCConverterStart, converterUnitStartGround, int7hguekopfStart, bipole);
4134
+ //connectDCGround(cimModel, int7hguekopfStart, dcNodeStartMiddle, DCPolarityKind.middle/*, acDCConverterStart*/);
4135
+ dcNodeTargetMiddle = createDCGround(cimModel, acDCConverterTarget, converterUnitTargetGround, int7hguekopfTarget, bipole);
4136
+ //connectDCGround(cimModel, int7hguekopfTarget, dcNodeTargetMiddle, DCPolarityKind.middle/*, acDCConverterTarget*/);
4137
+ switch (bipole) {
4138
+ case true: {
4037
4139
  converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4038
4140
  converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4039
- if (converterTarget && !converterTargetNeg) {
4040
- dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
4141
+ converterUnitStartGround.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4142
+ converterUnitTargetGround.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4143
+ converterUnitStartNeg.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4144
+ converterUnitTargetNeg.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4145
+ if (converterStartNeg && converterTargetNeg) {
4146
+ connectDCGround(cimModel, int7hguekopfStart, dcNodeStartMiddle, DCPolarityKind_1.DCPolarityKind.middle, acDCConverterStartNeg);
4147
+ connectDCGround(cimModel, int7hguekopfTarget, dcNodeTargetMiddle, DCPolarityKind_1.DCPolarityKind.middle, acDCConverterTargetNeg);
4041
4148
  }
4042
- else if (converterTarget && converterTargetNeg) {
4043
- dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
4044
- connectDCGround(cimModel, acDCConverterTargetNeg, int7hguekopfTarget, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
4149
+ else if (!converterStartNeg && !converterTargetNeg) {
4150
+ this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit an den Leitungsenden konnten für den zweiten Pol nicht ermittelt werden.`);
4045
4151
  }
4046
- else {
4047
- this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r ACDCConverter konnte nicht ermittelt werden.`);
4152
+ else if (!converterStartNeg) {
4153
+ this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: es konnte nur die DCConverterUnit ${acDCConverterTargetNeg.getUUID()} am Leitungsende für den zweiten Pol ermittelt werden.`);
4048
4154
  }
4155
+ else if (!converterTargetNeg) {
4156
+ this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: es konnte nur die DCConverterUnit ${acDCConverterStartNeg.getUUID()} am Leitungsende für den zweiten Pol ermittelt werden.`);
4157
+ }
4158
+ break;
4049
4159
  }
4050
- else {
4051
- this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit's konnten nicht ermittelt werden.`);
4052
- }
4053
- break;
4054
- }
4055
- case false: {
4056
- if (converterUnitStartSide && !converterUnitTargetSide) {
4057
- converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
4058
- this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit am Leitungsende konnte nicht ermittelt werden.`);
4160
+ case false: {
4161
+ converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarMetallicReturn;
4162
+ converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarMetallicReturn;
4163
+ break;
4059
4164
  }
4060
- else if (converterUnitStartSide && converterUnitTargetSide) {
4061
- converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
4062
- converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
4063
- createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
4165
+ default: {
4166
+ this.logger.info(`info --- HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: gehört zu einem monopolaren HGÜ-System`);
4064
4167
  }
4065
- break;
4066
- }
4067
- default: {
4068
- this.logger.info(`info --- HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: die bipol-Eigenschaft ist nicht gesetzt.`);
4069
4168
  }
4070
4169
  }
4071
- // Topologie DC
4170
+ else if (!converterStart && !converterTarget) {
4171
+ this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit an den Leitungsenden konnten nicht ermittelt werden.`);
4172
+ }
4173
+ else if (!converterStart) {
4174
+ this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: es konnte nur die DCConverterUnit ${int7hguekopfTarget.id} am Leitungsende ermittelt werden.`);
4175
+ }
4176
+ else if (!converterTarget) {
4177
+ this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: es konnte nur die DCConverterUnit ${int7hguekopfStart.id} am Leitungsanfang ermittelt werden.`);
4178
+ }
4179
+ // Topologie DC - connect DCLines (both poles if exists and metallic return)
4072
4180
  /* Anfang / Ende DCNodes*/
4073
4181
  let startDCNode = converterStart ? getDCNodeFromConverter(acDCConverterStart, DCPolarityKind_1.DCPolarityKind.positive) : undefined;
4074
4182
  const startDCNodeNeg = converterStartNeg ? getDCNodeFromConverter(acDCConverterStartNeg, DCPolarityKind_1.DCPolarityKind.negative) : undefined;
@@ -4119,11 +4227,65 @@ class ConverterIntegral7 {
4119
4227
  else {
4120
4228
  this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Zielknoten NEG. ${i7Data.enetzobjekt} ${this.integralID2UUID.get(i7Data.enetzobjekt)}`);
4121
4229
  }
4230
+ if (dcNodeStartMiddle) {
4231
+ const dcTerminalKey = int7hguekopfStart.guid_dcterminalm1 + int7hguekopfStart.guid_dcterminalm2; //TODO: ->cgmes Objekte verwenden
4232
+ const dcTerminalM3UUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DCTerminal, this.configUuid, dcTerminalKey);
4233
+ const dcTerminal = new DCTerminal_1.DCTerminal(dcTerminalM3UUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCT'], 32, true));
4234
+ dcTerminal.dCConductingEquipment = dcLineSegmentNeutral;
4235
+ dcTerminal.dcNode = dcNodeStartMiddle;
4236
+ dcLineSegmentNeutral.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4237
+ dcNodeStartMiddle.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
4238
+ cimModel.addDCTerminal(dcTerminal);
4239
+ }
4240
+ else {
4241
+ this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Zielknoten. ${i7Data.enetzobjekt} ${this.integralID2UUID.get(i7Data.enetzobjekt)}`);
4242
+ }
4243
+ if (dcNodeTargetMiddle) {
4244
+ const dcTerminalKey = int7hguekopfTarget.guid_dcterminalm1 + int7hguekopfTarget.guid_dcterminalm2;
4245
+ const dcTerminalM3UUID = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, dcTerminalKey);
4246
+ const dcTerminal = new DCTerminal_1.DCTerminal(dcTerminalM3UUID, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_mid', '_DCT'], 32, true));
4247
+ dcTerminal.dCConductingEquipment = dcLineSegmentNeutral;
4248
+ dcTerminal.dcNode = dcNodeTargetMiddle;
4249
+ dcLineSegmentNeutral.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4250
+ dcNodeTargetMiddle.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
4251
+ cimModel.addDCTerminal(dcTerminal);
4252
+ }
4253
+ else {
4254
+ this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Zielknoten NEG. ${i7Data.enetzobjekt} ${this.integralID2UUID.get(i7Data.enetzobjekt)}`);
4255
+ }
4256
+ /** Create OperationalLimitSets */
4257
+ for (const obj of dcLineSegmentSet) {
4258
+ for (const dCT of obj.dCTerminals.values()) {
4259
+ const dcTerminal = dCT;
4260
+ const equipmentKey = dcTerminal.getUUID();
4261
+ for (const elem of dcTerminal.dcNode.dcTerminals.values()) {
4262
+ if (elem instanceof ACDCConverterDCTerminal_1.ACDCConverterDCTerminal) {
4263
+ const pR = elem.dCConductingEquipment.baseS; //apparent power is set equal to active power in MVA
4264
+ const uR = acDCConverterStart.ratedUdc; //voltage in kV
4265
+ if (pR != undefined && uR != undefined) {
4266
+ let ir = (pR * Math.pow(10, 6)) / (uR * Math.pow(10, 3)); //assumption: pr is BaseS
4267
+ if (bipole) {
4268
+ ir = ir / 2;
4269
+ }
4270
+ this.setConductingEquipmentOperationalLimit(cimModel, obj.name, dCT, equipmentKey, ir, cim_class_names_1.ClassNames.CurrentLimit);
4271
+ }
4272
+ }
4273
+ }
4274
+ }
4275
+ }
4122
4276
  cimModel.addDCLine(dcLine);
4123
4277
  cimModel.addDCLineSegment(dcLineSegment);
4124
- if (bipol && dcLineNeg && dcLineSegmentNeg) {
4278
+ cimModel.addDCConverterUnit(converterUnitStartGround);
4279
+ cimModel.addDCConverterUnit(converterUnitTargetGround);
4280
+ if (bipole && dcLineNeg && dcLineSegmentNeg) {
4125
4281
  cimModel.addDCLine(dcLineNeg);
4126
4282
  cimModel.addDCLineSegment(dcLineSegmentNeg);
4283
+ cimModel.addDCConverterUnit(converterUnitStartNeg);
4284
+ cimModel.addDCConverterUnit(converterUnitTargetNeg);
4285
+ }
4286
+ if (dcLineNeutral && dcLineSegmentNeutral) {
4287
+ cimModel.addDCLine(dcLineNeutral);
4288
+ cimModel.addDCLineSegment(dcLineSegmentNeutral);
4127
4289
  }
4128
4290
  this.addIdMapping(i7Data.id, dcLineSegment.mrid, integral_sql_1.Integral7TableNames.HGUE_LEITUNG);
4129
4291
  }
@@ -4147,6 +4309,8 @@ class ConverterIntegral7 {
4147
4309
  typTrafo.iLeer = i7Data.i_leer;
4148
4310
  typTrafo.ukr = i7Data.ukr;
4149
4311
  typTrafo.pkr = i7Data.pkr;
4312
+ impedance_utils_1.ImpedanceUtils.extendTrafo2WAssetTypeByCim(typTrafo);
4313
+ impedance_utils_1.ImpedanceUtils.extendTrafo2WAssetTypeByPandaPower(typTrafo);
4150
4314
  typTrafo.schaltgruppe = i7Data.schaltgr;
4151
4315
  typTrafo.spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? (0, parser_utils_1.convertToNumberI7)(i7Data.trafo_spezial) : undefined;
4152
4316
  typTrafo.x00r1 = i7Data.x00r1;
@@ -4312,7 +4476,10 @@ class ConverterIntegral7 {
4312
4476
  if (i7Data.ur2 === 25) {
4313
4477
  const stop = true;
4314
4478
  }
4315
- const powerTransformer = new PowerTransformer_1.PowerTransformer(uuid, i7Data.bezeichner, i7Data.langname, i7Data.kommentar);
4479
+ if (uuid === 'a4480d0ac6e0413eb2ef683bf7b171a6') {
4480
+ let stop = true;
4481
+ }
4482
+ 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);
4316
4483
  const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer, this.configUuid);
4317
4484
  /** AssetInfos */
4318
4485
  if (i7Data.baujahr) {
@@ -4326,7 +4493,7 @@ class ConverterIntegral7 {
4326
4493
  this.logger.debug(`Trafo2W ${i7Data.id} besitzt keine Umspannanlage.`);
4327
4494
  }
4328
4495
  const i7Schluessel = (substation === null || substation === void 0 ? void 0 : substation.key) +
4329
- integral_prefix_1.TRAFO2WPRAEFIX_PRAEFIX +
4496
+ integral_prefix_1.TRAFO2W_PRAEFIX +
4330
4497
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4331
4498
  powerTransformer.key = i7Schluessel;
4332
4499
  if (powerTransformer.getUUID() === '515508dc-5982-4686-ad26-08d39db91421') {
@@ -4370,22 +4537,38 @@ class ConverterIntegral7 {
4370
4537
  // Wicklung 1
4371
4538
  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}`);
4372
4539
  powerTransformerEnd1.endNumber = 1;
4373
- const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '');
4374
- const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '');
4540
+ const pkr = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4541
+ const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '12', false);
4375
4542
  const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
4376
- const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber);
4543
+ const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4544
+ const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4377
4545
  const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
4378
4546
  // P0 Lastverluste im I7 Modell p_leer
4379
4547
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4380
4548
  // Leerlaufverluste
4381
4549
  const iLeer = (0, utils_2.getTrafoIleer)(i7Data, powerTransformerInfo);
4382
4550
  // Berechnung
4383
- powerTransformerEnd1.r = (0, utils_2.calculateR)(ur, pkr, sr);
4384
- powerTransformerEnd1.x = (0, utils_2.calculateX)(ur, ukr, sr);
4385
4551
  // TODO was ist P0 in I7 Trafomodell
4386
4552
  // P0 Lastverluste abhängig von Last
4387
- powerTransformerEnd1.g = (0, utils_2.calculateG)(ur, pLeer);
4388
- powerTransformerEnd1.b = (0, utils_2.calculateB)(ur, sr, iLeer, pLeer);
4553
+ if (powerTransformer.getUUID() === '3a2bfb03-28bd-4505-8579-e8e648357ce1') {
4554
+ const stop = true;
4555
+ }
4556
+ if (powerTransformer.getUUID() === '87e6221e-d850-4efe-a924-f7d1d751705e') {
4557
+ const stop = true;
4558
+ }
4559
+ if (powerTransformer.getUUID() === 'a4480d0ac6e0413eb2ef683bf7b171a6') {
4560
+ let stop = true;
4561
+ }
4562
+ if (ur >= ur2) {
4563
+ powerTransformerEnd1.g = (0, utils_2.calculateG)(ur, pLeer);
4564
+ powerTransformerEnd1.b = (0, utils_2.calculateB)(ur, sr, iLeer, pLeer);
4565
+ powerTransformerEnd1.r = (0, utils_2.calculateR)(ur, pkr, sr);
4566
+ powerTransformerEnd1.x = (0, utils_2.calculateX)(ur, ukr, sr, powerTransformerEnd1.r);
4567
+ }
4568
+ else {
4569
+ powerTransformerEnd1.r = 0;
4570
+ powerTransformerEnd1.x = 0;
4571
+ }
4389
4572
  powerTransformerEnd1.ratedU = ur;
4390
4573
  powerTransformerEnd1.ratedS = sr;
4391
4574
  //Short-Circuit data export EQ-SC profile //TODO: Read data for enervancetransformertype object.
@@ -4421,10 +4604,17 @@ class ConverterIntegral7 {
4421
4604
  const powerTransformerEnd2 = new PowerTransformerEnd_1.PowerTransformerEnd((0, parser_utils_1.getUUID)(i7Data.guid_w2, this.objectMappingConfig.standardiseUuid), `W2-${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name}`);
4422
4605
  powerTransformerEnd2.endNumber = 2;
4423
4606
  const sr2 = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber, false);
4424
- const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber);
4425
4607
  // Berechnung
4426
- powerTransformerEnd2.r = 0;
4427
- powerTransformerEnd2.x = 0;
4608
+ if (ur2 > ur) {
4609
+ powerTransformerEnd2.g = (0, utils_2.calculateG)(ur2, pLeer);
4610
+ powerTransformerEnd2.b = (0, utils_2.calculateB)(ur2, sr2, iLeer, pLeer);
4611
+ powerTransformerEnd2.r = (0, utils_2.calculateR)(ur2, pkr, sr2);
4612
+ powerTransformerEnd2.x = (0, utils_2.calculateX)(ur2, ukr, sr2, powerTransformerEnd2.r);
4613
+ }
4614
+ else {
4615
+ powerTransformerEnd2.r = 0;
4616
+ powerTransformerEnd2.x = 0;
4617
+ }
4428
4618
  powerTransformerEnd2.ratedS = sr2;
4429
4619
  powerTransformerEnd2.ratedU = ur2;
4430
4620
  /* const ziel = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
@@ -4447,10 +4637,16 @@ class ConverterIntegral7 {
4447
4637
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
4448
4638
  powerTransformerEnd2.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd2.endNumber, powerTransformerEnd2.grounded);
4449
4639
  powerTransformerEnd2.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd2.endNumber);
4640
+ if (uuid === '402aec99-ba2c-42fa-b4ed-b4928901f47b') {
4641
+ let stop = true;
4642
+ }
4450
4643
  // NullSystem Impedanzen (nur Reaktanzen)
4451
- let starconnectionCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer);
4452
- //const zeroSequImpedanzWx = calculateZeroSequImpedanzenTrafo2W([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2]);
4453
- const zeroSequImpedanzWx = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2], starconnectionCount)[0];
4644
+ let starconnectionCount = (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) <= 1 ? (0, utils_2.getGroundingCountFromWindingConnection)(powerTransformer) : 1;
4645
+ const retVal = (0, utils_2.calculateComplexZeroSequImpedanzenTrafo)([r0kr1, x0kr1, r0kr2, x0kr2], [r00r1, x00r1, r00r2, x00r2], [ur, ur2], starconnectionCount, powerTransformer);
4646
+ if (retVal[1] == false) { //return value is false, thus there was an error in computation
4647
+ this.logger.warn(`PowerTransformer3W ${i7Data.id} ${powerTransformer.mrid} hat unterbestimmte Definitionen in den Nullsystemdaten.`);
4648
+ }
4649
+ const zeroSequImpedanzWx = retVal[0];
4454
4650
  powerTransformerEnd1.x0 = zeroSequImpedanzWx.x01;
4455
4651
  powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
4456
4652
  powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
@@ -4540,7 +4736,7 @@ class ConverterIntegral7 {
4540
4736
  }
4541
4737
  const facility = util_cim_model_1.UtilCimModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer, this.configUuid);
4542
4738
  const i7Schluessel = (substation === null || substation === void 0 ? void 0 : substation.key) +
4543
- integral_prefix_1.TRAFO3WPRAEFIX_PRAEFIX +
4739
+ integral_prefix_1.TRAFO3W_PRAEFIX +
4544
4740
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
4545
4741
  powerTransformer.key = i7Schluessel;
4546
4742
  /** AssetInfos */
@@ -4560,9 +4756,6 @@ class ConverterIntegral7 {
4560
4756
  else {
4561
4757
  powerTransformer.isPartOfGeneratorUnit = false;
4562
4758
  }
4563
- if (i7Data.nametyp) {
4564
- const stop = true;
4565
- }
4566
4759
  const x00r1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x00r1');
4567
4760
  const x0kr1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x0kr1');
4568
4761
  const x00r2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'x00r2');
@@ -4571,12 +4764,12 @@ class ConverterIntegral7 {
4571
4764
  const r0kr1 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r0kr1');
4572
4765
  const r00r2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r00r2');
4573
4766
  const r0kr2 = (0, utils_2.getX0R0Transformer)(i7Data, powerTransformerInfo, 'r0kr2');
4574
- const pkr12 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12');
4575
- const pkr13 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '13');
4576
- const pkr23 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '23');
4577
- const ukr12 = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '12');
4578
- const ukr13 = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '13');
4579
- const ukr23 = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '23');
4767
+ const pkr12 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '12', true);
4768
+ const pkr13 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '13', true);
4769
+ const pkr23 = (0, utils_2.getPkrTrafo)(i7Data, powerTransformerInfo, '23', true);
4770
+ const ukr12 = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '12', true);
4771
+ const ukr13 = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '13', true);
4772
+ const ukr23 = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '23', true);
4580
4773
  const sr1 = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, 1, true);
4581
4774
  const sr2 = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, 2, true);
4582
4775
  const sr3 = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, 3, true);
@@ -4590,13 +4783,19 @@ class ConverterIntegral7 {
4590
4783
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4591
4784
  // Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
4592
4785
  const iLeer = (0, utils_2.getTrafoIleer)(i7Data, powerTransformerInfo);
4786
+ if (powerTransformer.getUUID() === '3f58ef46-918f-44d4-8b53-d4078caa2d92') {
4787
+ const stop = true;
4788
+ }
4789
+ if (powerTransformer.getUUID() === '1a74be35-0fd7-4295-bd02-e1413b183a4d') {
4790
+ const stop = true;
4791
+ }
4792
+ if (powerTransformer.getUUID() === '2f5150da-57be-40e8-a629-88cf4afe44e0') {
4793
+ const stop = true;
4794
+ }
4593
4795
  // Impedanzen //TODO: prove if rated voltage is correct!!! current assumption: ur1>ur2>ur3
4594
- const impedanzW1 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(1, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, pLeer, iLeer);
4595
- const impedanzW2 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(2, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, 0, 0);
4796
+ const impedanzW1 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(1, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, ur1 >= ur2 ? pLeer : 0, ur1 >= ur2 ? iLeer : 0);
4797
+ const impedanzW2 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(2, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, ur1 < ur2 ? pLeer : 0, ur1 < ur2 ? iLeer : 0);
4596
4798
  const impedanzW3 = (0, utils_trafo3w_1.calculateImpedanzenTrafo3W)(3, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, 0, 0);
4597
- if (powerTransformer.getUUID() === '120a9c2c93ff4a81b494ff63d356c266') {
4598
- let stop = true;
4599
- }
4600
4799
  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}`);
4601
4800
  powerTransformerEnd1.endNumber = 1;
4602
4801
  // Topologie
@@ -4647,9 +4846,6 @@ class ConverterIntegral7 {
4647
4846
  equivalentInjection = this.createBoundaryEquivalentInjection(frame, tmp_cn);
4648
4847
  }
4649
4848
  }
4650
- if (powerTransformer.mrid === '49afe40b-89cc-419f-afc5-f330c6589f82') {
4651
- const stop = true;
4652
- }
4653
4849
  //set transformer end winding connection
4654
4850
  powerTransformerEnd1.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd1.endNumber, powerTransformerEnd1.grounded);
4655
4851
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
@@ -4791,9 +4987,6 @@ class ConverterIntegral7 {
4791
4987
  const spannungsband = integral7.targetVoltages.get(spRegKnoten.id);
4792
4988
  const cnUUID = this.integralID2UUID.get(spRegKnoten.id);
4793
4989
  const connectivityNode = cimModel.getObject(cnUUID);
4794
- if (cnUUID !== undefined) {
4795
- const stop = true;
4796
- }
4797
4990
  try {
4798
4991
  this.convertTapChangers(i7Data, powerTransformerEnds, cimModel, powerTransformerInfo, connectivityNode, spannungsband);
4799
4992
  }
@@ -4982,14 +5175,14 @@ class ConverterIntegral7 {
4982
5175
  //if (winding1) {
4983
5176
  powerTransformer.powerTransformerEnd[0].endNumber = 1;
4984
5177
  powerTransformer.powerTransformerEnd[1].endNumber = 2;
4985
- powerTransformer.powerTransformerEnd[1].phaseAngleClock = 12 - powerTransformer.powerTransformerEnd[0].phaseAngleClock;
5178
+ powerTransformer.powerTransformerEnd[1].phaseAngleClock = (12 - powerTransformer.powerTransformerEnd[0].phaseAngleClock) % 12;
4986
5179
  powerTransformer.powerTransformerEnd[0].phaseAngleClock = 0;
4987
5180
  //} else {
4988
5181
  // const isNull = true;
4989
5182
  //}
4990
5183
  }
4991
5184
  }
4992
- setACLineSegmentProperties(defaultModel, cimModel, acLineSegment, data, defaultValuesConfig) {
5185
+ setACLineSegmentProperties(defaultModel, cimModel, acLineSegment, data, cable, defaultValuesConfig) {
4993
5186
  if ((0, parser_utils_1.isBooleanI7)(data.flag_impedanzlos) && (0, parser_utils_1.convertToBooleanI7)(data.flag_impedanzlos)) {
4994
5187
  data.flag_impedanzlos = 1;
4995
5188
  }
@@ -5004,7 +5197,7 @@ class ConverterIntegral7 {
5004
5197
  else {
5005
5198
  acLineSegment.length = 1;
5006
5199
  }
5007
- const assetType = defaultModel.getWireInfoByName(data.nametyp);
5200
+ const assetType = defaultModel.getWireInfoByName(data.nametyp, cable);
5008
5201
  // r0
5009
5202
  if ((0, parser_utils_1.isNumericI7)(data.r0) && data.r0 > 0 && !data.flag_impedanzlos) {
5010
5203
  acLineSegment.r0 = data.r0;
@@ -5140,7 +5333,7 @@ class ConverterIntegral7 {
5140
5333
  createIfNotExistOperationalLimitType(cimModel, name, type, direction) {
5141
5334
  let operationalLimitType = cimModel.getOperationalLimitTypeByName(name);
5142
5335
  if (!operationalLimitType) {
5143
- const key = type + direction;
5336
+ const key = type + direction + cimModel.geographicalRegions.values().next().value.mrid;
5144
5337
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.OperationalLimitType, this.configUuid, key);
5145
5338
  operationalLimitType = new OperationalLimitType_1.OperationalLimitType(uuid, name);
5146
5339
  operationalLimitType.direction = direction;
@@ -5171,9 +5364,6 @@ class ConverterIntegral7 {
5171
5364
  terminal.conductingEquipment = conductingEquipment;
5172
5365
  conductingEquipment.addTerminal(terminal);
5173
5366
  terminal.connected = (terminal.connected !== undefined) ? terminal.connected : connected;
5174
- if (terminal.connected === false) {
5175
- const stop = true;
5176
- }
5177
5367
  if (!isNameSet) {
5178
5368
  terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
5179
5369
  }
@@ -5181,6 +5371,7 @@ class ConverterIntegral7 {
5181
5371
  return terminal;
5182
5372
  }
5183
5373
  createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
5374
+ var _a;
5184
5375
  const cimModel = frame.cimModel;
5185
5376
  const anschlussUUID = this.integralID2UUID.get(i7ObjectID);
5186
5377
  let terminal = undefined;
@@ -5211,7 +5402,7 @@ class ConverterIntegral7 {
5211
5402
  const key = cn.getUUID() + (conductingEquipment === null || conductingEquipment === void 0 ? void 0 : conductingEquipment.getUUID());
5212
5403
  const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.Terminal, this.configUuid, key);
5213
5404
  terminal = new Terminal_1.Terminal(uuid, (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_', cn.getUUID().substring(0, 8), '_BD_T']));
5214
- /** wchtig uuid zu setzen, da sonst ein memory leak entsteht */
5405
+ /** wichtig uuid zu setzen, da sonst ein memory leak entsteht */
5215
5406
  terminal.connectivityNodeUUID = cn.mrid;
5216
5407
  terminal.phases = phase;
5217
5408
  terminal.connected = true;
@@ -5237,6 +5428,8 @@ class ConverterIntegral7 {
5237
5428
  }
5238
5429
  if (cn) {
5239
5430
  this.annotateBoundaryNode(frame.name, frame.isoCode, frame.tsoName, cn);
5431
+ const int7id = (_a = this.UUID2Integral7ID.get(cn.getSubstation().getUUID())) === null || _a === void 0 ? void 0 : _a[0];
5432
+ frame.integral7Modell.currentSitesBoundary.set(int7id, frameBD.integral7Modell.integralStandorte.get(int7id));
5240
5433
  }
5241
5434
  else {
5242
5435
  this.logger.error(`error --- Für das Objekt ${conductingEquipment.constructor.name} ${conductingEquipment.getUUID()} / ${conductingEquipment.equipmentContainer.constructor.name} ${conductingEquipment.equipmentContainer.getUUID()} konnte am I7-Objekt ${i7ObjectID} kein Grenzknoten bestimmt werden`);
@@ -5264,7 +5457,7 @@ class ConverterIntegral7 {
5264
5457
  createBoundaryEquivalentInjection(frame, cn) {
5265
5458
  let equivalentInjection = undefined;
5266
5459
  //Test if frame is boundary.
5267
- if (false /*!frame.boundary*/) {
5460
+ if (true /*frame.boundary*/) {
5268
5461
  //Test if boundary Injection for this mas already exists
5269
5462
  let equivinj_exists = false;
5270
5463
  frame.cimModel.equivalentInjections.forEach((equivinj, uuid) => {
@@ -5359,15 +5552,6 @@ class ConverterIntegral7 {
5359
5552
  * 2 - Niederspannungsseite (Anschluss 3)
5360
5553
  * 3 - Externer Knoten
5361
5554
  * */
5362
- if (powerTransformerEnds[0] && powerTransformerEnds[0].getTerminal() === undefined) {
5363
- const stop = true;
5364
- }
5365
- if (powerTransformerEnds[1] && powerTransformerEnds[1].getTerminal() === undefined) {
5366
- const stop = true;
5367
- }
5368
- if (powerTransformerEnds[2] && powerTransformerEnds[2].getTerminal() === undefined) {
5369
- const stop = true;
5370
- }
5371
5555
  let tempKnotenId = i7Data.spgreg_anschluss === 0 ? this.UUID2Integral7ID.get((_a = powerTransformerEnds[0].getTerminal()) === null || _a === void 0 ? void 0 : _a.getConnectivityNodeUUID())[0] : undefined;
5372
5556
  tempKnotenId = i7Data.spgreg_anschluss === 1 ? this.UUID2Integral7ID.get((_b = powerTransformerEnds[1].getTerminal()) === null || _b === void 0 ? void 0 : _b.getConnectivityNodeUUID())[0] : tempKnotenId;
5373
5557
  tempKnotenId = i7Data.spgreg_anschluss === 2 ? this.UUID2Integral7ID.get((_c = powerTransformerEnds[2].getTerminal()) === null || _c === void 0 ? void 0 : _c.getConnectivityNodeUUID())[0] : tempKnotenId;
@@ -5700,6 +5884,9 @@ class ConverterIntegral7 {
5700
5884
  // Topologie
5701
5885
  powerTransformerEnd.terminal = terminal;
5702
5886
  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);
5887
+ if (powerTransformer.getUUID() === '4d14cd95-215c-45f3-8136-b06d69ee0191') {
5888
+ const stop = true;
5889
+ }
5703
5890
  let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
5704
5891
  // Erdung / Sternpunkt
5705
5892
  if (sternpunktKnotenMap.has(i7Data.id) && isTrafo2w) {
@@ -5902,9 +6089,6 @@ class ConverterIntegral7 {
5902
6089
  uMax = uMax * invert;
5903
6090
  //test for uMin and uMax voltage add are not symmetrical...
5904
6091
  if (Math.abs(lowerVoltageStepDecrement) !== Math.abs(upperVoltageStepIncrement) || uMax < uMin || uMax === uMin || ratioPhaseTapChangerPresent) {
5905
- if (uMax === uMin) {
5906
- const stop = true;
5907
- }
5908
6092
  const keyTable = ratioTapChanger === null || ratioTapChanger === void 0 ? void 0 : ratioTapChanger.getUUID();
5909
6093
  const uuidTable = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.RatioTapChangerTable, this.configUuid, keyTable);
5910
6094
  const ratioTapChangerTable = new RatioTapChangerTable_1.RatioTapChangerTable(uuidTable, `${i7Data.bezeichner} W_${tapChangerNumber}`);
@@ -5979,9 +6163,6 @@ class ConverterIntegral7 {
5979
6163
  * */
5980
6164
  /** Regelung */
5981
6165
  const ratioTapChanger = new RatioTapChanger_1.RatioTapChanger((0, parser_utils_1.getUUID)(eval(`i7Data.guid_tch${tapChangerNumber}`), this.objectMappingConfig.standardiseUuid), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
5982
- if (ratioTapChanger.mrid === 'df659ba2-a075-4f7d-bdd6-6b038cae962a') {
5983
- const stop = true;
5984
- }
5985
6166
  ratioTapChanger.ltcFlag = (0, parser_utils_1.isNumericI7)(`i7Data.unter_last_nicht_verstellbar_s${gestufteSeite}`) ? !(0, parser_utils_1.convertToBooleanI7)(`i7Data.unter_last_nicht_verstellbar_s${gestufteSeite}`) : false;
5986
6167
  ratioTapChanger.transformerEnd = transformerEnd;
5987
6168
  //transformerEnd.ratioTapChanger = ratioTapChanger;
@@ -6081,12 +6262,6 @@ class ConverterIntegral7 {
6081
6262
  break;
6082
6263
  }
6083
6264
  }
6084
- if (phaseTapChanger.mrid === 'df659ba2-a075-4f7d-bdd6-6b038cae962a') {
6085
- const stop = true;
6086
- }
6087
- if (phaseTapChanger.mrid === '3d0bdc23-fe46-408d-99b3-369a02d28a28') {
6088
- const stop = true;
6089
- }
6090
6265
  // Attribute
6091
6266
  phaseTapChanger.ltcFlag = (0, parser_utils_1.isNumericI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`)) ? (0, parser_utils_1.convertToBooleanI7)(eval(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`)) : false;
6092
6267
  phaseTapChanger.transformerEnd = transformerEnd;
@@ -6460,7 +6635,7 @@ function getDCNodeFromConverter(acDcConverter, polarity) {
6460
6635
  }
6461
6636
  return ret_val;
6462
6637
  }
6463
- function createDCGround(cimModel, acDCConverter, i7Data) {
6638
+ function createDCGround(cimModel, acDCConverter, dcConverterUnitGround, i7Data, bipole, dcLineNeutral) {
6464
6639
  const dcConverterUnit = acDCConverter.equipmentContainer;
6465
6640
  const dcGround = new DCGround_1.DCGround((0, parser_utils_1.getUUID)(i7Data.guid_dcground), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCG'], 32, true));
6466
6641
  const dcTerminalG = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(i7Data.guid_dcterminalg), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCG_DCT']));
@@ -6473,7 +6648,15 @@ function createDCGround(cimModel, acDCConverter, i7Data) {
6473
6648
  dcTerminalM1.dcNode = dcNodeG;
6474
6649
  dcGround.equipmentContainer = dcConverterUnit;
6475
6650
  dcGround.dCTerminals.set(dcTerminalG.getUUID(), dcTerminalG);
6476
- dcNodeG.dcEquipmentContainer = dcConverterUnit;
6651
+ if (bipole && dcLineNeutral !== undefined) {
6652
+ dcNodeG.dcEquipmentContainer = dcLineNeutral;
6653
+ }
6654
+ else if (bipole && dcLineNeutral === undefined) {
6655
+ dcNodeG.dcEquipmentContainer = dcConverterUnitGround;
6656
+ }
6657
+ else {
6658
+ dcNodeG.dcEquipmentContainer = dcConverterUnit;
6659
+ }
6477
6660
  dcNodeG.dcTerminals.set(dcTerminalG.getUUID(), dcTerminalG);
6478
6661
  dcNodeG.dcTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
6479
6662
  acDCConverter.dCTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
@@ -6492,16 +6675,16 @@ function createDCGround(cimModel, acDCConverter, i7Data) {
6492
6675
  * @param i7Data
6493
6676
  * @param endNumber Start means a value of '1'. Target means a value of '2'.
6494
6677
  */
6495
- function connectDCGround(cimModel, acdcConverter, i7Data, dcNode, polarity) {
6678
+ function connectDCGround(cimModel, i7Data, dcNode, polarity, acdcConverter) {
6496
6679
  let dcTerminalMx = undefined;
6497
6680
  let dcNodeG = dcNode;
6498
6681
  const dcTerminalM1UUID = (0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm1);
6499
6682
  const dcTerminalM2UUID = (0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm2);
6500
6683
  if (dcNodeG.dcTerminals.get(dcTerminalM1UUID)) {
6501
- dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM2UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_NEG', '_DCT']));
6684
+ dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM2UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_MID_DCT']));
6502
6685
  }
6503
6686
  else {
6504
- dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM1UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT']));
6687
+ dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM1UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_MID_DCT']));
6505
6688
  }
6506
6689
  dcTerminalMx.polarity = polarity;
6507
6690
  dcNodeG.dcTerminals.set(dcTerminalMx.getUUID(), dcTerminalMx);