@enervance/insight-cim-model 0.0.156 → 0.0.158

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 (111) hide show
  1. package/dist/converter/PSDM/ConverterPowerSystemDataModel.js.map +1 -1
  2. package/dist/converter/integral7/ConverterIntegral7.d.ts +0 -0
  3. package/dist/converter/integral7/ConverterIntegral7.js +1 -0
  4. package/dist/converter/integral7/ConverterIntegral7.js.map +1 -0
  5. package/dist/converter/integral7/config/integral-prefix.d.ts +0 -2
  6. package/dist/converter/integral7/config/integral-prefix.js +1 -3
  7. package/dist/converter/integral7/config/integral-prefix.js.map +1 -1
  8. package/dist/converter/integral7/converter.integral7.d.ts +21 -14
  9. package/dist/converter/integral7/converter.integral7.js +763 -958
  10. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  11. package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +1 -1
  12. package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
  13. package/dist/converter/integral7/interface-i7/IDefaultValuesConfig.d.ts +0 -3
  14. package/dist/converter/integral7/interface-i7/data-structures-i7.d.ts +3 -3
  15. package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +2 -2
  16. package/dist/converter/integral7/interface-i7/export-frame-i7.js +0 -3
  17. package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
  18. package/dist/converter/integral7/model/dl-utils/util-functions.js.map +1 -1
  19. package/dist/converter/integral7/model/integral/Hgueleitung.d.ts +12 -0
  20. package/dist/converter/integral7/model/integral/Hgueleitung.js +3 -0
  21. package/dist/converter/integral7/model/integral/Hgueleitung.js.map +1 -0
  22. package/dist/converter/integral7/model/integral/Kopfstation.d.ts +44 -0
  23. package/dist/converter/integral7/model/integral/Kopfstation.js +10 -0
  24. package/dist/converter/integral7/model/integral/Kopfstation.js.map +1 -0
  25. package/dist/converter/integral7/model/interfaces.d.ts +31 -93
  26. package/dist/converter/integral7/model/interfaces.js.map +1 -1
  27. package/dist/converter/integral7/sql/integral.sql.d.ts +1 -4
  28. package/dist/converter/integral7/sql/integral.sql.js +14 -20
  29. package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
  30. package/dist/converter/integral7/utils-cgmes-export.js +0 -3
  31. package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
  32. package/dist/converter/integral7/utils.d.ts +2 -14
  33. package/dist/converter/integral7/utils.js +50 -79
  34. package/dist/converter/integral7/utils.js.map +1 -1
  35. package/dist/etl/etl-neplan/etl-neplan.js +3 -9
  36. package/dist/etl/etl-neplan/etl-neplan.js.map +1 -1
  37. package/dist/model/assetinfo/WireInfo.d.ts +0 -1
  38. package/dist/model/assetinfo/WireInfo.js.map +1 -1
  39. package/dist/model/common/PositionPoint.js +18 -3
  40. package/dist/model/common/PositionPoint.js.map +1 -1
  41. package/dist/model/core/ACDCTerminal.js.map +1 -1
  42. package/dist/model/core/IdentifiedObject.js +3 -9
  43. package/dist/model/core/IdentifiedObject.js.map +1 -1
  44. package/dist/model/core/Terminal.js +2 -2
  45. package/dist/model/core/Terminal.js.map +1 -1
  46. package/dist/model/dc/ACDCConverterDCTerminal.js +0 -1
  47. package/dist/model/dc/ACDCConverterDCTerminal.js.map +1 -1
  48. package/dist/model/dc/CsConverter.js.map +1 -1
  49. package/dist/model/dc/DCConverterUnit.d.ts +0 -1
  50. package/dist/model/dc/DCConverterUnit.js +0 -3
  51. package/dist/model/dc/DCConverterUnit.js.map +1 -1
  52. package/dist/model/dc/DCTerminal.js +0 -1
  53. package/dist/model/dc/DCTerminal.js.map +1 -1
  54. package/dist/model/diagram/Diagram.js +0 -2
  55. package/dist/model/diagram/Diagram.js.map +1 -1
  56. package/dist/model/extensions/amprion/equivalents/INTEGRALEquivalentBranch.js +9 -2
  57. package/dist/model/extensions/amprion/equivalents/INTEGRALEquivalentBranch.js.map +1 -1
  58. package/dist/model/extensions/enervance/wires/EVACLineSegment.d.ts +1 -0
  59. package/dist/model/extensions/enervance/wires/EVACLineSegment.js +25 -0
  60. package/dist/model/extensions/enervance/wires/EVACLineSegment.js.map +1 -1
  61. package/dist/model/extensions/integral/loadmodel/INTEGRALConformLoad.d.ts +0 -1
  62. package/dist/model/extensions/integral/loadmodel/INTEGRALConformLoad.js +0 -3
  63. package/dist/model/extensions/integral/loadmodel/INTEGRALConformLoad.js.map +1 -1
  64. package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js +1 -1
  65. package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js.map +1 -1
  66. package/dist/model/extensions/integral/wires/INTEGRALExternalNetworkInjection.d.ts +0 -1
  67. package/dist/model/extensions/integral/wires/INTEGRALExternalNetworkInjection.js +3 -6
  68. package/dist/model/extensions/integral/wires/INTEGRALExternalNetworkInjection.js.map +1 -1
  69. package/dist/model/extensions/integral/wires/INTEGRALSynchronousMachine.d.ts +0 -1
  70. package/dist/model/extensions/integral/wires/INTEGRALSynchronousMachine.js +1 -7
  71. package/dist/model/extensions/integral/wires/INTEGRALSynchronousMachine.js.map +1 -1
  72. package/dist/model/model/Model.d.ts +0 -0
  73. package/dist/model/model/Model.js +1 -0
  74. package/dist/model/model/Model.js.map +1 -0
  75. package/dist/model/operations/ControlArea.d.ts +0 -1
  76. package/dist/model/operations/ControlArea.js +2 -6
  77. package/dist/model/operations/ControlArea.js.map +1 -1
  78. package/dist/model/wires/ACLineSegment.js.map +1 -1
  79. package/dist/model/wires/Breaker.js +1 -1
  80. package/dist/model/wires/Breaker.js.map +1 -1
  81. package/dist/model/wires/Disconnector.js +1 -1
  82. package/dist/model/wires/Disconnector.js.map +1 -1
  83. package/dist/model/wires/ExternalNetworkInjection.js +4 -4
  84. package/dist/model/wires/ExternalNetworkInjection.js.map +1 -1
  85. package/dist/model/wires/PhaseTapChangerAsymmetrical.js +1 -1
  86. package/dist/model/wires/PhaseTapChangerAsymmetrical.js.map +1 -1
  87. package/dist/model/wires/PhaseTapChangerSymmetrical.js +1 -1
  88. package/dist/model/wires/PhaseTapChangerSymmetrical.js.map +1 -1
  89. package/dist/model/wires/TapChangerTablePoint.js +18 -6
  90. package/dist/model/wires/TapChangerTablePoint.js.map +1 -1
  91. package/dist/model-container/model/ModelContainer.d.ts +1 -5
  92. package/dist/model-container/model/ModelContainer.js +1 -13
  93. package/dist/model-container/model/ModelContainer.js.map +1 -1
  94. package/dist/util/collection/util-graph2tree.d.ts +0 -1
  95. package/dist/util/collection/util-graph2tree.js +2 -65
  96. package/dist/util/collection/util-graph2tree.js.map +1 -1
  97. package/dist/util/util-create.d.ts +1 -1
  98. package/dist/util/util-create.js +19 -31
  99. package/dist/util/util-create.js.map +1 -1
  100. package/dist/util/util-test.js +109 -0
  101. package/dist/util/util-test.js.map +1 -1
  102. package/dist/utils2/parser.utils.d.ts +1 -1
  103. package/dist/utils2/parser.utils.js +20 -41
  104. package/dist/utils2/parser.utils.js.map +1 -1
  105. package/package.json +1 -1
  106. package/dist/converter/integral7/model/integral/HgueleitungImpl.d.ts +0 -24
  107. package/dist/converter/integral7/model/integral/HgueleitungImpl.js +0 -7
  108. package/dist/converter/integral7/model/integral/HgueleitungImpl.js.map +0 -1
  109. package/dist/model/operationallimits/ApparentPowerLimit.d.ts +0 -15
  110. package/dist/model/operationallimits/ApparentPowerLimit.js +0 -56
  111. package/dist/model/operationallimits/ApparentPowerLimit.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getGeoCoordinates = exports.ConverterIntegral7 = void 0;
3
+ exports.connectDCGround = exports.createNeutralGroundReturn = exports.createDCGround = exports.getGeoCoordinates = exports.ConverterIntegral7 = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const fs = require("fs");
6
6
  const JSZip = require("jszip");
@@ -21,7 +21,6 @@ const SubGeographicalRegion_1 = require("../../model/core/SubGeographicalRegion.
21
21
  const Substation_1 = require("../../model/core/Substation.js");
22
22
  const Terminal_1 = require("../../model/core/Terminal.js");
23
23
  const VoltageLevel_1 = require("../../model/core/VoltageLevel.js");
24
- const ACDCConverter_1 = require("../../model/dc/ACDCConverter.js");
25
24
  const ACDCConverterDCTerminal_1 = require("../../model/dc/ACDCConverterDCTerminal.js");
26
25
  const CsConverter_1 = require("../../model/dc/CsConverter.js");
27
26
  const CsOperatingModeKind_1 = require("../../model/dc/CsOperatingModeKind.js");
@@ -66,6 +65,7 @@ const LimitTypeKind_1 = require("../../model/operationallimits/LimitTypeKind.js"
66
65
  const OperationalLimitDirectionKind_1 = require("../../model/operationallimits/OperationalLimitDirectionKind.js");
67
66
  const OperationalLimitSet_1 = require("../../model/operationallimits/OperationalLimitSet.js");
68
67
  const OperationalLimitType_1 = require("../../model/operationallimits/OperationalLimitType.js");
68
+ const VoltageLimit_1 = require("../../model/operationallimits/VoltageLimit.js");
69
69
  const ControlArea_1 = require("../../model/operations/ControlArea.js");
70
70
  const Breaker_1 = require("../../model/wires/Breaker.js");
71
71
  const BusbarSection_1 = require("../../model/wires/BusbarSection.js");
@@ -86,6 +86,7 @@ const PowerTransformerEnd_1 = require("../../model/wires/PowerTransformerEnd.js"
86
86
  const RatioTapChanger_1 = require("../../model/wires/RatioTapChanger.js");
87
87
  const RatioTapChangerTable_1 = require("../../model/wires/RatioTapChangerTable.js");
88
88
  const ReactiveCapabilityCurve_1 = require("../../model/wires/ReactiveCapabilityCurve.js");
89
+ const RegulatingControl_1 = require("../../model/wires/RegulatingControl.js");
89
90
  const RegulatingControlModeKind_1 = require("../../model/wires/RegulatingControlModeKind.js");
90
91
  const StaticVarCompensator_1 = require("../../model/wires/StaticVarCompensator.js");
91
92
  const SynchronousMachineKind_1 = require("../../model/wires/SynchronousMachineKind.js");
@@ -127,18 +128,13 @@ const INTEGRALEquivalentBranch_1 = require("../../model/extensions/amprion/equiv
127
128
  const PhaseTapChangerLinear_1 = require("../../model/wires/PhaseTapChangerLinear.js");
128
129
  const DCConverterUnit_1 = require("../../model/extensions/integral/dc/DCConverterUnit.js");
129
130
  const DCPolarityKind_1 = require("../../model/dc/DCPolarityKind.js");
130
- const RotatingMachine_1 = require("../../model/wires/RotatingMachine.js");
131
- 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
131
  const executor_1 = require("./dl-convert/executor.js");
137
132
  const Diagram_1 = require("../../model/diagram/Diagram.js");
138
133
  const DiagramObject_1 = require("../../model/diagram/DiagramObject.js");
139
134
  const util_asset_model_1 = require("./util-asset.model.js");
140
135
  const cim_constants_1 = require("../../constants/cim-constants.js");
141
136
  const EVWireObject_1 = require("../../model/extensions/enervance/assets/EVWireObject.js");
137
+ const SynchronousMachine_1 = require("../../model/wires/SynchronousMachine.js");
142
138
  class ConverterIntegral7 {
143
139
  constructor() {
144
140
  /** Exportnetze gemäß Konfiguration */
@@ -293,22 +289,18 @@ class ConverterIntegral7 {
293
289
  startTime = perf_hooks.performance.now();
294
290
  /** Standort -> Substation */
295
291
  yield this.convertStandorte(cimModel, integral7Modell, subGeoRegionsI7IDs, defaultValuesConfig);
296
- logExecutionTime(this.logger, startTime, `convertStandorte(${integral7Modell.integralStandorte.size})`);
292
+ logExecutionTime(this.logger, startTime, `convertStandorte(${cimModel.substations.size + cimModel.lines.size})`);
297
293
  startTime = perf_hooks.performance.now();
298
294
  const standortIDs = [...integral7Modell.integralStandorte.keys()];
299
- /** Regelzone -> ControlArea */
300
- /**if (standortIDs.length) await this.convertRegelzone(cimModel, defaultValuesConfig, standortIDs);
301
- logExecutionTime(this.logger, startTime, `convertRegelzone(${cimModel.controlArea.size})`);*/
302
- /** Schaltanlagen -> VoltageLevel */
303
295
  if (standortIDs.length)
304
296
  yield this.convertSchaltanlagen(cimModel, integral7Modell, standortIDs, defaultValuesConfig);
305
- logExecutionTime(this.logger, startTime, `convertSchaltanlagen(${integral7Modell.integralSchaltanlagen.size})`);
297
+ logExecutionTime(this.logger, startTime, `convertSchaltanlagen(${standortIDs.length})`);
306
298
  startTime = perf_hooks.performance.now();
307
299
  const schaltanlagenIDs = [...integral7Modell.integralSchaltanlagen.keys()];
308
300
  /** Schaltanlagenabschnitte -> mappen auf bereits erstelltes VoltageLevel-Objekt (Schaltanlage) */
309
301
  if (schaltanlagenIDs.length)
310
302
  yield this.convertSchaltanlagenAbschnitte(cimModel, integral7Modell, schaltanlagenIDs);
311
- logExecutionTime(this.logger, startTime, `convertSchaltanlagenAbschnitte(${integral7Modell.integralSchaltanlagenAbschnitte.size})`);
303
+ logExecutionTime(this.logger, startTime, `convertSchaltanlagenAbschnitte(${schaltanlagenIDs.length})`);
312
304
  /** Schaltfelder -> Bay */
313
305
  startTime = perf_hooks.performance.now();
314
306
  const schaltanlagenAbschnittIDs = [...integral7Modell.integralSchaltanlagenAbschnitte.keys()];
@@ -425,34 +417,34 @@ class ConverterIntegral7 {
425
417
  yield this.convertAsynchronmotor(cimModel, soSfKnoten, defaultValuesConfig);
426
418
  logExecutionTime(this.logger, startTime, `convertAsynchronmotor`);
427
419
  }
428
- /** Einspeisungen -> EnergySources or EquivalentInjection or ExternalNetworkInjection */
420
+ /** Einspeisungen -> EnergySources */
429
421
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
430
- startTime = performance.now();
431
- yield this.convertEinspeisungen(cimModel, integral7Modell.targetVoltages, soSfKnoten, objectMappingConfig);
422
+ startTime = perf_hooks.performance.now();
423
+ yield this.convertEinspeisungen(cimModel, soSfKnoten, objectMappingConfig, energySourceTypeMappingConfig);
432
424
  logExecutionTime(this.logger, startTime, `convertEinspeisungen`);
433
425
  }
434
426
  /** Generatoren -> SynchronousMachine */
435
427
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
436
- startTime = performance.now();
437
- yield this.convertGeneratoren(cimModel, integral7Modell.targetVoltages, soSfKnoten, energyTypesConfig);
428
+ startTime = perf_hooks.performance.now();
429
+ // await this.convertGeneratoren(cimModel, soSfKnoten, energyTypesConfig);
438
430
  logExecutionTime(this.logger, startTime, `convertGeneratoren`);
439
431
  }
440
432
  /** KWBlöcke -> SynchronousMachine */
441
433
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
442
434
  startTime = perf_hooks.performance.now();
443
- yield this.convertKraftwerksbloecke(cimModel, integral7Modell.targetVoltages, soSfKnoten, energyTypesConfig);
435
+ // await this.convertKraftwerksbloecke(cimModel, soSfKnoten, energyTypesConfig);
444
436
  logExecutionTime(this.logger, startTime, `convertKraftwerksbloecke`);
445
437
  }
446
438
  /** Ersatzquerzweige -> ExternalNetworkInjection */
447
439
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
448
- startTime = performance.now();
449
- yield this.convertErsatzQuerZweige(cimModel, integral7Modell.targetVoltages, soSfKnoten, objectMappingConfig.Ersatzquerzweig.class);
440
+ startTime = perf_hooks.performance.now();
441
+ yield this.convertErsatzQuerZweige(cimModel, soSfKnoten, objectMappingConfig.Ersatzquerzweig.class);
450
442
  logExecutionTime(this.logger, startTime, `convertErsatzQuerZweige`);
451
443
  }
452
444
  /** Randnetzeinspeisungen -> ExternalNetworkInjection */
453
445
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
454
- startTime = performance.now();
455
- yield this.convertBoundaryInjections(cimModel, integral7Modell.targetVoltages, soSfKnoten, objectMappingConfig.Randnetzeinspeisung.class);
446
+ startTime = perf_hooks.performance.now();
447
+ yield this.convertBoundaryInjections(cimModel, soSfKnoten, objectMappingConfig.Randnetzeinspeisung.class);
456
448
  logExecutionTime(this.logger, startTime, `convertBoundaryInjections`);
457
449
  }
458
450
  /** Kompensationsdrossel -> LinearShuntCompensator */
@@ -485,16 +477,16 @@ class ConverterIntegral7 {
485
477
  /** Sonderfall mit Trafo
486
478
  * Trafos müssen zuertst konvertiert werden. */
487
479
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
488
- startTime = performance.now();
489
- yield this.convertStatcom(cimModel, integral7Modell.targetVoltages, soSfKnoten);
480
+ startTime = perf_hooks.performance.now();
481
+ yield this.convertStatcom(cimModel, soSfKnoten);
490
482
  logExecutionTime(this.logger, startTime, `convertStatcom`);
491
483
  }
492
484
  /** SVC -> StaticVarCompensator */
493
485
  /** Sonderfall mit Trafo
494
486
  * Trafos müssen zuertst konvertiert werden.*/
495
487
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
496
- startTime = performance.now();
497
- yield this.convertSVC(cimModel, integral7Modell.targetVoltages, soSfKnoten);
488
+ startTime = perf_hooks.performance.now();
489
+ yield this.convertSVC(cimModel, soSfKnoten);
498
490
  logExecutionTime(this.logger, startTime, `convertSVC`);
499
491
  }
500
492
  /** HGÜ Knoten */
@@ -505,13 +497,13 @@ class ConverterIntegral7 {
505
497
  /** HGÜ Kopfklassisch */
506
498
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
507
499
  startTime = perf_hooks.performance.now();
508
- yield this.convertCsConverterDC(cimModel, integral7Modell, soSfKnoten);
500
+ // await this.convertCsConverterDC(cimModel, integral7Modell, soSfKnoten);
509
501
  logExecutionTime(this.logger, startTime, `convertCsConverterDC`);
510
502
  }
511
503
  /** netz_hguekopfvsc */
512
504
  if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
513
505
  startTime = perf_hooks.performance.now();
514
- yield this.convertVsConverterDC(cimModel, integral7Modell.targetVoltages, integral7Modell, soSfKnoten);
506
+ // await this.convertVsConverterDC(cimModel, integral7Modell, soSfKnoten);
515
507
  logExecutionTime(this.logger, startTime, `convertVsConverterDC`);
516
508
  }
517
509
  /** HGÜ-Leitungen -> (DCLine, DCLineSegment)*/
@@ -623,7 +615,7 @@ class ConverterIntegral7 {
623
615
  }
624
616
  }
625
617
  else {
626
- this.logger.debug(`debug --- DCTerminal ${terminalUUID} hat kein angeschlossenes DCConductingEquipment`);
618
+ //console.log(`Terminal without connection ${terminalUUID}`);
627
619
  }
628
620
  }
629
621
  }
@@ -643,7 +635,7 @@ class ConverterIntegral7 {
643
635
  }
644
636
  }
645
637
  else {
646
- this.logger.debug(`debug --- Terminal ${terminalUUID} hat kein angeschlossenes ConductingEquipment`);
638
+ //console.log(`Terminal without connection ${terminalUUID}`);
647
639
  }
648
640
  }
649
641
  }
@@ -663,7 +655,7 @@ class ConverterIntegral7 {
663
655
  }
664
656
  }
665
657
  else {
666
- this.logger.debug(`debug --- ACDCConverterDCTerminal ${terminalUUID} hat kein angeschlossenes DCConductingEquipment`);
658
+ //console.log(`Terminal without connection ${terminalUUID}`);
667
659
  }
668
660
  }
669
661
  }
@@ -697,22 +689,19 @@ class ConverterIntegral7 {
697
689
  }));
698
690
  });
699
691
  }
700
- convertRegelzone(cimModel, defaultValuesConfig, standortIDs) {
692
+ convertRegelzone(cimModel, defaultValuesConfig) {
701
693
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
702
694
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.REGELZONE)) {
703
- //const resultNg: Regelzone[] = await this.mysqlController.execQuery(getNetzQuery(I7Objects.NETZGRUPPE, 0, 0, standortIDs));
704
- const resultRz = yield this.mysqlController.execQuery((0, integral_sql_1.getNetzQuery)(integral_sql_1.I7Objects.REGELZONE, 0, 0, []));
705
- for (const i7Data of resultRz) {
695
+ const result = yield this.mysqlController.execQuery((0, integral_sql_1.getNetzQuery)(integral_sql_1.I7Objects.REGELZONE, 0, 0, []));
696
+ for (const i7Data of result) {
706
697
  const i7Schluessel = integral_prefix_1.REGELZONE_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
707
- const ctrlarea = new ControlArea_1.ControlArea((0, parser_utils_1.getUUID)(i7Data.guid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner), '_RZ']), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluessel);
708
- ctrlarea.type = ControlAreaTypeKind_1.ControlAreaTypeKind.agc;
709
- ctrlarea.netInterchange = 0;
698
+ const ctrlarea = new ControlArea_1.ControlArea((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner), '_RZ']), (0, utils_2.ueberpruefeZeichenkette)(i7Data.kurzname), i7Schluessel);
710
699
  cimModel.addControlArea(ctrlarea);
711
700
  this.addIdMapping(i7Data.id, ctrlarea.mrid, integral_sql_1.Integral7TableNames.REGELZONE);
712
701
  }
713
702
  }
714
703
  else {
715
- this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.REGELZONE} ist nicht vorhanden.`);
704
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.REGELZONE} ist nicht vorhanden.`);
716
705
  }
717
706
  });
718
707
  }
@@ -759,10 +748,6 @@ class ConverterIntegral7 {
759
748
  for (const i7Data of result) {
760
749
  const i7name = (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', (0, utils_2.ueberpruefeZeichenkette)(i7Data.ukz), '_S'], 32);
761
750
  const substation = new AMPRIONSubstation_1.AMPRIONSubstation((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), i7name, i7Data.kurzname, i7Data.kommentar, i7Data.stationsnummer, i7Data.ukz);
762
- const i7Schluessel = integral_prefix_1.STANDORT_PRAEFIX +
763
- i7Data.ukz +
764
- integral_prefix_1.MITTIGER_PUNKT +
765
- (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
766
751
  let subregion = cimModel.getSubGeographicalRegion(this.integralID2UUID.get(i7Data.subgeoregion));
767
752
  if (!subregion) {
768
753
  const region = (0, utils_1.createIfNotExitsGeoregionByName)(cimModel, defaultValuesConfig.GeographicalRegion.name);
@@ -908,9 +893,8 @@ class ConverterIntegral7 {
908
893
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KNOTEN_SO, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KNOTEN_SO), standortIDs));
909
894
  for (const i7Data of result) {
910
895
  const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
911
- const vl = new VoltageLevel_1.VoltageLevel((0, parser_utils_1.getUUID)(i7Data.guid_v, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
912
- //const rdfid = getUUID(i7Data.guid); /**This is the mrid for TopologicalNode */
913
- const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
896
+ const vl = new VoltageLevel_1.VoltageLevel(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), i7Data.un.toString(), '_VL']), i7Data.kurzname);
897
+ const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
914
898
  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);
915
899
  connectivityNode.setConnectivityNodeContainer(vl);
916
900
  vl.addConnectivityNode(connectivityNode);
@@ -962,8 +946,8 @@ class ConverterIntegral7 {
962
946
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_KNOTEN)) {
963
947
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.HGUE_KNOTEN, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.HGUE_KNOTEN), standortIDs));
964
948
  for (const i7Data of result) {
965
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
966
- const dcNode = new DCNode_1.DCNode(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_DCCN'], 32, true), i7Data.kurzname);
949
+ const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
950
+ const dcNode = new DCNode_1.DCNode(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_DCCN'], 32, true), i7Data.kurzname);
967
951
  cimModel.addDCNode(dcNode);
968
952
  this.addIdMapping(i7Data.id, dcNode.mrid, integral_sql_1.Integral7TableNames.HGUE_KNOTEN);
969
953
  }
@@ -983,8 +967,7 @@ class ConverterIntegral7 {
983
967
  busbarSection.ipMax = i7Data.limit_ip;
984
968
  // die Sammelschienen sind nicht aggregiert.
985
969
  busbarSection.aggregate = false;
986
- //const rdfid: string = getUUID(i7Data.guid); /** this is the mrid for TopologicalNode*/
987
- const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid_cn, this.objectMappingConfig.standardiseUuid);
970
+ const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
988
971
  const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(rdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_' + i7Data.pos.toString(), '_' + rdfid.substring(0, 8), '_CN'], 32, true), i7Data.kurzname);
989
972
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Schaltanlagenabschnitt.id));
990
973
  connectivityNode.nodeNumber = i7Data.id_psse_cape;
@@ -994,14 +977,14 @@ class ConverterIntegral7 {
994
977
  connectivityNode.connectivityNodeContainer = voltageLevel;
995
978
  voltageLevel.addConnectivityNode(connectivityNode);
996
979
  // umax
997
- voltageLevel.highVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umax) : voltageLevel.highVoltageLimit;
980
+ voltageLevel.highVoltageLimit = i7Data.umax;
998
981
  // umin
999
- voltageLevel.lowVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umin) : voltageLevel.lowVoltageLimit;
1000
- /**const i7Schluessel = voltageLevel.substation.name +
1001
- SAMMELSCHIENENABSCHNITT_PRAEFIX +
1002
- ueberpruefeZeichenkette(i7Data.bezeichner);
1003
- busbarSection.description = i7Schluessel;
1004
- connectivityNode.description = i7Schluessel;*/
982
+ voltageLevel.lowVoltageLimit = i7Data.umin;
983
+ const i7Schluessel = voltageLevel.description +
984
+ integral_prefix_1.SAMMELSCHIENENABSCHNITT_PRAEFIX +
985
+ (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
986
+ busbarSection.description = i7Schluessel;
987
+ connectivityNode.description = i7Schluessel;
1005
988
  /** Spannungsband */
1006
989
  integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
1007
990
  // TODO VoltageLimits?
@@ -1142,18 +1125,13 @@ class ConverterIntegral7 {
1142
1125
  cimModel.addMultiplierFactor(mf);
1143
1126
  load.multiplierFactorUUID = mf.getUUID();
1144
1127
  }
1145
- if (load.getUUID() === '7c1d4120-fdaf-4bc1-aba1-9e8e76aa7a3b') {
1146
- const stop = true;
1147
- }
1148
1128
  /** SSH */
1149
1129
  const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
1150
1130
  load.p = powerData[0];
1151
1131
  load.q = powerData[1];
1152
- /** AMPI7 profile */
1132
+ /** Extension */
1153
1133
  load.p_mf = powerData[2] ? powerData[2] : undefined;
1154
1134
  load.q_mf = powerData[3] ? powerData[3] : undefined;
1155
- load.cos_phi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
1156
- load.normallyInService = inBetrieb;
1157
1135
  //TODO
1158
1136
  /* conformLoad.pFixed = conformLoad.p;
1159
1137
  conformLoad.qFixed = conformLoad.q; */
@@ -1171,8 +1149,9 @@ class ConverterIntegral7 {
1171
1149
  }
1172
1150
  });
1173
1151
  }
1174
- convertEinspeisungen(cimModel, targetVoltages, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
1152
+ convertEinspeisungen(cimModel, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
1175
1153
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1154
+ const targetConfig = objectMappingConfig.Einspeisung;
1176
1155
  const targetClass = objectMappingConfig.Einspeisung.class;
1177
1156
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.EINSPEISUNG)) {
1178
1157
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.EINSPEISUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.EINSPEISUNG), knotenSfIDs));
@@ -1182,7 +1161,7 @@ class ConverterIntegral7 {
1182
1161
  break;
1183
1162
  }
1184
1163
  case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
1185
- yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result);
1164
+ yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, result);
1186
1165
  break;
1187
1166
  }
1188
1167
  case cim_class_names_1.ClassNames.EnergySource: {
@@ -1190,17 +1169,17 @@ class ConverterIntegral7 {
1190
1169
  const filtered = result.filter(it => it.spannungsgeregelt && it.einspprio === config.prio);
1191
1170
  switch (config.class) {
1192
1171
  case 'ExternalNetworkInjection': {
1193
- yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, filtered);
1172
+ yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, filtered);
1194
1173
  break;
1195
1174
  }
1196
1175
  case 'SynchronousMachine': {
1197
- yield this.convertEnergySourceToSynchronousMachine(cimModel, targetVoltages, filtered);
1176
+ yield this.convertEnergySourceToSynchronousMachine(cimModel, filtered);
1198
1177
  break;
1199
1178
  }
1200
1179
  }
1201
1180
  }
1202
1181
  const i7EnergySourceResults = result.filter(it => !it.spannungsgeregelt);
1203
- yield this.convertEinspeisungen2EnergySource(cimModel, targetVoltages, i7EnergySourceResults, energySourceTypeMappingConfig);
1182
+ yield this.convertEinspeisungen2EnergySource(cimModel, i7EnergySourceResults, energySourceTypeMappingConfig);
1204
1183
  const others = result.filter(it => !it.spannungsgeregelt && !it.einspprio);
1205
1184
  console.log(`convertEinspeisungen nicht konvertierte Objekte ${others.length}`);
1206
1185
  break;
@@ -1212,21 +1191,21 @@ class ConverterIntegral7 {
1212
1191
  }
1213
1192
  });
1214
1193
  }
1215
- convertErsatzQuerZweige(cimModel, targetVoltages, knotenSfIDs, targetClass) {
1194
+ convertErsatzQuerZweige(cimModel, knotenSfIDs, targetClass) {
1216
1195
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1217
1196
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
1218
1197
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.ERSATZQUERZWEIG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG), knotenSfIDs));
1219
1198
  switch (targetClass) {
1220
1199
  case cim_class_names_1.ClassNames.EquivalentInjection: {
1221
- yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result);
1200
+ yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, result);
1222
1201
  break;
1223
1202
  }
1224
1203
  case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
1225
- yield this.convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, targetVoltages, result);
1204
+ yield this.convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, result);
1226
1205
  break;
1227
1206
  }
1228
1207
  default: {
1229
- yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result);
1208
+ yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, result);
1230
1209
  }
1231
1210
  }
1232
1211
  }
@@ -1235,7 +1214,7 @@ class ConverterIntegral7 {
1235
1214
  }
1236
1215
  });
1237
1216
  }
1238
- convertGeneratoren(cimModel, targetVoltages, knotenSfIDs, energyTypesConfig) {
1217
+ convertGeneratoren(cimModel, knotenSfIDs, energyTypesConfig) {
1239
1218
  var _a;
1240
1219
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1241
1220
  // Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
@@ -1245,7 +1224,6 @@ class ConverterIntegral7 {
1245
1224
  const genType = this.generatorTypen.get(i7Data.nametyp);
1246
1225
  const synchronousMachine = new INTEGRALSynchronousMachine_1.INTEGRALSynchronousMachine((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_SM'], 32, true), i7Data.kurzname, i7Data.nameprimaertyp);
1247
1226
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
1248
- const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
1249
1227
  const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
1250
1228
  const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
1251
1229
  const mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
@@ -1256,9 +1234,7 @@ class ConverterIntegral7 {
1256
1234
  const isRotatingPhaseShifter = (mf !== undefined && maxP === 0 && minP === 0) || flagCondenserOperationMode;
1257
1235
  const isGenerator = (maxP > 0 || maxP === undefined);
1258
1236
  const isMotor = (minP < 0 || minP === undefined);
1259
- /**AMPI7 profile */
1260
1237
  synchronousMachine.nameprimaertyp = i7Data.nameprimaertyp !== undefined ? i7Data.nameprimaertyp : (genType !== undefined ? genType.nameprimaertyp : undefined);
1261
- synchronousMachine.cos_phi = cosPhi;
1262
1238
  /** Set machine type */
1263
1239
  if (isRotatingPhaseShifter && isGenerator && isMotor) {
1264
1240
  synchronousMachine.type = SynchronousMachineKind_1.SynchronousMachineKind.generatorOrCondenserOrMotor;
@@ -1327,24 +1303,16 @@ class ConverterIntegral7 {
1327
1303
  }
1328
1304
  const prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
1329
1305
  synchronousMachine.referencePriority = prio;
1330
- let maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
1331
- let minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
1332
- let maxQvonPmax = (0, parser_utils_1.isNumericI7)(i7Data.qmax_von_pmax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmax_von_pmax) : undefined;
1333
- let minQvonPmax = (0, parser_utils_1.isNumericI7)(i7Data.qmin_von_pmax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmin_von_pmax) : undefined;
1334
- let maxQvonPmin = (0, parser_utils_1.isNumericI7)(i7Data.qmax_von_pmin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmax_von_pmin) : undefined;
1335
- let minQvonPmin = (0, parser_utils_1.isNumericI7)(i7Data.qmin_von_pmin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmin_von_pmin) : undefined;
1336
- maxQ = maxQ ? maxQ : minQ;
1337
- minQ = minQ ? minQ : maxQ;
1338
- maxQvonPmax = maxQvonPmax ? maxQvonPmax : maxQvonPmin;
1339
- minQvonPmax = minQvonPmax ? minQvonPmax : minQvonPmin;
1340
- maxQvonPmin = maxQvonPmin ? maxQvonPmin : maxQvonPmax;
1341
- minQvonPmin = minQvonPmin ? minQvonPmin : minQvonPmax;
1306
+ const maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
1307
+ const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
1308
+ const maxQvonPmax = (0, parser_utils_1.isNumericI7)(i7Data.qmax_von_pmax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmax_von_pmax) : undefined;
1309
+ const minQvonPmax = (0, parser_utils_1.isNumericI7)(i7Data.qmin_von_pmax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmin_von_pmax) : undefined;
1310
+ const maxQvonPmin = (0, parser_utils_1.isNumericI7)(i7Data.qmax_von_pmin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmax_von_pmin) : undefined;
1311
+ const minQvonPmin = (0, parser_utils_1.isNumericI7)(i7Data.qmin_von_pmin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmin_von_pmin) : undefined;
1342
1312
  synchronousMachine.maxQ = maxQ ? maxQ : maxQvonPmax;
1343
1313
  synchronousMachine.minQ = minQ ? minQ : minQvonPmin;
1344
1314
  const pType = (genType === null || genType === void 0 ? void 0 : genType.sr) * (genType === null || genType === void 0 ? void 0 : genType.cosphir);
1345
1315
  const qType = Math.sqrt(Math.pow(genType === null || genType === void 0 ? void 0 : genType.sr, 2) - Math.pow(pType, 2));
1346
- // AMP I7 Profil
1347
- synchronousMachine.cos_phi = i7Data.cos_phi;
1348
1316
  // SSH Profil
1349
1317
  synchronousMachine.setActivePower(p * -1); //convert to load sign system
1350
1318
  synchronousMachine.setReactivePower(q * -1); //convert to load sign system
@@ -1371,21 +1339,21 @@ class ConverterIntegral7 {
1371
1339
  /** EQ-SC */
1372
1340
  synchronousMachine.earthing = ((_a = i7Data.erdung) === null || _a === void 0 ? void 0 : _a.length) > 0 && i7Data.erdung != 'isoliert' ? true : false;
1373
1341
  synchronousMachine.r = (0, parser_utils_1.isNumericI7)(i7Data.rg) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rg) : ((0, parser_utils_1.isNumericI7)(genType === null || genType === void 0 ? void 0 : genType.rg) ? (0, parser_utils_1.convertToNumberI7)(genType.rg) : undefined);
1374
- synchronousMachine.r0 = 0;
1342
+ synchronousMachine.r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r0) : undefined;
1375
1343
  synchronousMachine.r2 = 0;
1376
- synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0g) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0g) : undefined;
1344
+ synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : undefined;
1377
1345
  synchronousMachine.x2 = 0;
1378
1346
  synchronousMachine.satDirectSubtransX = (0, parser_utils_1.isNumericI7)(i7Data.xd2s) ? (0, parser_utils_1.convertToNumberI7)(i7Data.xd2s) : ((0, parser_utils_1.isNumericI7)(genType === null || genType === void 0 ? void 0 : genType.xd2s) ? (0, parser_utils_1.convertToNumberI7)(genType.xd2s) : undefined);
1379
1347
  // synchronousMachine.earthingStarPointR
1380
1348
  // synchronousMachine.earthingStarPointX
1381
- synchronousMachine.ikk = (0, parser_utils_1.isNumericI7)(i7Data.ikd) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ikd) : undefined;
1349
+ synchronousMachine.ikk = (0, parser_utils_1.isNumericI7)(i7Data.sk_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_min) : ((0, parser_utils_1.isNumericI7)(i7Data.sk_akt) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_akt) : ((0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.sk_max) : undefined));
1382
1350
  // synchronousMachine.mu: number;
1383
1351
  // synchronousMachine.satDirectSyncX: number;
1384
1352
  // synchronousMachine.satDirectTransX: number;
1385
1353
  // synchronousMachine.shortCircuitRotorType: ShortCircuitRotorKind;
1386
1354
  // synchronousMachine.voltageRegulationRange: number;
1387
1355
  /** Create ReactiveCapabilityCurves */
1388
- if (minP !== undefined && maxP !== undefined && minQvonPmin != undefined && maxQvonPmax !== undefined) {
1356
+ if (minP && maxP && minQvonPmin && maxQvonPmax) {
1389
1357
  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']));
1390
1358
  reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
1391
1359
  reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
@@ -1408,6 +1376,26 @@ class ConverterIntegral7 {
1408
1376
  cimModel.addReactiveCapabilityCurve(reactiveCapabilityCurve);
1409
1377
  synchronousMachine.initialReactiveCapabilityCurveUUID = reactiveCapabilityCurve.mrid;
1410
1378
  }
1379
+ /** RegulatingControl */
1380
+ let regulatingControl = undefined;
1381
+ // TODO targetDeadband: ab welcher spannung soll reguliert werden.
1382
+ switch (i7Data.spannungsgeregelt) {
1383
+ case 1: {
1384
+ regulatingControl = new RegulatingControl_1.RegulatingControl((0, parser_utils_1.getUUID)(i7Data.guid_rc, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)(['GEN'], 32, true));
1385
+ regulatingControl.targetValue = usoll !== undefined ? usoll : synchronousMachine.ratedU;
1386
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
1387
+ regulatingControl.discrete = false;
1388
+ regulatingControl.enabled = true;
1389
+ synchronousMachine.controlEnabled = true;
1390
+ regulatingControl.addRegulatingCondEq(synchronousMachine);
1391
+ synchronousMachine.regulatingControlUUID = regulatingControl.getUUID();
1392
+ cimModel.addRegulatingControl(regulatingControl);
1393
+ break;
1394
+ }
1395
+ default: {
1396
+ synchronousMachine.controlEnabled = false;
1397
+ }
1398
+ }
1411
1399
  /** GeneratingUnit section*/
1412
1400
  let generatingUnit;
1413
1401
  if (synchronousMachine.type !== SynchronousMachineKind_1.SynchronousMachineKind.condenser) {
@@ -1498,7 +1486,7 @@ class ConverterIntegral7 {
1498
1486
  generatingUnit.addRotatingMachine(synchronousMachine);
1499
1487
  synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
1500
1488
  }
1501
- this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages, generatingUnit);
1489
+ this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, regulatingControl, generatingUnit);
1502
1490
  const smtcr = new SynchronousMachineTimeConstantReactance_1.SynchronousMachineTimeConstantReactance(common_utils_1.CommonUtils.generateUUID(), `smtcr_${synchronousMachine.name}`);
1503
1491
  smtcr.enabled = inBetrieb;
1504
1492
  // TODO: default value?
@@ -1542,9 +1530,12 @@ class ConverterIntegral7 {
1542
1530
  }
1543
1531
  });
1544
1532
  }
1545
- convertEnergySourceToSynchronousMachine(cimModel, targetVoltages, result) {
1533
+ convertEnergySourceToSynchronousMachine(cimModel, result) {
1546
1534
  for (const i7Data of result) {
1547
1535
  try {
1536
+ if (i7Data.guid.toLowerCase().includes('_e11f3fe9-0b7a-4ff1-a0dc-214c4c3fd8cc')) {
1537
+ console.log();
1538
+ }
1548
1539
  const synchronousMachine = new SynchronousMachine_1.SynchronousMachine((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_SM'], 32, true), i7Data.kurzname);
1549
1540
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
1550
1541
  const powerData = (0, utils_2.getActiveReactivePower)(i7Data);
@@ -1567,7 +1558,28 @@ class ConverterIntegral7 {
1567
1558
  const usoll = +i7Data.usoll;
1568
1559
  synchronousMachine.ratedU = usoll;
1569
1560
  synchronousMachine.aggregate = true;
1570
- this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages);
1561
+ /** RegulatingControl */
1562
+ let regulatingControl = undefined;
1563
+ // TODO targetDeadband: ab welcher spannung soll reguliert werden.
1564
+ switch (i7Data.spannungsgeregelt) {
1565
+ case 1: {
1566
+ regulatingControl = new RegulatingControl_1.RegulatingControl(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)(['GEN'], 32, true));
1567
+ regulatingControl.targetValue = usoll !== undefined ? usoll : synchronousMachine.ratedU;
1568
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
1569
+ regulatingControl.discrete = false;
1570
+ regulatingControl.enabled = true;
1571
+ synchronousMachine.controlEnabled = true;
1572
+ regulatingControl.addRegulatingCondEq(synchronousMachine);
1573
+ synchronousMachine.regulatingControlUUID = regulatingControl.getUUID();
1574
+ synchronousMachine.regulatingControl = regulatingControl;
1575
+ cimModel.addRegulatingControl(regulatingControl);
1576
+ break;
1577
+ }
1578
+ default: {
1579
+ synchronousMachine.controlEnabled = false;
1580
+ }
1581
+ }
1582
+ this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, regulatingControl);
1571
1583
  cimModel.addSynchronousMachine(synchronousMachine);
1572
1584
  this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.GENERATOR);
1573
1585
  }
@@ -1583,48 +1595,41 @@ class ConverterIntegral7 {
1583
1595
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getNetzQuery)(integral_sql_1.I7Objects.ASYNCHRONMOTOR, 0, 0, knotenSfIDs));
1584
1596
  for (const i7Data of result) {
1585
1597
  const assetType = this.asynchronmotorTypen.get(i7Data.nametyp);
1586
- const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : true;
1587
- const sr = (0, parser_utils_1.isNumericI7)(i7Data.sr) ? i7Data.sr : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.sr) ? assetType === null || assetType === void 0 ? void 0 : assetType.sr : undefined);
1588
- const wirkungsgrad = (0, parser_utils_1.isNumericI7)(i7Data.wirkungsgrad) ? i7Data.wirkungsgrad : undefined;
1589
- const cosphir = (0, parser_utils_1.isNumericI7)(i7Data.cosphir) ? i7Data.cosphir : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.cosphir) ? assetType === null || assetType === void 0 ? void 0 : assetType.cosphir : undefined);
1590
- //AMPI7 profile content
1591
- const asynchronousMachine = new INTEGRALAsynchronousMachine_1.INTEGRALAsynchronousMachine((0, parser_utils_1.getUUID)(i7Data.guid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_AM']), i7Data.kurzname, 'SO-' + i7Data.ukz + integral_prefix_1.MITTIGER_PUNKT + i7Data.bezeichner);
1598
+ const asynchronousMachine = new INTEGRALAsynchronousMachine_1.INTEGRALAsynchronousMachine((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_AM']), i7Data.kurzname, 'SO-' + i7Data.ukz + integral_prefix_1.MITTIGER_PUNKT + i7Data.bezeichner);
1592
1599
  let mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
1593
1600
  if (mf) {
1594
1601
  cimModel.addMultiplierFactor(mf);
1595
1602
  asynchronousMachine.multiplierFactorUUID = mf.getUUID();
1596
1603
  }
1597
- asynchronousMachine.normallyInService = inBetrieb;
1598
- //EQ core profile content
1599
- asynchronousMachine.ratedPowerFactor = cosphir;
1604
+ asynchronousMachine.asynchronousMachineType = AsynchronousMachineKind_1.AsynchronousMachineKind.motor;
1605
+ asynchronousMachine.efficiency = i7Data.wirkungsgrad * 100;
1606
+ asynchronousMachine.iaIrRatio = (0, parser_utils_1.isNumericI7)(i7Data.ilr_ir) ? i7Data.ilr_ir : assetType === null || assetType === void 0 ? void 0 : assetType.ilr_ir;
1607
+ //asynchronousMachine.rxLockedRotorRatio = 0;
1608
+ asynchronousMachine.polePairNumber = (0, parser_utils_1.isNumericI7)(i7Data.polpaarz) ? i7Data.polpaarz : assetType === null || assetType === void 0 ? void 0 : assetType.polpaarz;
1609
+ asynchronousMachine.ratedMechanicalPower = (0, parser_utils_1.isNumericI7)(i7Data.p_mech) ? i7Data.p_mech : assetType === null || assetType === void 0 ? void 0 : assetType.p_mech;
1610
+ asynchronousMachine.ratedPowerFactor = (0, parser_utils_1.isNumericI7)(i7Data.cos_phir) ? i7Data.cos_phir : assetType === null || assetType === void 0 ? void 0 : assetType.cosphir;
1600
1611
  asynchronousMachine.ratedS = (0, parser_utils_1.isNumericI7)(i7Data.sr) ? i7Data.sr : assetType === null || assetType === void 0 ? void 0 : assetType.sr;
1601
1612
  asynchronousMachine.ratedU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? i7Data.ur : assetType === null || assetType === void 0 ? void 0 : assetType.ur;
1602
- //EQ short circuit profile content
1603
- asynchronousMachine.converterFedDrive = false;
1604
- asynchronousMachine.efficiency = wirkungsgrad * 100;
1605
- asynchronousMachine.iaIrRatio = (0, parser_utils_1.isNumericI7)(i7Data.ilr_ir) ? i7Data.ilr_ir : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.ilr_ir) ? assetType.ilr_ir : undefined);
1606
- asynchronousMachine.polePairNumber = (0, parser_utils_1.isNumericI7)(i7Data.polpaarz) ? i7Data.polpaarz : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.polpaarz) ? assetType.polpaarz : undefined);
1607
- asynchronousMachine.ratedMechanicalPower = (0, parser_utils_1.isNumericI7)(i7Data.p_mech) ? i7Data.p_mech : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.p_mech) ? i7Data.p_mech : (0, utils_2.getPMech)(sr, wirkungsgrad, cosphir));
1608
- asynchronousMachine.reversible = false;
1609
- //SSH profile content
1610
1613
  const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
1611
1614
  const p = powerData[0];
1612
1615
  const q = powerData[1];
1613
1616
  asynchronousMachine.setActivePower(p);
1614
1617
  asynchronousMachine.setReactivePower(q);
1615
- asynchronousMachine.asynchronousMachineType = AsynchronousMachineKind_1.AsynchronousMachineKind.motor;
1616
- asynchronousMachine.controlEnabled = false;
1617
- //AMPI7 profile content
1618
1618
  asynchronousMachine.p_mf = powerData[2] ? powerData[2] : undefined;
1619
1619
  asynchronousMachine.q_mf = powerData[3] ? powerData[3] : undefined;
1620
- //EQ core profile content
1620
+ asynchronousMachine.controlEnabled = false;
1621
+ const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : true;
1622
+ asynchronousMachine.normallyInService = inBetrieb;
1621
1623
  const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
1622
1624
  if (connectivityNode) {
1623
1625
  (0, util_create_1.createConnection)(cimModel, asynchronousMachine, connectivityNode, PhaseCode_1.PhaseCode.ABC);
1626
+ //const equipmentContainer = determineEquipmentContainer('VoltageLevel', this.cimModel, this.cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()) as EquipmentContainer);
1624
1627
  const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()));
1625
1628
  if (equipmentContainer) {
1626
1629
  equipmentContainer.addEquipment(asynchronousMachine);
1627
1630
  asynchronousMachine.equipmentContainer = equipmentContainer;
1631
+ cimModel.addAsynchronousMachine(asynchronousMachine);
1632
+ this.addIdMapping(i7Data.id, asynchronousMachine.mrid, integral_sql_1.Integral7TableNames.ASYNCHRONMOTOR);
1628
1633
  }
1629
1634
  else {
1630
1635
  this.logger.debug(`AsynchronousMachine ${i7Data.id} besitzt keinen EquipmentContainer.`);
@@ -1633,8 +1638,6 @@ class ConverterIntegral7 {
1633
1638
  else {
1634
1639
  this.logger.debug(`AsynchronousMachine ${i7Data.id} besitzt keinen ConnectivityNode.`);
1635
1640
  }
1636
- cimModel.addAsynchronousMachine(asynchronousMachine);
1637
- this.addIdMapping(i7Data.id, asynchronousMachine.mrid, integral_sql_1.Integral7TableNames.ASYNCHRONMOTOR);
1638
1641
  }
1639
1642
  }
1640
1643
  else {
@@ -1642,7 +1645,7 @@ class ConverterIntegral7 {
1642
1645
  }
1643
1646
  });
1644
1647
  }
1645
- convertKraftwerksbloecke(cimModel, targetVoltages, knotenSfIDs, energyTypesConfig) {
1648
+ convertKraftwerksbloecke(cimModel, knotenSfIDs, energyTypesConfig) {
1646
1649
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1647
1650
  // Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
1648
1651
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KWBLOCK)) {
@@ -1699,6 +1702,19 @@ class ConverterIntegral7 {
1699
1702
  // synchronousMachine.x0 = i7Data.x0k;
1700
1703
  // synchronousMachine.x2 = 0;
1701
1704
  // synchronousMachine.satDirectSubtransX = i7Data.xd2s;
1705
+ // RegulatingControl
1706
+ const regulatingControl = new RegulatingControl_1.RegulatingControl(common_utils_1.CommonUtils.generateUUID(), `RC_KWBlock ${i7Data.id}`);
1707
+ switch (i7Data.spannungsgeregelt) {
1708
+ // TODO Welche Modi sind möglich?
1709
+ case 1: {
1710
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
1711
+ break;
1712
+ }
1713
+ default: {
1714
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.timeScheduled;
1715
+ }
1716
+ }
1717
+ synchronousMachine.regulatingControlUUID = regulatingControl.mrid;
1702
1718
  // GeneratingUnit
1703
1719
  const generatingUnitConfig = energyTypesConfig[i7Data.nameprimaertyp];
1704
1720
  /** Wenn ein Config für den Primärenergietyp vorhanden*/
@@ -1769,18 +1785,8 @@ class ConverterIntegral7 {
1769
1785
  // generatingUnit.totalEfficiency
1770
1786
  generatingUnit.addRotatingMachine(synchronousMachine);
1771
1787
  synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
1772
- const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages, generatingUnit);
1773
- switch (i7Data.spannungsgeregelt) {
1774
- // TODO Welche Modi sind möglich?
1775
- case 1: {
1776
- regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
1777
- break;
1778
- }
1779
- default: {
1780
- regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.timeScheduled;
1781
- }
1782
- }
1783
- synchronousMachine.regulatingControlUUID = regulatingControl.mrid;
1788
+ this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, regulatingControl, generatingUnit);
1789
+ cimModel.addRegulatingControl(regulatingControl);
1784
1790
  cimModel.addGeneratingUnit(generatingUnit);
1785
1791
  cimModel.addSynchronousMachine(synchronousMachine);
1786
1792
  this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.KWBLOCK);
@@ -1788,7 +1794,7 @@ class ConverterIntegral7 {
1788
1794
  }
1789
1795
  });
1790
1796
  }
1791
- convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, targetVoltages, result) {
1797
+ convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, result) {
1792
1798
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1793
1799
  for (const i7Data of result) {
1794
1800
  const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_ENI']), i7Data.kurzname);
@@ -1816,14 +1822,14 @@ class ConverterIntegral7 {
1816
1822
  externalNetworkInjection.minZ0ToZ1Ratio
1817
1823
  externalNetworkInjection.p
1818
1824
  externalNetworkInjection.q*/
1819
- this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
1825
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data);
1820
1826
  // ToDo PSRType
1821
1827
  cimModel.addExternalNetworkInjection(externalNetworkInjection);
1822
1828
  this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG);
1823
1829
  }
1824
1830
  });
1825
1831
  }
1826
- convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result) {
1832
+ convertErsatzQuerZweige2EquivalentInjection(cimModel, result) {
1827
1833
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1828
1834
  for (const i7Data of result) {
1829
1835
  const einspeisePrio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : 1;
@@ -1836,10 +1842,10 @@ class ConverterIntegral7 {
1836
1842
  const p_ein = (0, parser_utils_1.isNumericI7)(i7Data.p_ein) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_ein) * -1 : undefined; //Einspeisung: Erzeugerzählpfeilsystem, d.h. eine Übersetzung ins Verbraucherzählpfeilsystem wird durchgeführt
1837
1843
  const q_ein = (0, parser_utils_1.isNumericI7)(i7Data.q_ein) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_ein) * -1 : undefined; //Einspeisung: Erzeugerzählpfeilsystem, d.h. eine Übersetzung ins Verbraucherzählpfeilsystem wird durchgeführt
1838
1844
  const kr = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
1839
- const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r0) : undefined;
1845
+ const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r1) : undefined;
1840
1846
  const r1 = (0, parser_utils_1.isNumericI7)(i7Data.r1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r1) : undefined;
1841
- const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : undefined;
1842
- const x1 = (0, parser_utils_1.isNumericI7)(i7Data.x1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x1) : undefined;
1847
+ const x0 = (0, parser_utils_1.isNumericI7)(i7Data.r1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r1) : undefined;
1848
+ const x1 = (0, parser_utils_1.isNumericI7)(i7Data.r1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r1) : undefined;
1843
1849
  const equivalentInjection = new INTEGRALEquivalentInjection_1.INTEGRALEquivalentInjection((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_EI']), i7Data.kurzname);
1844
1850
  /** Export Extended Ward equivalent with voltage regulation */
1845
1851
  if (flag_lfl && !flag_ks && usoll && (r_ext !== 0 || x_ext !== 0)) {
@@ -1856,19 +1862,6 @@ class ConverterIntegral7 {
1856
1862
  equivalentInjection.x0 = 1e9;
1857
1863
  equivalentInjection.x2 = 1e9;
1858
1864
  }
1859
- /** Export Extended Ward equivalent with no voltage regulation */
1860
- else if ((r_ext !== 0 || x_ext !== 0)) {
1861
- equivalentInjection.regulationCapability = false;
1862
- equivalentInjection.rExt = r_ext;
1863
- equivalentInjection.r = 1e9;
1864
- equivalentInjection.r0 = 1e9;
1865
- equivalentInjection.r2 = 1e9;
1866
- equivalentInjection.xExt = x_ext;
1867
- equivalentInjection.x = 1e9;
1868
- equivalentInjection.x0 = 1e9;
1869
- equivalentInjection.x2 = 1e9;
1870
- }
1871
- /** Export equivalent with only short circuit computation capability */
1872
1865
  else if (!flag_lfl && flag_ks) {
1873
1866
  equivalentInjection.regulationCapability = false;
1874
1867
  equivalentInjection.r = r1;
@@ -1889,6 +1882,17 @@ class ConverterIntegral7 {
1889
1882
  equivalentInjection.x0 = x0;
1890
1883
  equivalentInjection.x2 = x1;
1891
1884
  }
1885
+ else if ((r_ext !== 0 || x_ext !== 0)) {
1886
+ equivalentInjection.regulationCapability = false;
1887
+ equivalentInjection.rExt = r_ext;
1888
+ equivalentInjection.r = 1e9;
1889
+ equivalentInjection.r0 = 1e9;
1890
+ equivalentInjection.r2 = 1e9;
1891
+ equivalentInjection.xExt = x_ext;
1892
+ equivalentInjection.x = 1e9;
1893
+ equivalentInjection.x0 = 1e9;
1894
+ equivalentInjection.x2 = 1e9;
1895
+ }
1892
1896
  else {
1893
1897
  equivalentInjection.regulationCapability = false;
1894
1898
  equivalentInjection.r = 1e9;
@@ -1904,30 +1908,30 @@ class ConverterIntegral7 {
1904
1908
  equivalentInjection.einspeisePrio = einspeisePrio;
1905
1909
  equivalentInjection.kr = kr;
1906
1910
  equivalentInjection.aggregate = true; // default Wert im I7 Export. Not needed for EquivalentInjection, BusbarSection, PowerTransformerEnd, EquivalentShunt, EquivalentBranch
1907
- this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data, targetVoltages);
1911
+ this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data);
1908
1912
  // ToDo PSRType
1909
1913
  cimModel.addEquivalentInjection(equivalentInjection);
1910
1914
  this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG);
1911
1915
  }
1912
1916
  });
1913
1917
  }
1914
- //TODO: Die Randnetzeinspeisung ist nach CGMES 2.4.15 eine equivalentInjection, d.h. die Fallunterscheidung kann ausbleiben?...Diskussion mit Andreas
1915
- convertBoundaryInjections(cimModel, targetVoltages, knotenSfIDs, targetClass) {
1918
+ //TODO: Die Randnetzeinspeisung ist nach CGMES 2.4.15 eine equivalentInejction, d.h. die Fallunterscheidung kann ausbleiben?...Diskussion mit Andreas
1919
+ convertBoundaryInjections(cimModel, knotenSfIDs, targetClass) {
1916
1920
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1917
1921
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.BOUNDARYINJECTION)) {
1918
1922
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.BOUNDARYINJECTION, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.BOUNDARYINJECTION), knotenSfIDs));
1919
1923
  switch (targetClass) {
1920
1924
  case cim_class_names_1.ClassNames.EquivalentInjection: {
1921
- yield this.convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result);
1925
+ yield this.convertBoundaryInjections2EquivalentInjection(cimModel, result);
1922
1926
  break;
1923
1927
  }
1924
1928
  case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
1925
- yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result);
1929
+ yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, result);
1926
1930
  break;
1927
1931
  }
1928
1932
  default: {
1929
1933
  //BoundaryInjections are always exported to EquivalentInjection objects for Boundary profile
1930
- yield this.convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result);
1934
+ yield this.convertBoundaryInjections2EquivalentInjection(cimModel, result);
1931
1935
  }
1932
1936
  }
1933
1937
  }
@@ -1936,7 +1940,7 @@ class ConverterIntegral7 {
1936
1940
  }
1937
1941
  });
1938
1942
  }
1939
- convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result) {
1943
+ convertBoundaryInjections2EquivalentInjection(cimModel, result) {
1940
1944
  for (const i7Data of result) {
1941
1945
  const equivalentInjection = new EquivalentInjection_1.EquivalentInjection((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), 'BD_EI']), i7Data.kurzname);
1942
1946
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
@@ -1963,7 +1967,7 @@ class ConverterIntegral7 {
1963
1967
  /** Spannung in kilo*/
1964
1968
  // regulatingControl.targetValueUnitMultiplier = UnitMultiplier.k;
1965
1969
  // equivalentInjection.regulatingControl = regulatingControl;
1966
- this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data, targetVoltages);
1970
+ this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data);
1967
1971
  // const connectivityNode = this.cimModelDefaultValues.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
1968
1972
  /** aus dem EqContainer die Sollspannung bestimmen */
1969
1973
  // ToDo PSRType
@@ -1988,7 +1992,7 @@ class ConverterIntegral7 {
1988
1992
  this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.BOUNDARYINJECTION);
1989
1993
  }
1990
1994
  }
1991
- convertBoundaryInjections2ExternalNetworkInjection(cimModel, targetVoltages, result) {
1995
+ convertBoundaryInjections2ExternalNetworkInjection(cimModel, result) {
1992
1996
  for (const i7Data of result) {
1993
1997
  const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, utils_2.getName)(i7Data), i7Data.kurzname);
1994
1998
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
@@ -2004,7 +2008,18 @@ class ConverterIntegral7 {
2004
2008
  /** externalNetworkInjection.maxR0ToX0Ratio = 1/(/x0/r0)
2005
2009
  externalNetworkInjection.maxR1ToX1Ratio = (1/x1/r1) */
2006
2010
  externalNetworkInjection.maxZ0ToZ1Ratio = (0, parser_utils_1.convertToNumberI7)(i7Data.z0_z1);
2007
- this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
2011
+ /** RegulatingControl */
2012
+ const regulatingControl = new RegulatingControl_1.RegulatingControl(common_utils_1.CommonUtils.generateUUID(), `RC_BI_${i7Data.id}`);
2013
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
2014
+ regulatingControl.discrete = true;
2015
+ regulatingControl.enabled = inBetrieb;
2016
+ /** zulässges Spannungsband um die Knoten-Sollspannung
2017
+ * Diff umin, umax */
2018
+ //regulatingControl.targetDeadband = i7Data.uband;
2019
+ /** Spannung in kilo*/
2020
+ regulatingControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
2021
+ externalNetworkInjection.regulatingControl = regulatingControl;
2022
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, regulatingControl);
2008
2023
  // const connectivityNode = this.cimModelDefaultValues.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
2009
2024
  /** aus dem EqContainer die Sollspannung bestimmen */
2010
2025
  // ToDo PSRType
@@ -2025,6 +2040,7 @@ class ConverterIntegral7 {
2025
2040
  }*/
2026
2041
  // ToDo PSRType
2027
2042
  cimModel.addExternalNetworkInjection(externalNetworkInjection);
2043
+ cimModel.addRegulatingControl(regulatingControl);
2028
2044
  this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.BOUNDARYINJECTION);
2029
2045
  }
2030
2046
  }
@@ -2063,31 +2079,26 @@ class ConverterIntegral7 {
2063
2079
  this.createBoundaryConnection(frame, equivalentBranch, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
2064
2080
  this.createBoundaryConnection(frame, equivalentBranch, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
2065
2081
  /**EQ */
2066
- if (flag_lfl && !flag_ks) {
2082
+ if (flag_lfl || (flag_lfl && flag_ks)) {
2067
2083
  equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
2068
2084
  equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
2069
- /*equivalentBranch.r21 = isNumericI7(i7Data.r21_lfl) ? convertToNumberI7(i7Data.r21_lfl) : equivalentBranch.r;
2070
- equivalentBranch.x21 = isNumericI7(i7Data.x21_lfl) ? convertToNumberI7(i7Data.x21_lfl) : equivalentBranch.x;
2071
-
2072
- equivalentBranch.positiveR12 = isNumericI7(i7Data.r12_ks) ? convertToNumberI7(i7Data.r12_ks) : 10e9;
2085
+ equivalentBranch.r21 = (0, parser_utils_1.isNumericI7)(i7Data.r21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r21_lfl) : equivalentBranch.r;
2086
+ equivalentBranch.x21 = (0, parser_utils_1.isNumericI7)(i7Data.x21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x21_lfl) : equivalentBranch.x;
2087
+ equivalentBranch.positiveR12 = (0, parser_utils_1.isNumericI7)(i7Data.r12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_ks) : 10e9;
2073
2088
  equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
2074
- equivalentBranch.positiveX12 = isNumericI7(i7Data.x12_ks) ? convertToNumberI7(i7Data.x12_ks) : 10e9;
2089
+ equivalentBranch.positiveX12 = (0, parser_utils_1.isNumericI7)(i7Data.x12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_ks) : 10e9;
2075
2090
  equivalentBranch.positiveX21 = equivalentBranch.positiveX12;
2076
-
2077
2091
  equivalentBranch.negativeR12 = equivalentBranch.positiveR12;
2078
2092
  equivalentBranch.negativeR21 = equivalentBranch.positiveR21;
2079
2093
  equivalentBranch.negativeX12 = equivalentBranch.positiveX12;
2080
2094
  equivalentBranch.negativeX21 = equivalentBranch.positiveX21;
2081
-
2082
- equivalentBranch.zeroR12 = isNumericI7(i7Data.r0) ? convertToNumberI7(i7Data.r0) : 10e9;
2095
+ equivalentBranch.zeroR12 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r0) : 10e9;
2083
2096
  equivalentBranch.zeroR21 = equivalentBranch.zeroR12;
2084
- equivalentBranch.zeroX12 = isNumericI7(i7Data.x0) ? convertToNumberI7(i7Data.x0) : 10e9
2085
- equivalentBranch.zeroX21 = equivalentBranch.zeroX12;*/
2097
+ equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
2098
+ equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
2086
2099
  }
2087
2100
  else if (!flag_lfl && flag_ks) {
2088
2101
  /**EQ-SC */
2089
- equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
2090
- equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
2091
2102
  equivalentBranch.positiveR12 = (0, parser_utils_1.isNumericI7)(i7Data.r12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_ks) : 10e9;
2092
2103
  equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
2093
2104
  equivalentBranch.positiveX12 = (0, parser_utils_1.isNumericI7)(i7Data.x12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_ks) : 10e9;
@@ -2101,7 +2112,7 @@ class ConverterIntegral7 {
2101
2112
  equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
2102
2113
  equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
2103
2114
  }
2104
- else { //If flag_lfl and flag_ks are specified or neither flag_lfl nor flag_ks are specified, any impedance value that is specified will be exported.
2115
+ else { //If neither flag_lfl nor flag_ks are specified, any impedance value that is specified will be exported.
2105
2116
  equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
2106
2117
  equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
2107
2118
  equivalentBranch.r21 = (0, parser_utils_1.isNumericI7)(i7Data.r21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r21_lfl) : equivalentBranch.r;
@@ -2118,9 +2129,7 @@ class ConverterIntegral7 {
2118
2129
  equivalentBranch.zeroR21 = equivalentBranch.zeroR12;
2119
2130
  equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
2120
2131
  equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
2121
- if (!flag_lfl && !flag_ks) {
2122
- this.logger.warn(`Ersatzlängszweig mit GUID ${equivalentBranch.getUUID()} sind die Flags flag_lfl sowie flag_ks nicht definiert.`);
2123
- }
2132
+ this.logger.warn(`Ersatzlängszweig mit GUID ${equivalentBranch.getUUID()} sind die Flags flag_lfl sowie flag_ks nicht definiert.`);
2124
2133
  }
2125
2134
  const bdf = [];
2126
2135
  bdf.push(this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten)));
@@ -2150,6 +2159,7 @@ class ConverterIntegral7 {
2150
2159
  }
2151
2160
  /** Kompensationsdrossel*/
2152
2161
  convertKompensationsdrossel(cimModel, targetVoltages, knotenSfIDs) {
2162
+ var _a, _b;
2153
2163
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2154
2164
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL)) {
2155
2165
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KOMPENSATIONSDROSSEL, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL), knotenSfIDs));
@@ -2206,13 +2216,60 @@ class ConverterIntegral7 {
2206
2216
  }
2207
2217
  shunt.bPerSection = (0, utils_2.calculateBPerSection)(qr * -1, shunt.nomU, shunt.maximumSections);
2208
2218
  shunt.gPerSection = (0, utils_2.calculateGPerSection)(pr, shunt.nomU, shunt.maximumSections);
2219
+ // RegulatingControl
2220
+ const spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7Data.flag_lf) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.flag_lf) : false;
2221
+ const spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7Data.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.rpv_geregelt) : (cimModel.objects.get(this.integralID2UUID.get(i7Data.knotenspgreg)) !== undefined ? true : false);
2222
+ let knotenSpgGeregelt = undefined;
2223
+ if (spannungsregelungRemote) {
2224
+ knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7Data.knotenspgreg));
2225
+ }
2226
+ let regulatingControl = undefined;
2227
+ if (spannungsregelungLokal || spannungsregelungRemote) {
2228
+ //Create and define regulating control for voltage control
2229
+ regulatingControl = new RegulatingControl_1.RegulatingControl((0, parser_utils_1.getUUID)(i7Data.guid_rc, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([shunt.getUUID().substring(0, 8), '_LSC']));
2230
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
2231
+ regulatingControl.discrete = true; //default für ShuntCompensator ist true. s. CGMES Doku
2232
+ regulatingControl.targetDeadband = (0, parser_utils_1.isNumericI7)(i7Data.uband) ? (0, parser_utils_1.convertToNumberI7)(i7Data.uband) : undefined; //zulässiges Spannungsband
2233
+ /** Spannung in kilo*/
2234
+ regulatingControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
2235
+ regulatingControl.enabled = true;
2236
+ if (knotenSpgGeregelt) {
2237
+ const cn_point = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
2238
+ const terminal = (0, util_graph2tree_1.getControlledNode)(cn_point, knotenSpgGeregelt);
2239
+ if (terminal) {
2240
+ const cn = terminal.getConnectivityNode();
2241
+ if (regulatingControl.targetDeadband === undefined) {
2242
+ regulatingControl.targetDeadband = cn.getBaseVoltageAsNumber() * 0.1;
2243
+ }
2244
+ regulatingControl.terminalUUID = terminal.getUUID();
2245
+ regulatingControl.name = (0, util_create_1.createNotation)([regulatingControl.name, '_', (_a = cn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8), '_RC'], 32, true);
2246
+ const tV = targetVoltages.get(this.UUID2Integral7ID.get(cn.getUUID()).find(elem => elem));
2247
+ if (tV && regulatingControl.targetValue === undefined) {
2248
+ regulatingControl.targetValue = tV['usoll'];
2249
+ }
2250
+ regulatingControl.targetValue = targetVoltages.get((_b = this.UUID2Integral7ID.get(cn.getUUID())) === null || _b === void 0 ? void 0 : _b.find(elem => elem))['usoll'];
2251
+ }
2252
+ }
2253
+ regulatingControl.addRegulatingCondEq(shunt);
2254
+ shunt.regulatingControlUUID = regulatingControl.mrid;
2255
+ shunt.controlEnabled = regulatingControl === undefined ? false : regulatingControl.enabled;
2256
+ shunt.regulatingControl = regulatingControl;
2257
+ cimModel.addRegulatingControl(regulatingControl);
2258
+ const term = cimModel.terminals.get(regulatingControl.terminalUUID);
2259
+ if (term) {
2260
+ term.addRegulatingControl(regulatingControl);
2261
+ }
2262
+ else {
2263
+ let stop = true;
2264
+ }
2265
+ }
2209
2266
  //SHC section
2210
2267
  const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? i7Data.r0 : undefined;
2211
2268
  const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? i7Data.x0 : undefined;
2212
2269
  shunt.b0PerSection = (0, utils_2.calculateB0PerSection)(/*r0,*/ Math.abs(x0)) * -1;
2213
2270
  shunt.g0PerSection = (0, utils_2.calculateG0PerSection)(r0 /*,x0*/);
2214
2271
  this.setShuntGrounding(shunt, sternpunktKnotenMap.get(i7Data.knoten1p), r0, x0);
2215
- this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, targetVoltages);
2272
+ this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, shunt.regulatingControl, undefined, targetVoltages);
2216
2273
  cimModel.addLinearShuntCompensator(shunt);
2217
2274
  this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL);
2218
2275
  }
@@ -2224,6 +2281,7 @@ class ConverterIntegral7 {
2224
2281
  }
2225
2282
  /** Kompensationskondensator*/
2226
2283
  convertKompensationskondensatoren(cimModel, targetVoltages, knotenSfIDs) {
2284
+ var _a, _b;
2227
2285
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2228
2286
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR)) {
2229
2287
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KOMPENSATIONSKONDENSATOR, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR), knotenSfIDs));
@@ -2280,13 +2338,60 @@ class ConverterIntegral7 {
2280
2338
  }
2281
2339
  shunt.bPerSection = (0, utils_2.calculateBPerSection)(qr, shunt.nomU, shunt.maximumSections);
2282
2340
  shunt.gPerSection = (0, utils_2.calculateGPerSection)(pr, shunt.nomU, shunt.maximumSections);
2341
+ // RegulatingControl
2342
+ const spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7Data.flag_lf) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.flag_lf) : false;
2343
+ const spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7Data.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.rpv_geregelt) : false;
2344
+ let knotenSpgGeregelt = undefined;
2345
+ if (spannungsregelungRemote) {
2346
+ knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7Data.knotenspgreg));
2347
+ }
2348
+ let regulatingControl = undefined;
2349
+ if (spannungsregelungLokal || spannungsregelungRemote) {
2350
+ //Create and define regulating control for voltage control
2351
+ regulatingControl = new RegulatingControl_1.RegulatingControl(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([shunt.getUUID().substring(0, 8), '_LSC']));
2352
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
2353
+ regulatingControl.discrete = true; //default für ShuntCompensator ist true. s. CGMES Doku
2354
+ regulatingControl.targetDeadband = (0, parser_utils_1.isNumericI7)(i7Data.uband) ? (0, parser_utils_1.convertToNumberI7)(i7Data.uband) : undefined; //zulässiges Spannungsband
2355
+ /** Spannung in kilo*/
2356
+ regulatingControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
2357
+ regulatingControl.enabled = true;
2358
+ if (knotenSpgGeregelt) {
2359
+ const cn_point = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
2360
+ const terminal = (0, util_graph2tree_1.getControlledNode)(cn_point, knotenSpgGeregelt);
2361
+ if (terminal) {
2362
+ const cn = terminal.getConnectivityNode();
2363
+ if (regulatingControl.targetDeadband === undefined) {
2364
+ regulatingControl.targetDeadband = cn.getBaseVoltageAsNumber() * 0.1;
2365
+ }
2366
+ regulatingControl.terminalUUID = terminal.getUUID();
2367
+ regulatingControl.name = (0, util_create_1.createNotation)([regulatingControl.name, '_', (_a = cn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8), '_RC'], 32, true);
2368
+ const tV = targetVoltages.get(this.UUID2Integral7ID.get(cn.getUUID()).find(elem => elem));
2369
+ if (tV && regulatingControl.targetValue === undefined) {
2370
+ regulatingControl.targetValue = tV['usoll'];
2371
+ }
2372
+ regulatingControl.targetValue = targetVoltages.get((_b = this.UUID2Integral7ID.get(cn.getUUID())) === null || _b === void 0 ? void 0 : _b.find(elem => elem))['usoll'];
2373
+ }
2374
+ }
2375
+ regulatingControl.addRegulatingCondEq(shunt);
2376
+ shunt.regulatingControlUUID = regulatingControl.mrid;
2377
+ shunt.controlEnabled = regulatingControl === undefined ? false : regulatingControl.enabled;
2378
+ shunt.regulatingControl = regulatingControl;
2379
+ cimModel.addRegulatingControl(regulatingControl);
2380
+ const term = cimModel.terminals.get(regulatingControl.terminalUUID);
2381
+ if (term) {
2382
+ term.addRegulatingControl(regulatingControl);
2383
+ }
2384
+ else {
2385
+ let stop = true;
2386
+ }
2387
+ }
2283
2388
  //SHC section
2284
2389
  const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? i7Data.r0 : undefined;
2285
2390
  const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? i7Data.x0 : undefined;
2286
2391
  shunt.b0PerSection = (0, utils_2.calculateB0PerSection)(/*r0,*/ Math.abs(x0));
2287
2392
  shunt.g0PerSection = (0, utils_2.calculateG0PerSection)(r0 /*,x0*/);
2288
2393
  this.setShuntGrounding(shunt, sternpunktKnotenMap.get(i7Data.knoten1p), r0, x0);
2289
- this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, targetVoltages);
2394
+ this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, shunt.regulatingControl, undefined, targetVoltages);
2290
2395
  cimModel.addLinearShuntCompensator(shunt);
2291
2396
  this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR);
2292
2397
  }
@@ -2296,12 +2401,13 @@ class ConverterIntegral7 {
2296
2401
  }
2297
2402
  });
2298
2403
  }
2299
- convertStatcom(cimModel, targetVoltages, knotenSfIDs) {
2404
+ convertStatcom(cimModel, knotenSfIDs) {
2300
2405
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2301
2406
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STATCOM)) {
2302
2407
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STATCOM, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STATCOM), knotenSfIDs));
2303
2408
  for (const i7Data of result) {
2304
2409
  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);
2410
+ const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
2305
2411
  const ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
2306
2412
  const uref = (0, parser_utils_1.isNumericI7)(i7Data.uref) ? (0, parser_utils_1.convertToNumberI7)(i7Data.uref) : undefined;
2307
2413
  const mrez = (0, parser_utils_1.isNumericI7)(i7Data.mrez) ? (0, parser_utils_1.convertToNumberI7)(i7Data.mrez) : undefined;
@@ -2319,12 +2425,34 @@ class ConverterIntegral7 {
2319
2425
  /** SV */
2320
2426
  //statVarCom.svpowerflow
2321
2427
  /** Regelung */
2322
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_rc);
2323
- const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, true);
2324
- /** EQ */
2325
- if (regulatingControl) {
2326
- statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
2428
+ const regulatingControl = (0, utils_2.createRegulatingControl)(`RC_Statcom_${i7Data.id}`, inBetrieb, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage, cimModel, statVarCom);
2429
+ this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, regulatingControl);
2430
+ regulatingControl.enabled = true;
2431
+ statVarCom.controlEnabled = true;
2432
+ const flagOS = (0, parser_utils_1.convertToBooleanI7)(i7Data.flag_os);
2433
+ /** die Regelung erfolgt auf die Oberspannungsseite des zugehörenden Transformators */
2434
+ if (flagOS && i7Data.trafo) {
2435
+ const trafoUUID = this.integralID2UUID.get(i7Data.trafo);
2436
+ const powerTransformer = cimModel.getObject(trafoUUID);
2437
+ if (powerTransformer) {
2438
+ try {
2439
+ const bvNumbers = powerTransformer.powerTransformerEnd.map(elem => { var _a, _b; return (_b = (_a = elem.baseVoltage) === null || _a === void 0 ? void 0 : _a.nominalVoltage) === null || _b === void 0 ? void 0 : _b.value; });
2440
+ const maxBv = Math.max(...bvNumbers);
2441
+ const powerTransformerEnd = powerTransformer.powerTransformerEnd[bvNumbers.indexOf(maxBv)];
2442
+ regulatingControl.terminal = powerTransformerEnd.terminal;
2443
+ powerTransformerEnd.terminal.addRegulatingControl(regulatingControl);
2444
+ regulatingControl.targetValue = maxBv;
2445
+ }
2446
+ catch (e) {
2447
+ this.logger.debug(`Statcom Zuordnung zu Trafo fehlgeschlagen.`);
2448
+ }
2449
+ }
2450
+ else {
2451
+ this.logger.debug(`Statcom RegulatingControl ${i7Data.id} konnte dem Trafo ${i7Data.trafo} nicht zugeordnet werden.`);
2452
+ }
2327
2453
  }
2454
+ /** EQ */
2455
+ statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
2328
2456
  cimModel.addStaticVarCompensator(statVarCom);
2329
2457
  this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
2330
2458
  }
@@ -2334,7 +2462,7 @@ class ConverterIntegral7 {
2334
2462
  }
2335
2463
  });
2336
2464
  }
2337
- convertSVC(cimModel, targetVoltages, knotenSfIDs) {
2465
+ convertSVC(cimModel, knotenSfIDs) {
2338
2466
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2339
2467
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SVC)) {
2340
2468
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SVC, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SVC), knotenSfIDs));
@@ -2357,7 +2485,33 @@ class ConverterIntegral7 {
2357
2485
  statVarCom.q = (0, parser_utils_1.isNumericI7)(i7Data.q0svc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q0svc) : undefined;
2358
2486
  /** SV */
2359
2487
  //statVarCom.svpowerflow
2360
- const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, false);
2488
+ /** Regelung */
2489
+ const regulatingControl = (0, utils_2.createRegulatingControl)(`RC_Statcom_${i7Data.id}`, inBetrieb, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage, cimModel, statVarCom);
2490
+ this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, regulatingControl);
2491
+ regulatingControl.enabled = true;
2492
+ statVarCom.controlEnabled = true;
2493
+ const flagOS = (0, parser_utils_1.convertToBooleanI7)(i7Data.flag_os);
2494
+ /** die Regelung erfolgt auf die Oberspannungsseite des zugehörenden Transformators */
2495
+ if (flagOS && i7Data.trafo) {
2496
+ const trafoUUID = this.integralID2UUID.get(i7Data.trafo);
2497
+ const powerTransformer = cimModel.getObject(trafoUUID);
2498
+ if (powerTransformer) {
2499
+ try {
2500
+ const bvNumbers = powerTransformer.powerTransformerEnd.map(elem => { var _a, _b; return (_b = (_a = elem.baseVoltage) === null || _a === void 0 ? void 0 : _a.nominalVoltage) === null || _b === void 0 ? void 0 : _b.value; });
2501
+ const maxBv = Math.max(...bvNumbers);
2502
+ const powerTransformerEnd = powerTransformer.powerTransformerEnd[bvNumbers.indexOf(maxBv)];
2503
+ regulatingControl.terminal = powerTransformerEnd.terminal;
2504
+ powerTransformerEnd.terminal.addRegulatingControl(regulatingControl);
2505
+ regulatingControl.targetValue = maxBv;
2506
+ }
2507
+ catch (e) {
2508
+ this.logger.debug(`Statcom Zuordnung zu Trafo fehlgeschlagen.`);
2509
+ }
2510
+ }
2511
+ else {
2512
+ this.logger.debug(`Statcom RegulatingControl ${i7Data.id} konnte dem Trafo ${i7Data.trafo} nicht zugeordnet werden.`);
2513
+ }
2514
+ }
2361
2515
  /** EQ */
2362
2516
  statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
2363
2517
  cimModel.addStaticVarCompensator(statVarCom);
@@ -2375,9 +2529,10 @@ class ConverterIntegral7 {
2375
2529
  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));
2376
2530
  for (const i7Data of result) {
2377
2531
  /** Containment DC DCConverterUnit */
2378
- 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']));
2532
+ const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCCU']));
2533
+ dcConverterUnit.referencePriority = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
2379
2534
  dcConverterUnit.governorSCDAc = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
2380
- dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.krdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.krdc) : undefined;
2535
+ dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.kr_dc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr_dc) : undefined;
2381
2536
  // Topologie
2382
2537
  /* Anfang
2383
2538
  * 3 moegliche Anschluesse
@@ -2403,46 +2558,54 @@ class ConverterIntegral7 {
2403
2558
  else {
2404
2559
  this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen ConnectivityNode.`);
2405
2560
  }
2406
- 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);
2407
- const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2408
- const pges = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pges) : undefined;
2561
+ const csConverter = new CsConverter_1.CsConverter((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_CSC']), i7Data.kurzname);
2409
2562
  /** Wenn Leitungen konvertiert werden, wird das Attribut operationMode gesetzt. */
2410
2563
  csConverter.equipmentContainer = dcConverterUnit;
2411
2564
  /** Bemessungsleistung (Gleichstromseite) in MW
2412
2565
  * im CS-Fall S = P?
2413
2566
  * Abhängig vom */
2414
- csConverter.baseS = pr;
2567
+ csConverter.baseS = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
2415
2568
  /** Bemessungsspannung (Gleichstromseite) in kV*/
2416
- csConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : ((0, parser_utils_1.isNumericI7)(i7Data.udc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.udc) : undefined);
2417
- csConverter.ratedIdc = (0, utils_2.calculateRatedIdc)(csConverter.ratedUdc, pr);
2569
+ csConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.udc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.udc) : ((0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined);
2418
2570
  /** spannungsabhängige Wirk-Verluste in kW bei Leerlauf mit Bemessungsspannung in kV*/
2419
2571
  csConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2420
2572
  csConverter.maxUdc = csConverter.ratedUdc * 1.05; // +5% * ratedUdc
2421
2573
  csConverter.minUdc = csConverter.ratedUdc * 0.95; // -5% * ratedUdc
2422
- csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2574
+ csConverter.resistiveLoss = 0;
2423
2575
  csConverter.switchingLoss = 0;
2424
2576
  /* csConverter.numberOfValves
2425
2577
  csConverter.valveU0*/
2426
2578
  /** Stromrichter */
2427
2579
  /** Zündwinkel bei Gleichrichterbetrieb (ins Drehstromnetz eingespeiste Wirkleistung < 0) - etwa 15 Grad */
2428
- csConverter.maxAlpha = 180;
2429
- csConverter.minAlpha = (0, parser_utils_1.isNumericI7)(i7Data.alpha) ? (0, parser_utils_1.convertToNumberI7)(i7Data.alpha) : 15;
2580
+ /* csConverter.maxAlpha = i7Data.alpha;
2581
+ csConverter.minAlpha = i7Data.alpha;*/
2430
2582
  /** Löschwinkel bei Wechselrichterbetrieb (ins Drehstromnetz Wirkleistung > 0) - etwa 21,5 Grad */
2431
- csConverter.maxGamma = undefined;
2432
- csConverter.minGamma = (0, parser_utils_1.isNumericI7)(i7Data.gamma) ? (0, parser_utils_1.convertToNumberI7)(i7Data.gamma) : 21.5;
2583
+ /* csConverter.maxGamma = i7Data.gamma;
2584
+ csConverter.minGamma = i7Data.gamma;*/
2433
2585
  /** SSH profile export*/
2434
- csConverter.p = pges ? pges * -1 : 0;
2586
+ csConverter.p = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? i7Data.pges * -1 : 0;
2435
2587
  csConverter.q = (0, parser_utils_1.isNumericI7)(i7Data.qges) ? i7Data.qges * -1 : 0;
2436
- this.setTopologyEnergySourceConsumerObject(cimModel, csConverter, i7Data);
2588
+ const regelungU = (0, parser_utils_1.convertToBooleanI7)(i7Data.u_geregelt);
2589
+ const regelungP = (0, parser_utils_1.convertToBooleanI7)(i7Data.p_geregelt);
2590
+ if (regelungU) {
2591
+ csConverter.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.inverter;
2592
+ }
2593
+ else if (regelungP) {
2594
+ csConverter.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
2595
+ }
2596
+ else {
2597
+ csConverter.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
2598
+ }
2437
2599
  /** Status */
2438
2600
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
2439
2601
  csConverter.normallyInService = inBetrieb;
2440
2602
  /** Topologie AC Seite*/
2441
- /**if (acConnectivityNode) {
2442
- csConverter.pccTerminal = this.reateConnection(cimModel, csConverter, acConnectivityNode, PhaseCode.ABC, true);
2443
- } else {
2444
- this.logger.debug(`CsConverter ${i7Data.id} ${csConverter.mrid} besitzt keinen AC Anschluss.`);
2445
- }**/
2603
+ if (acConnectivityNode) {
2604
+ csConverter.pccTerminal = this.createConnection(cimModel, csConverter, acConnectivityNode, PhaseCode_1.PhaseCode.ABC, true);
2605
+ }
2606
+ else {
2607
+ this.logger.debug(`CsConverter ${i7Data.id} ${csConverter.mrid} besitzt keinen AC Anschluss.`);
2608
+ }
2446
2609
  /** Topologie DC Seite*/
2447
2610
  const dcNode = new DCNode_1.DCNode((0, parser_utils_1.getUUID)(i7Data.guid_dcnodep, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCN']));
2448
2611
  dcNode.dcEquipmentContainer = dcConverterUnit;
@@ -2468,27 +2631,17 @@ class ConverterIntegral7 {
2468
2631
  }
2469
2632
  });
2470
2633
  }
2471
- convertVsConverterDC(cimModel, targetVoltages, integral7, knotenSfIDs) {
2634
+ convertVsConverterDC(cimModel, integral7, knotenSfIDs) {
2635
+ var _a, _b;
2472
2636
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2473
2637
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC)) {
2474
2638
  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));
2475
2639
  for (const i7Data of result) {
2476
2640
  /** Containment DC DCConverterUnit */
2477
- 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']));
2478
- /** target voltage local*/
2479
- const localTargetVoltage = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : undefined;
2480
- dcConverterUnit.referencePriority = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
2641
+ const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCCU']));
2642
+ dcConverterUnit.referencePriority = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
2481
2643
  dcConverterUnit.governorSCDAc = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
2482
- dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.krdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.krdc) : undefined;
2483
- if (dcConverterUnit.governorSCDAc !== undefined) {
2484
- this.logger.debug(`Object Kopfstation from Table ${integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC} has no governorSCDAc.`);
2485
- }
2486
- if (dcConverterUnit.governorSCDDc !== undefined) {
2487
- this.logger.debug(`Object Kopfstation from Table ${integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC} has no governorSCDDc.`);
2488
- }
2489
- if (dcConverterUnit.referencePriority !== undefined) {
2490
- this.logger.debug(`Object Kopfstation from Table ${integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC} has no referencePriority.`);
2491
- }
2644
+ dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.kr_dc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr_dc) : undefined;
2492
2645
  // Topologie
2493
2646
  /** Anfang
2494
2647
  * 3 moegliche Anschluesse
@@ -2523,23 +2676,44 @@ class ConverterIntegral7 {
2523
2676
  //If udc is set in Integral data model set converter.ratedUdc as i7Data.udc else take the data value for i7Data.ur (Bemessungsspannung)
2524
2677
  vsConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.udc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.udc) : ((0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined);
2525
2678
  /** spannungsabhängige Wirk-Verluste bei Leerlauf mit Bemessungsspannung in kV*/
2526
- vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
2527
- vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +5% * ratedUdc
2528
- vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -5% * ratedUdc
2529
- vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
2679
+ vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) / 1000 : undefined;
2680
+ vsConverter.maxUdc = vsConverter.ratedUdc * 1.05; // +5% * ratedUdc
2681
+ vsConverter.minUdc = vsConverter.ratedUdc * 0.95; // -5% * ratedUdc
2682
+ vsConverter.resistiveLoss = undefined;
2530
2683
  vsConverter.switchingLoss = undefined;
2531
2684
  /* csConverter.maxModulationIndex = ;
2532
2685
  csConverter.maxValveCurrent = */
2533
2686
  /** SSH export values */
2534
2687
  vsConverter.p = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? i7Data.pges * -1 : 0;
2535
2688
  vsConverter.q = (0, parser_utils_1.isNumericI7)(i7Data.qges) ? i7Data.qges * -1 : 0;
2536
- this.setTopologyEnergySourceConsumerObject(cimModel, vsConverter, i7Data, targetVoltages);
2689
+ const regelungU = (0, parser_utils_1.convertToBooleanI7)(i7Data.u_geregelt);
2690
+ const regelungP = (0, parser_utils_1.convertToBooleanI7)(i7Data.p_geregelt);
2691
+ if (regelungU) {
2692
+ vsConverter.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
2693
+ vsConverter.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
2694
+ vsConverter.targetUpcc = (_a = acConnectivityNode === null || acConnectivityNode === void 0 ? void 0 : acConnectivityNode.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getBaseVoltageAsNumber(); //Voltage
2695
+ vsConverter.targetUdc = vsConverter.ratedUdc;
2696
+ }
2697
+ else {
2698
+ vsConverter.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
2699
+ vsConverter.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
2700
+ vsConverter.targetPpcc = vsConverter.baseS * -1; //ActivePower
2701
+ vsConverter.targetUpcc = (_b = acConnectivityNode === null || acConnectivityNode === void 0 ? void 0 : acConnectivityNode.getVoltageLevel()) === null || _b === void 0 ? void 0 : _b.getBaseVoltageAsNumber();
2702
+ vsConverter.targetQpcc = 0; //ReactivePower
2703
+ }
2537
2704
  vsConverter.droop = 0; //pu
2538
2705
  vsConverter.droopCompensation = 0; //Resistance
2539
2706
  vsConverter.qShare = 0; //PerCent
2540
2707
  /** Status */
2541
2708
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
2542
2709
  vsConverter.normallyInService = inBetrieb;
2710
+ /** Topologie AC Seite*/
2711
+ if (acConnectivityNode) {
2712
+ vsConverter.pccTerminal = (0, util_create_1.createConnection)(cimModel, vsConverter, acConnectivityNode, PhaseCode_1.PhaseCode.ABC, 1);
2713
+ }
2714
+ else {
2715
+ this.logger.debug(`VsConverter ${i7Data.id} ${vsConverter.mrid} besitzt keinen AC Anschluss.`);
2716
+ }
2543
2717
  /** Topologie DC Seite mit DCGround*/
2544
2718
  const dcNode = new DCNode_1.DCNode((0, parser_utils_1.getUUID)(i7Data.guid_dcnodep, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCN']));
2545
2719
  dcNode.dcEquipmentContainer = dcConverterUnit;
@@ -2550,11 +2724,32 @@ class ConverterIntegral7 {
2550
2724
  vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2551
2725
  acDCConverterDCTerminal.dcNode = dcNode;
2552
2726
  dcNode.dcTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
2727
+ const dcGround = new DCGround_1.DCGround((0, parser_utils_1.getUUID)(i7Data.guid_dcground, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCG'], 32, true));
2728
+ const dcTerminalG = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(i7Data.guid_dcterminalg, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT']));
2729
+ const dcTerminalM1 = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm1, this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT']));
2730
+ const dcNodeG = new DCNode_1.DCNode((0, parser_utils_1.getUUID)(i7Data.guid_dcnodem1, this.objectMappingConfig.standardiseUuid));
2731
+ dcTerminalG.dCConductingEquipment = dcGround;
2732
+ dcTerminalM1.dCConductingEquipment = vsConverter;
2733
+ dcTerminalM1.polarity = DCPolarityKind_1.DCPolarityKind.middle;
2734
+ dcTerminalG.dcNode = dcNodeG;
2735
+ dcTerminalM1.dcNode = dcNodeG;
2736
+ dcGround.equipmentContainer = dcConverterUnit;
2737
+ dcNodeG.dcEquipmentContainer = dcConverterUnit;
2738
+ dcNodeG.dcTerminals.set(dcTerminalG.getUUID(), dcTerminalG);
2739
+ dcNodeG.dcTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
2740
+ vsConverter.dCTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
2741
+ /** EQ-SC */
2742
+ dcGround.r = undefined;
2743
+ dcGround.inductance = undefined;
2553
2744
  /** DCNode speichern, um später DCLines anschließen zu können*/
2554
2745
  cimModel.addDCConverterUnit(dcConverterUnit);
2555
2746
  cimModel.addVSConverter(vsConverter);
2556
2747
  cimModel.addDCNode(dcNode);
2748
+ cimModel.addDCNode(dcNodeG);
2557
2749
  cimModel.addACDCConverterDCTerminal(acDCConverterDCTerminal);
2750
+ cimModel.addDCTerminal(dcTerminalG);
2751
+ cimModel.addDCGround(dcGround);
2752
+ cimModel.addACDCConverterDCTerminal(dcTerminalM1);
2558
2753
  integral7.integralHgueKopf.set(i7Data.id, i7Data);
2559
2754
  this.checkAnschlussIDs(i7Data.id, integral7);
2560
2755
  this.addIdMapping(i7Data.id, vsConverter.mrid, integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC);
@@ -2562,7 +2757,7 @@ class ConverterIntegral7 {
2562
2757
  }
2563
2758
  });
2564
2759
  }
2565
- convertEinspeisungen2EnergySource(cimModel, targetVoltages, result, energySourceTypeMappingConfig) {
2760
+ convertEinspeisungen2EnergySource(cimModel, result, energySourceTypeMappingConfig) {
2566
2761
  var _a, _b, _c, _d;
2567
2762
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2568
2763
  for (const i7Data of result) {
@@ -2607,15 +2802,37 @@ class ConverterIntegral7 {
2607
2802
  }
2608
2803
  });
2609
2804
  }
2610
- convertEnergySourceToExternalNetworkInjection(cimModel, targetVoltages, i7Data, prio, inBetrieb) {
2805
+ convertEnergySourceToExternalNetworkInjection(cimModel, i7Data, prio, inBetrieb) {
2611
2806
  const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
2612
2807
  const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection(rdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', rdfid.substring(0, 8), '_EI'], 32, true), i7Data.kurzname);
2613
2808
  externalNetworkInjection.referencePriority = prio;
2614
2809
  const usoll = i7Data.usoll;
2810
+ // RegulatingControl
2811
+ let regulatingControl = undefined;
2812
+ // TODO targetDeadband: ab welcher spannung soll reguliert werden.
2813
+ switch (i7Data.spannungsgeregelt) {
2814
+ // TODO Welche Modi sind möglich?
2815
+ case 1: {
2816
+ const cimrdfid = (0, parser_utils_1.getUUID)(externalNetworkInjection.getUUID(), this.objectMappingConfig.standardiseUuid);
2817
+ regulatingControl = new RegulatingControl_1.RegulatingControl(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([cimrdfid.substring(0, 8), '_RC_ENI'], 32, true));
2818
+ regulatingControl.targetValue = usoll;
2819
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
2820
+ regulatingControl.discrete = false;
2821
+ regulatingControl.enabled = true;
2822
+ externalNetworkInjection.controlEnabled = true;
2823
+ regulatingControl.addRegulatingCondEq(externalNetworkInjection);
2824
+ externalNetworkInjection.regulatingControl = regulatingControl;
2825
+ cimModel.addRegulatingControl(regulatingControl);
2826
+ break;
2827
+ }
2828
+ default: {
2829
+ externalNetworkInjection.controlEnabled = false;
2830
+ }
2831
+ }
2615
2832
  const powerData = (0, utils_2.getActiveReactivePower)(i7Data);
2616
2833
  externalNetworkInjection.p = powerData[0];
2617
2834
  externalNetworkInjection.q = powerData[1];
2618
- this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
2835
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, regulatingControl);
2619
2836
  cimModel.addExternalNetworkInjection(externalNetworkInjection);
2620
2837
  this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
2621
2838
  }
@@ -2641,19 +2858,20 @@ class ConverterIntegral7 {
2641
2858
  this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.EINSPEISUNG);
2642
2859
  }
2643
2860
  catch (err) {
2644
- this.logger.error(`error --- convertEinspeisungen2EquivalentInjection ${i7Data.id} ${err}`);
2861
+ this.logger.error(`Err convertEinspeisungen2EquivalentInjection ${i7Data.id} ${err}`);
2645
2862
  }
2646
2863
  }
2647
2864
  });
2648
2865
  }
2649
- convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result) {
2650
- var _a;
2866
+ convertEinspeisungen2ExternalNetworkInjection(cimModel, result) {
2651
2867
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2652
2868
  for (const i7Data of result) {
2653
2869
  try {
2654
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
2655
- const externalNetworkInjection = new INTEGRALExternalNetworkInjection_1.INTEGRALExternalNetworkInjection(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_ENI'], 32, true), i7Data.kurzname);
2656
- externalNetworkInjection.nameprimaertyp = i7Data.nameprimaertyp !== undefined ? i7Data.nameprimaertyp : undefined;
2870
+ const cn = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
2871
+ const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
2872
+ const externalNetworkInjection = new INTEGRALExternalNetworkInjection_1.INTEGRALExternalNetworkInjection(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_ENI'], 32, true), i7Data.kurzname);
2873
+ // const un = cn.getVoltageLevel().getBaseVoltageAsNumber();
2874
+ externalNetworkInjection.nameprimaertyp = i7Data.nameprimaertyp;
2657
2875
  let mf = undefined;
2658
2876
  mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
2659
2877
  if (mf) {
@@ -2672,8 +2890,15 @@ class ConverterIntegral7 {
2672
2890
  externalNetworkInjection.minP = minP;
2673
2891
  const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
2674
2892
  externalNetworkInjection.minQ = minQ;
2675
- /** Convert EQ-profile dataset. */
2676
- this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
2893
+ /** bei nicht modellierter Einspeisepriorität,
2894
+ * erfolgt keine Wirkleistungsregelung */
2895
+ if (this.objectMappingConfig.Target === 'Westnetz' && !einspeisePrioritaet) {
2896
+ externalNetworkInjection.maxP = 0;
2897
+ externalNetworkInjection.minP = 0;
2898
+ }
2899
+ const usoll = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : undefined;
2900
+ const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
2901
+ //TODO: get data from database
2677
2902
  /**Convert short circuit constants */
2678
2903
  const r0X0 = (0, parser_utils_1.isNumericI7)(i7Data.x0_r0) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x0_r0) : undefined;
2679
2904
  const r1X1 = (0, parser_utils_1.isNumericI7)(i7Data.x1_r1) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x1_r1) : undefined;
@@ -2682,7 +2907,7 @@ class ConverterIntegral7 {
2682
2907
  externalNetworkInjection.maxR0ToX0Ratio = maxR0X0Ratio;
2683
2908
  const maxR1X1Ratio = (0, parser_utils_1.isNumericI7)(i7Data.x1_r1_max) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x1_r1_max) : r1X1;
2684
2909
  externalNetworkInjection.maxR1ToX1Ratio = maxR1X1Ratio;
2685
- const maxZ0Z1Ratio = z0Z1;
2910
+ const maxZ0Z1Ratio = (0, parser_utils_1.isNumericI7)(i7Data.z0_z1_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.z0_z1_max) : z0Z1;
2686
2911
  externalNetworkInjection.maxZ0ToZ1Ratio = maxZ0Z1Ratio;
2687
2912
  const minR0X0Ratio = (0, parser_utils_1.isNumericI7)(i7Data.x0_r0_min) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x0_r0_min) : r0X0;
2688
2913
  externalNetworkInjection.minR0ToX0Ratio = minR0X0Ratio;
@@ -2697,22 +2922,41 @@ class ConverterIntegral7 {
2697
2922
  externalNetworkInjection.minInitialSymShCCurrent = minIkSecond;
2698
2923
  const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(skMax) / Math.sqrt(3) * skMax : undefined;
2699
2924
  externalNetworkInjection.maxInitialSymShCCurrent = maxIkSecond;
2700
- const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
2925
+ // RegulatingControl
2926
+ let regulatingControl = undefined;
2927
+ // TODO targetDeadband: ab welcher spannung soll reguliert werden.
2928
+ switch (i7Data.spannungsgeregelt) {
2929
+ // TODO Welche Modi sind möglich?
2930
+ case 1: {
2931
+ const cimrdfid = (0, parser_utils_1.getUUID)(externalNetworkInjection.getUUID(), this.objectMappingConfig.standardiseUuid);
2932
+ regulatingControl = new RegulatingControl_1.RegulatingControl(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([cimrdfid.substring(0, 8), '_RC_ENI'], 32, true));
2933
+ regulatingControl.targetValue = usoll;
2934
+ regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
2935
+ regulatingControl.discrete = false;
2936
+ regulatingControl.enabled = true;
2937
+ externalNetworkInjection.controlEnabled = true;
2938
+ regulatingControl.addRegulatingCondEq(externalNetworkInjection);
2939
+ externalNetworkInjection.regulatingControl = regulatingControl;
2940
+ cimModel.addRegulatingControl(regulatingControl);
2941
+ break;
2942
+ }
2943
+ default: {
2944
+ externalNetworkInjection.controlEnabled = false;
2945
+ }
2946
+ }
2947
+ this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, regulatingControl);
2948
+ // ToDo PSRType
2701
2949
  /** Convert SSH-profile dataset. */
2702
2950
  /**
2703
- * @description Set einspprio as referencePriority. PowerFactory sets external network injections with referencePriority == 1, to slack control mode. In regular case referencePriority for externalnetworkextensions is set to value '0'.
2951
+ * @description Set einspprio as referencePriority. PowerFactory sets external network injections with referencePriority to has slack control mode. In regular case referencePriority for externalnetworkextensions is set to value '0'.
2704
2952
  * einspprio having no effect in loadflow calculation if voltage control does not exists.
2705
2953
  * */
2706
- let prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
2707
- if (((_a = externalNetworkInjection.regulatingControl) === null || _a === void 0 ? void 0 : _a.mode) === RegulatingControlModeKind_1.RegulatingControlModeKind.voltage) {
2708
- if (prio !== undefined && prio > 0) {
2709
- externalNetworkInjection.referencePriority = prio + 1; //TODO: SLACK is a injection with maximum prio in the network section and active voltage control.
2710
- }
2711
- else if (prio !== undefined && prio === 0) {
2712
- externalNetworkInjection.referencePriority = prio;
2954
+ if ((regulatingControl === null || regulatingControl === void 0 ? void 0 : regulatingControl.mode) === RegulatingControlModeKind_1.RegulatingControlModeKind.voltage) {
2955
+ if (einspeisePrioritaet && einspeisePrioritaet > 0) {
2956
+ externalNetworkInjection.referencePriority = einspeisePrioritaet;
2713
2957
  }
2714
2958
  else {
2715
- externalNetworkInjection.referencePriority = undefined;
2959
+ einspeisePrioritaet = undefined;
2716
2960
  }
2717
2961
  }
2718
2962
  const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
@@ -2720,352 +2964,43 @@ class ConverterIntegral7 {
2720
2964
  const q = powerData[1];
2721
2965
  externalNetworkInjection.setActivePower(p * -1); //convert to load sign system
2722
2966
  externalNetworkInjection.setReactivePower(q * -1); //convert to load sign system
2723
- // AMPI7 profile
2724
- const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? ((0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) !== 0 ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : 1) : undefined;
2725
- externalNetworkInjection.cos_phi = cosPhi;
2726
- externalNetworkInjection.p_mf = (mf && powerData[2]) ? powerData[2] * -1 : undefined;
2727
- externalNetworkInjection.q_mf = (mf && powerData[3]) ? powerData[3] * -1 : undefined;
2728
- externalNetworkInjection.normallyInService = inBetrieb;
2967
+ externalNetworkInjection.p_mf = powerData[2] ? powerData[2] * -1 : undefined;
2968
+ externalNetworkInjection.q_mf = powerData[3] ? powerData[3] * -1 : undefined;
2729
2969
  cimModel.addExternalNetworkInjection(externalNetworkInjection);
2730
2970
  this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
2731
2971
  }
2732
2972
  catch (err) {
2733
- this.logger.error(`error --- convertEinspeisungen2ExternalNetworkInjection ${i7Data.id} ${err}`);
2973
+ this.logger.error(`Err convertEinspeisungen2ExternalNetworkInjection ${i7Data.id} ${err}`);
2734
2974
  }
2735
2975
  }
2736
2976
  });
2737
2977
  }
2738
- setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data, targetVoltages, generatingUnit, isStatcom) {
2739
- var _a, _b, _c, _d;
2978
+ setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data, regulatingControl, generatingUnit, targetVoltages) {
2979
+ var _a, _b, _c;
2740
2980
  const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
2741
2981
  condEquip.normallyInService = inBetrieb;
2742
2982
  const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
2743
- let usoll = undefined;
2744
- let rControl = undefined;
2745
- let i7DataEinsp = undefined;
2746
- let i7DataSVC = undefined;
2747
- let i7DataKomp = undefined;
2748
- let i7DataRQ = undefined;
2749
- let i7DataHgue = undefined;
2750
- let suffix = undefined;
2751
- let uband = undefined;
2752
- let tCn = undefined; //controlled node of this device
2753
- let spannungsregelungLokal = undefined;
2754
- let spannungsregelungRemote = undefined;
2755
- let knotenSpgGeregelt = undefined;
2756
- let isRegulatingControl = undefined;
2757
- let hasGeneratingUnit = undefined;
2758
- if (condEquip instanceof RotatingMachine_1.RotatingMachine || condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection || condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
2759
- i7DataEinsp = i7Data;
2760
- i7DataRQ = i7Data;
2761
- }
2762
- if (condEquip instanceof SynchronousMachine_1.SynchronousMachine) {
2763
- suffix = '_SM';
2764
- if (generatingUnit !== undefined) {
2765
- hasGeneratingUnit = true;
2766
- }
2767
- else {
2768
- hasGeneratingUnit = false;
2769
- }
2770
- }
2771
- else if (condEquip instanceof AsynchronousMachine_1.AsynchronousMachine) {
2772
- suffix = '_ASM';
2773
- }
2774
- else if (condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection) {
2775
- suffix = '_ENI';
2776
- }
2777
- else if (condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
2778
- suffix = '_EI';
2779
- }
2780
- else if (condEquip instanceof StaticVarCompensator_1.StaticVarCompensator) {
2781
- i7DataSVC = i7Data;
2782
- i7DataRQ = i7Data;
2783
- suffix = '_SVC';
2784
- }
2785
- else if (condEquip instanceof LinearShuntCompensator_1.LinearShuntCompensator) {
2786
- i7DataKomp = i7Data;
2787
- i7DataRQ = i7Data;
2788
- suffix = '_LSC';
2789
- }
2790
- else if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
2791
- i7DataHgue = i7Data;
2792
- suffix = '_ACDCC';
2793
- }
2794
- // RegulatingControl: Test if this is a regulating control.
2795
- if (i7DataEinsp) {
2796
- spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7DataEinsp.spannungsgeregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataEinsp.spannungsgeregelt) : false;
2797
- spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7DataEinsp.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataEinsp.rpv_geregelt) : false;
2798
- knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7DataEinsp.knotenspgreg));
2799
- isRegulatingControl = spannungsregelungLokal || spannungsregelungRemote;
2800
- }
2801
- else if (i7DataKomp) {
2802
- spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7DataKomp.flag_lf) ? (0, parser_utils_1.convertToBooleanI7)(i7DataKomp.flag_lf) : false;
2803
- spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7DataKomp.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataKomp.rpv_geregelt) : false;
2804
- knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7DataKomp.knotenspgreg));
2805
- isRegulatingControl = spannungsregelungLokal || spannungsregelungRemote;
2806
- }
2807
- else if (i7DataHgue) {
2808
- spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7DataHgue.spannungsgeregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.spannungsgeregelt) : false;
2809
- spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7DataHgue.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.rpv_geregelt) : false;
2810
- knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7DataHgue.knotenspgreg));
2811
- isRegulatingControl = false;
2812
- }
2813
- else if (i7DataSVC) {
2814
- isRegulatingControl = true;
2815
- }
2816
- else {
2817
- isRegulatingControl = false;
2818
- }
2983
+ let controlledTerm = undefined;
2819
2984
  if (connectivityNode) {
2820
- const cpTerminal = this.createConnection(cimModel, condEquip, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
2821
- //create regulating control
2822
- if (isRegulatingControl && (i7DataEinsp || i7DataKomp)) {
2823
- let cterminal = undefined; //connection point terminal of this device
2824
- let tVMax = undefined; //maximum target voltage
2825
- let tVMin = undefined; //minimum target voltage
2826
- const regCondEquip = condEquip;
2827
- if (spannungsregelungLokal || spannungsregelungRemote) {
2828
- //get rated voltage of controlled node.
2829
- if (knotenSpgGeregelt && spannungsregelungRemote) {
2830
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
2831
- if (cterminal === undefined) {
2832
- let stop = true;
2833
- }
2834
- if (cterminal) {
2835
- tCn = cterminal.getConnectivityNode();
2836
- if (tCn) {
2837
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
2838
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
2839
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
2840
- }
2841
- else {
2842
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
2843
- }
2844
- }
2845
- else {
2846
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
2847
- }
2848
- }
2849
- if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
2850
- switch (knotenSpgGeregelt) {
2851
- case undefined: {
2852
- cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2853
- if (cterminal === undefined) {
2854
- cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
2855
- }
2856
- break;
2857
- }
2858
- default: {
2859
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
2860
- }
2861
- }
2862
- if (cterminal) {
2863
- tCn = cterminal.getConnectivityNode();
2864
- if (tCn) {
2865
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
2866
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
2867
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
2868
- }
2869
- else {
2870
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
2871
- }
2872
- }
2873
- }
2874
- uband = (0, parser_utils_1.isNumericI7)(tVMax) && (0, parser_utils_1.isNumericI7)(tVMin) ? (0, parser_utils_1.convertToNumberI7)(tVMax) - (0, parser_utils_1.convertToNumberI7)(tVMin) : undefined;
2875
- if (uband === undefined) {
2876
- if (tCn) {
2877
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
2878
- }
2879
- }
2880
- }
2881
- //Create and define regulating control for voltage control
2882
- if (cterminal !== undefined) {
2883
- const uuid = (0, parser_utils_1.getUUID)(i7DataRQ.guid_rc);
2884
- rControl = (0, utils_2.createRegulatingControl)((0, parser_utils_1.getUUID)(i7DataRQ.guid_rc), (0, util_create_1.createNotation)([regCondEquip.getUUID().substring(0, 8), suffix]), true, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
2885
- if (i7DataEinsp) {
2886
- rControl.discrete = false; //default for ExternalNetworkInjection is false. s. CGMES Doku
2887
- }
2888
- else {
2889
- rControl.discrete = true; //default for LinearShuntCompensator is true because of stepping mode.
2890
- }
2891
- rControl.targetDeadband = (0, parser_utils_1.isNumericI7)(uband) ? uband : undefined; //zulässiges Spannungsband
2892
- /** Spannung in kilo*/
2893
- rControl.targetValue = usoll;
2894
- const guidSuffix = (_a = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8);
2895
- rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
2896
- rControl.terminalUUID = cterminal.getUUID();
2897
- rControl.addRegulatingCondEq(regCondEquip);
2898
- regCondEquip.regulatingControlUUID = rControl.mrid;
2899
- regCondEquip.controlEnabled = rControl === undefined ? false : rControl.enabled;
2900
- regCondEquip.regulatingControl = rControl;
2901
- cimModel.addRegulatingControl(rControl);
2902
- const term = cimModel.terminals.get(rControl.terminalUUID);
2903
- if (term) {
2904
- term.addRegulatingControl(rControl);
2905
- }
2906
- }
2907
- else {
2908
- const stop = true;
2909
- }
2910
- }
2911
- else if (isRegulatingControl && i7DataSVC) {
2912
- /** Regelung */
2913
- const regCondEquip = condEquip;
2914
- const cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2915
- let tVMax = undefined;
2916
- let tVMin = undefined;
2917
- if (cterminal) {
2918
- tCn = cterminal.getConnectivityNode();
2919
- if (tCn) {
2920
- tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
2921
- tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
2922
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
2923
- }
2924
- else {
2925
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
2926
- }
2927
- }
2928
- uband = (0, parser_utils_1.isNumericI7)(tVMax) && (0, parser_utils_1.isNumericI7)(tVMin) ? (0, parser_utils_1.convertToNumberI7)(tVMax) - (0, parser_utils_1.convertToNumberI7)(tVMin) : undefined;
2929
- if (uband === undefined) {
2930
- if (tCn) {
2931
- uband = tCn.getBaseVoltageAsNumber() * 0.1;
2932
- }
2933
- }
2934
- if (cterminal !== undefined) {
2935
- const uuid = (0, parser_utils_1.getUUID)(i7DataSVC.guid_rc);
2936
- rControl = (0, utils_2.createRegulatingControl)(uuid, (0, util_create_1.createNotation)([condEquip.getUUID().substring(0, 8), suffix]), inBetrieb, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage);
2937
- rControl.enabled = true;
2938
- if (isStatcom) {
2939
- rControl.discrete = true;
2940
- }
2941
- else {
2942
- rControl.discrete = false;
2943
- }
2944
- condEquip.controlEnabled = true;
2945
- const flagOS = (0, parser_utils_1.convertToBooleanI7)(i7DataSVC.flag_os);
2946
- /** die Regelung erfolgt auf die Oberspannungsseite des zugehörenden Transformators */
2947
- if (flagOS && i7DataSVC.trafo) {
2948
- const trafoUUID = this.integralID2UUID.get(i7DataSVC.trafo);
2949
- const powerTransformer = cimModel.getObject(trafoUUID);
2950
- if (powerTransformer) {
2951
- try {
2952
- for (const end of powerTransformer.powerTransformerEnd) {
2953
- if (end.phaseTapChanger) {
2954
- end.phaseTapChanger.controlEnabled = false;
2955
- }
2956
- if (end.ratioTapChanger) {
2957
- end.ratioTapChanger.controlEnabled = false;
2958
- }
2959
- }
2960
- }
2961
- catch (e) {
2962
- this.logger.debug(`debug --- ${i7DataSVC.constructor.name} Zuordnung zu Trafo fehlgeschlagen.`);
2963
- }
2985
+ const terminal = this.createConnection(cimModel, condEquip, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
2986
+ controlledTerm = terminal;
2987
+ if (regulatingControl) {
2988
+ if (regulatingControl.terminalUUID === undefined) {
2989
+ if (!(controlledTerm.conductingEquipment instanceof BusbarSection_1.BusbarSection)) {
2990
+ controlledTerm = (0, util_graph2tree_1.getControlledNode)(connectivityNode, undefined);
2991
+ }
2992
+ regulatingControl.terminalUUID = terminal.getUUID();
2993
+ regulatingControl.name = (0, util_create_1.createNotation)([regulatingControl.name, '_', (_a = connectivityNode.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8), '_RC'], 32, true);
2994
+ if (regulatingControl.targetValue === undefined) {
2995
+ const tV = targetVoltages === null || targetVoltages === void 0 ? void 0 : targetVoltages.get(this.UUID2Integral7ID.get(connectivityNode.getUUID()).find(elem => elem));
2996
+ if (tV) {
2997
+ regulatingControl.targetValue = tV['usoll'];
2964
2998
  }
2965
2999
  }
2966
- rControl.targetValue = usoll;
2967
- rControl.targetDeadband = uband;
2968
- rControl.terminal = cterminal;
2969
- const guidSuffix = (_b = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _b === void 0 ? void 0 : _b.getUUID().substring(0, 8);
2970
- rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
2971
- regCondEquip.regulatingControlUUID = rControl.mrid;
2972
- regCondEquip.controlEnabled = rControl === undefined ? false : rControl.enabled;
2973
- regCondEquip.regulatingControl = rControl;
2974
- cterminal.addRegulatingControl(rControl);
2975
- cimModel.addRegulatingControl(rControl);
2976
- }
2977
- else {
2978
- const stop = true;
2979
3000
  }
2980
3001
  }
2981
- else if (i7DataHgue) {
2982
- let cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
2983
- const regelungU = (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.u_geregelt);
2984
- const regelungP = (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.p_geregelt);
2985
- condEquip.pccTerminal = cpTerminal;
2986
- if (condEquip instanceof CsConverter_1.CsConverter) {
2987
- if (regelungU) {
2988
- condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.inverter;
2989
- condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.dcVoltage;
2990
- condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
2991
- }
2992
- else if (regelungP) {
2993
- condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
2994
- condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.activePower;
2995
- 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);
2996
- }
2997
- else {
2998
- condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
2999
- condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.activePower;
3000
- 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);
3001
- }
3002
- }
3003
- else if (condEquip instanceof VsConverter_1.VsConverter) {
3004
- usoll = (0, parser_utils_1.isNumericI7)(i7DataHgue.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.usoll) : undefined;
3005
- if (regelungU) {
3006
- condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
3007
- condEquip.targetUdc = condEquip.ratedUdc;
3008
- }
3009
- else if (regelungP) {
3010
- condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
3011
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
3012
- condEquip.targetPpcc = condEquip.baseS * -1; //ActivePower
3013
- condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
3014
- }
3015
- if (spannungsregelungLokal || spannungsregelungRemote) {
3016
- //get rated voltage of controlled node.
3017
- if (knotenSpgGeregelt && spannungsregelungRemote) {
3018
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3019
- if (cterminal === undefined) {
3020
- let stop = true;
3021
- }
3022
- if (cterminal) {
3023
- tCn = cterminal.getConnectivityNode();
3024
- if (tCn) {
3025
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3026
- }
3027
- else {
3028
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3029
- }
3030
- }
3031
- else {
3032
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
3033
- }
3034
- }
3035
- else if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal && usoll === undefined) {
3036
- switch (knotenSpgGeregelt) {
3037
- case undefined: {
3038
- if (cterminal === undefined) {
3039
- cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
3040
- }
3041
- break;
3042
- }
3043
- default: {
3044
- cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
3045
- }
3046
- }
3047
- if (cterminal) {
3048
- tCn = cterminal.getConnectivityNode();
3049
- if (tCn) {
3050
- usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
3051
- }
3052
- }
3053
- }
3054
- condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
3055
- if (usoll !== undefined) {
3056
- condEquip.targetUpcc = usoll;
3057
- }
3058
- else {
3059
- this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Sollspannung konnte nicht ermittelt werden.`);
3060
- }
3061
- }
3062
- }
3063
- }
3064
- let equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, connectivityNode.connectivityNodeContainer);
3002
+ const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, connectivityNode.connectivityNodeContainer);
3065
3003
  if (equipmentContainer) {
3066
- if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
3067
- equipmentContainer = condEquip.equipmentContainer;
3068
- }
3069
3004
  condEquip.equipmentContainer = equipmentContainer;
3070
3005
  equipmentContainer.addEquipment(condEquip);
3071
3006
  //TODO: Überarbeitung notwendig, da hier der Präfix nicht eindeutig für Einspeisungen ermittelt werden kann.
@@ -3086,36 +3021,27 @@ class ConverterIntegral7 {
3086
3021
  i7Schluessel = (0, utils_2.getDescription)(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
3087
3022
  integral_prefix_1.EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
3088
3023
  }
3089
- else if (condEquip instanceof VsConverter_1.VsConverter) {
3090
- i7Schluessel = (0, utils_2.getDescription)(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
3091
- integral_prefix_1.HGUEKOPFVSC_PRAEFIX + i7Data.bezeichner;
3092
- }
3093
- else if (condEquip instanceof CsConverter_1.CsConverter) {
3094
- i7Schluessel = (0, utils_2.getDescription)(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
3095
- integral_prefix_1.HGUEKOPFKLASSISCH_PRAEFIX + i7Data.bezeichner;
3096
- }
3097
3024
  condEquip.description = i7Schluessel;
3098
- if (hasGeneratingUnit) {
3025
+ if (generatingUnit) {
3099
3026
  const substation = this.determineEquipmentContainer('Substation', cimModel, equipmentContainer);
3100
3027
  generatingUnit.equipmentContainer = substation;
3101
3028
  }
3102
3029
  }
3103
3030
  else {
3104
- this.logger.error(`error --- ${(_c = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _c === void 0 ? void 0 : _c.name} ${i7Data.id} besitzt keinen EquipmentContainer.`);
3031
+ this.logger.error(`${(_b = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _b === void 0 ? void 0 : _b.name} ${i7Data.id} besitzt keinen EquipmentContainer.`);
3105
3032
  }
3106
3033
  }
3107
3034
  else {
3108
- this.logger.error(`error --- ${(_d = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _d === void 0 ? void 0 : _d.name} ${i7Data.id} besitzt keinen ConnectivityNode.`);
3035
+ this.logger.error(`${(_c = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _c === void 0 ? void 0 : _c.name} ${i7Data.id} besitzt keinen ConnectivityNode.`);
3109
3036
  }
3110
- return rControl;
3111
3037
  }
3112
3038
  convertQuerkupplungen(cimModel, integral7, schaltanlagenAbschnittIDs) {
3113
3039
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3114
3040
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.QUERKUPPLUNG)) {
3115
3041
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.QUERKUPPLUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.QUERKUPPLUNG), schaltanlagenAbschnittIDs));
3116
3042
  for (const i7Data of result) {
3117
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3118
- const bay = new AMPRIONBay_1.AMPRIONBay(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_B']), 'Querkupplung');
3043
+ const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3044
+ const bay = new AMPRIONBay_1.AMPRIONBay(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_B']), 'Querkupplung');
3119
3045
  bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
3120
3046
  bay.locationID = i7Data.ips_folder_id;
3121
3047
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
@@ -3123,12 +3049,12 @@ class ConverterIntegral7 {
3123
3049
  bay.voltageLevel = voltageLevel;
3124
3050
  voltageLevel.addBay(bay);
3125
3051
  const i7Schluessel = voltageLevel.description +
3126
- integral_prefix_1.QUERKUPPLUNG_PRAEFIX +
3052
+ '/QK-' +
3127
3053
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
3128
3054
  bay.description = i7Schluessel;
3129
3055
  }
3130
3056
  else {
3131
- this.logger.debug(`debug --- Querkupplung ${i7Data.id} besitzt keine Anlage.`);
3057
+ this.logger.debug(`Querkupplung ${i7Data.id} besitzt keine Anlage.`);
3132
3058
  }
3133
3059
  integral7.querkupplungIDs.push(i7Data.id);
3134
3060
  cimModel.addBay(bay);
@@ -3136,7 +3062,7 @@ class ConverterIntegral7 {
3136
3062
  }
3137
3063
  }
3138
3064
  else {
3139
- this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
3065
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
3140
3066
  }
3141
3067
  });
3142
3068
  }
@@ -3145,8 +3071,8 @@ class ConverterIntegral7 {
3145
3071
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
3146
3072
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.LAENGSKUPPLUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG), schaltanlagenIDs));
3147
3073
  for (const i7Data of result) {
3148
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3149
- const bay = new AMPRIONBay_1.AMPRIONBay(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_B']), i7Data.kurzname, 'Laengskupplung');
3074
+ const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3075
+ const bay = new AMPRIONBay_1.AMPRIONBay(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_B']), i7Data.kurzname, 'Laengskupplung');
3150
3076
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
3151
3077
  bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
3152
3078
  bay.locationID = i7Data.ips_folder_id;
@@ -3159,7 +3085,7 @@ class ConverterIntegral7 {
3159
3085
  bay.description = i7Schluessel;
3160
3086
  }
3161
3087
  else {
3162
- this.logger.debug(`debug --- Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
3088
+ this.logger.debug(`Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
3163
3089
  }
3164
3090
  const lKupplungImpl = new Laengskupplung_1.LaengskupplungImpl(i7Data);
3165
3091
  integral7.integralLaengskupplungen.set(i7Data.id, lKupplungImpl);
@@ -3169,7 +3095,7 @@ class ConverterIntegral7 {
3169
3095
  }
3170
3096
  }
3171
3097
  else {
3172
- this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
3098
+ this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
3173
3099
  }
3174
3100
  });
3175
3101
  }
@@ -3347,8 +3273,11 @@ class ConverterIntegral7 {
3347
3273
  /** Spannungsebene */
3348
3274
  const baseVoltages = (0, utils_2.getTerminalUn)(cimModel, bdf, seriesCompensator);
3349
3275
  seriesCompensator.baseVoltage = baseVoltages[0] ? baseVoltages[0] : baseVoltages[1];
3276
+ if (seriesCompensator.baseVoltage === undefined) {
3277
+ let stop = true;
3278
+ }
3350
3279
  /** EQ */
3351
- const ur = seriesCompensator.baseVoltage.nominalVoltage.value; //getU(i7Data.ur);
3280
+ const ur = (0, utils_2.getU)(i7Data.ur);
3352
3281
  const ir = (0, parser_utils_1.isNumericI7)(i7Data.ir) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ir) : undefined;
3353
3282
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3354
3283
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
@@ -3361,7 +3290,7 @@ class ConverterIntegral7 {
3361
3290
  /** CurrentLimit */
3362
3291
  const terminal = startTerminal;
3363
3292
  if (terminal) {
3364
- this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
3293
+ this.setConductingEquipmentCurrentLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir);
3365
3294
  }
3366
3295
  else {
3367
3296
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
@@ -3432,9 +3361,9 @@ class ConverterIntegral7 {
3432
3361
  bdf.push(this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.eknoten)));
3433
3362
  /** Spannungsebene */
3434
3363
  const baseVoltages = (0, utils_2.getTerminalUn)(cimModel, bdf, seriesCompensator);
3435
- seriesCompensator.baseVoltage = baseVoltages[0] ? baseVoltages[0] : baseVoltages[1];
3364
+ seriesCompensator.baseVoltage = baseVoltages[0];
3436
3365
  /** EQ */
3437
- const ur = seriesCompensator.baseVoltage.nominalVoltage.value; //getU(i7Data.ur);
3366
+ const ur = (0, utils_2.getU)(i7Data.ur);
3438
3367
  const ir = (0, parser_utils_1.isNumericI7)(i7Data.ir) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ir) : undefined;
3439
3368
  const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
3440
3369
  const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
@@ -3447,7 +3376,7 @@ class ConverterIntegral7 {
3447
3376
  /** CurrentLimit */
3448
3377
  const terminal = startTerminal;
3449
3378
  if (terminal) {
3450
- this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
3379
+ this.setConductingEquipmentCurrentLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir);
3451
3380
  }
3452
3381
  else {
3453
3382
  this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
@@ -3518,7 +3447,6 @@ class ConverterIntegral7 {
3518
3447
  }
3519
3448
  // Verbindung herstellen
3520
3449
  const terminal = this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3521
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3522
3450
  integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
3523
3451
  integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
3524
3452
  integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
@@ -3571,7 +3499,6 @@ class ConverterIntegral7 {
3571
3499
  // Verbindung herstellen
3572
3500
  if (connectivityNode) {
3573
3501
  const terminal = this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
3574
- cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
3575
3502
  }
3576
3503
  }
3577
3504
  }
@@ -3630,8 +3557,8 @@ class ConverterIntegral7 {
3630
3557
  if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
3631
3558
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.LAENGSKUPPLUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG), schaltanlagenIDs));
3632
3559
  for (const i7Data of result) {
3633
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3634
- const bay = new AMPRIONBay_1.AMPRIONBay(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_B']), i7Data.kurzname, 'Laengskupplung');
3560
+ const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
3561
+ const bay = new AMPRIONBay_1.AMPRIONBay(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_B']), i7Data.kurzname, 'Laengskupplung');
3635
3562
  const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
3636
3563
  bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
3637
3564
  bay.locationID = i7Data.ips_folder_id;
@@ -3697,7 +3624,6 @@ class ConverterIntegral7 {
3697
3624
  object.x0 = +data.x0; // new ReactancePerLength(data.x1, UnitMultiplier.none, UnitSymbol.ohm);
3698
3625
  object.c0 = +data.c0; // new CapacitancePerLength(data.c1, UnitMultiplier.micro, UnitSymbol.F);
3699
3626
  object.ratedCurrent = +data.ir;
3700
- object.limitingCurrent = +data.igrenz;
3701
3627
  }
3702
3628
  convertLeitungen(frame, integral7, defaultValuesConfig) {
3703
3629
  var _a, _b, _c;
@@ -3706,6 +3632,9 @@ class ConverterIntegral7 {
3706
3632
  const cimModel = frame.cimModel;
3707
3633
  const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.LEITUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.LEITUNG), integral7.leitungsAnschlussIDs));
3708
3634
  const leitungIDs = result.map(elem => elem.id);
3635
+ const lt1 = leitungIDs.find(it => it === 105031594);
3636
+ /* const lt2 = leitungIDs.find(it => it === 105031293);
3637
+ const lt2 = leitungIDs.find(it => it === 105031293);*/
3709
3638
  const cableAvailable = this.isTableAvailable(integral_sql_1.Integral7TableNames.KABEL);
3710
3639
  const overheadAvailable = this.isTableAvailable(integral_sql_1.Integral7TableNames.FREILEITUNG);
3711
3640
  let type = integral_sql_1.I7Objects.STROMKREISABSCHNITT;
@@ -3758,8 +3687,8 @@ class ConverterIntegral7 {
3758
3687
  (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner) +
3759
3688
  '-' +
3760
3689
  (0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
3761
- const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3762
- 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);
3690
+ const cimrdfid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
3691
+ const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(cimrdfid, (0, util_create_1.createNotation)([name, '_' + stk.pos.toString(), '_' + cimrdfid.substring(0, 8), '_ACLS'], 32, true), i7Data.stkabname, i7Schluessel);
3763
3692
  if (stk.baujahr) {
3764
3693
  const wire = new EVWireObject_1.EVWireObject(common_utils_1.CommonUtils.generateUUID(), stk.name);
3765
3694
  wire.type = 'Stromkreisabschnitt';
@@ -3786,9 +3715,6 @@ class ConverterIntegral7 {
3786
3715
  * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt
3787
3716
  */
3788
3717
  const acLineSegmentStart = acLineSegments[0];
3789
- if (line.getUUID() === "4637c6dc-fad5-45f1-91e0-091d00717a3b" || line.getUUID() === "a992f3c9-f2e1-4cd6-8cc6-fd3d5d167871") {
3790
- const stop = true;
3791
- }
3792
3718
  const startTerminal = this.createBoundaryConnection(frame, acLineSegmentStart, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
3793
3719
  if (startTerminal) {
3794
3720
  //this.setACLineSegmentCurrentLimt(cimModel, acLineSegmentStart, acLineSegmentStart.description, startTerminal);
@@ -3890,7 +3816,7 @@ class ConverterIntegral7 {
3890
3816
  }
3891
3817
  }
3892
3818
  else {
3893
- this.logger.error(`Leitung ${line.getUUID()} with Terminal ${terminal.getUUID()}: SubGeographicalRegion konnte nicht bestimmt werden.`);
3819
+ this.logger.error(`Leitung ${line.getUUID()} with Terminal ${terminal.getUUID()}: ConnectivityNode konnte nicht bestimmt werden.`);
3894
3820
  }
3895
3821
  tmp_terminal = values.next();
3896
3822
  }
@@ -3912,7 +3838,7 @@ class ConverterIntegral7 {
3912
3838
  });
3913
3839
  }
3914
3840
  convertDCLines(cimModel, integral7, defaultValuesConfig) {
3915
- var _a, _b;
3841
+ var _a;
3916
3842
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
3917
3843
  //Workaround: Prefill Integral 7 model hgueAnschlussKnotenIDs because of missing bays and schlaufen for dc objects this data structure keeps empty.
3918
3844
  //for(let dc_node of this.hgueAnschlussKnotenIDs){
@@ -3936,10 +3862,7 @@ class ConverterIntegral7 {
3936
3862
  let converterTargetNeg = false;
3937
3863
  let converterUnitTargetSide = false;
3938
3864
  let bipol = (0, parser_utils_1.convertToBooleanI7)(i7Data.bipol);
3939
- if (bipol === undefined) {
3940
- bipol = false;
3941
- }
3942
- let dcNode = undefined;
3865
+ bipol = (0, parser_utils_1.convertToBooleanI7)(false);
3943
3866
  //Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
3944
3867
  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);
3945
3868
  let dcLineSegmentNeg = undefined;
@@ -3951,7 +3874,7 @@ class ConverterIntegral7 {
3951
3874
  dcLineSegment.capacitance = undefined;
3952
3875
  dcLineSegment.inductance = undefined;
3953
3876
  /**EQ: given directly by the INTEGRAL system model */
3954
- dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
3877
+ dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (bipol ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) / 2 : (0, parser_utils_1.convertToNumberI7)(i7Data.rdc)) : undefined;
3955
3878
  dcLineSegment.equipmentContainer = dcLine;
3956
3879
  //create second dcLineSegment in case this dcLine is a bipol.
3957
3880
  if (bipol) {
@@ -3960,42 +3883,34 @@ class ConverterIntegral7 {
3960
3883
  dcLineSegmentNeg.length = dcLineSegment.length;
3961
3884
  dcLineSegmentNeg.capacitance = undefined;
3962
3885
  dcLineSegmentNeg.inductance = undefined;
3963
- dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
3886
+ dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (bipol ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) / 2 : (0, parser_utils_1.convertToNumberI7)(i7Data.rdc)) : undefined;
3964
3887
  dcLineSegmentNeg.equipmentContainer = dcLineNeg;
3965
3888
  }
3966
3889
  const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
3967
3890
  converterStart = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStart !== undefined);
3968
3891
  let acDCConverterStartNeg = undefined;
3969
3892
  const acDCConverterTarget = cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) : undefined;
3970
- converterTarget = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTarget !== undefined);
3893
+ converterStart = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTarget !== undefined);
3971
3894
  let acDCConverterTargetNeg = undefined;
3972
- if (acDCConverterTarget === undefined) {
3973
- const stop = true;
3974
- }
3975
- else if (acDCConverterStart === undefined) {
3976
- const stop = true;
3977
- }
3978
- const int7hguekopfStart = converterStart ? (_a = integral7.integralHgueKopf) === null || _a === void 0 ? void 0 : _a.get(this.UUID2Integral7ID.get(acDCConverterStart.getUUID()).find(elem => elem)) : undefined;
3979
- const int7hguekopfTarget = converterTarget ? (_b = integral7.integralHgueKopf) === null || _b === void 0 ? void 0 : _b.get(this.UUID2Integral7ID.get(acDCConverterTarget.getUUID()).find(elem => elem)) : undefined;
3980
3895
  //Setting acDCConverterStartNeg and acDCConverterTargetNeg in case this DCLine is a bipol
3981
3896
  if (bipol) {
3982
- acDCConverterStartNeg = converterStart && int7hguekopfStart !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfStart, acDCConverterStart.constructor.name, acDCConverterStart) : undefined;
3897
+ const int7hguekopf = converterStart ? (_a = integral7.integralHgueKopf) === null || _a === void 0 ? void 0 : _a.get(this.UUID2Integral7ID.get(acDCConverterStart.getUUID()).find(elem => elem)) : undefined;
3898
+ acDCConverterStartNeg = converterStart && int7hguekopf !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopf, acDCConverterStart.constructor.name, acDCConverterStart) : undefined;
3983
3899
  converterStartNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStartNeg !== undefined);
3984
- acDCConverterTargetNeg = converterTarget && int7hguekopfTarget !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfTarget, acDCConverterTarget.constructor.name, acDCConverterTarget) : undefined;
3900
+ acDCConverterTargetNeg = converterTarget && int7hguekopf !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopf, acDCConverterTarget.constructor.name, acDCConverterTarget) : undefined;
3985
3901
  converterTargetNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTargetNeg !== undefined);
3986
3902
  }
3987
- //Set grounding for dcConverterUnit
3988
- const converterUnitStart = (acDCConverterStart === null || acDCConverterStart === void 0 ? void 0 : acDCConverterStart.equipmentContainer) ? acDCConverterStart.equipmentContainer : undefined;
3989
- converterUnitStartSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitStart !== undefined);
3990
- const converterUnitTarget = (acDCConverterTarget === null || acDCConverterTarget === void 0 ? void 0 : acDCConverterTarget.equipmentContainer) ? acDCConverterTarget.equipmentContainer : undefined;
3991
- converterUnitTargetSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitTarget !== undefined);
3992
3903
  if (converterStart && !converterStartNeg) {
3993
- dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
3904
+ createDCGround(acDCConverterStart);
3994
3905
  }
3995
3906
  else if (converterStart && converterStartNeg) {
3996
- dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
3997
- connectDCGround(cimModel, acDCConverterStartNeg, int7hguekopfStart, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
3907
+ createDCGround(acDCConverterStart);
3908
+ connectDCGround(acDCConverterStartNeg);
3998
3909
  }
3910
+ const converterUnitStart = acDCConverterStart.equipmentContainer ? acDCConverterStart.equipmentContainer : undefined;
3911
+ converterUnitStartSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitStart !== undefined);
3912
+ const converterUnitTarget = acDCConverterTarget.equipmentContainer ? acDCConverterTarget.equipmentContainer : undefined;
3913
+ converterUnitTargetSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitTarget !== undefined);
3999
3914
  switch (bipol) {
4000
3915
  case true: {
4001
3916
  if (converterUnitStartSide && !converterUnitTargetSide) {
@@ -4006,11 +3921,11 @@ class ConverterIntegral7 {
4006
3921
  converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4007
3922
  converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
4008
3923
  if (converterTarget && !converterTargetNeg) {
4009
- dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
3924
+ createDCGround(acDCConverterTarget);
4010
3925
  }
4011
3926
  else if (converterTarget && converterTargetNeg) {
4012
- dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
4013
- connectDCGround(cimModel, acDCConverterTargetNeg, int7hguekopfTarget, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
3927
+ createDCGround(acDCConverterTarget);
3928
+ connectDCGround(acDCConverterTargetNeg);
4014
3929
  }
4015
3930
  else {
4016
3931
  this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r ACDCConverter konnte nicht ermittelt werden.`);
@@ -4024,29 +3939,27 @@ class ConverterIntegral7 {
4024
3939
  case false: {
4025
3940
  if (converterUnitStartSide && !converterUnitTargetSide) {
4026
3941
  converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
3942
+ converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
3943
+ createNeutralGroundReturn(converterUnitStart, converterUnitTarget);
4027
3944
  this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit am Leitungsende konnte nicht ermittelt werden.`);
4028
3945
  }
4029
3946
  else if (converterUnitStartSide && converterUnitTargetSide) {
4030
3947
  converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
4031
- converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
4032
- createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
4033
3948
  }
4034
- break;
4035
3949
  }
4036
3950
  default: {
4037
- this.logger.info(`info --- HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: die bipol-Eigenschaft ist nicht gesetzt.`);
3951
+ this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: die bipol-Eigenschaft ist nicht gesetzt.`);
4038
3952
  }
4039
3953
  }
4040
3954
  // Topologie DC
4041
3955
  /* Anfang / Ende DCNodes*/
4042
- let startDCNode = converterStart ? getDCNodeFromConverter(acDCConverterStart, DCPolarityKind_1.DCPolarityKind.positive) : undefined;
4043
- const startDCNodeNeg = converterStartNeg ? getDCNodeFromConverter(acDCConverterStartNeg, DCPolarityKind_1.DCPolarityKind.negative) : undefined;
3956
+ const startDCNode = acDCConverterStart ? getDCNodeFromConverter(acDCConverterStart) : undefined;
3957
+ const startDCNodeNeg = acDCConverterStartNeg ? getDCNodeFromConverter(acDCConverterStartNeg) : undefined;
4044
3958
  if (startDCNode) {
4045
- const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(eval('i7Data.guid_dcterminalp1'), this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT'], 32, true));
4046
- dcTerminal.dCConductingEquipment = dcLineSegment;
3959
+ const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)('i7Data.guid_dcterminalp', this.objectMappingConfig.standardiseUuid), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT'], 32, true));
4047
3960
  dcTerminal.connected = true;
3961
+ dcTerminal.dCConductingEquipment = dcLineSegment;
4048
3962
  dcTerminal.dcNode = startDCNode;
4049
- dcLineSegment.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4050
3963
  startDCNode.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
4051
3964
  cimModel.addDCTerminal(dcTerminal);
4052
3965
  }
@@ -4054,23 +3967,23 @@ class ConverterIntegral7 {
4054
3967
  this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Anfangsknoten. ${i7Data.anetzobjekt} ${this.integralID2UUID.get(i7Data.anetzobjekt)}`);
4055
3968
  }
4056
3969
  if (startDCNodeNeg) {
4057
- const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(eval('i7Data.guid_dcterminaln1')), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCT'], 32, true));
3970
+ const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)('i7Data.guid_dcterminaln'), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCT'], 32, true));
3971
+ dcTerminal.connected = true;
4058
3972
  dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
4059
3973
  dcTerminal.dcNode = startDCNodeNeg;
4060
- dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4061
3974
  startDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
4062
3975
  cimModel.addDCTerminal(dcTerminal);
4063
3976
  }
4064
3977
  else {
4065
3978
  this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Anfangsknoten NEG. ${i7Data.anetzobjekt} ${this.integralID2UUID.get(i7Data.anetzobjekt)}`);
4066
3979
  }
4067
- const targetDCNode = converterTarget ? getDCNodeFromConverter(acDCConverterTarget, DCPolarityKind_1.DCPolarityKind.positive) : undefined;
4068
- const targetDCNodeNeg = converterTargetNeg ? getDCNodeFromConverter(acDCConverterTargetNeg, DCPolarityKind_1.DCPolarityKind.negative) : undefined;
3980
+ const targetDCNode = acDCConverterTarget ? getDCNodeFromConverter(acDCConverterTarget) : undefined;
3981
+ const targetDCNodeNeg = acDCConverterTargetNeg ? getDCNodeFromConverter(acDCConverterTargetNeg) : undefined;
4069
3982
  if (targetDCNode) {
4070
- const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(eval('i7Data.guid_dcterminalp2')), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT'], 32, true));
3983
+ const dcTerminal = new DCTerminal_1.DCTerminal(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT'], 32, true));
3984
+ dcTerminal.connected = true;
4071
3985
  dcTerminal.dCConductingEquipment = dcLineSegment;
4072
3986
  dcTerminal.dcNode = targetDCNode;
4073
- dcLineSegment.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4074
3987
  targetDCNode.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
4075
3988
  cimModel.addDCTerminal(dcTerminal);
4076
3989
  }
@@ -4078,10 +3991,10 @@ class ConverterIntegral7 {
4078
3991
  this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Zielknoten. ${i7Data.enetzobjekt} ${this.integralID2UUID.get(i7Data.enetzobjekt)}`);
4079
3992
  }
4080
3993
  if (targetDCNodeNeg) {
4081
- const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)(eval('i7Data.guid_dcterminaln2')), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCT'], 32, true));
3994
+ const dcTerminal = new DCTerminal_1.DCTerminal(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_neg', '_DCT'], 32, true));
3995
+ dcTerminal.connected = true;
4082
3996
  dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
4083
3997
  dcTerminal.dcNode = targetDCNodeNeg;
4084
- dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
4085
3998
  targetDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
4086
3999
  cimModel.addDCTerminal(dcTerminal);
4087
4000
  }
@@ -4090,7 +4003,7 @@ class ConverterIntegral7 {
4090
4003
  }
4091
4004
  cimModel.addDCLine(dcLine);
4092
4005
  cimModel.addDCLineSegment(dcLineSegment);
4093
- if (bipol && dcLineNeg && dcLineSegmentNeg) {
4006
+ if (bipol) {
4094
4007
  cimModel.addDCLine(dcLineNeg);
4095
4008
  cimModel.addDCLineSegment(dcLineSegmentNeg);
4096
4009
  }
@@ -4266,11 +4179,8 @@ class ConverterIntegral7 {
4266
4179
  }
4267
4180
  }
4268
4181
  for (const i7Data of result) {
4269
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
4270
- if (uuid === "02b17e6c-eeed-451e-a822-c54e6d6c4db1") {
4271
- const stop = true;
4272
- }
4273
- 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);
4182
+ const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
4183
+ const powerTransformer = new PowerTransformer_1.PowerTransformer(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_PT']), i7Data.kurzname, i7Data.kommentar);
4274
4184
  const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer);
4275
4185
  /** AssetInfos */
4276
4186
  if (i7Data.baujahr) {
@@ -4328,7 +4238,9 @@ class ConverterIntegral7 {
4328
4238
  const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '');
4329
4239
  const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
4330
4240
  const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber);
4331
- const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
4241
+ //const x0 = get
4242
+ // I rated
4243
+ const ir1 = (0, utils_2.getTrafoIr)(ur, sr);
4332
4244
  // P0 Lastverluste im I7 Modell p_leer
4333
4245
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4334
4246
  // Leerlaufverluste
@@ -4357,7 +4269,7 @@ class ConverterIntegral7 {
4357
4269
  const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode.ABC, true, 1) : undefined;*/
4358
4270
  if (!startTerminal)
4359
4271
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
4360
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig);
4272
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, ir1, i7Data, defaultValuesConfig);
4361
4273
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4362
4274
  let equivalentInjection = undefined;
4363
4275
  if (startTerminal) {
@@ -4383,12 +4295,14 @@ class ConverterIntegral7 {
4383
4295
  powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
4384
4296
  powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
4385
4297
  powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
4298
+ // I rated
4299
+ const ir2 = (sr * Math.pow(10, 6) / ur2 * 1000) / Math.sqrt(3);
4386
4300
  /* const ziel = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
4387
4301
  const zielTerminal = ziel ? this.createConnection(cimModel, powerTransformer, ziel, PhaseCode.ABC, true, 2) : undefined;*/
4388
4302
  const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
4389
4303
  if (!zielTerminal)
4390
4304
  this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
4391
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, undefined, i7Data, defaultValuesConfig);
4305
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, ir2, i7Data, defaultValuesConfig);
4392
4306
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4393
4307
  if (zielTerminal) {
4394
4308
  let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
@@ -4477,15 +4391,8 @@ class ConverterIntegral7 {
4477
4391
  }
4478
4392
  for (const i7Data of result) {
4479
4393
  const sternpunktKnotenMap = new Map();
4480
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
4481
- 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);
4482
- const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
4483
- if (substation) {
4484
- powerTransformer.equipmentContainer = substation;
4485
- }
4486
- else {
4487
- this.logger.debug(`Trafo3W ${i7Data.id} besitzt keine Umspannanlage.`);
4488
- }
4394
+ const cimrdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
4395
+ const powerTransformer = new PowerTransformer_1.PowerTransformer(cimrdfid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', cimrdfid.substring(0, 8), '_PT']), i7Data.kurzname, i7Data.kommentar);
4489
4396
  const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer);
4490
4397
  /** AssetInfos */
4491
4398
  if (i7Data.baujahr) {
@@ -4496,6 +4403,13 @@ class ConverterIntegral7 {
4496
4403
  facility.setAssetInfo(powerTransformerInfo);
4497
4404
  powerTransformerInfo.addAsset(facility);
4498
4405
  }
4406
+ const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
4407
+ if (substation) {
4408
+ powerTransformer.equipmentContainer = substation;
4409
+ }
4410
+ else {
4411
+ this.logger.debug(`Trafo3W ${i7Data.id} besitzt keine Umspannanlage.`);
4412
+ }
4499
4413
  const schaltgruppe = i7Data.schaltgr;
4500
4414
  //Set property 'isPartOfGeneratorUnit' to 'true' if property 'Blocktransformator' is set in Integral data.
4501
4415
  if (this.blocktransformatoren.includes((0, parser_utils_1.convertToNumberI7)(i7Data.id))) {
@@ -4525,9 +4439,10 @@ class ConverterIntegral7 {
4525
4439
  const ur1 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
4526
4440
  const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
4527
4441
  const ur3 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 3);
4528
- const sdauer1 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_1) : sr1;
4529
- const sdauer2 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_2) : sr2;
4530
- const sdauer3 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_3) : sr3;
4442
+ // I rated: power in MVA, ur in kV
4443
+ const ir1 = sr1 * Math.pow(10, 6) / ((ur1 * Math.pow(10, 3)) * Math.sqrt(3));
4444
+ const ir2 = sr2 * Math.pow(10, 6) / ((ur2 * Math.pow(10, 3)) * Math.sqrt(3));
4445
+ const ir3 = sr3 * Math.pow(10, 6) / ((ur3 * Math.pow(10, 3)) * Math.sqrt(3));
4531
4446
  //Leerlaufverluste in kW
4532
4447
  const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
4533
4448
  // Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
@@ -4580,7 +4495,7 @@ class ConverterIntegral7 {
4580
4495
  powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
4581
4496
  powerTransformerEnd1.ratedU = ur1;
4582
4497
  powerTransformerEnd1.ratedS = sr1;
4583
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
4498
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, ir1, i7Data, defaultValuesConfig, trafoWicklungen);
4584
4499
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4585
4500
  let equivalentInjection = undefined;
4586
4501
  if (terminal1) {
@@ -4590,9 +4505,6 @@ class ConverterIntegral7 {
4590
4505
  equivalentInjection = this.createBoundaryEquivalentInjection(frame, tmp_cn);
4591
4506
  }
4592
4507
  }
4593
- if (powerTransformer.mrid === "49afe40b-89cc-419f-afc5-f330c6589f82") {
4594
- const stop = true;
4595
- }
4596
4508
  //set transformer end winding connection
4597
4509
  powerTransformerEnd1.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd1.endNumber, powerTransformerEnd1.grounded);
4598
4510
  powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
@@ -4633,7 +4545,7 @@ class ConverterIntegral7 {
4633
4545
  powerTransformerEnd2.ratedS = sr2;
4634
4546
  powerTransformerEnd2.ratedU = ur2;
4635
4547
  powerTransformerEnd2.powerTransformer = powerTransformer;
4636
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, terminal2, sternpunktKnotenMap, integral7, sdauer2, i7Data, defaultValuesConfig, trafoWicklungen);
4548
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, terminal2, sternpunktKnotenMap, integral7, ir2, i7Data, defaultValuesConfig, trafoWicklungen);
4637
4549
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4638
4550
  equivalentInjection = undefined;
4639
4551
  if (terminal2) {
@@ -4683,7 +4595,7 @@ class ConverterIntegral7 {
4683
4595
  powerTransformerEnd3.ratedS = sr3;
4684
4596
  powerTransformerEnd3.ratedU = ur3;
4685
4597
  powerTransformerEnd3.powerTransformer = powerTransformer;
4686
- this.setPowerTransformerEndProperties(frame, powerTransformerEnd3, powerTransformer, terminal3, sternpunktKnotenMap, integral7, sdauer3, i7Data, defaultValuesConfig, trafoWicklungen);
4598
+ this.setPowerTransformerEndProperties(frame, powerTransformerEnd3, powerTransformer, terminal3, sternpunktKnotenMap, integral7, ir3, i7Data, defaultValuesConfig, trafoWicklungen);
4687
4599
  /**Add boundary equivalent injection if terminal is connected to boudary point. */
4688
4600
  equivalentInjection = undefined;
4689
4601
  if (terminal3) {
@@ -4836,6 +4748,60 @@ class ConverterIntegral7 {
4836
4748
  equipment.equipmentContainer = undefined;
4837
4749
  cimModel.removeObject(equipment);
4838
4750
  }
4751
+ /** ConnectivityNodes */
4752
+ /** Change EquipmentContainer from Substation/VoltageLevel to Line */
4753
+ /* const location = substation.location;
4754
+ for (let i = 0; i < connectivityNodes.length; i++) {
4755
+ const connectivityNode = connectivityNodes[i];
4756
+ connectivityNode.connectivityNodeContainer = line;
4757
+ line.addConnectivityNode(connectivityNode);
4758
+ /!** Junction *!/
4759
+ //TODO ggfs. mit Grenzknoten verbinden
4760
+ const junction = new Junction(generateUUID(), `${line.name} BD_Junc`, `Junction`, 'Junction for Geo');
4761
+ junction.equipmentContainer = line;
4762
+
4763
+ /!**
4764
+ * Junction class is included in the boundary for the purpose of GeographicalLocation profile and
4765
+ * for special representation of the boundary points (Xnodes).
4766
+ * The Terminal of the Junction is included in the EQ instance file.
4767
+ * The Junction is contained in the same Line as the ConnectivityNode is contained.
4768
+ * *!/
4769
+ const terminal = new Terminal(generateUUID(),'boundary_junction_label', 'bd_jct_lab', 'terminal to connect junction to associated boundary ConnectivityNode', 1);
4770
+ terminal.conductingEquipment = junction;
4771
+ terminal.connectivityNode = connectivityNode;
4772
+ junction.terminals.set(terminal.getUUID(), terminal);
4773
+ masFrame.cimModel.addTerminal(terminal);
4774
+ // MAS GL Profil BD Modell Abhängigkeit hinzufügen
4775
+ masFrame.addDependentModel(RDF_XML.PROFILE_EQ_BD, frame.getModelUUID(RDF_XML.PROFILE_EQ_BD));
4776
+ /!** Geokoordinaten *!/
4777
+ /!** Die Geokoordinaten der UA wird auf die Junction des ConnectivityNodes übertragen*!/
4778
+ if (location) {
4779
+ const clonedLocation = new Location(generateUUID(), `Location ${i + 1}`);
4780
+ clonedLocation.addPowerSystemResource(junction);
4781
+ clonedLocation.coordinateSystem = location.coordinateSystem;
4782
+ const clonedPositionPoint = new PositionPoint(generateUUID(), `PositionPoint ${i + 1}`);
4783
+ /!** Lan Länge *!/ //Take first position point found for this location.
4784
+ clonedPositionPoint.xPosition = location.positionPoints[0].xPosition;
4785
+ /!** Lat Breite *!/
4786
+ clonedPositionPoint.yPosition = location.positionPoints[0].yPosition;
4787
+
4788
+ clonedPositionPoint.location = clonedLocation;
4789
+ clonedLocation.addPositionPoint(clonedPositionPoint);
4790
+ masFrame.cimModel.addLocation(clonedLocation);
4791
+ }
4792
+
4793
+ line.addEquipment(junction);
4794
+ cimModel.addJunction(junction);
4795
+ }
4796
+ // Location bereinigen
4797
+ cimModel.locations.delete(location.mrid);
4798
+ cimModel.removeObject(location);
4799
+ for (const positionPoint of location.positionPoints) {
4800
+ const idx = cimModel.positionPoints.indexOf(positionPoint);
4801
+ if (idx > -1) {
4802
+ cimModel.positionPoints.splice(idx, 1);
4803
+ }
4804
+ }*/
4839
4805
  /** Geokoordinaten */
4840
4806
  const location = substation.location;
4841
4807
  for (let i = 0; i < connectivityNodes.length; i++) {
@@ -4855,7 +4821,8 @@ class ConverterIntegral7 {
4855
4821
  let terminal = new Terminal_1.Terminal(common_utils_1.CommonUtils.generateUUID(), (0, util_create_1.createNotation)([line.getUUID().substring(0, 8), '_BD-JCT-T']), 'bd_jct_lab', 'terminal to connect junction to associated boundary ConnectivityNode', 1);
4856
4822
  junction.terminals.set(terminal.getUUID(), terminal);
4857
4823
  terminal.conductingEquipment = junction;
4858
- terminal.connectivityNode = connectivityNode;
4824
+ // TODO ist nicht notwendig
4825
+ // terminal.connectivityNode = connectivityNode;
4859
4826
  line.addEquipment(junction);
4860
4827
  /** Die Geokoordinaten der UA wird auf die Junction des ConnectivityNodes übertragen */
4861
4828
  if (location && location.positionPoints.length) {
@@ -4932,12 +4899,11 @@ class ConverterIntegral7 {
4932
4899
  data.laenge = 1;
4933
4900
  }
4934
4901
  // Laenge: If valid data.laenge is given then assign it to parameter length, else set parameter length to zero. REMARK: CGMES Standard 2.x.y defines that a cim:ACLineSegment with no impedance has length of zero and arbitrary r, x, b, g etc.
4935
- if ((0, parser_utils_1.isNumericI7)(data.laenge) && data.laenge > 0 && !data.flag_impedanzlos) {
4902
+ if ((0, parser_utils_1.isNumericI7)(data.laenge) && data.laenge > 0 /*&& !data.flag_impedanzlos*/) {
4936
4903
  acLineSegment.length = data.laenge;
4937
- }
4938
- else {
4939
- acLineSegment.length = 1;
4940
- }
4904
+ } /* else {
4905
+ acLineSegment.length = 1;
4906
+ }*/
4941
4907
  const assetType = defaultModel.getWireInfoByName(data.nametyp);
4942
4908
  // r0
4943
4909
  if ((0, parser_utils_1.isNumericI7)(data.r0) && data.r0 > 0 && !data.flag_impedanzlos) {
@@ -5011,92 +4977,48 @@ class ConverterIntegral7 {
5011
4977
  }
5012
4978
  // ir
5013
4979
  for (const terminal of acLineSegment.terminals.values()) {
5014
- const ir = (0, parser_utils_1.isNumericI7)(data.ir) ? (0, parser_utils_1.convertToNumberI7)(data.ir) : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.ratedCurrent) ? (0, parser_utils_1.convertToNumberI7)(assetType.ratedCurrent) : undefined);
5015
- const igrenz = (0, parser_utils_1.isNumericI7)(data.igrenz) ? (0, parser_utils_1.convertToNumberI7)(data.igrenz) : ((0, parser_utils_1.isNumericI7)(assetType === null || assetType === void 0 ? void 0 : assetType.limitingCurrent) ? (0, parser_utils_1.convertToNumberI7)(assetType.limitingCurrent) : undefined);
5016
- this.setConductingEquipmentOperationalLimit(cimModel, acLineSegment.name, terminal, ir, new CurrentLimit_1.CurrentLimit(common_utils_1.CommonUtils.generateUUID(), acLineSegment.name), igrenz);
4980
+ if ((0, parser_utils_1.isNumericI7)(data.ir) && data.ir > 0) {
4981
+ this.setConductingEquipmentCurrentLimit(cimModel, acLineSegment.name, terminal, data.ir);
4982
+ }
4983
+ else if (assetType && assetType.ratedCurrent && assetType.ratedCurrent !== 0) {
4984
+ this.setConductingEquipmentCurrentLimit(cimModel, acLineSegment.name, terminal, assetType.ratedCurrent);
4985
+ }
5017
4986
  //PSRType
5018
4987
  const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, data.typ);
5019
4988
  acLineSegment.psrTypeUUID = psrType.mrid;
4989
+ // psrType.addPowerSystemResource(acLineSegment);
5020
4990
  }
5021
4991
  }
5022
- setConductingEquipmentOperationalLimit(cimModel, name, terminal, physLimit, limit, igrenz) {
5023
- let operationalLimitSet = undefined;
5024
- let operationalLimitTypePatl = undefined;
5025
- if (!terminal) {
5026
- console.log();
5027
- }
5028
- if (limit instanceof CurrentLimit_1.CurrentLimit) {
5029
- //mandatory for aclinesegments and powertransformers
5030
- const ir = physLimit;
5031
- let currentLimitTatl = undefined;
5032
- let currentLimitPatl = undefined;
5033
- let operationalLimitTypeTatl = undefined;
5034
- if (ir) {
5035
- currentLimitPatl = limit;
5036
- currentLimitPatl.value = new CurrentFlow_1.CurrentFlow(ir, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
5037
- cimModel.addCurrentLimit(currentLimitPatl);
5038
- }
5039
- //optional
5040
- if (igrenz) {
5041
- currentLimitTatl = new CurrentLimit_1.CurrentLimit(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5042
- currentLimitTatl.value = new CurrentFlow_1.CurrentFlow(igrenz, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
5043
- cimModel.addCurrentLimit(currentLimitTatl);
5044
- }
5045
- if (currentLimitPatl && currentLimitTatl) {
5046
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5047
- cimModel.addOperationalLimitSet(operationalLimitSet);
5048
- operationalLimitSet.addOperationalLimit(currentLimitPatl);
5049
- currentLimitPatl.operationalLimitSet = operationalLimitSet;
5050
- operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5051
- operationalLimitTypePatl.addOperationalLimit(currentLimitPatl);
5052
- currentLimitPatl.operationalLimitType = operationalLimitTypePatl;
5053
- operationalLimitSet.terminal = terminal;
5054
- operationalLimitSet.addOperationalLimit(currentLimitTatl);
5055
- currentLimitTatl.operationalLimitSet = operationalLimitSet;
5056
- operationalLimitTypeTatl = this.createIfNotExistOperationalLimitType(cimModel, 'tatl', LimitTypeKind_1.LimitTypeKind.tatl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5057
- operationalLimitTypeTatl.addOperationalLimit(currentLimitTatl);
5058
- currentLimitTatl.operationalLimitType = operationalLimitTypeTatl;
5059
- }
5060
- else if (currentLimitPatl) {
5061
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5062
- cimModel.addOperationalLimitSet(operationalLimitSet);
5063
- operationalLimitSet.addOperationalLimit(currentLimitPatl);
5064
- currentLimitPatl.operationalLimitSet = operationalLimitSet;
5065
- operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5066
- operationalLimitTypePatl.addOperationalLimit(currentLimitPatl);
5067
- currentLimitPatl.operationalLimitType = operationalLimitTypePatl;
5068
- operationalLimitSet.terminal = terminal;
5069
- }
5070
- else if (currentLimitTatl) {
5071
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5072
- cimModel.addOperationalLimitSet(operationalLimitSet);
5073
- operationalLimitSet.addOperationalLimit(currentLimitTatl);
5074
- currentLimitTatl.operationalLimitSet = operationalLimitSet;
5075
- operationalLimitTypeTatl = this.createIfNotExistOperationalLimitType(cimModel, 'tatl', LimitTypeKind_1.LimitTypeKind.tatl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5076
- operationalLimitTypeTatl.addOperationalLimit(currentLimitTatl);
5077
- currentLimitTatl.operationalLimitType = operationalLimitTypeTatl;
5078
- operationalLimitSet.terminal = terminal;
5079
- }
5080
- }
5081
- else if (limit instanceof ApparentPowerLimit_1.ApparentPowerLimit) {
5082
- let apparentPowerLimit = undefined;
5083
- if (physLimit != undefined) {
5084
- apparentPowerLimit = limit;
5085
- apparentPowerLimit.uuid = common_utils_1.CommonUtils.generateUUID();
5086
- apparentPowerLimit.name = `${name}`;
5087
- cimModel.addCurrentLimit(apparentPowerLimit);
5088
- apparentPowerLimit.value = new ApparentPower_1.ApparentPower(physLimit, UnitMultiplier_1.UnitMultiplier.M, UnitSymbol_1.UnitSymbol.VA);
5089
- if (apparentPowerLimit) {
5090
- operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5091
- cimModel.addOperationalLimitSet(operationalLimitSet);
5092
- operationalLimitSet.addOperationalLimit(apparentPowerLimit);
5093
- apparentPowerLimit.operationalLimitSet = operationalLimitSet;
5094
- operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5095
- operationalLimitTypePatl.addOperationalLimit(apparentPowerLimit);
5096
- apparentPowerLimit.operationalLimitType = operationalLimitTypePatl;
5097
- operationalLimitSet.terminal = terminal;
5098
- }
5099
- }
4992
+ setConductingEquipmentCurrentLimit(cimModel, name, terminal, ir) {
4993
+ const currentLimit = new CurrentLimit_1.CurrentLimit(common_utils_1.CommonUtils.generateUUID(), `${name}`);
4994
+ cimModel.addCurrentLimit(currentLimit);
4995
+ currentLimit.value = new CurrentFlow_1.CurrentFlow(ir, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
4996
+ const operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
4997
+ cimModel.addOperationalLimitSet(operationalLimitSet);
4998
+ operationalLimitSet.addOperationalLimit(currentLimit);
4999
+ currentLimit.operationalLimitSet = operationalLimitSet;
5000
+ const operationalLimitType = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
5001
+ operationalLimitType.addOperationalLimit(currentLimit);
5002
+ currentLimit.operationalLimitType = operationalLimitType;
5003
+ operationalLimitSet.terminal = terminal;
5004
+ }
5005
+ setVoltageLimit(cimModel, name, terminal, voltage, type, direction) {
5006
+ const voltageLimit = new VoltageLimit_1.VoltageLimit(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5007
+ cimModel.addVoltageLimit(voltageLimit);
5008
+ voltageLimit.value = voltage;
5009
+ const operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
5010
+ cimModel.addOperationalLimitSet(operationalLimitSet);
5011
+ operationalLimitSet.addOperationalLimit(voltageLimit);
5012
+ voltageLimit.operationalLimitSet = operationalLimitSet;
5013
+ const operationalLimitType = this.createIfNotExistOperationalLimitType(cimModel, name, type, direction);
5014
+ operationalLimitType.addOperationalLimit(voltageLimit);
5015
+ voltageLimit.operationalLimitType = operationalLimitType;
5016
+ operationalLimitSet.terminal = terminal;
5017
+ }
5018
+ setACLineSegmentCurrentLimt(cimModel, acLineSegment, nametyp, terminal) {
5019
+ const assetType = this.cimModelDefault.getWireInfoByName(nametyp);
5020
+ if (assetType && assetType.ratedCurrent && assetType.ratedCurrent !== 0) {
5021
+ this.setConductingEquipmentCurrentLimit(cimModel, acLineSegment.name, terminal, assetType.ratedCurrent);
5100
5022
  }
5101
5023
  }
5102
5024
  createIfNotExistOperationalLimitType(cimModel, name, type, direction) {
@@ -5128,10 +5050,7 @@ class ConverterIntegral7 {
5128
5050
  terminal.phases = phase;
5129
5051
  terminal.conductingEquipment = conductingEquipment;
5130
5052
  conductingEquipment.addTerminal(terminal);
5131
- terminal.connected = (terminal.connected !== undefined) ? terminal.connected : connected;
5132
- if (terminal.connected === false) {
5133
- const stop = true;
5134
- }
5053
+ terminal.connected = connected;
5135
5054
  if (!isNameSet) {
5136
5055
  terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
5137
5056
  }
@@ -5141,7 +5060,7 @@ class ConverterIntegral7 {
5141
5060
  createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
5142
5061
  const cimModel = frame.cimModel;
5143
5062
  const anschlussUUID = this.integralID2UUID.get(i7ObjectID);
5144
- let terminal = undefined;
5063
+ let terminal;
5145
5064
  let cn = undefined;
5146
5065
  if (cimModel.objects.has(anschlussUUID)) {
5147
5066
  // Anschluss befindet sich im selben Modell
@@ -5195,7 +5114,7 @@ class ConverterIntegral7 {
5195
5114
  this.annotateBoundaryNode(frame.name, frame.isoCode, frame.tsoName, cn);
5196
5115
  }
5197
5116
  else {
5198
- 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`);
5117
+ this.logger.error(`Für das Objekt ${conductingEquipment.constructor.name} ${conductingEquipment.getUUID()} konnte am I7-Objekt ${i7ObjectID} kein Grenz ConnenctivityNode bestimmt werden`);
5199
5118
  }
5200
5119
  if (terminal) {
5201
5120
  terminal.conductingEquipment = conductingEquipment;
@@ -5203,7 +5122,7 @@ class ConverterIntegral7 {
5203
5122
  }
5204
5123
  }
5205
5124
  else {
5206
- 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 Anschlusspunkt bestimmt werden`);
5125
+ this.logger.error(`Für das Objekt ${conductingEquipment.constructor.name} ${conductingEquipment.getUUID()} konnte am I7-Objekt ${i7ObjectID} kein Grenzknoten bestimmt werden`);
5207
5126
  }
5208
5127
  }
5209
5128
  return terminal;
@@ -5302,7 +5221,6 @@ class ConverterIntegral7 {
5302
5221
  getSpannungsbandTrafo(i7Data, powerTransformerEnds) {
5303
5222
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
5304
5223
  return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
5305
- var _a, _b, _c;
5306
5224
  let minMaxSollResult;
5307
5225
  // Spannungsgeregelter Anschluss
5308
5226
  /**
@@ -5311,18 +5229,9 @@ class ConverterIntegral7 {
5311
5229
  * 2 - Niederspannungsseite (Anschluss 3)
5312
5230
  * 3 - Externer Knoten
5313
5231
  * */
5314
- if (powerTransformerEnds[0] && powerTransformerEnds[0].getTerminal() === undefined) {
5315
- const stop = true;
5316
- }
5317
- if (powerTransformerEnds[1] && powerTransformerEnds[1].getTerminal() === undefined) {
5318
- const stop = true;
5319
- }
5320
- if (powerTransformerEnds[2] && powerTransformerEnds[2].getTerminal() === undefined) {
5321
- const stop = true;
5322
- }
5323
- let tempKnotenId = i7Data.spgreg_anschluss === 0 ? this.UUID2Integral7ID.get((_a = powerTransformerEnds[0].getTerminal()) === null || _a === void 0 ? void 0 : _a.getConnectivityNodeUUID())[0] : undefined;
5324
- tempKnotenId = i7Data.spgreg_anschluss === 1 ? this.UUID2Integral7ID.get((_b = powerTransformerEnds[1].getTerminal()) === null || _b === void 0 ? void 0 : _b.getConnectivityNodeUUID())[0] : tempKnotenId;
5325
- tempKnotenId = i7Data.spgreg_anschluss === 2 ? this.UUID2Integral7ID.get((_c = powerTransformerEnds[2].getTerminal()) === null || _c === void 0 ? void 0 : _c.getConnectivityNodeUUID())[0] : tempKnotenId;
5232
+ let tempKnotenId = i7Data.spgreg_anschluss === 0 ? this.UUID2Integral7ID.get(powerTransformerEnds[0].getTerminal().getConnectivityNodeUUID())[0] : undefined;
5233
+ tempKnotenId = i7Data.spgreg_anschluss === 1 ? this.UUID2Integral7ID.get(powerTransformerEnds[1].getTerminal().getConnectivityNodeUUID())[0] : tempKnotenId;
5234
+ tempKnotenId = i7Data.spgreg_anschluss === 2 ? this.UUID2Integral7ID.get(powerTransformerEnds[2].getTerminal().getConnectivityNodeUUID())[0] : tempKnotenId;
5326
5235
  tempKnotenId = i7Data.spgreg_anschluss === 3 ? (i7Data.spgreg_knoten !== undefined ? i7Data.spgreg_knoten : undefined) : tempKnotenId;
5327
5236
  if (i7Data.spgreg_anschluss >= 0 && i7Data.spgreg_anschluss <= 2 && tempKnotenId !== undefined) { // Lokale Regelung
5328
5237
  // Falls tempKnotenId ausgeprägt ist, bestimme in welcher Tabelle der aKnoten bzw. eKnoten enthalten ist.
@@ -5642,14 +5551,14 @@ class ConverterIntegral7 {
5642
5551
  coordinateSystem.crsUrn = crsUrn;
5643
5552
  cimModel.addCoordinateSystem(coordinateSystem);
5644
5553
  }
5645
- setPowerTransformerEndProperties(frame, powerTransformerEnd, powerTransformer, terminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig, windings) {
5554
+ setPowerTransformerEndProperties(frame, powerTransformerEnd, powerTransformer, terminal, sternpunktKnotenMap, integral7, ir, i7Data, defaultValuesConfig, windings) {
5646
5555
  var _a, _b;
5647
5556
  const cimModel = frame.cimModel;
5648
5557
  if (terminal) {
5649
5558
  // Topologie
5650
5559
  powerTransformerEnd.terminal = terminal;
5651
- // ApparentPowerLimit
5652
- this.setConductingEquipmentOperationalLimit(cimModel, `W${powerTransformerEnd.endNumber}` + (powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name), terminal, sdauer, new ApparentPowerLimit_1.ApparentPowerLimit());
5560
+ // CurrentLimit
5561
+ this.setConductingEquipmentCurrentLimit(cimModel, `W${powerTransformerEnd.endNumber}` + (powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name), terminal, ir);
5653
5562
  let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
5654
5563
  // Erdung / Sternpunkt
5655
5564
  if (sternpunktKnotenMap.has(i7Data.id) && isTrafo2w) {
@@ -5703,25 +5612,25 @@ class ConverterIntegral7 {
5703
5612
  }
5704
5613
  convertTapChangers(i7Data, transformerEnds, cimModel, transformerinfo, connectivityNode, spannungsband) {
5705
5614
  var _a, _b, _c, _d, _e, _f, _g, _h;
5706
- /*if(getUUID(i7Data.guid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
5615
+ /*if(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
5707
5616
  let stop = true; DONE
5708
5617
  }
5709
- if(getUUID(i7Data.guid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
5618
+ if(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
5710
5619
  let stop = true; DONE
5711
5620
  }*/
5712
- /*if(getUUID(i7Data.guid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
5621
+ /*if(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
5713
5622
  let stop = true;
5714
5623
  }*/
5715
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
5624
+ if ((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
5716
5625
  let stop = true;
5717
5626
  }
5718
- /*if(getUUID(i7Data.guid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
5627
+ /*if(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
5719
5628
  let stop = true;
5720
5629
  }*/
5721
- if ((0, parser_utils_1.getUUID)(i7Data.guid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
5630
+ if ((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
5722
5631
  let stop = true;
5723
5632
  }
5724
- /*if(getUUID(i7Data.guid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
5633
+ /*if(getUUID(i7Data.guid, this.objectMappingConfig.standardiseUuid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
5725
5634
  let stop = true;
5726
5635
  }*/
5727
5636
  let ratioPhaseTapChangerPresent = false;
@@ -5799,23 +5708,21 @@ class ConverterIntegral7 {
5799
5708
  const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
5800
5709
  //const neutralU = transformerEnd.ratedU;
5801
5710
  let tapChanger = undefined;
5802
- let invert = undefined;
5803
- if ((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) % 180 !== 0 || spezialRegelung === 1 || spezialRegelung === 2) {
5804
- //angle is given and angle%180===0 or angle is not given but spezialRegelung, thus => PhaseTapChanger ("Querregler" oder "Schrägregler")
5711
+ if ((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) % 180 !== 0 || spezialRegelung) {
5712
+ // Winkel ist definiert =>PST/Queregler/PhaseTapChanger
5805
5713
  tapChanger = this.createPhaseTapChanger(i7Data, transformerEnds, cimModel, gestufteSeite, entryI7, transformerinfo);
5806
5714
  }
5807
5715
  else {
5808
- //invert sign if tapChanger angle%180===0 && angle%360!==0
5809
- invert = Math.trunc((0, parser_utils_1.convertToNumberI7)(angle) / 180) % 2 === 0 ? 1 : -1;
5716
+ // Winkel ist nicht definiert => Längsregler/RatioTapChanger
5810
5717
  tapChanger = this.createRatioTapChanger(i7Data, transformerEnds, cimModel, connectivityNode, gestufteSeite, entryI7, spannungsband, transformerinfo);
5811
5718
  }
5812
5719
  // Stufen
5813
- this.setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, entryI7, ratioPhaseTapChangerPresent, invert, tapChangerInfo);
5720
+ this.setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, entryI7, ratioPhaseTapChangerPresent, tapChangerInfo);
5814
5721
  let stop = true;
5815
5722
  }
5816
5723
  let stop = true;
5817
5724
  }
5818
- setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, tapChangerNumber, ratioPhaseTapChangerPresent, invert, tapChangerInfo) {
5725
+ setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, tapChangerNumber, ratioPhaseTapChangerPresent, tapChangerInfo) {
5819
5726
  var _a;
5820
5727
  let lowStep = (0, parser_utils_1.isNumericI7)(i7Data[`minstufe_s${tapChangerNumber}`])
5821
5728
  ? i7Data[`minstufe_s${tapChangerNumber}`]
@@ -5837,66 +5744,43 @@ class ConverterIntegral7 {
5837
5744
  const neutralStepIndex = i7TapArray.indexOf(neutralStep);*/
5838
5745
  const lowerVoltageStepCount = (0, utils_2.getTapChangerStepCount)(lowStep, neutralStep);
5839
5746
  const upperVoltageStepCount = (0, utils_2.getTapChangerStepCount)(neutralStep, highStep);
5840
- let uMin = (0, parser_utils_1.isNumericI7)(i7Data[`umin_s${tapChangerNumber}`])
5747
+ const uMin = (0, parser_utils_1.isNumericI7)(i7Data[`umin_s${tapChangerNumber}`])
5841
5748
  ? i7Data[`umin_s${tapChangerNumber}`]
5842
5749
  : tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.uMin;
5843
- let uMax = (0, parser_utils_1.isNumericI7)(i7Data[`umax_s${tapChangerNumber}`])
5750
+ const uMax = (0, parser_utils_1.isNumericI7)(i7Data[`umax_s${tapChangerNumber}`])
5844
5751
  ? i7Data[`umax_s${tapChangerNumber}`]
5845
5752
  : tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.uMax;
5846
- let lowerVoltageStepDecrement = Math.abs(uMin / lowerVoltageStepCount);
5753
+ let lowerVoltageStepIncrement = Math.abs(uMin / lowerVoltageStepCount);
5847
5754
  let upperVoltageStepIncrement = Math.abs(uMax / upperVoltageStepCount);
5848
5755
  let increaseVoltageStepIncrement = (0, parser_utils_1.isNumericI7)(upperVoltageStepIncrement) ? upperVoltageStepIncrement : 0;
5849
5756
  if (tapChanger instanceof RatioTapChanger_1.RatioTapChanger) {
5850
5757
  const ratioTapChanger = tapChanger;
5851
- uMin = uMin * invert;
5852
- uMax = uMax * invert;
5853
- //test for uMin and uMax voltage add are not symmetrical...
5854
- if (Math.abs(lowerVoltageStepDecrement) !== Math.abs(upperVoltageStepIncrement) || uMax < uMin || uMax === uMin || ratioPhaseTapChangerPresent) {
5855
- if (uMax === uMin) {
5856
- const stop = true;
5857
- }
5758
+ // Min/Max Zusatzspannung sind nicht symmetrisch
5759
+ if (Math.abs(lowerVoltageStepIncrement) !== Math.abs(upperVoltageStepIncrement) || uMax < uMin || ratioPhaseTapChangerPresent) {
5858
5760
  const ratioTapChangerTable = new RatioTapChangerTable_1.RatioTapChangerTable(common_utils_1.CommonUtils.generateUUID(), `${i7Data.bezeichner} W_${tapChangerNumber}`);
5859
5761
  let step_tmp = 0;
5860
5762
  let start_step_tmp = step_tmp;
5861
- //voltage decrement
5862
- if (uMin < 0) {
5863
- for (let i = 0; i < Math.abs(lowerVoltageStepCount); i++) {
5864
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((Math.abs(lowerVoltageStepDecrement) * Math.abs(lowerVoltageStepCount - i)) / 100)));
5865
- step_tmp = i;
5866
- }
5867
- }
5868
- else {
5869
- for (let i = 0; i < Math.abs(lowerVoltageStepCount); i++) {
5870
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((lowerVoltageStepDecrement * Math.abs(lowerVoltageStepCount - i)) / 100)));
5871
- step_tmp = i;
5872
- }
5763
+ // Spannung verringern
5764
+ for (let i = 0; i < Math.abs(lowerVoltageStepCount); i++) {
5765
+ (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((lowerVoltageStepIncrement * Math.abs(lowerVoltageStepCount - i)) / 100)));
5766
+ step_tmp = i;
5873
5767
  }
5874
- //neutral step
5768
+ // neutral Step
5875
5769
  step_tmp++;
5876
5770
  (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[step_tmp], 1);
5877
5771
  step_tmp++;
5878
5772
  start_step_tmp = step_tmp;
5879
- //voltage increment
5880
- if (uMax > 0) {
5881
- for (let i = start_step_tmp; i < start_step_tmp + Math.abs(upperVoltageStepCount); i++) {
5882
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)));
5883
- }
5884
- }
5885
- else {
5886
- for (let i = start_step_tmp; i < start_step_tmp + Math.abs(upperVoltageStepCount); i++) {
5887
- (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)));
5888
- }
5773
+ // Spannung erhoehen
5774
+ for (let i = start_step_tmp; i < start_step_tmp + Math.abs(upperVoltageStepCount); i++) {
5775
+ (0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)));
5889
5776
  }
5890
5777
  tapChanger.ratioTapChangerTable = ratioTapChangerTable;
5891
5778
  ratioTapChangerTable.ratioTapChanger = tapChanger;
5892
- //average
5893
- //ratioTapChanger.stepVoltageIncrement = Math.abs(Math.round(lowerVoltageStepDecrement)) + Math.abs(Math.round(increaseVoltageStepIncrement)) / 2;
5779
+ // Durchschnitt
5780
+ ratioTapChanger.stepVoltageIncrement = Math.abs(Math.round(lowerVoltageStepIncrement)) + Math.abs(Math.round(increaseVoltageStepIncrement)) / 2;
5894
5781
  cimModel.addRatioTapChangerTable(ratioTapChangerTable);
5895
5782
  }
5896
- else {
5897
- //uMin and uMax are symmetrical
5898
- ratioTapChanger.stepVoltageIncrement = increaseVoltageStepIncrement;
5899
- }
5783
+ ratioTapChanger.stepVoltageIncrement = increaseVoltageStepIncrement;
5900
5784
  }
5901
5785
  if (tapChanger instanceof PhaseTapChangerNonLinear_1.PhaseTapChangerNonLinear) {
5902
5786
  tapChanger.voltageStepIncrement = increaseVoltageStepIncrement;
@@ -5909,8 +5793,8 @@ class ConverterIntegral7 {
5909
5793
  tapChanger.neutralStep = neutralStep;
5910
5794
  tapChanger.normalStep = currentStep;
5911
5795
  tapChanger.step = currentStep;
5912
- if (Math.abs(lowerVoltageStepDecrement) !== Math.abs(increaseVoltageStepIncrement)) {
5913
- this.logger.info(`Trafo ${i7Data.id}: Zusatzspannung Min/Max sind nicht symmetrisch MIN ${lowerVoltageStepDecrement} MAX ${increaseVoltageStepIncrement}. Das Attribut voltageStepIncrement i.H.v ${increaseVoltageStepIncrement} könnte inkorrekt sein.`);
5796
+ if (Math.abs(lowerVoltageStepIncrement) !== Math.abs(increaseVoltageStepIncrement)) {
5797
+ this.logger.info(`Trafo ${i7Data.id}: Zusatzspannung Min/Max sind nicht symmetrisch MIN ${lowerVoltageStepIncrement} MAX ${increaseVoltageStepIncrement}. Das Attribut voltageStepIncrement i.H.v ${increaseVoltageStepIncrement} könnte inkorrekt sein.`);
5914
5798
  }
5915
5799
  }
5916
5800
  createRatioTapChanger(i7Data, transformerEnds, cimModel, regulatingConnectivityNode, gestufteSeite, tapChangerNumber, spannungsband, transformerinfo) {
@@ -5927,9 +5811,6 @@ class ConverterIntegral7 {
5927
5811
  * */
5928
5812
  /** Regelung */
5929
5813
  const ratioTapChanger = new RatioTapChanger_1.RatioTapChanger((0, parser_utils_1.getUUID)(eval(`i7Data.guid_tch${tapChangerNumber}`), this.objectMappingConfig.standardiseUuid), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
5930
- if (ratioTapChanger.mrid === "df659ba2-a075-4f7d-bdd6-6b038cae962a") {
5931
- const stop = true;
5932
- }
5933
5814
  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;
5934
5815
  ratioTapChanger.transformerEnd = transformerEnd;
5935
5816
  //transformerEnd.ratioTapChanger = ratioTapChanger;
@@ -5971,7 +5852,7 @@ class ConverterIntegral7 {
5971
5852
  cimModel.addTapChangerControl(tapChangerControl);
5972
5853
  }
5973
5854
  else {
5974
- this.logger.debug(`debug --- Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
5855
+ this.logger.error(`Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
5975
5856
  }
5976
5857
  cimModel.addRatioTapChanger(ratioTapChanger);
5977
5858
  return ratioTapChanger;
@@ -6019,24 +5900,14 @@ class ConverterIntegral7 {
6019
5900
  }
6020
5901
  default: {
6021
5902
  // There is no information given about special tapchanger control, thus create PhaseTapChangerLinear
6022
- /**const phaseTapChangerLin = new PhaseTapChangerLinear(getUUID(eval(`i7Data.guid_tch${tapChangerNumber}`)), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
6023
- phaseTapChanger = phaseTapChangerLin;
6024
- cimModel.addPhaseTapChangerLinear(phaseTapChangerLin);*/
6025
- const phaseTapChangerAsym = new PhaseTapChangerAsymmetrical_1.PhaseTapChangerAsymmetrical((0, parser_utils_1.getUUID)(eval(`i7Data.guid_tch${tapChangerNumber}`)), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
6026
- phaseTapChangerAsym.windingConnectionAngle = winkel;
6027
- phaseTapChanger = phaseTapChangerAsym;
6028
- cimModel.addPhaseTapChangerAsymmetrical(phaseTapChangerAsym);
5903
+ const phaseTapChangerLin = new PhaseTapChangerLinear_1.PhaseTapChangerLinear((0, parser_utils_1.getUUID)(eval(`i7Data.guid_tch${tapChangerNumber}`), this.objectMappingConfig.standardiseUuid), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
5904
+ phaseTapChanger = phaseTapChangerLin;
5905
+ cimModel.addPhaseTapChangerLinear(phaseTapChangerLin);
6029
5906
  break;
6030
5907
  }
6031
5908
  }
6032
- if (phaseTapChanger.mrid === "df659ba2-a075-4f7d-bdd6-6b038cae962a") {
6033
- const stop = true;
6034
- }
6035
- if (phaseTapChanger.mrid === "3d0bdc23-fe46-408d-99b3-369a02d28a28") {
6036
- const stop = true;
6037
- }
6038
5909
  // Attribute
6039
- 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;
5910
+ phaseTapChanger.ltcFlag = (0, parser_utils_1.isNumericI7)(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`) ? (0, parser_utils_1.convertToBooleanI7)(`i7Data.unter_last_nicht_verstellbar_s${tapChangerNumber}`) : false;
6040
5911
  phaseTapChanger.transformerEnd = transformerEnd;
6041
5912
  //transformerEnd.phaseTapChanger = phaseTapChanger;
6042
5913
  // Wirkleistungsregelung Anschluss
@@ -6075,7 +5946,7 @@ class ConverterIntegral7 {
6075
5946
  cimModel.addTapChangerControl(tapChangerControl);
6076
5947
  }
6077
5948
  else {
6078
- this.logger.debug(`debug --- Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
5949
+ this.logger.error(`Trafo ${i7Data.id}: Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
6079
5950
  }
6080
5951
  return phaseTapChanger;
6081
5952
  }
@@ -6397,98 +6268,32 @@ function getGeoCoordinates(i7Data) {
6397
6268
  return undefined;
6398
6269
  }
6399
6270
  exports.getGeoCoordinates = getGeoCoordinates;
6400
- function getDCNodeFromConverter(acDcConverter, polarity) {
6271
+ function getDCNodeFromConverter(acDcConverter) {
6401
6272
  let ret_val = undefined;
6402
6273
  if (acDcConverter.dCTerminals) {
6403
6274
  for (const terminal of acDcConverter.dCTerminals.values()) {
6404
- if (terminal.dcNode && terminal.polarity === polarity) {
6275
+ if (terminal.dcNode) {
6405
6276
  ret_val = terminal.dcNode;
6406
6277
  }
6407
6278
  }
6408
6279
  }
6409
6280
  return ret_val;
6410
6281
  }
6411
- function createDCGround(cimModel, acDCConverter, i7Data) {
6412
- const dcConverterUnit = acDCConverter.equipmentContainer;
6413
- 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));
6414
- 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']));
6415
- const dcTerminalM1 = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm1), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT']));
6416
- const dcNodeG = new DCNode_1.DCNode((0, parser_utils_1.getUUID)(i7Data.guid_dcnodem1));
6417
- dcTerminalG.dCConductingEquipment = dcGround;
6418
- dcTerminalM1.dCConductingEquipment = acDCConverter;
6419
- dcTerminalM1.polarity = DCPolarityKind_1.DCPolarityKind.middle;
6420
- dcTerminalG.dcNode = dcNodeG;
6421
- dcTerminalM1.dcNode = dcNodeG;
6422
- dcGround.equipmentContainer = dcConverterUnit;
6423
- dcGround.dCTerminals.set(dcTerminalG.getUUID(), dcTerminalG);
6424
- dcNodeG.dcEquipmentContainer = dcConverterUnit;
6425
- dcNodeG.dcTerminals.set(dcTerminalG.getUUID(), dcTerminalG);
6426
- dcNodeG.dcTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
6427
- acDCConverter.dCTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
6428
- cimModel.addDCTerminal(dcTerminalG);
6429
- cimModel.addDCGround(dcGround);
6430
- cimModel.addDCGroundTerminal(dcTerminalM1);
6431
- cimModel.addDCNode(dcNodeG);
6432
- /** EQ-SC */
6433
- dcGround.r = undefined;
6434
- dcGround.inductance = undefined;
6435
- return dcNodeG;
6436
- }
6437
- /**
6438
- *
6439
- * @param acDCConverter
6440
- * @param i7Data
6441
- * @param endNumber Start means a value of '1'. Target means a value of '2'.
6442
- */
6443
- function connectDCGround(cimModel, acdcConverter, i7Data, dcNode, polarity) {
6444
- let dcTerminalMx = undefined;
6445
- let dcNodeG = dcNode;
6446
- const dcTerminalM1UUID = (0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm1);
6447
- const dcTerminalM2UUID = (0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm2);
6448
- if (dcNodeG.dcTerminals.get(dcTerminalM1UUID)) {
6449
- dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM2UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_NEG', '_DCT']));
6450
- }
6451
- else {
6452
- dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM1UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT']));
6453
- }
6454
- dcTerminalMx.polarity = polarity;
6455
- dcNodeG.dcTerminals.set(dcTerminalMx.getUUID(), dcTerminalMx);
6456
- acdcConverter.dCTerminals.set(dcTerminalMx.getUUID(), dcTerminalMx);
6457
- dcTerminalMx.dCConductingEquipment = acdcConverter;
6458
- dcTerminalMx.dcNode = dcNodeG;
6459
- cimModel.addDCGroundTerminal(dcTerminalMx);
6460
- }
6461
- function createNeutralGroundReturn(cimModel, i7Data, acdcConverterStart, acdcConverterTarget) {
6462
- let dcNodeM1 = (0, utils_1.getDCNodeGroundByDCConverterUnit)(cimModel, acdcConverterStart.getUUID());
6463
- let dcNodeM2 = (0, utils_1.getDCNodeGroundByDCConverterUnit)(cimModel, acdcConverterTarget.getUUID());
6464
- let dcTerminalN1 = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(undefined), (0, util_create_1.createNotation)(['NeutrallineStart_DCT']));
6465
- let dcTerminalN2 = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(undefined), (0, util_create_1.createNotation)(['NeutrallineTarget_DCT']));
6466
- //let dcNeutralLine:DCLineSegment = new DCLineSegment(getUUID(undefined), createNotation([getName(i7Data), '_neutral','_DCLS'],32,true), createNotation([i7Data.kurzname,'_neg'],12,true), 'neutral line not contained in INT7 data model');
6467
- if (dcNodeM1 !== undefined) {
6468
- dcNodeM1.dcTerminals.set(dcTerminalN1.getUUID(), dcTerminalN1);
6469
- acdcConverterStart.dCTerminals.set(dcTerminalN1.getUUID(), dcTerminalN1);
6470
- }
6471
- else {
6472
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_dcnodem1);
6473
- dcNodeM1 = new DCNode_1.DCNode(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_DCCN'], 32, true), 'M1');
6474
- dcNodeM1.dcTerminals.set(dcTerminalN1.getUUID(), dcTerminalN1);
6475
- dcTerminalN1.dCConductingEquipment = undefined;
6476
- }
6477
- if (dcNodeM2 !== undefined) {
6478
- dcNodeM2.dcTerminals.set(dcTerminalN2.getUUID(), dcTerminalN2);
6479
- }
6480
- else {
6481
- const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_dcnodem2);
6482
- dcNodeM2 = new DCNode_1.DCNode(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_DCCN'], 32, true), 'M2');
6483
- dcNodeM2.dcTerminals.set(dcTerminalN2.getUUID(), dcTerminalN2);
6484
- }
6485
- cimModel.addACDCConverterDCTerminal(dcTerminalN1);
6486
- cimModel.addACDCConverterDCTerminal(dcTerminalN2);
6487
- //cimModel.addDCLineSegment(dcNeutralLineSegment);
6488
- //cimModel.addDCLine(dcNeutralLine);
6489
- }
6490
6282
  function logExecutionTime(logger, startTime, text) {
6491
6283
  logger.debug(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6492
6284
  console.log(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
6493
6285
  }
6286
+ function createDCGround(acdcConverter) {
6287
+ // TODO
6288
+ return new DCGround_1.DCGround();
6289
+ }
6290
+ exports.createDCGround = createDCGround;
6291
+ function createNeutralGroundReturn(dcConverterUnit1, dcConverterUnit12) {
6292
+ // TODO
6293
+ }
6294
+ exports.createNeutralGroundReturn = createNeutralGroundReturn;
6295
+ function connectDCGround(acdcConverter) {
6296
+ // TODO
6297
+ }
6298
+ exports.connectDCGround = connectDCGround;
6494
6299
  //# sourceMappingURL=converter.integral7.js.map