@enervance/insight-cim-model 0.0.152 → 0.0.156
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.
- package/dist/converter/PSDM/ConverterPowerSystemDataModel.js.map +1 -1
- package/dist/converter/integral7/config/integral-prefix.d.ts +2 -0
- package/dist/converter/integral7/config/integral-prefix.js +3 -1
- package/dist/converter/integral7/config/integral-prefix.js.map +1 -1
- package/dist/converter/integral7/converter.integral7.d.ts +14 -21
- package/dist/converter/integral7/converter.integral7.js +958 -763
- package/dist/converter/integral7/converter.integral7.js.map +1 -1
- package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +1 -1
- package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
- package/dist/converter/integral7/interface-i7/IDefaultValuesConfig.d.ts +3 -0
- package/dist/converter/integral7/interface-i7/data-structures-i7.d.ts +3 -3
- package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +2 -2
- package/dist/converter/integral7/interface-i7/export-frame-i7.js +3 -0
- package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
- package/dist/converter/integral7/model/dl-utils/util-functions.js.map +1 -1
- package/dist/converter/integral7/model/integral/HgueleitungImpl.d.ts +24 -0
- package/dist/converter/integral7/model/integral/HgueleitungImpl.js +7 -0
- package/dist/converter/integral7/model/integral/HgueleitungImpl.js.map +1 -0
- package/dist/converter/integral7/model/interfaces.d.ts +93 -31
- package/dist/converter/integral7/model/interfaces.js.map +1 -1
- package/dist/converter/integral7/sql/integral.sql.d.ts +4 -1
- package/dist/converter/integral7/sql/integral.sql.js +20 -14
- package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
- package/dist/converter/integral7/utils-cgmes-export.js +3 -0
- package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
- package/dist/converter/integral7/utils.d.ts +14 -2
- package/dist/converter/integral7/utils.js +79 -50
- package/dist/converter/integral7/utils.js.map +1 -1
- package/dist/etl/etl-neplan/etl-neplan.js +9 -3
- package/dist/etl/etl-neplan/etl-neplan.js.map +1 -1
- package/dist/model/assetinfo/WireInfo.d.ts +1 -0
- package/dist/model/assetinfo/WireInfo.js.map +1 -1
- package/dist/model/common/PositionPoint.js +3 -18
- package/dist/model/common/PositionPoint.js.map +1 -1
- package/dist/model/core/ACDCTerminal.js.map +1 -1
- package/dist/model/core/IdentifiedObject.js +9 -3
- package/dist/model/core/IdentifiedObject.js.map +1 -1
- package/dist/model/core/Terminal.js +2 -2
- package/dist/model/core/Terminal.js.map +1 -1
- package/dist/model/dc/ACDCConverterDCTerminal.js +1 -0
- package/dist/model/dc/ACDCConverterDCTerminal.js.map +1 -1
- package/dist/model/dc/CsConverter.js.map +1 -1
- package/dist/model/dc/DCConverterUnit.d.ts +1 -0
- package/dist/model/dc/DCConverterUnit.js +3 -0
- package/dist/model/dc/DCConverterUnit.js.map +1 -1
- package/dist/model/dc/DCTerminal.js +1 -0
- package/dist/model/dc/DCTerminal.js.map +1 -1
- package/dist/model/diagram/Diagram.js +2 -0
- package/dist/model/diagram/Diagram.js.map +1 -1
- package/dist/model/extensions/amprion/equivalents/INTEGRALEquivalentBranch.js +2 -9
- package/dist/model/extensions/amprion/equivalents/INTEGRALEquivalentBranch.js.map +1 -1
- package/dist/model/extensions/integral/loadmodel/INTEGRALConformLoad.d.ts +1 -0
- package/dist/model/extensions/integral/loadmodel/INTEGRALConformLoad.js +3 -0
- package/dist/model/extensions/integral/loadmodel/INTEGRALConformLoad.js.map +1 -1
- package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js +1 -1
- package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js.map +1 -1
- package/dist/model/extensions/integral/wires/INTEGRALExternalNetworkInjection.d.ts +1 -0
- package/dist/model/extensions/integral/wires/INTEGRALExternalNetworkInjection.js +6 -3
- package/dist/model/extensions/integral/wires/INTEGRALExternalNetworkInjection.js.map +1 -1
- package/dist/model/extensions/integral/wires/INTEGRALSynchronousMachine.d.ts +1 -0
- package/dist/model/extensions/integral/wires/INTEGRALSynchronousMachine.js +7 -1
- package/dist/model/extensions/integral/wires/INTEGRALSynchronousMachine.js.map +1 -1
- package/dist/model/operationallimits/ApparentPowerLimit.d.ts +15 -0
- package/dist/model/operationallimits/ApparentPowerLimit.js +56 -0
- package/dist/model/operationallimits/ApparentPowerLimit.js.map +1 -0
- package/dist/model/operations/ControlArea.d.ts +1 -0
- package/dist/model/operations/ControlArea.js +6 -2
- package/dist/model/operations/ControlArea.js.map +1 -1
- package/dist/model/wires/Breaker.js +1 -1
- package/dist/model/wires/Breaker.js.map +1 -1
- package/dist/model/wires/Disconnector.js +1 -1
- package/dist/model/wires/Disconnector.js.map +1 -1
- package/dist/model/wires/ExternalNetworkInjection.js +4 -4
- package/dist/model/wires/ExternalNetworkInjection.js.map +1 -1
- package/dist/model/wires/PhaseTapChangerAsymmetrical.js +1 -1
- package/dist/model/wires/PhaseTapChangerAsymmetrical.js.map +1 -1
- package/dist/model/wires/PhaseTapChangerSymmetrical.js +1 -1
- package/dist/model/wires/PhaseTapChangerSymmetrical.js.map +1 -1
- package/dist/model/wires/TapChangerTablePoint.js +6 -18
- package/dist/model/wires/TapChangerTablePoint.js.map +1 -1
- package/dist/model-container/model/ModelContainer.d.ts +5 -1
- package/dist/model-container/model/ModelContainer.js +13 -1
- package/dist/model-container/model/ModelContainer.js.map +1 -1
- package/dist/util/collection/util-graph2tree.d.ts +1 -0
- package/dist/util/collection/util-graph2tree.js +65 -2
- package/dist/util/collection/util-graph2tree.js.map +1 -1
- package/dist/util/util-create.d.ts +1 -1
- package/dist/util/util-create.js +31 -19
- package/dist/util/util-create.js.map +1 -1
- package/dist/util/util-test.js +0 -109
- package/dist/util/util-test.js.map +1 -1
- package/dist/utils2/parser.utils.d.ts +1 -1
- package/dist/utils2/parser.utils.js +41 -20
- package/dist/utils2/parser.utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/converter/integral7/ConverterIntegral7.d.ts +0 -0
- package/dist/converter/integral7/ConverterIntegral7.js +0 -1
- package/dist/converter/integral7/ConverterIntegral7.js.map +0 -1
- package/dist/converter/integral7/model/integral/Hgueleitung.d.ts +0 -12
- package/dist/converter/integral7/model/integral/Hgueleitung.js +0 -3
- package/dist/converter/integral7/model/integral/Hgueleitung.js.map +0 -1
- package/dist/converter/integral7/model/integral/Kopfstation.d.ts +0 -44
- package/dist/converter/integral7/model/integral/Kopfstation.js +0 -10
- package/dist/converter/integral7/model/integral/Kopfstation.js.map +0 -1
- package/dist/model/model/Model.d.ts +0 -0
- package/dist/model/model/Model.js +0 -1
- package/dist/model/model/Model.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
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,6 +21,7 @@ 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");
|
|
24
25
|
const ACDCConverterDCTerminal_1 = require("../../model/dc/ACDCConverterDCTerminal.js");
|
|
25
26
|
const CsConverter_1 = require("../../model/dc/CsConverter.js");
|
|
26
27
|
const CsOperatingModeKind_1 = require("../../model/dc/CsOperatingModeKind.js");
|
|
@@ -65,7 +66,6 @@ const LimitTypeKind_1 = require("../../model/operationallimits/LimitTypeKind.js"
|
|
|
65
66
|
const OperationalLimitDirectionKind_1 = require("../../model/operationallimits/OperationalLimitDirectionKind.js");
|
|
66
67
|
const OperationalLimitSet_1 = require("../../model/operationallimits/OperationalLimitSet.js");
|
|
67
68
|
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,7 +86,6 @@ 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");
|
|
90
89
|
const RegulatingControlModeKind_1 = require("../../model/wires/RegulatingControlModeKind.js");
|
|
91
90
|
const StaticVarCompensator_1 = require("../../model/wires/StaticVarCompensator.js");
|
|
92
91
|
const SynchronousMachineKind_1 = require("../../model/wires/SynchronousMachineKind.js");
|
|
@@ -128,13 +127,18 @@ const INTEGRALEquivalentBranch_1 = require("../../model/extensions/amprion/equiv
|
|
|
128
127
|
const PhaseTapChangerLinear_1 = require("../../model/wires/PhaseTapChangerLinear.js");
|
|
129
128
|
const DCConverterUnit_1 = require("../../model/extensions/integral/dc/DCConverterUnit.js");
|
|
130
129
|
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");
|
|
131
136
|
const executor_1 = require("./dl-convert/executor.js");
|
|
132
137
|
const Diagram_1 = require("../../model/diagram/Diagram.js");
|
|
133
138
|
const DiagramObject_1 = require("../../model/diagram/DiagramObject.js");
|
|
134
139
|
const util_asset_model_1 = require("./util-asset.model.js");
|
|
135
140
|
const cim_constants_1 = require("../../constants/cim-constants.js");
|
|
136
141
|
const EVWireObject_1 = require("../../model/extensions/enervance/assets/EVWireObject.js");
|
|
137
|
-
const SynchronousMachine_1 = require("../../model/wires/SynchronousMachine.js");
|
|
138
142
|
class ConverterIntegral7 {
|
|
139
143
|
constructor() {
|
|
140
144
|
/** Exportnetze gemäß Konfiguration */
|
|
@@ -289,18 +293,22 @@ class ConverterIntegral7 {
|
|
|
289
293
|
startTime = perf_hooks.performance.now();
|
|
290
294
|
/** Standort -> Substation */
|
|
291
295
|
yield this.convertStandorte(cimModel, integral7Modell, subGeoRegionsI7IDs, defaultValuesConfig);
|
|
292
|
-
logExecutionTime(this.logger, startTime, `convertStandorte(${
|
|
296
|
+
logExecutionTime(this.logger, startTime, `convertStandorte(${integral7Modell.integralStandorte.size})`);
|
|
293
297
|
startTime = perf_hooks.performance.now();
|
|
294
298
|
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 */
|
|
295
303
|
if (standortIDs.length)
|
|
296
304
|
yield this.convertSchaltanlagen(cimModel, integral7Modell, standortIDs, defaultValuesConfig);
|
|
297
|
-
logExecutionTime(this.logger, startTime, `convertSchaltanlagen(${
|
|
305
|
+
logExecutionTime(this.logger, startTime, `convertSchaltanlagen(${integral7Modell.integralSchaltanlagen.size})`);
|
|
298
306
|
startTime = perf_hooks.performance.now();
|
|
299
307
|
const schaltanlagenIDs = [...integral7Modell.integralSchaltanlagen.keys()];
|
|
300
308
|
/** Schaltanlagenabschnitte -> mappen auf bereits erstelltes VoltageLevel-Objekt (Schaltanlage) */
|
|
301
309
|
if (schaltanlagenIDs.length)
|
|
302
310
|
yield this.convertSchaltanlagenAbschnitte(cimModel, integral7Modell, schaltanlagenIDs);
|
|
303
|
-
logExecutionTime(this.logger, startTime, `convertSchaltanlagenAbschnitte(${
|
|
311
|
+
logExecutionTime(this.logger, startTime, `convertSchaltanlagenAbschnitte(${integral7Modell.integralSchaltanlagenAbschnitte.size})`);
|
|
304
312
|
/** Schaltfelder -> Bay */
|
|
305
313
|
startTime = perf_hooks.performance.now();
|
|
306
314
|
const schaltanlagenAbschnittIDs = [...integral7Modell.integralSchaltanlagenAbschnitte.keys()];
|
|
@@ -417,34 +425,34 @@ class ConverterIntegral7 {
|
|
|
417
425
|
yield this.convertAsynchronmotor(cimModel, soSfKnoten, defaultValuesConfig);
|
|
418
426
|
logExecutionTime(this.logger, startTime, `convertAsynchronmotor`);
|
|
419
427
|
}
|
|
420
|
-
/** Einspeisungen -> EnergySources */
|
|
428
|
+
/** Einspeisungen -> EnergySources or EquivalentInjection or ExternalNetworkInjection */
|
|
421
429
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
422
|
-
startTime =
|
|
423
|
-
yield this.convertEinspeisungen(cimModel, soSfKnoten, objectMappingConfig
|
|
430
|
+
startTime = performance.now();
|
|
431
|
+
yield this.convertEinspeisungen(cimModel, integral7Modell.targetVoltages, soSfKnoten, objectMappingConfig);
|
|
424
432
|
logExecutionTime(this.logger, startTime, `convertEinspeisungen`);
|
|
425
433
|
}
|
|
426
434
|
/** Generatoren -> SynchronousMachine */
|
|
427
435
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
428
|
-
startTime =
|
|
429
|
-
|
|
436
|
+
startTime = performance.now();
|
|
437
|
+
yield this.convertGeneratoren(cimModel, integral7Modell.targetVoltages, soSfKnoten, energyTypesConfig);
|
|
430
438
|
logExecutionTime(this.logger, startTime, `convertGeneratoren`);
|
|
431
439
|
}
|
|
432
440
|
/** KWBlöcke -> SynchronousMachine */
|
|
433
441
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
434
442
|
startTime = perf_hooks.performance.now();
|
|
435
|
-
|
|
443
|
+
yield this.convertKraftwerksbloecke(cimModel, integral7Modell.targetVoltages, soSfKnoten, energyTypesConfig);
|
|
436
444
|
logExecutionTime(this.logger, startTime, `convertKraftwerksbloecke`);
|
|
437
445
|
}
|
|
438
446
|
/** Ersatzquerzweige -> ExternalNetworkInjection */
|
|
439
447
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
440
|
-
startTime =
|
|
441
|
-
yield this.convertErsatzQuerZweige(cimModel, soSfKnoten, objectMappingConfig.Ersatzquerzweig.class);
|
|
448
|
+
startTime = performance.now();
|
|
449
|
+
yield this.convertErsatzQuerZweige(cimModel, integral7Modell.targetVoltages, soSfKnoten, objectMappingConfig.Ersatzquerzweig.class);
|
|
442
450
|
logExecutionTime(this.logger, startTime, `convertErsatzQuerZweige`);
|
|
443
451
|
}
|
|
444
452
|
/** Randnetzeinspeisungen -> ExternalNetworkInjection */
|
|
445
453
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
446
|
-
startTime =
|
|
447
|
-
yield this.convertBoundaryInjections(cimModel, soSfKnoten, objectMappingConfig.Randnetzeinspeisung.class);
|
|
454
|
+
startTime = performance.now();
|
|
455
|
+
yield this.convertBoundaryInjections(cimModel, integral7Modell.targetVoltages, soSfKnoten, objectMappingConfig.Randnetzeinspeisung.class);
|
|
448
456
|
logExecutionTime(this.logger, startTime, `convertBoundaryInjections`);
|
|
449
457
|
}
|
|
450
458
|
/** Kompensationsdrossel -> LinearShuntCompensator */
|
|
@@ -477,16 +485,16 @@ class ConverterIntegral7 {
|
|
|
477
485
|
/** Sonderfall mit Trafo
|
|
478
486
|
* Trafos müssen zuertst konvertiert werden. */
|
|
479
487
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
480
|
-
startTime =
|
|
481
|
-
yield this.convertStatcom(cimModel, soSfKnoten);
|
|
488
|
+
startTime = performance.now();
|
|
489
|
+
yield this.convertStatcom(cimModel, integral7Modell.targetVoltages, soSfKnoten);
|
|
482
490
|
logExecutionTime(this.logger, startTime, `convertStatcom`);
|
|
483
491
|
}
|
|
484
492
|
/** SVC -> StaticVarCompensator */
|
|
485
493
|
/** Sonderfall mit Trafo
|
|
486
494
|
* Trafos müssen zuertst konvertiert werden.*/
|
|
487
495
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
488
|
-
startTime =
|
|
489
|
-
yield this.convertSVC(cimModel, soSfKnoten);
|
|
496
|
+
startTime = performance.now();
|
|
497
|
+
yield this.convertSVC(cimModel, integral7Modell.targetVoltages, soSfKnoten);
|
|
490
498
|
logExecutionTime(this.logger, startTime, `convertSVC`);
|
|
491
499
|
}
|
|
492
500
|
/** HGÜ Knoten */
|
|
@@ -497,13 +505,13 @@ class ConverterIntegral7 {
|
|
|
497
505
|
/** HGÜ Kopfklassisch */
|
|
498
506
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
499
507
|
startTime = perf_hooks.performance.now();
|
|
500
|
-
|
|
508
|
+
yield this.convertCsConverterDC(cimModel, integral7Modell, soSfKnoten);
|
|
501
509
|
logExecutionTime(this.logger, startTime, `convertCsConverterDC`);
|
|
502
510
|
}
|
|
503
511
|
/** netz_hguekopfvsc */
|
|
504
512
|
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
505
513
|
startTime = perf_hooks.performance.now();
|
|
506
|
-
|
|
514
|
+
yield this.convertVsConverterDC(cimModel, integral7Modell.targetVoltages, integral7Modell, soSfKnoten);
|
|
507
515
|
logExecutionTime(this.logger, startTime, `convertVsConverterDC`);
|
|
508
516
|
}
|
|
509
517
|
/** HGÜ-Leitungen -> (DCLine, DCLineSegment)*/
|
|
@@ -615,7 +623,7 @@ class ConverterIntegral7 {
|
|
|
615
623
|
}
|
|
616
624
|
}
|
|
617
625
|
else {
|
|
618
|
-
|
|
626
|
+
this.logger.debug(`debug --- DCTerminal ${terminalUUID} hat kein angeschlossenes DCConductingEquipment`);
|
|
619
627
|
}
|
|
620
628
|
}
|
|
621
629
|
}
|
|
@@ -635,7 +643,7 @@ class ConverterIntegral7 {
|
|
|
635
643
|
}
|
|
636
644
|
}
|
|
637
645
|
else {
|
|
638
|
-
|
|
646
|
+
this.logger.debug(`debug --- Terminal ${terminalUUID} hat kein angeschlossenes ConductingEquipment`);
|
|
639
647
|
}
|
|
640
648
|
}
|
|
641
649
|
}
|
|
@@ -655,7 +663,7 @@ class ConverterIntegral7 {
|
|
|
655
663
|
}
|
|
656
664
|
}
|
|
657
665
|
else {
|
|
658
|
-
|
|
666
|
+
this.logger.debug(`debug --- ACDCConverterDCTerminal ${terminalUUID} hat kein angeschlossenes DCConductingEquipment`);
|
|
659
667
|
}
|
|
660
668
|
}
|
|
661
669
|
}
|
|
@@ -689,19 +697,22 @@ class ConverterIntegral7 {
|
|
|
689
697
|
}));
|
|
690
698
|
});
|
|
691
699
|
}
|
|
692
|
-
convertRegelzone(cimModel, defaultValuesConfig) {
|
|
700
|
+
convertRegelzone(cimModel, defaultValuesConfig, standortIDs) {
|
|
693
701
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
694
702
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.REGELZONE)) {
|
|
695
|
-
const
|
|
696
|
-
|
|
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) {
|
|
697
706
|
const i7Schluessel = integral_prefix_1.REGELZONE_PRAEFIX + (0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
|
|
698
|
-
const ctrlarea = new ControlArea_1.ControlArea((0, parser_utils_1.getUUID)(i7Data.guid
|
|
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;
|
|
699
710
|
cimModel.addControlArea(ctrlarea);
|
|
700
711
|
this.addIdMapping(i7Data.id, ctrlarea.mrid, integral_sql_1.Integral7TableNames.REGELZONE);
|
|
701
712
|
}
|
|
702
713
|
}
|
|
703
714
|
else {
|
|
704
|
-
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.REGELZONE} ist nicht vorhanden.`);
|
|
715
|
+
this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.REGELZONE} ist nicht vorhanden.`);
|
|
705
716
|
}
|
|
706
717
|
});
|
|
707
718
|
}
|
|
@@ -748,6 +759,10 @@ class ConverterIntegral7 {
|
|
|
748
759
|
for (const i7Data of result) {
|
|
749
760
|
const i7name = (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', (0, utils_2.ueberpruefeZeichenkette)(i7Data.ukz), '_S'], 32);
|
|
750
761
|
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);
|
|
751
766
|
let subregion = cimModel.getSubGeographicalRegion(this.integralID2UUID.get(i7Data.subgeoregion));
|
|
752
767
|
if (!subregion) {
|
|
753
768
|
const region = (0, utils_1.createIfNotExitsGeoregionByName)(cimModel, defaultValuesConfig.GeographicalRegion.name);
|
|
@@ -893,8 +908,9 @@ class ConverterIntegral7 {
|
|
|
893
908
|
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));
|
|
894
909
|
for (const i7Data of result) {
|
|
895
910
|
const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
|
|
896
|
-
const vl = new VoltageLevel_1.VoltageLevel(
|
|
897
|
-
const rdfid =
|
|
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);
|
|
898
914
|
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);
|
|
899
915
|
connectivityNode.setConnectivityNodeContainer(vl);
|
|
900
916
|
vl.addConnectivityNode(connectivityNode);
|
|
@@ -946,8 +962,8 @@ class ConverterIntegral7 {
|
|
|
946
962
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_KNOTEN)) {
|
|
947
963
|
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));
|
|
948
964
|
for (const i7Data of result) {
|
|
949
|
-
const
|
|
950
|
-
const dcNode = new DCNode_1.DCNode(
|
|
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);
|
|
951
967
|
cimModel.addDCNode(dcNode);
|
|
952
968
|
this.addIdMapping(i7Data.id, dcNode.mrid, integral_sql_1.Integral7TableNames.HGUE_KNOTEN);
|
|
953
969
|
}
|
|
@@ -967,7 +983,8 @@ class ConverterIntegral7 {
|
|
|
967
983
|
busbarSection.ipMax = i7Data.limit_ip;
|
|
968
984
|
// die Sammelschienen sind nicht aggregiert.
|
|
969
985
|
busbarSection.aggregate = false;
|
|
970
|
-
const rdfid =
|
|
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);
|
|
971
988
|
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);
|
|
972
989
|
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Schaltanlagenabschnitt.id));
|
|
973
990
|
connectivityNode.nodeNumber = i7Data.id_psse_cape;
|
|
@@ -977,14 +994,14 @@ class ConverterIntegral7 {
|
|
|
977
994
|
connectivityNode.connectivityNodeContainer = voltageLevel;
|
|
978
995
|
voltageLevel.addConnectivityNode(connectivityNode);
|
|
979
996
|
// umax
|
|
980
|
-
voltageLevel.highVoltageLimit = i7Data.umax;
|
|
997
|
+
voltageLevel.highVoltageLimit = (0, parser_utils_1.isNumericI7)(i7Data.umax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.umax) : voltageLevel.highVoltageLimit;
|
|
981
998
|
// umin
|
|
982
|
-
voltageLevel.lowVoltageLimit = i7Data.umin;
|
|
983
|
-
const i7Schluessel = voltageLevel.
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
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;*/
|
|
988
1005
|
/** Spannungsband */
|
|
989
1006
|
integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
|
|
990
1007
|
// TODO VoltageLimits?
|
|
@@ -1125,13 +1142,18 @@ class ConverterIntegral7 {
|
|
|
1125
1142
|
cimModel.addMultiplierFactor(mf);
|
|
1126
1143
|
load.multiplierFactorUUID = mf.getUUID();
|
|
1127
1144
|
}
|
|
1145
|
+
if (load.getUUID() === '7c1d4120-fdaf-4bc1-aba1-9e8e76aa7a3b') {
|
|
1146
|
+
const stop = true;
|
|
1147
|
+
}
|
|
1128
1148
|
/** SSH */
|
|
1129
1149
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
|
|
1130
1150
|
load.p = powerData[0];
|
|
1131
1151
|
load.q = powerData[1];
|
|
1132
|
-
/**
|
|
1152
|
+
/** AMPI7 profile */
|
|
1133
1153
|
load.p_mf = powerData[2] ? powerData[2] : undefined;
|
|
1134
1154
|
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;
|
|
1135
1157
|
//TODO
|
|
1136
1158
|
/* conformLoad.pFixed = conformLoad.p;
|
|
1137
1159
|
conformLoad.qFixed = conformLoad.q; */
|
|
@@ -1149,9 +1171,8 @@ class ConverterIntegral7 {
|
|
|
1149
1171
|
}
|
|
1150
1172
|
});
|
|
1151
1173
|
}
|
|
1152
|
-
convertEinspeisungen(cimModel, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
|
|
1174
|
+
convertEinspeisungen(cimModel, targetVoltages, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
|
|
1153
1175
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1154
|
-
const targetConfig = objectMappingConfig.Einspeisung;
|
|
1155
1176
|
const targetClass = objectMappingConfig.Einspeisung.class;
|
|
1156
1177
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.EINSPEISUNG)) {
|
|
1157
1178
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.EINSPEISUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.EINSPEISUNG), knotenSfIDs));
|
|
@@ -1161,7 +1182,7 @@ class ConverterIntegral7 {
|
|
|
1161
1182
|
break;
|
|
1162
1183
|
}
|
|
1163
1184
|
case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
|
|
1164
|
-
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, result);
|
|
1185
|
+
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result);
|
|
1165
1186
|
break;
|
|
1166
1187
|
}
|
|
1167
1188
|
case cim_class_names_1.ClassNames.EnergySource: {
|
|
@@ -1169,17 +1190,17 @@ class ConverterIntegral7 {
|
|
|
1169
1190
|
const filtered = result.filter(it => it.spannungsgeregelt && it.einspprio === config.prio);
|
|
1170
1191
|
switch (config.class) {
|
|
1171
1192
|
case 'ExternalNetworkInjection': {
|
|
1172
|
-
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, filtered);
|
|
1193
|
+
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, filtered);
|
|
1173
1194
|
break;
|
|
1174
1195
|
}
|
|
1175
1196
|
case 'SynchronousMachine': {
|
|
1176
|
-
yield this.convertEnergySourceToSynchronousMachine(cimModel, filtered);
|
|
1197
|
+
yield this.convertEnergySourceToSynchronousMachine(cimModel, targetVoltages, filtered);
|
|
1177
1198
|
break;
|
|
1178
1199
|
}
|
|
1179
1200
|
}
|
|
1180
1201
|
}
|
|
1181
1202
|
const i7EnergySourceResults = result.filter(it => !it.spannungsgeregelt);
|
|
1182
|
-
yield this.convertEinspeisungen2EnergySource(cimModel, i7EnergySourceResults, energySourceTypeMappingConfig);
|
|
1203
|
+
yield this.convertEinspeisungen2EnergySource(cimModel, targetVoltages, i7EnergySourceResults, energySourceTypeMappingConfig);
|
|
1183
1204
|
const others = result.filter(it => !it.spannungsgeregelt && !it.einspprio);
|
|
1184
1205
|
console.log(`convertEinspeisungen nicht konvertierte Objekte ${others.length}`);
|
|
1185
1206
|
break;
|
|
@@ -1191,21 +1212,21 @@ class ConverterIntegral7 {
|
|
|
1191
1212
|
}
|
|
1192
1213
|
});
|
|
1193
1214
|
}
|
|
1194
|
-
convertErsatzQuerZweige(cimModel, knotenSfIDs, targetClass) {
|
|
1215
|
+
convertErsatzQuerZweige(cimModel, targetVoltages, knotenSfIDs, targetClass) {
|
|
1195
1216
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1196
1217
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
|
|
1197
1218
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.ERSATZQUERZWEIG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG), knotenSfIDs));
|
|
1198
1219
|
switch (targetClass) {
|
|
1199
1220
|
case cim_class_names_1.ClassNames.EquivalentInjection: {
|
|
1200
|
-
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, result);
|
|
1221
|
+
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1201
1222
|
break;
|
|
1202
1223
|
}
|
|
1203
1224
|
case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
|
|
1204
|
-
yield this.convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, result);
|
|
1225
|
+
yield this.convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, targetVoltages, result);
|
|
1205
1226
|
break;
|
|
1206
1227
|
}
|
|
1207
1228
|
default: {
|
|
1208
|
-
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, result);
|
|
1229
|
+
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1209
1230
|
}
|
|
1210
1231
|
}
|
|
1211
1232
|
}
|
|
@@ -1214,7 +1235,7 @@ class ConverterIntegral7 {
|
|
|
1214
1235
|
}
|
|
1215
1236
|
});
|
|
1216
1237
|
}
|
|
1217
|
-
convertGeneratoren(cimModel, knotenSfIDs, energyTypesConfig) {
|
|
1238
|
+
convertGeneratoren(cimModel, targetVoltages, knotenSfIDs, energyTypesConfig) {
|
|
1218
1239
|
var _a;
|
|
1219
1240
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1220
1241
|
// Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
|
|
@@ -1224,6 +1245,7 @@ class ConverterIntegral7 {
|
|
|
1224
1245
|
const genType = this.generatorTypen.get(i7Data.nametyp);
|
|
1225
1246
|
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);
|
|
1226
1247
|
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;
|
|
1227
1249
|
const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
|
|
1228
1250
|
const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
|
|
1229
1251
|
const mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
|
|
@@ -1234,7 +1256,9 @@ class ConverterIntegral7 {
|
|
|
1234
1256
|
const isRotatingPhaseShifter = (mf !== undefined && maxP === 0 && minP === 0) || flagCondenserOperationMode;
|
|
1235
1257
|
const isGenerator = (maxP > 0 || maxP === undefined);
|
|
1236
1258
|
const isMotor = (minP < 0 || minP === undefined);
|
|
1259
|
+
/**AMPI7 profile */
|
|
1237
1260
|
synchronousMachine.nameprimaertyp = i7Data.nameprimaertyp !== undefined ? i7Data.nameprimaertyp : (genType !== undefined ? genType.nameprimaertyp : undefined);
|
|
1261
|
+
synchronousMachine.cos_phi = cosPhi;
|
|
1238
1262
|
/** Set machine type */
|
|
1239
1263
|
if (isRotatingPhaseShifter && isGenerator && isMotor) {
|
|
1240
1264
|
synchronousMachine.type = SynchronousMachineKind_1.SynchronousMachineKind.generatorOrCondenserOrMotor;
|
|
@@ -1303,16 +1327,24 @@ class ConverterIntegral7 {
|
|
|
1303
1327
|
}
|
|
1304
1328
|
const prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
|
|
1305
1329
|
synchronousMachine.referencePriority = prio;
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
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;
|
|
1312
1342
|
synchronousMachine.maxQ = maxQ ? maxQ : maxQvonPmax;
|
|
1313
1343
|
synchronousMachine.minQ = minQ ? minQ : minQvonPmin;
|
|
1314
1344
|
const pType = (genType === null || genType === void 0 ? void 0 : genType.sr) * (genType === null || genType === void 0 ? void 0 : genType.cosphir);
|
|
1315
1345
|
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;
|
|
1316
1348
|
// SSH Profil
|
|
1317
1349
|
synchronousMachine.setActivePower(p * -1); //convert to load sign system
|
|
1318
1350
|
synchronousMachine.setReactivePower(q * -1); //convert to load sign system
|
|
@@ -1339,21 +1371,21 @@ class ConverterIntegral7 {
|
|
|
1339
1371
|
/** EQ-SC */
|
|
1340
1372
|
synchronousMachine.earthing = ((_a = i7Data.erdung) === null || _a === void 0 ? void 0 : _a.length) > 0 && i7Data.erdung != 'isoliert' ? true : false;
|
|
1341
1373
|
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);
|
|
1342
|
-
synchronousMachine.r0 =
|
|
1374
|
+
synchronousMachine.r0 = 0;
|
|
1343
1375
|
synchronousMachine.r2 = 0;
|
|
1344
|
-
synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
1376
|
+
synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0g) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0g) : undefined;
|
|
1345
1377
|
synchronousMachine.x2 = 0;
|
|
1346
1378
|
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);
|
|
1347
1379
|
// synchronousMachine.earthingStarPointR
|
|
1348
1380
|
// synchronousMachine.earthingStarPointX
|
|
1349
|
-
synchronousMachine.ikk = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
1381
|
+
synchronousMachine.ikk = (0, parser_utils_1.isNumericI7)(i7Data.ikd) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ikd) : undefined;
|
|
1350
1382
|
// synchronousMachine.mu: number;
|
|
1351
1383
|
// synchronousMachine.satDirectSyncX: number;
|
|
1352
1384
|
// synchronousMachine.satDirectTransX: number;
|
|
1353
1385
|
// synchronousMachine.shortCircuitRotorType: ShortCircuitRotorKind;
|
|
1354
1386
|
// synchronousMachine.voltageRegulationRange: number;
|
|
1355
1387
|
/** Create ReactiveCapabilityCurves */
|
|
1356
|
-
if (minP && maxP && minQvonPmin && maxQvonPmax) {
|
|
1388
|
+
if (minP !== undefined && maxP !== undefined && minQvonPmin != undefined && maxQvonPmax !== undefined) {
|
|
1357
1389
|
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']));
|
|
1358
1390
|
reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
|
|
1359
1391
|
reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
|
|
@@ -1376,26 +1408,6 @@ class ConverterIntegral7 {
|
|
|
1376
1408
|
cimModel.addReactiveCapabilityCurve(reactiveCapabilityCurve);
|
|
1377
1409
|
synchronousMachine.initialReactiveCapabilityCurveUUID = reactiveCapabilityCurve.mrid;
|
|
1378
1410
|
}
|
|
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
|
-
}
|
|
1399
1411
|
/** GeneratingUnit section*/
|
|
1400
1412
|
let generatingUnit;
|
|
1401
1413
|
if (synchronousMachine.type !== SynchronousMachineKind_1.SynchronousMachineKind.condenser) {
|
|
@@ -1486,7 +1498,7 @@ class ConverterIntegral7 {
|
|
|
1486
1498
|
generatingUnit.addRotatingMachine(synchronousMachine);
|
|
1487
1499
|
synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
|
|
1488
1500
|
}
|
|
1489
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data,
|
|
1501
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages, generatingUnit);
|
|
1490
1502
|
const smtcr = new SynchronousMachineTimeConstantReactance_1.SynchronousMachineTimeConstantReactance(common_utils_1.CommonUtils.generateUUID(), `smtcr_${synchronousMachine.name}`);
|
|
1491
1503
|
smtcr.enabled = inBetrieb;
|
|
1492
1504
|
// TODO: default value?
|
|
@@ -1530,12 +1542,9 @@ class ConverterIntegral7 {
|
|
|
1530
1542
|
}
|
|
1531
1543
|
});
|
|
1532
1544
|
}
|
|
1533
|
-
convertEnergySourceToSynchronousMachine(cimModel, result) {
|
|
1545
|
+
convertEnergySourceToSynchronousMachine(cimModel, targetVoltages, result) {
|
|
1534
1546
|
for (const i7Data of result) {
|
|
1535
1547
|
try {
|
|
1536
|
-
if (i7Data.guid.toLowerCase().includes('_e11f3fe9-0b7a-4ff1-a0dc-214c4c3fd8cc')) {
|
|
1537
|
-
console.log();
|
|
1538
|
-
}
|
|
1539
1548
|
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);
|
|
1540
1549
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
1541
1550
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data);
|
|
@@ -1558,28 +1567,7 @@ class ConverterIntegral7 {
|
|
|
1558
1567
|
const usoll = +i7Data.usoll;
|
|
1559
1568
|
synchronousMachine.ratedU = usoll;
|
|
1560
1569
|
synchronousMachine.aggregate = true;
|
|
1561
|
-
|
|
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);
|
|
1570
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages);
|
|
1583
1571
|
cimModel.addSynchronousMachine(synchronousMachine);
|
|
1584
1572
|
this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.GENERATOR);
|
|
1585
1573
|
}
|
|
@@ -1595,41 +1583,48 @@ class ConverterIntegral7 {
|
|
|
1595
1583
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getNetzQuery)(integral_sql_1.I7Objects.ASYNCHRONMOTOR, 0, 0, knotenSfIDs));
|
|
1596
1584
|
for (const i7Data of result) {
|
|
1597
1585
|
const assetType = this.asynchronmotorTypen.get(i7Data.nametyp);
|
|
1598
|
-
const
|
|
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);
|
|
1599
1592
|
let mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
|
|
1600
1593
|
if (mf) {
|
|
1601
1594
|
cimModel.addMultiplierFactor(mf);
|
|
1602
1595
|
asynchronousMachine.multiplierFactorUUID = mf.getUUID();
|
|
1603
1596
|
}
|
|
1604
|
-
asynchronousMachine.
|
|
1605
|
-
|
|
1606
|
-
asynchronousMachine.
|
|
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;
|
|
1597
|
+
asynchronousMachine.normallyInService = inBetrieb;
|
|
1598
|
+
//EQ core profile content
|
|
1599
|
+
asynchronousMachine.ratedPowerFactor = cosphir;
|
|
1611
1600
|
asynchronousMachine.ratedS = (0, parser_utils_1.isNumericI7)(i7Data.sr) ? i7Data.sr : assetType === null || assetType === void 0 ? void 0 : assetType.sr;
|
|
1612
1601
|
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
|
|
1613
1610
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
|
|
1614
1611
|
const p = powerData[0];
|
|
1615
1612
|
const q = powerData[1];
|
|
1616
1613
|
asynchronousMachine.setActivePower(p);
|
|
1617
1614
|
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
|
-
|
|
1621
|
-
const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : true;
|
|
1622
|
-
asynchronousMachine.normallyInService = inBetrieb;
|
|
1620
|
+
//EQ core profile content
|
|
1623
1621
|
const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
1624
1622
|
if (connectivityNode) {
|
|
1625
1623
|
(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);
|
|
1627
1624
|
const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()));
|
|
1628
1625
|
if (equipmentContainer) {
|
|
1629
1626
|
equipmentContainer.addEquipment(asynchronousMachine);
|
|
1630
1627
|
asynchronousMachine.equipmentContainer = equipmentContainer;
|
|
1631
|
-
cimModel.addAsynchronousMachine(asynchronousMachine);
|
|
1632
|
-
this.addIdMapping(i7Data.id, asynchronousMachine.mrid, integral_sql_1.Integral7TableNames.ASYNCHRONMOTOR);
|
|
1633
1628
|
}
|
|
1634
1629
|
else {
|
|
1635
1630
|
this.logger.debug(`AsynchronousMachine ${i7Data.id} besitzt keinen EquipmentContainer.`);
|
|
@@ -1638,6 +1633,8 @@ class ConverterIntegral7 {
|
|
|
1638
1633
|
else {
|
|
1639
1634
|
this.logger.debug(`AsynchronousMachine ${i7Data.id} besitzt keinen ConnectivityNode.`);
|
|
1640
1635
|
}
|
|
1636
|
+
cimModel.addAsynchronousMachine(asynchronousMachine);
|
|
1637
|
+
this.addIdMapping(i7Data.id, asynchronousMachine.mrid, integral_sql_1.Integral7TableNames.ASYNCHRONMOTOR);
|
|
1641
1638
|
}
|
|
1642
1639
|
}
|
|
1643
1640
|
else {
|
|
@@ -1645,7 +1642,7 @@ class ConverterIntegral7 {
|
|
|
1645
1642
|
}
|
|
1646
1643
|
});
|
|
1647
1644
|
}
|
|
1648
|
-
convertKraftwerksbloecke(cimModel, knotenSfIDs, energyTypesConfig) {
|
|
1645
|
+
convertKraftwerksbloecke(cimModel, targetVoltages, knotenSfIDs, energyTypesConfig) {
|
|
1649
1646
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1650
1647
|
// Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
|
|
1651
1648
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KWBLOCK)) {
|
|
@@ -1702,19 +1699,6 @@ class ConverterIntegral7 {
|
|
|
1702
1699
|
// synchronousMachine.x0 = i7Data.x0k;
|
|
1703
1700
|
// synchronousMachine.x2 = 0;
|
|
1704
1701
|
// 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;
|
|
1718
1702
|
// GeneratingUnit
|
|
1719
1703
|
const generatingUnitConfig = energyTypesConfig[i7Data.nameprimaertyp];
|
|
1720
1704
|
/** Wenn ein Config für den Primärenergietyp vorhanden*/
|
|
@@ -1785,8 +1769,18 @@ class ConverterIntegral7 {
|
|
|
1785
1769
|
// generatingUnit.totalEfficiency
|
|
1786
1770
|
generatingUnit.addRotatingMachine(synchronousMachine);
|
|
1787
1771
|
synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
|
|
1788
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data,
|
|
1789
|
-
|
|
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;
|
|
1790
1784
|
cimModel.addGeneratingUnit(generatingUnit);
|
|
1791
1785
|
cimModel.addSynchronousMachine(synchronousMachine);
|
|
1792
1786
|
this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.KWBLOCK);
|
|
@@ -1794,7 +1788,7 @@ class ConverterIntegral7 {
|
|
|
1794
1788
|
}
|
|
1795
1789
|
});
|
|
1796
1790
|
}
|
|
1797
|
-
convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, result) {
|
|
1791
|
+
convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, targetVoltages, result) {
|
|
1798
1792
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1799
1793
|
for (const i7Data of result) {
|
|
1800
1794
|
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);
|
|
@@ -1822,14 +1816,14 @@ class ConverterIntegral7 {
|
|
|
1822
1816
|
externalNetworkInjection.minZ0ToZ1Ratio
|
|
1823
1817
|
externalNetworkInjection.p
|
|
1824
1818
|
externalNetworkInjection.q*/
|
|
1825
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data);
|
|
1819
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
1826
1820
|
// ToDo PSRType
|
|
1827
1821
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
1828
1822
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG);
|
|
1829
1823
|
}
|
|
1830
1824
|
});
|
|
1831
1825
|
}
|
|
1832
|
-
convertErsatzQuerZweige2EquivalentInjection(cimModel, result) {
|
|
1826
|
+
convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result) {
|
|
1833
1827
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1834
1828
|
for (const i7Data of result) {
|
|
1835
1829
|
const einspeisePrio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : 1;
|
|
@@ -1842,10 +1836,10 @@ class ConverterIntegral7 {
|
|
|
1842
1836
|
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
|
|
1843
1837
|
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
|
|
1844
1838
|
const kr = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
|
|
1845
|
-
const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.
|
|
1839
|
+
const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r0) : undefined;
|
|
1846
1840
|
const r1 = (0, parser_utils_1.isNumericI7)(i7Data.r1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r1) : undefined;
|
|
1847
|
-
const x0 = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
1848
|
-
const x1 = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
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;
|
|
1849
1843
|
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);
|
|
1850
1844
|
/** Export Extended Ward equivalent with voltage regulation */
|
|
1851
1845
|
if (flag_lfl && !flag_ks && usoll && (r_ext !== 0 || x_ext !== 0)) {
|
|
@@ -1862,6 +1856,19 @@ class ConverterIntegral7 {
|
|
|
1862
1856
|
equivalentInjection.x0 = 1e9;
|
|
1863
1857
|
equivalentInjection.x2 = 1e9;
|
|
1864
1858
|
}
|
|
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 */
|
|
1865
1872
|
else if (!flag_lfl && flag_ks) {
|
|
1866
1873
|
equivalentInjection.regulationCapability = false;
|
|
1867
1874
|
equivalentInjection.r = r1;
|
|
@@ -1882,17 +1889,6 @@ class ConverterIntegral7 {
|
|
|
1882
1889
|
equivalentInjection.x0 = x0;
|
|
1883
1890
|
equivalentInjection.x2 = x1;
|
|
1884
1891
|
}
|
|
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
|
-
}
|
|
1896
1892
|
else {
|
|
1897
1893
|
equivalentInjection.regulationCapability = false;
|
|
1898
1894
|
equivalentInjection.r = 1e9;
|
|
@@ -1908,30 +1904,30 @@ class ConverterIntegral7 {
|
|
|
1908
1904
|
equivalentInjection.einspeisePrio = einspeisePrio;
|
|
1909
1905
|
equivalentInjection.kr = kr;
|
|
1910
1906
|
equivalentInjection.aggregate = true; // default Wert im I7 Export. Not needed for EquivalentInjection, BusbarSection, PowerTransformerEnd, EquivalentShunt, EquivalentBranch
|
|
1911
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data);
|
|
1907
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data, targetVoltages);
|
|
1912
1908
|
// ToDo PSRType
|
|
1913
1909
|
cimModel.addEquivalentInjection(equivalentInjection);
|
|
1914
1910
|
this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG);
|
|
1915
1911
|
}
|
|
1916
1912
|
});
|
|
1917
1913
|
}
|
|
1918
|
-
//TODO: Die Randnetzeinspeisung ist nach CGMES 2.4.15 eine
|
|
1919
|
-
convertBoundaryInjections(cimModel, knotenSfIDs, targetClass) {
|
|
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) {
|
|
1920
1916
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1921
1917
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.BOUNDARYINJECTION)) {
|
|
1922
1918
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.BOUNDARYINJECTION, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.BOUNDARYINJECTION), knotenSfIDs));
|
|
1923
1919
|
switch (targetClass) {
|
|
1924
1920
|
case cim_class_names_1.ClassNames.EquivalentInjection: {
|
|
1925
|
-
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, result);
|
|
1921
|
+
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1926
1922
|
break;
|
|
1927
1923
|
}
|
|
1928
1924
|
case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
|
|
1929
|
-
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, result);
|
|
1925
|
+
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result);
|
|
1930
1926
|
break;
|
|
1931
1927
|
}
|
|
1932
1928
|
default: {
|
|
1933
1929
|
//BoundaryInjections are always exported to EquivalentInjection objects for Boundary profile
|
|
1934
|
-
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, result);
|
|
1930
|
+
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1935
1931
|
}
|
|
1936
1932
|
}
|
|
1937
1933
|
}
|
|
@@ -1940,7 +1936,7 @@ class ConverterIntegral7 {
|
|
|
1940
1936
|
}
|
|
1941
1937
|
});
|
|
1942
1938
|
}
|
|
1943
|
-
convertBoundaryInjections2EquivalentInjection(cimModel, result) {
|
|
1939
|
+
convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result) {
|
|
1944
1940
|
for (const i7Data of result) {
|
|
1945
1941
|
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);
|
|
1946
1942
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
@@ -1967,7 +1963,7 @@ class ConverterIntegral7 {
|
|
|
1967
1963
|
/** Spannung in kilo*/
|
|
1968
1964
|
// regulatingControl.targetValueUnitMultiplier = UnitMultiplier.k;
|
|
1969
1965
|
// equivalentInjection.regulatingControl = regulatingControl;
|
|
1970
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data);
|
|
1966
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data, targetVoltages);
|
|
1971
1967
|
// const connectivityNode = this.cimModelDefaultValues.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
|
|
1972
1968
|
/** aus dem EqContainer die Sollspannung bestimmen */
|
|
1973
1969
|
// ToDo PSRType
|
|
@@ -1992,7 +1988,7 @@ class ConverterIntegral7 {
|
|
|
1992
1988
|
this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.BOUNDARYINJECTION);
|
|
1993
1989
|
}
|
|
1994
1990
|
}
|
|
1995
|
-
convertBoundaryInjections2ExternalNetworkInjection(cimModel, result) {
|
|
1991
|
+
convertBoundaryInjections2ExternalNetworkInjection(cimModel, targetVoltages, result) {
|
|
1996
1992
|
for (const i7Data of result) {
|
|
1997
1993
|
const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, utils_2.getName)(i7Data), i7Data.kurzname);
|
|
1998
1994
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
@@ -2008,18 +2004,7 @@ class ConverterIntegral7 {
|
|
|
2008
2004
|
/** externalNetworkInjection.maxR0ToX0Ratio = 1/(/x0/r0)
|
|
2009
2005
|
externalNetworkInjection.maxR1ToX1Ratio = (1/x1/r1) */
|
|
2010
2006
|
externalNetworkInjection.maxZ0ToZ1Ratio = (0, parser_utils_1.convertToNumberI7)(i7Data.z0_z1);
|
|
2011
|
-
|
|
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);
|
|
2007
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
2023
2008
|
// const connectivityNode = this.cimModelDefaultValues.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
|
|
2024
2009
|
/** aus dem EqContainer die Sollspannung bestimmen */
|
|
2025
2010
|
// ToDo PSRType
|
|
@@ -2040,7 +2025,6 @@ class ConverterIntegral7 {
|
|
|
2040
2025
|
}*/
|
|
2041
2026
|
// ToDo PSRType
|
|
2042
2027
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
2043
|
-
cimModel.addRegulatingControl(regulatingControl);
|
|
2044
2028
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.BOUNDARYINJECTION);
|
|
2045
2029
|
}
|
|
2046
2030
|
}
|
|
@@ -2079,26 +2063,31 @@ class ConverterIntegral7 {
|
|
|
2079
2063
|
this.createBoundaryConnection(frame, equivalentBranch, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
|
|
2080
2064
|
this.createBoundaryConnection(frame, equivalentBranch, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
|
|
2081
2065
|
/**EQ */
|
|
2082
|
-
if (flag_lfl
|
|
2066
|
+
if (flag_lfl && !flag_ks) {
|
|
2083
2067
|
equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
|
|
2084
2068
|
equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
|
|
2085
|
-
equivalentBranch.r21 =
|
|
2086
|
-
equivalentBranch.x21 =
|
|
2087
|
-
|
|
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;
|
|
2088
2073
|
equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
|
|
2089
|
-
equivalentBranch.positiveX12 =
|
|
2074
|
+
equivalentBranch.positiveX12 = isNumericI7(i7Data.x12_ks) ? convertToNumberI7(i7Data.x12_ks) : 10e9;
|
|
2090
2075
|
equivalentBranch.positiveX21 = equivalentBranch.positiveX12;
|
|
2076
|
+
|
|
2091
2077
|
equivalentBranch.negativeR12 = equivalentBranch.positiveR12;
|
|
2092
2078
|
equivalentBranch.negativeR21 = equivalentBranch.positiveR21;
|
|
2093
2079
|
equivalentBranch.negativeX12 = equivalentBranch.positiveX12;
|
|
2094
2080
|
equivalentBranch.negativeX21 = equivalentBranch.positiveX21;
|
|
2095
|
-
|
|
2081
|
+
|
|
2082
|
+
equivalentBranch.zeroR12 = isNumericI7(i7Data.r0) ? convertToNumberI7(i7Data.r0) : 10e9;
|
|
2096
2083
|
equivalentBranch.zeroR21 = equivalentBranch.zeroR12;
|
|
2097
|
-
equivalentBranch.zeroX12 =
|
|
2098
|
-
equivalentBranch.zeroX21 = equivalentBranch.zeroX12
|
|
2084
|
+
equivalentBranch.zeroX12 = isNumericI7(i7Data.x0) ? convertToNumberI7(i7Data.x0) : 10e9
|
|
2085
|
+
equivalentBranch.zeroX21 = equivalentBranch.zeroX12;*/
|
|
2099
2086
|
}
|
|
2100
2087
|
else if (!flag_lfl && flag_ks) {
|
|
2101
2088
|
/**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;
|
|
2102
2091
|
equivalentBranch.positiveR12 = (0, parser_utils_1.isNumericI7)(i7Data.r12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_ks) : 10e9;
|
|
2103
2092
|
equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
|
|
2104
2093
|
equivalentBranch.positiveX12 = (0, parser_utils_1.isNumericI7)(i7Data.x12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_ks) : 10e9;
|
|
@@ -2112,7 +2101,7 @@ class ConverterIntegral7 {
|
|
|
2112
2101
|
equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
|
|
2113
2102
|
equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
|
|
2114
2103
|
}
|
|
2115
|
-
else { //If neither flag_lfl nor flag_ks are specified, any impedance value that is specified will be exported.
|
|
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.
|
|
2116
2105
|
equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
|
|
2117
2106
|
equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
|
|
2118
2107
|
equivalentBranch.r21 = (0, parser_utils_1.isNumericI7)(i7Data.r21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r21_lfl) : equivalentBranch.r;
|
|
@@ -2129,7 +2118,9 @@ class ConverterIntegral7 {
|
|
|
2129
2118
|
equivalentBranch.zeroR21 = equivalentBranch.zeroR12;
|
|
2130
2119
|
equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
|
|
2131
2120
|
equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
|
|
2132
|
-
|
|
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
|
+
}
|
|
2133
2124
|
}
|
|
2134
2125
|
const bdf = [];
|
|
2135
2126
|
bdf.push(this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten)));
|
|
@@ -2159,7 +2150,6 @@ class ConverterIntegral7 {
|
|
|
2159
2150
|
}
|
|
2160
2151
|
/** Kompensationsdrossel*/
|
|
2161
2152
|
convertKompensationsdrossel(cimModel, targetVoltages, knotenSfIDs) {
|
|
2162
|
-
var _a, _b;
|
|
2163
2153
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2164
2154
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL)) {
|
|
2165
2155
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KOMPENSATIONSDROSSEL, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL), knotenSfIDs));
|
|
@@ -2216,60 +2206,13 @@ class ConverterIntegral7 {
|
|
|
2216
2206
|
}
|
|
2217
2207
|
shunt.bPerSection = (0, utils_2.calculateBPerSection)(qr * -1, shunt.nomU, shunt.maximumSections);
|
|
2218
2208
|
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
|
-
}
|
|
2266
2209
|
//SHC section
|
|
2267
2210
|
const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? i7Data.r0 : undefined;
|
|
2268
2211
|
const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? i7Data.x0 : undefined;
|
|
2269
2212
|
shunt.b0PerSection = (0, utils_2.calculateB0PerSection)(/*r0,*/ Math.abs(x0)) * -1;
|
|
2270
2213
|
shunt.g0PerSection = (0, utils_2.calculateG0PerSection)(r0 /*,x0*/);
|
|
2271
2214
|
this.setShuntGrounding(shunt, sternpunktKnotenMap.get(i7Data.knoten1p), r0, x0);
|
|
2272
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data,
|
|
2215
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, targetVoltages);
|
|
2273
2216
|
cimModel.addLinearShuntCompensator(shunt);
|
|
2274
2217
|
this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL);
|
|
2275
2218
|
}
|
|
@@ -2281,7 +2224,6 @@ class ConverterIntegral7 {
|
|
|
2281
2224
|
}
|
|
2282
2225
|
/** Kompensationskondensator*/
|
|
2283
2226
|
convertKompensationskondensatoren(cimModel, targetVoltages, knotenSfIDs) {
|
|
2284
|
-
var _a, _b;
|
|
2285
2227
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2286
2228
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR)) {
|
|
2287
2229
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.KOMPENSATIONSKONDENSATOR, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR), knotenSfIDs));
|
|
@@ -2338,60 +2280,13 @@ class ConverterIntegral7 {
|
|
|
2338
2280
|
}
|
|
2339
2281
|
shunt.bPerSection = (0, utils_2.calculateBPerSection)(qr, shunt.nomU, shunt.maximumSections);
|
|
2340
2282
|
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
|
-
}
|
|
2388
2283
|
//SHC section
|
|
2389
2284
|
const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? i7Data.r0 : undefined;
|
|
2390
2285
|
const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? i7Data.x0 : undefined;
|
|
2391
2286
|
shunt.b0PerSection = (0, utils_2.calculateB0PerSection)(/*r0,*/ Math.abs(x0));
|
|
2392
2287
|
shunt.g0PerSection = (0, utils_2.calculateG0PerSection)(r0 /*,x0*/);
|
|
2393
2288
|
this.setShuntGrounding(shunt, sternpunktKnotenMap.get(i7Data.knoten1p), r0, x0);
|
|
2394
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data,
|
|
2289
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, targetVoltages);
|
|
2395
2290
|
cimModel.addLinearShuntCompensator(shunt);
|
|
2396
2291
|
this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR);
|
|
2397
2292
|
}
|
|
@@ -2401,13 +2296,12 @@ class ConverterIntegral7 {
|
|
|
2401
2296
|
}
|
|
2402
2297
|
});
|
|
2403
2298
|
}
|
|
2404
|
-
convertStatcom(cimModel, knotenSfIDs) {
|
|
2299
|
+
convertStatcom(cimModel, targetVoltages, knotenSfIDs) {
|
|
2405
2300
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2406
2301
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STATCOM)) {
|
|
2407
2302
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.STATCOM, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.STATCOM), knotenSfIDs));
|
|
2408
2303
|
for (const i7Data of result) {
|
|
2409
2304
|
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);
|
|
2411
2305
|
const ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
|
|
2412
2306
|
const uref = (0, parser_utils_1.isNumericI7)(i7Data.uref) ? (0, parser_utils_1.convertToNumberI7)(i7Data.uref) : undefined;
|
|
2413
2307
|
const mrez = (0, parser_utils_1.isNumericI7)(i7Data.mrez) ? (0, parser_utils_1.convertToNumberI7)(i7Data.mrez) : undefined;
|
|
@@ -2425,34 +2319,12 @@ class ConverterIntegral7 {
|
|
|
2425
2319
|
/** SV */
|
|
2426
2320
|
//statVarCom.svpowerflow
|
|
2427
2321
|
/** Regelung */
|
|
2428
|
-
const
|
|
2429
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data,
|
|
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
|
-
}
|
|
2453
|
-
}
|
|
2322
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_rc);
|
|
2323
|
+
const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, true);
|
|
2454
2324
|
/** EQ */
|
|
2455
|
-
|
|
2325
|
+
if (regulatingControl) {
|
|
2326
|
+
statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
|
|
2327
|
+
}
|
|
2456
2328
|
cimModel.addStaticVarCompensator(statVarCom);
|
|
2457
2329
|
this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
|
|
2458
2330
|
}
|
|
@@ -2462,7 +2334,7 @@ class ConverterIntegral7 {
|
|
|
2462
2334
|
}
|
|
2463
2335
|
});
|
|
2464
2336
|
}
|
|
2465
|
-
convertSVC(cimModel, knotenSfIDs) {
|
|
2337
|
+
convertSVC(cimModel, targetVoltages, knotenSfIDs) {
|
|
2466
2338
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2467
2339
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SVC)) {
|
|
2468
2340
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.SVC, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.SVC), knotenSfIDs));
|
|
@@ -2485,33 +2357,7 @@ class ConverterIntegral7 {
|
|
|
2485
2357
|
statVarCom.q = (0, parser_utils_1.isNumericI7)(i7Data.q0svc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q0svc) : undefined;
|
|
2486
2358
|
/** SV */
|
|
2487
2359
|
//statVarCom.svpowerflow
|
|
2488
|
-
|
|
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
|
-
}
|
|
2360
|
+
const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, false);
|
|
2515
2361
|
/** EQ */
|
|
2516
2362
|
statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
|
|
2517
2363
|
cimModel.addStaticVarCompensator(statVarCom);
|
|
@@ -2529,10 +2375,9 @@ class ConverterIntegral7 {
|
|
|
2529
2375
|
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));
|
|
2530
2376
|
for (const i7Data of result) {
|
|
2531
2377
|
/** Containment DC DCConverterUnit */
|
|
2532
|
-
const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp
|
|
2533
|
-
dcConverterUnit.referencePriority = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
|
|
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']));
|
|
2534
2379
|
dcConverterUnit.governorSCDAc = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
|
|
2535
|
-
dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
2380
|
+
dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.krdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.krdc) : undefined;
|
|
2536
2381
|
// Topologie
|
|
2537
2382
|
/* Anfang
|
|
2538
2383
|
* 3 moegliche Anschluesse
|
|
@@ -2558,54 +2403,46 @@ class ConverterIntegral7 {
|
|
|
2558
2403
|
else {
|
|
2559
2404
|
this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen ConnectivityNode.`);
|
|
2560
2405
|
}
|
|
2561
|
-
const csConverter = new CsConverter_1.CsConverter((0, parser_utils_1.getUUID)(i7Data.guid
|
|
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;
|
|
2562
2409
|
/** Wenn Leitungen konvertiert werden, wird das Attribut operationMode gesetzt. */
|
|
2563
2410
|
csConverter.equipmentContainer = dcConverterUnit;
|
|
2564
2411
|
/** Bemessungsleistung (Gleichstromseite) in MW
|
|
2565
2412
|
* im CS-Fall S = P?
|
|
2566
2413
|
* Abhängig vom */
|
|
2567
|
-
csConverter.baseS =
|
|
2414
|
+
csConverter.baseS = pr;
|
|
2568
2415
|
/** Bemessungsspannung (Gleichstromseite) in kV*/
|
|
2569
|
-
csConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
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);
|
|
2570
2418
|
/** spannungsabhängige Wirk-Verluste in kW bei Leerlauf mit Bemessungsspannung in kV*/
|
|
2571
2419
|
csConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
|
|
2572
2420
|
csConverter.maxUdc = csConverter.ratedUdc * 1.05; // +5% * ratedUdc
|
|
2573
2421
|
csConverter.minUdc = csConverter.ratedUdc * 0.95; // -5% * ratedUdc
|
|
2574
|
-
csConverter.resistiveLoss = 0;
|
|
2422
|
+
csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
|
|
2575
2423
|
csConverter.switchingLoss = 0;
|
|
2576
2424
|
/* csConverter.numberOfValves
|
|
2577
2425
|
csConverter.valveU0*/
|
|
2578
2426
|
/** Stromrichter */
|
|
2579
2427
|
/** Zündwinkel bei Gleichrichterbetrieb (ins Drehstromnetz eingespeiste Wirkleistung < 0) - etwa 15 Grad */
|
|
2580
|
-
|
|
2581
|
-
|
|
2428
|
+
csConverter.maxAlpha = 180;
|
|
2429
|
+
csConverter.minAlpha = (0, parser_utils_1.isNumericI7)(i7Data.alpha) ? (0, parser_utils_1.convertToNumberI7)(i7Data.alpha) : 15;
|
|
2582
2430
|
/** Löschwinkel bei Wechselrichterbetrieb (ins Drehstromnetz Wirkleistung > 0) - etwa 21,5 Grad */
|
|
2583
|
-
|
|
2584
|
-
|
|
2431
|
+
csConverter.maxGamma = undefined;
|
|
2432
|
+
csConverter.minGamma = (0, parser_utils_1.isNumericI7)(i7Data.gamma) ? (0, parser_utils_1.convertToNumberI7)(i7Data.gamma) : 21.5;
|
|
2585
2433
|
/** SSH profile export*/
|
|
2586
|
-
csConverter.p =
|
|
2434
|
+
csConverter.p = pges ? pges * -1 : 0;
|
|
2587
2435
|
csConverter.q = (0, parser_utils_1.isNumericI7)(i7Data.qges) ? i7Data.qges * -1 : 0;
|
|
2588
|
-
|
|
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
|
-
}
|
|
2436
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, csConverter, i7Data);
|
|
2599
2437
|
/** Status */
|
|
2600
2438
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
2601
2439
|
csConverter.normallyInService = inBetrieb;
|
|
2602
2440
|
/** Topologie AC Seite*/
|
|
2603
|
-
if (acConnectivityNode) {
|
|
2604
|
-
|
|
2605
|
-
}
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
}
|
|
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
|
+
}**/
|
|
2609
2446
|
/** Topologie DC Seite*/
|
|
2610
2447
|
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']));
|
|
2611
2448
|
dcNode.dcEquipmentContainer = dcConverterUnit;
|
|
@@ -2631,17 +2468,27 @@ class ConverterIntegral7 {
|
|
|
2631
2468
|
}
|
|
2632
2469
|
});
|
|
2633
2470
|
}
|
|
2634
|
-
convertVsConverterDC(cimModel, integral7, knotenSfIDs) {
|
|
2635
|
-
var _a, _b;
|
|
2471
|
+
convertVsConverterDC(cimModel, targetVoltages, integral7, knotenSfIDs) {
|
|
2636
2472
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2637
2473
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC)) {
|
|
2638
2474
|
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));
|
|
2639
2475
|
for (const i7Data of result) {
|
|
2640
2476
|
/** Containment DC DCConverterUnit */
|
|
2641
|
-
const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp
|
|
2642
|
-
|
|
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;
|
|
2643
2481
|
dcConverterUnit.governorSCDAc = (0, parser_utils_1.isNumericI7)(i7Data.kr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.kr) : undefined;
|
|
2644
|
-
dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
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
|
+
}
|
|
2645
2492
|
// Topologie
|
|
2646
2493
|
/** Anfang
|
|
2647
2494
|
* 3 moegliche Anschluesse
|
|
@@ -2676,44 +2523,23 @@ class ConverterIntegral7 {
|
|
|
2676
2523
|
//If udc is set in Integral data model set converter.ratedUdc as i7Data.udc else take the data value for i7Data.ur (Bemessungsspannung)
|
|
2677
2524
|
vsConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.udc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.udc) : ((0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined);
|
|
2678
2525
|
/** spannungsabhängige Wirk-Verluste bei Leerlauf mit Bemessungsspannung in kV*/
|
|
2679
|
-
vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer)
|
|
2680
|
-
vsConverter.maxUdc = vsConverter.ratedUdc * 1.
|
|
2681
|
-
vsConverter.minUdc = vsConverter.ratedUdc * 0.
|
|
2682
|
-
vsConverter.resistiveLoss = undefined;
|
|
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;
|
|
2683
2530
|
vsConverter.switchingLoss = undefined;
|
|
2684
2531
|
/* csConverter.maxModulationIndex = ;
|
|
2685
2532
|
csConverter.maxValveCurrent = */
|
|
2686
2533
|
/** SSH export values */
|
|
2687
2534
|
vsConverter.p = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? i7Data.pges * -1 : 0;
|
|
2688
2535
|
vsConverter.q = (0, parser_utils_1.isNumericI7)(i7Data.qges) ? i7Data.qges * -1 : 0;
|
|
2689
|
-
|
|
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
|
-
}
|
|
2536
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, vsConverter, i7Data, targetVoltages);
|
|
2704
2537
|
vsConverter.droop = 0; //pu
|
|
2705
2538
|
vsConverter.droopCompensation = 0; //Resistance
|
|
2706
2539
|
vsConverter.qShare = 0; //PerCent
|
|
2707
2540
|
/** Status */
|
|
2708
2541
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
2709
2542
|
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
|
-
}
|
|
2717
2543
|
/** Topologie DC Seite mit DCGround*/
|
|
2718
2544
|
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']));
|
|
2719
2545
|
dcNode.dcEquipmentContainer = dcConverterUnit;
|
|
@@ -2724,32 +2550,11 @@ class ConverterIntegral7 {
|
|
|
2724
2550
|
vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
|
|
2725
2551
|
acDCConverterDCTerminal.dcNode = dcNode;
|
|
2726
2552
|
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;
|
|
2744
2553
|
/** DCNode speichern, um später DCLines anschließen zu können*/
|
|
2745
2554
|
cimModel.addDCConverterUnit(dcConverterUnit);
|
|
2746
2555
|
cimModel.addVSConverter(vsConverter);
|
|
2747
2556
|
cimModel.addDCNode(dcNode);
|
|
2748
|
-
cimModel.addDCNode(dcNodeG);
|
|
2749
2557
|
cimModel.addACDCConverterDCTerminal(acDCConverterDCTerminal);
|
|
2750
|
-
cimModel.addDCTerminal(dcTerminalG);
|
|
2751
|
-
cimModel.addDCGround(dcGround);
|
|
2752
|
-
cimModel.addACDCConverterDCTerminal(dcTerminalM1);
|
|
2753
2558
|
integral7.integralHgueKopf.set(i7Data.id, i7Data);
|
|
2754
2559
|
this.checkAnschlussIDs(i7Data.id, integral7);
|
|
2755
2560
|
this.addIdMapping(i7Data.id, vsConverter.mrid, integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC);
|
|
@@ -2757,7 +2562,7 @@ class ConverterIntegral7 {
|
|
|
2757
2562
|
}
|
|
2758
2563
|
});
|
|
2759
2564
|
}
|
|
2760
|
-
convertEinspeisungen2EnergySource(cimModel, result, energySourceTypeMappingConfig) {
|
|
2565
|
+
convertEinspeisungen2EnergySource(cimModel, targetVoltages, result, energySourceTypeMappingConfig) {
|
|
2761
2566
|
var _a, _b, _c, _d;
|
|
2762
2567
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2763
2568
|
for (const i7Data of result) {
|
|
@@ -2802,37 +2607,15 @@ class ConverterIntegral7 {
|
|
|
2802
2607
|
}
|
|
2803
2608
|
});
|
|
2804
2609
|
}
|
|
2805
|
-
convertEnergySourceToExternalNetworkInjection(cimModel, i7Data, prio, inBetrieb) {
|
|
2610
|
+
convertEnergySourceToExternalNetworkInjection(cimModel, targetVoltages, i7Data, prio, inBetrieb) {
|
|
2806
2611
|
const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
2807
2612
|
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);
|
|
2808
2613
|
externalNetworkInjection.referencePriority = prio;
|
|
2809
2614
|
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
|
-
}
|
|
2832
2615
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data);
|
|
2833
2616
|
externalNetworkInjection.p = powerData[0];
|
|
2834
2617
|
externalNetworkInjection.q = powerData[1];
|
|
2835
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data,
|
|
2618
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
2836
2619
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
2837
2620
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
|
|
2838
2621
|
}
|
|
@@ -2858,20 +2641,19 @@ class ConverterIntegral7 {
|
|
|
2858
2641
|
this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.EINSPEISUNG);
|
|
2859
2642
|
}
|
|
2860
2643
|
catch (err) {
|
|
2861
|
-
this.logger.error(`
|
|
2644
|
+
this.logger.error(`error --- convertEinspeisungen2EquivalentInjection ${i7Data.id} ${err}`);
|
|
2862
2645
|
}
|
|
2863
2646
|
}
|
|
2864
2647
|
});
|
|
2865
2648
|
}
|
|
2866
|
-
convertEinspeisungen2ExternalNetworkInjection(cimModel, result) {
|
|
2649
|
+
convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result) {
|
|
2650
|
+
var _a;
|
|
2867
2651
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2868
2652
|
for (const i7Data of result) {
|
|
2869
2653
|
try {
|
|
2870
|
-
const
|
|
2871
|
-
const
|
|
2872
|
-
|
|
2873
|
-
// const un = cn.getVoltageLevel().getBaseVoltageAsNumber();
|
|
2874
|
-
externalNetworkInjection.nameprimaertyp = i7Data.nameprimaertyp;
|
|
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;
|
|
2875
2657
|
let mf = undefined;
|
|
2876
2658
|
mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
|
|
2877
2659
|
if (mf) {
|
|
@@ -2890,15 +2672,8 @@ class ConverterIntegral7 {
|
|
|
2890
2672
|
externalNetworkInjection.minP = minP;
|
|
2891
2673
|
const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
|
|
2892
2674
|
externalNetworkInjection.minQ = minQ;
|
|
2893
|
-
/**
|
|
2894
|
-
|
|
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
|
|
2675
|
+
/** Convert EQ-profile dataset. */
|
|
2676
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
2902
2677
|
/**Convert short circuit constants */
|
|
2903
2678
|
const r0X0 = (0, parser_utils_1.isNumericI7)(i7Data.x0_r0) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x0_r0) : undefined;
|
|
2904
2679
|
const r1X1 = (0, parser_utils_1.isNumericI7)(i7Data.x1_r1) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x1_r1) : undefined;
|
|
@@ -2907,7 +2682,7 @@ class ConverterIntegral7 {
|
|
|
2907
2682
|
externalNetworkInjection.maxR0ToX0Ratio = maxR0X0Ratio;
|
|
2908
2683
|
const maxR1X1Ratio = (0, parser_utils_1.isNumericI7)(i7Data.x1_r1_max) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x1_r1_max) : r1X1;
|
|
2909
2684
|
externalNetworkInjection.maxR1ToX1Ratio = maxR1X1Ratio;
|
|
2910
|
-
const maxZ0Z1Ratio =
|
|
2685
|
+
const maxZ0Z1Ratio = z0Z1;
|
|
2911
2686
|
externalNetworkInjection.maxZ0ToZ1Ratio = maxZ0Z1Ratio;
|
|
2912
2687
|
const minR0X0Ratio = (0, parser_utils_1.isNumericI7)(i7Data.x0_r0_min) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x0_r0_min) : r0X0;
|
|
2913
2688
|
externalNetworkInjection.minR0ToX0Ratio = minR0X0Ratio;
|
|
@@ -2922,41 +2697,22 @@ class ConverterIntegral7 {
|
|
|
2922
2697
|
externalNetworkInjection.minInitialSymShCCurrent = minIkSecond;
|
|
2923
2698
|
const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(skMax) / Math.sqrt(3) * skMax : undefined;
|
|
2924
2699
|
externalNetworkInjection.maxInitialSymShCCurrent = maxIkSecond;
|
|
2925
|
-
|
|
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
|
|
2700
|
+
const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
|
|
2949
2701
|
/** Convert SSH-profile dataset. */
|
|
2950
2702
|
/**
|
|
2951
|
-
* @description Set einspprio as referencePriority. PowerFactory sets external network injections with referencePriority to
|
|
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'.
|
|
2952
2704
|
* einspprio having no effect in loadflow calculation if voltage control does not exists.
|
|
2953
2705
|
* */
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
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;
|
|
2957
2713
|
}
|
|
2958
2714
|
else {
|
|
2959
|
-
|
|
2715
|
+
externalNetworkInjection.referencePriority = undefined;
|
|
2960
2716
|
}
|
|
2961
2717
|
}
|
|
2962
2718
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
|
|
@@ -2964,43 +2720,352 @@ class ConverterIntegral7 {
|
|
|
2964
2720
|
const q = powerData[1];
|
|
2965
2721
|
externalNetworkInjection.setActivePower(p * -1); //convert to load sign system
|
|
2966
2722
|
externalNetworkInjection.setReactivePower(q * -1); //convert to load sign system
|
|
2967
|
-
|
|
2968
|
-
|
|
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;
|
|
2969
2729
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
2970
2730
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
|
|
2971
2731
|
}
|
|
2972
2732
|
catch (err) {
|
|
2973
|
-
this.logger.error(`
|
|
2733
|
+
this.logger.error(`error --- convertEinspeisungen2ExternalNetworkInjection ${i7Data.id} ${err}`);
|
|
2974
2734
|
}
|
|
2975
2735
|
}
|
|
2976
2736
|
});
|
|
2977
2737
|
}
|
|
2978
|
-
setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data,
|
|
2979
|
-
var _a, _b, _c;
|
|
2738
|
+
setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data, targetVoltages, generatingUnit, isStatcom) {
|
|
2739
|
+
var _a, _b, _c, _d;
|
|
2980
2740
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
2981
2741
|
condEquip.normallyInService = inBetrieb;
|
|
2982
2742
|
const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
2983
|
-
let
|
|
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
|
+
}
|
|
2984
2819
|
if (connectivityNode) {
|
|
2985
|
-
const
|
|
2986
|
-
|
|
2987
|
-
if (
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
if (
|
|
2995
|
-
|
|
2996
|
-
if (
|
|
2997
|
-
|
|
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
|
+
}
|
|
2998
2964
|
}
|
|
2999
2965
|
}
|
|
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;
|
|
3000
2979
|
}
|
|
3001
2980
|
}
|
|
3002
|
-
|
|
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);
|
|
3003
3065
|
if (equipmentContainer) {
|
|
3066
|
+
if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
|
|
3067
|
+
equipmentContainer = condEquip.equipmentContainer;
|
|
3068
|
+
}
|
|
3004
3069
|
condEquip.equipmentContainer = equipmentContainer;
|
|
3005
3070
|
equipmentContainer.addEquipment(condEquip);
|
|
3006
3071
|
//TODO: Überarbeitung notwendig, da hier der Präfix nicht eindeutig für Einspeisungen ermittelt werden kann.
|
|
@@ -3021,27 +3086,36 @@ class ConverterIntegral7 {
|
|
|
3021
3086
|
i7Schluessel = (0, utils_2.getDescription)(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
|
|
3022
3087
|
integral_prefix_1.EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
|
|
3023
3088
|
}
|
|
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
|
+
}
|
|
3024
3097
|
condEquip.description = i7Schluessel;
|
|
3025
|
-
if (
|
|
3098
|
+
if (hasGeneratingUnit) {
|
|
3026
3099
|
const substation = this.determineEquipmentContainer('Substation', cimModel, equipmentContainer);
|
|
3027
3100
|
generatingUnit.equipmentContainer = substation;
|
|
3028
3101
|
}
|
|
3029
3102
|
}
|
|
3030
3103
|
else {
|
|
3031
|
-
this.logger.error(
|
|
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.`);
|
|
3032
3105
|
}
|
|
3033
3106
|
}
|
|
3034
3107
|
else {
|
|
3035
|
-
this.logger.error(
|
|
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.`);
|
|
3036
3109
|
}
|
|
3110
|
+
return rControl;
|
|
3037
3111
|
}
|
|
3038
3112
|
convertQuerkupplungen(cimModel, integral7, schaltanlagenAbschnittIDs) {
|
|
3039
3113
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3040
3114
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.QUERKUPPLUNG)) {
|
|
3041
3115
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.QUERKUPPLUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.QUERKUPPLUNG), schaltanlagenAbschnittIDs));
|
|
3042
3116
|
for (const i7Data of result) {
|
|
3043
|
-
const
|
|
3044
|
-
const bay = new AMPRIONBay_1.AMPRIONBay(
|
|
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');
|
|
3045
3119
|
bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
|
|
3046
3120
|
bay.locationID = i7Data.ips_folder_id;
|
|
3047
3121
|
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
|
|
@@ -3049,12 +3123,12 @@ class ConverterIntegral7 {
|
|
|
3049
3123
|
bay.voltageLevel = voltageLevel;
|
|
3050
3124
|
voltageLevel.addBay(bay);
|
|
3051
3125
|
const i7Schluessel = voltageLevel.description +
|
|
3052
|
-
|
|
3126
|
+
integral_prefix_1.QUERKUPPLUNG_PRAEFIX +
|
|
3053
3127
|
(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
|
|
3054
3128
|
bay.description = i7Schluessel;
|
|
3055
3129
|
}
|
|
3056
3130
|
else {
|
|
3057
|
-
this.logger.debug(`Querkupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3131
|
+
this.logger.debug(`debug --- Querkupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3058
3132
|
}
|
|
3059
3133
|
integral7.querkupplungIDs.push(i7Data.id);
|
|
3060
3134
|
cimModel.addBay(bay);
|
|
@@ -3062,7 +3136,7 @@ class ConverterIntegral7 {
|
|
|
3062
3136
|
}
|
|
3063
3137
|
}
|
|
3064
3138
|
else {
|
|
3065
|
-
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
|
|
3139
|
+
this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
|
|
3066
3140
|
}
|
|
3067
3141
|
});
|
|
3068
3142
|
}
|
|
@@ -3071,8 +3145,8 @@ class ConverterIntegral7 {
|
|
|
3071
3145
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
|
|
3072
3146
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.LAENGSKUPPLUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG), schaltanlagenIDs));
|
|
3073
3147
|
for (const i7Data of result) {
|
|
3074
|
-
const
|
|
3075
|
-
const bay = new AMPRIONBay_1.AMPRIONBay(
|
|
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');
|
|
3076
3150
|
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
|
|
3077
3151
|
bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
|
|
3078
3152
|
bay.locationID = i7Data.ips_folder_id;
|
|
@@ -3085,7 +3159,7 @@ class ConverterIntegral7 {
|
|
|
3085
3159
|
bay.description = i7Schluessel;
|
|
3086
3160
|
}
|
|
3087
3161
|
else {
|
|
3088
|
-
this.logger.debug(`Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3162
|
+
this.logger.debug(`debug --- Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3089
3163
|
}
|
|
3090
3164
|
const lKupplungImpl = new Laengskupplung_1.LaengskupplungImpl(i7Data);
|
|
3091
3165
|
integral7.integralLaengskupplungen.set(i7Data.id, lKupplungImpl);
|
|
@@ -3095,7 +3169,7 @@ class ConverterIntegral7 {
|
|
|
3095
3169
|
}
|
|
3096
3170
|
}
|
|
3097
3171
|
else {
|
|
3098
|
-
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
|
|
3172
|
+
this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
|
|
3099
3173
|
}
|
|
3100
3174
|
});
|
|
3101
3175
|
}
|
|
@@ -3273,11 +3347,8 @@ class ConverterIntegral7 {
|
|
|
3273
3347
|
/** Spannungsebene */
|
|
3274
3348
|
const baseVoltages = (0, utils_2.getTerminalUn)(cimModel, bdf, seriesCompensator);
|
|
3275
3349
|
seriesCompensator.baseVoltage = baseVoltages[0] ? baseVoltages[0] : baseVoltages[1];
|
|
3276
|
-
if (seriesCompensator.baseVoltage === undefined) {
|
|
3277
|
-
let stop = true;
|
|
3278
|
-
}
|
|
3279
3350
|
/** EQ */
|
|
3280
|
-
const ur =
|
|
3351
|
+
const ur = seriesCompensator.baseVoltage.nominalVoltage.value; //getU(i7Data.ur);
|
|
3281
3352
|
const ir = (0, parser_utils_1.isNumericI7)(i7Data.ir) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ir) : undefined;
|
|
3282
3353
|
const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
|
|
3283
3354
|
const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
|
|
@@ -3290,7 +3361,7 @@ class ConverterIntegral7 {
|
|
|
3290
3361
|
/** CurrentLimit */
|
|
3291
3362
|
const terminal = startTerminal;
|
|
3292
3363
|
if (terminal) {
|
|
3293
|
-
this.
|
|
3364
|
+
this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
|
|
3294
3365
|
}
|
|
3295
3366
|
else {
|
|
3296
3367
|
this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
|
|
@@ -3361,9 +3432,9 @@ class ConverterIntegral7 {
|
|
|
3361
3432
|
bdf.push(this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.eknoten)));
|
|
3362
3433
|
/** Spannungsebene */
|
|
3363
3434
|
const baseVoltages = (0, utils_2.getTerminalUn)(cimModel, bdf, seriesCompensator);
|
|
3364
|
-
seriesCompensator.baseVoltage = baseVoltages[0];
|
|
3435
|
+
seriesCompensator.baseVoltage = baseVoltages[0] ? baseVoltages[0] : baseVoltages[1];
|
|
3365
3436
|
/** EQ */
|
|
3366
|
-
const ur =
|
|
3437
|
+
const ur = seriesCompensator.baseVoltage.nominalVoltage.value; //getU(i7Data.ur);
|
|
3367
3438
|
const ir = (0, parser_utils_1.isNumericI7)(i7Data.ir) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ir) : undefined;
|
|
3368
3439
|
const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
|
|
3369
3440
|
const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
|
|
@@ -3376,7 +3447,7 @@ class ConverterIntegral7 {
|
|
|
3376
3447
|
/** CurrentLimit */
|
|
3377
3448
|
const terminal = startTerminal;
|
|
3378
3449
|
if (terminal) {
|
|
3379
|
-
this.
|
|
3450
|
+
this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
|
|
3380
3451
|
}
|
|
3381
3452
|
else {
|
|
3382
3453
|
this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
|
|
@@ -3447,6 +3518,7 @@ class ConverterIntegral7 {
|
|
|
3447
3518
|
}
|
|
3448
3519
|
// Verbindung herstellen
|
|
3449
3520
|
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.
|
|
3450
3522
|
integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
|
|
3451
3523
|
integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
|
|
3452
3524
|
integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
|
|
@@ -3499,6 +3571,7 @@ class ConverterIntegral7 {
|
|
|
3499
3571
|
// Verbindung herstellen
|
|
3500
3572
|
if (connectivityNode) {
|
|
3501
3573
|
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.
|
|
3502
3575
|
}
|
|
3503
3576
|
}
|
|
3504
3577
|
}
|
|
@@ -3557,8 +3630,8 @@ class ConverterIntegral7 {
|
|
|
3557
3630
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
|
|
3558
3631
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getI7Query)(integral_sql_1.I7Objects.LAENGSKUPPLUNG, this.getAvailableColumnNames(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG), schaltanlagenIDs));
|
|
3559
3632
|
for (const i7Data of result) {
|
|
3560
|
-
const
|
|
3561
|
-
const bay = new AMPRIONBay_1.AMPRIONBay(
|
|
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');
|
|
3562
3635
|
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
|
|
3563
3636
|
bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
|
|
3564
3637
|
bay.locationID = i7Data.ips_folder_id;
|
|
@@ -3624,6 +3697,7 @@ class ConverterIntegral7 {
|
|
|
3624
3697
|
object.x0 = +data.x0; // new ReactancePerLength(data.x1, UnitMultiplier.none, UnitSymbol.ohm);
|
|
3625
3698
|
object.c0 = +data.c0; // new CapacitancePerLength(data.c1, UnitMultiplier.micro, UnitSymbol.F);
|
|
3626
3699
|
object.ratedCurrent = +data.ir;
|
|
3700
|
+
object.limitingCurrent = +data.igrenz;
|
|
3627
3701
|
}
|
|
3628
3702
|
convertLeitungen(frame, integral7, defaultValuesConfig) {
|
|
3629
3703
|
var _a, _b, _c;
|
|
@@ -3632,9 +3706,6 @@ class ConverterIntegral7 {
|
|
|
3632
3706
|
const cimModel = frame.cimModel;
|
|
3633
3707
|
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));
|
|
3634
3708
|
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);*/
|
|
3638
3709
|
const cableAvailable = this.isTableAvailable(integral_sql_1.Integral7TableNames.KABEL);
|
|
3639
3710
|
const overheadAvailable = this.isTableAvailable(integral_sql_1.Integral7TableNames.FREILEITUNG);
|
|
3640
3711
|
let type = integral_sql_1.I7Objects.STROMKREISABSCHNITT;
|
|
@@ -3687,8 +3758,8 @@ class ConverterIntegral7 {
|
|
|
3687
3758
|
(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner) +
|
|
3688
3759
|
'-' +
|
|
3689
3760
|
(0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
|
|
3690
|
-
const
|
|
3691
|
-
const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(
|
|
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);
|
|
3692
3763
|
if (stk.baujahr) {
|
|
3693
3764
|
const wire = new EVWireObject_1.EVWireObject(common_utils_1.CommonUtils.generateUUID(), stk.name);
|
|
3694
3765
|
wire.type = 'Stromkreisabschnitt';
|
|
@@ -3715,6 +3786,9 @@ class ConverterIntegral7 {
|
|
|
3715
3786
|
* KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt
|
|
3716
3787
|
*/
|
|
3717
3788
|
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
|
+
}
|
|
3718
3792
|
const startTerminal = this.createBoundaryConnection(frame, acLineSegmentStart, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
|
|
3719
3793
|
if (startTerminal) {
|
|
3720
3794
|
//this.setACLineSegmentCurrentLimt(cimModel, acLineSegmentStart, acLineSegmentStart.description, startTerminal);
|
|
@@ -3816,7 +3890,7 @@ class ConverterIntegral7 {
|
|
|
3816
3890
|
}
|
|
3817
3891
|
}
|
|
3818
3892
|
else {
|
|
3819
|
-
this.logger.error(`Leitung ${line.getUUID()} with Terminal ${terminal.getUUID()}:
|
|
3893
|
+
this.logger.error(`Leitung ${line.getUUID()} with Terminal ${terminal.getUUID()}: SubGeographicalRegion konnte nicht bestimmt werden.`);
|
|
3820
3894
|
}
|
|
3821
3895
|
tmp_terminal = values.next();
|
|
3822
3896
|
}
|
|
@@ -3838,7 +3912,7 @@ class ConverterIntegral7 {
|
|
|
3838
3912
|
});
|
|
3839
3913
|
}
|
|
3840
3914
|
convertDCLines(cimModel, integral7, defaultValuesConfig) {
|
|
3841
|
-
var _a;
|
|
3915
|
+
var _a, _b;
|
|
3842
3916
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3843
3917
|
//Workaround: Prefill Integral 7 model hgueAnschlussKnotenIDs because of missing bays and schlaufen for dc objects this data structure keeps empty.
|
|
3844
3918
|
//for(let dc_node of this.hgueAnschlussKnotenIDs){
|
|
@@ -3862,7 +3936,10 @@ class ConverterIntegral7 {
|
|
|
3862
3936
|
let converterTargetNeg = false;
|
|
3863
3937
|
let converterUnitTargetSide = false;
|
|
3864
3938
|
let bipol = (0, parser_utils_1.convertToBooleanI7)(i7Data.bipol);
|
|
3865
|
-
bipol
|
|
3939
|
+
if (bipol === undefined) {
|
|
3940
|
+
bipol = false;
|
|
3941
|
+
}
|
|
3942
|
+
let dcNode = undefined;
|
|
3866
3943
|
//Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
|
|
3867
3944
|
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);
|
|
3868
3945
|
let dcLineSegmentNeg = undefined;
|
|
@@ -3874,7 +3951,7 @@ class ConverterIntegral7 {
|
|
|
3874
3951
|
dcLineSegment.capacitance = undefined;
|
|
3875
3952
|
dcLineSegment.inductance = undefined;
|
|
3876
3953
|
/**EQ: given directly by the INTEGRAL system model */
|
|
3877
|
-
dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (
|
|
3954
|
+
dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
|
|
3878
3955
|
dcLineSegment.equipmentContainer = dcLine;
|
|
3879
3956
|
//create second dcLineSegment in case this dcLine is a bipol.
|
|
3880
3957
|
if (bipol) {
|
|
@@ -3883,34 +3960,42 @@ class ConverterIntegral7 {
|
|
|
3883
3960
|
dcLineSegmentNeg.length = dcLineSegment.length;
|
|
3884
3961
|
dcLineSegmentNeg.capacitance = undefined;
|
|
3885
3962
|
dcLineSegmentNeg.inductance = undefined;
|
|
3886
|
-
dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (
|
|
3963
|
+
dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
|
|
3887
3964
|
dcLineSegmentNeg.equipmentContainer = dcLineNeg;
|
|
3888
3965
|
}
|
|
3889
3966
|
const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
|
|
3890
3967
|
converterStart = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStart !== undefined);
|
|
3891
3968
|
let acDCConverterStartNeg = undefined;
|
|
3892
3969
|
const acDCConverterTarget = cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) : undefined;
|
|
3893
|
-
|
|
3970
|
+
converterTarget = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTarget !== undefined);
|
|
3894
3971
|
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;
|
|
3895
3980
|
//Setting acDCConverterStartNeg and acDCConverterTargetNeg in case this DCLine is a bipol
|
|
3896
3981
|
if (bipol) {
|
|
3897
|
-
|
|
3898
|
-
acDCConverterStartNeg = converterStart && int7hguekopf !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopf, acDCConverterStart.constructor.name, acDCConverterStart) : undefined;
|
|
3982
|
+
acDCConverterStartNeg = converterStart && int7hguekopfStart !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfStart, acDCConverterStart.constructor.name, acDCConverterStart) : undefined;
|
|
3899
3983
|
converterStartNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStartNeg !== undefined);
|
|
3900
|
-
acDCConverterTargetNeg = converterTarget &&
|
|
3984
|
+
acDCConverterTargetNeg = converterTarget && int7hguekopfTarget !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfTarget, acDCConverterTarget.constructor.name, acDCConverterTarget) : undefined;
|
|
3901
3985
|
converterTargetNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTargetNeg !== undefined);
|
|
3902
3986
|
}
|
|
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);
|
|
3903
3992
|
if (converterStart && !converterStartNeg) {
|
|
3904
|
-
createDCGround(acDCConverterStart);
|
|
3993
|
+
dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
|
|
3905
3994
|
}
|
|
3906
3995
|
else if (converterStart && converterStartNeg) {
|
|
3907
|
-
createDCGround(acDCConverterStart);
|
|
3908
|
-
connectDCGround(acDCConverterStartNeg);
|
|
3996
|
+
dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
|
|
3997
|
+
connectDCGround(cimModel, acDCConverterStartNeg, int7hguekopfStart, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
|
|
3909
3998
|
}
|
|
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);
|
|
3914
3999
|
switch (bipol) {
|
|
3915
4000
|
case true: {
|
|
3916
4001
|
if (converterUnitStartSide && !converterUnitTargetSide) {
|
|
@@ -3921,11 +4006,11 @@ class ConverterIntegral7 {
|
|
|
3921
4006
|
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
|
|
3922
4007
|
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
|
|
3923
4008
|
if (converterTarget && !converterTargetNeg) {
|
|
3924
|
-
createDCGround(acDCConverterTarget);
|
|
4009
|
+
dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
|
|
3925
4010
|
}
|
|
3926
4011
|
else if (converterTarget && converterTargetNeg) {
|
|
3927
|
-
createDCGround(acDCConverterTarget);
|
|
3928
|
-
connectDCGround(acDCConverterTargetNeg);
|
|
4012
|
+
dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
|
|
4013
|
+
connectDCGround(cimModel, acDCConverterTargetNeg, int7hguekopfTarget, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
|
|
3929
4014
|
}
|
|
3930
4015
|
else {
|
|
3931
4016
|
this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r ACDCConverter konnte nicht ermittelt werden.`);
|
|
@@ -3939,27 +4024,29 @@ class ConverterIntegral7 {
|
|
|
3939
4024
|
case false: {
|
|
3940
4025
|
if (converterUnitStartSide && !converterUnitTargetSide) {
|
|
3941
4026
|
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
3942
|
-
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
3943
|
-
createNeutralGroundReturn(converterUnitStart, converterUnitTarget);
|
|
3944
4027
|
this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit am Leitungsende konnte nicht ermittelt werden.`);
|
|
3945
4028
|
}
|
|
3946
4029
|
else if (converterUnitStartSide && converterUnitTargetSide) {
|
|
3947
4030
|
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
4031
|
+
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
4032
|
+
createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
|
|
3948
4033
|
}
|
|
4034
|
+
break;
|
|
3949
4035
|
}
|
|
3950
4036
|
default: {
|
|
3951
|
-
this.logger.
|
|
4037
|
+
this.logger.info(`info --- HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: die bipol-Eigenschaft ist nicht gesetzt.`);
|
|
3952
4038
|
}
|
|
3953
4039
|
}
|
|
3954
4040
|
// Topologie DC
|
|
3955
4041
|
/* Anfang / Ende DCNodes*/
|
|
3956
|
-
|
|
3957
|
-
const startDCNodeNeg =
|
|
4042
|
+
let startDCNode = converterStart ? getDCNodeFromConverter(acDCConverterStart, DCPolarityKind_1.DCPolarityKind.positive) : undefined;
|
|
4043
|
+
const startDCNodeNeg = converterStartNeg ? getDCNodeFromConverter(acDCConverterStartNeg, DCPolarityKind_1.DCPolarityKind.negative) : undefined;
|
|
3958
4044
|
if (startDCNode) {
|
|
3959
|
-
const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)('i7Data.
|
|
3960
|
-
dcTerminal.connected = true;
|
|
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));
|
|
3961
4046
|
dcTerminal.dCConductingEquipment = dcLineSegment;
|
|
4047
|
+
dcTerminal.connected = true;
|
|
3962
4048
|
dcTerminal.dcNode = startDCNode;
|
|
4049
|
+
dcLineSegment.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3963
4050
|
startDCNode.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3964
4051
|
cimModel.addDCTerminal(dcTerminal);
|
|
3965
4052
|
}
|
|
@@ -3967,23 +4054,23 @@ class ConverterIntegral7 {
|
|
|
3967
4054
|
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Anfangsknoten. ${i7Data.anetzobjekt} ${this.integralID2UUID.get(i7Data.anetzobjekt)}`);
|
|
3968
4055
|
}
|
|
3969
4056
|
if (startDCNodeNeg) {
|
|
3970
|
-
const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)('i7Data.
|
|
3971
|
-
dcTerminal.connected = true;
|
|
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));
|
|
3972
4058
|
dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
|
|
3973
4059
|
dcTerminal.dcNode = startDCNodeNeg;
|
|
4060
|
+
dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3974
4061
|
startDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3975
4062
|
cimModel.addDCTerminal(dcTerminal);
|
|
3976
4063
|
}
|
|
3977
4064
|
else {
|
|
3978
4065
|
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Anfangsknoten NEG. ${i7Data.anetzobjekt} ${this.integralID2UUID.get(i7Data.anetzobjekt)}`);
|
|
3979
4066
|
}
|
|
3980
|
-
const targetDCNode =
|
|
3981
|
-
const targetDCNodeNeg =
|
|
4067
|
+
const targetDCNode = converterTarget ? getDCNodeFromConverter(acDCConverterTarget, DCPolarityKind_1.DCPolarityKind.positive) : undefined;
|
|
4068
|
+
const targetDCNodeNeg = converterTargetNeg ? getDCNodeFromConverter(acDCConverterTargetNeg, DCPolarityKind_1.DCPolarityKind.negative) : undefined;
|
|
3982
4069
|
if (targetDCNode) {
|
|
3983
|
-
const dcTerminal = new DCTerminal_1.DCTerminal(
|
|
3984
|
-
dcTerminal.connected = true;
|
|
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));
|
|
3985
4071
|
dcTerminal.dCConductingEquipment = dcLineSegment;
|
|
3986
4072
|
dcTerminal.dcNode = targetDCNode;
|
|
4073
|
+
dcLineSegment.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3987
4074
|
targetDCNode.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3988
4075
|
cimModel.addDCTerminal(dcTerminal);
|
|
3989
4076
|
}
|
|
@@ -3991,10 +4078,10 @@ class ConverterIntegral7 {
|
|
|
3991
4078
|
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Zielknoten. ${i7Data.enetzobjekt} ${this.integralID2UUID.get(i7Data.enetzobjekt)}`);
|
|
3992
4079
|
}
|
|
3993
4080
|
if (targetDCNodeNeg) {
|
|
3994
|
-
const dcTerminal = new DCTerminal_1.DCTerminal(
|
|
3995
|
-
dcTerminal.connected = true;
|
|
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));
|
|
3996
4082
|
dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
|
|
3997
4083
|
dcTerminal.dcNode = targetDCNodeNeg;
|
|
4084
|
+
dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3998
4085
|
targetDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3999
4086
|
cimModel.addDCTerminal(dcTerminal);
|
|
4000
4087
|
}
|
|
@@ -4003,7 +4090,7 @@ class ConverterIntegral7 {
|
|
|
4003
4090
|
}
|
|
4004
4091
|
cimModel.addDCLine(dcLine);
|
|
4005
4092
|
cimModel.addDCLineSegment(dcLineSegment);
|
|
4006
|
-
if (bipol) {
|
|
4093
|
+
if (bipol && dcLineNeg && dcLineSegmentNeg) {
|
|
4007
4094
|
cimModel.addDCLine(dcLineNeg);
|
|
4008
4095
|
cimModel.addDCLineSegment(dcLineSegmentNeg);
|
|
4009
4096
|
}
|
|
@@ -4179,8 +4266,11 @@ class ConverterIntegral7 {
|
|
|
4179
4266
|
}
|
|
4180
4267
|
}
|
|
4181
4268
|
for (const i7Data of result) {
|
|
4182
|
-
const
|
|
4183
|
-
|
|
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);
|
|
4184
4274
|
const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer);
|
|
4185
4275
|
/** AssetInfos */
|
|
4186
4276
|
if (i7Data.baujahr) {
|
|
@@ -4238,9 +4328,7 @@ class ConverterIntegral7 {
|
|
|
4238
4328
|
const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '');
|
|
4239
4329
|
const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
|
|
4240
4330
|
const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber);
|
|
4241
|
-
|
|
4242
|
-
// I rated
|
|
4243
|
-
const ir1 = (0, utils_2.getTrafoIr)(ur, sr);
|
|
4331
|
+
const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
|
|
4244
4332
|
// P0 Lastverluste im I7 Modell p_leer
|
|
4245
4333
|
const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
|
|
4246
4334
|
// Leerlaufverluste
|
|
@@ -4269,7 +4357,7 @@ class ConverterIntegral7 {
|
|
|
4269
4357
|
const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode.ABC, true, 1) : undefined;*/
|
|
4270
4358
|
if (!startTerminal)
|
|
4271
4359
|
this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
|
|
4272
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7,
|
|
4360
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig);
|
|
4273
4361
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4274
4362
|
let equivalentInjection = undefined;
|
|
4275
4363
|
if (startTerminal) {
|
|
@@ -4295,14 +4383,12 @@ class ConverterIntegral7 {
|
|
|
4295
4383
|
powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
|
|
4296
4384
|
powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
|
|
4297
4385
|
powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
|
|
4298
|
-
// I rated
|
|
4299
|
-
const ir2 = (sr * Math.pow(10, 6) / ur2 * 1000) / Math.sqrt(3);
|
|
4300
4386
|
/* const ziel = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
|
|
4301
4387
|
const zielTerminal = ziel ? this.createConnection(cimModel, powerTransformer, ziel, PhaseCode.ABC, true, 2) : undefined;*/
|
|
4302
4388
|
const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
|
|
4303
4389
|
if (!zielTerminal)
|
|
4304
4390
|
this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
|
|
4305
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7,
|
|
4391
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, undefined, i7Data, defaultValuesConfig);
|
|
4306
4392
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4307
4393
|
if (zielTerminal) {
|
|
4308
4394
|
let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
|
|
@@ -4391,8 +4477,15 @@ class ConverterIntegral7 {
|
|
|
4391
4477
|
}
|
|
4392
4478
|
for (const i7Data of result) {
|
|
4393
4479
|
const sternpunktKnotenMap = new Map();
|
|
4394
|
-
const
|
|
4395
|
-
const powerTransformer = new PowerTransformer_1.PowerTransformer(
|
|
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
|
+
}
|
|
4396
4489
|
const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer);
|
|
4397
4490
|
/** AssetInfos */
|
|
4398
4491
|
if (i7Data.baujahr) {
|
|
@@ -4403,13 +4496,6 @@ class ConverterIntegral7 {
|
|
|
4403
4496
|
facility.setAssetInfo(powerTransformerInfo);
|
|
4404
4497
|
powerTransformerInfo.addAsset(facility);
|
|
4405
4498
|
}
|
|
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
|
-
}
|
|
4413
4499
|
const schaltgruppe = i7Data.schaltgr;
|
|
4414
4500
|
//Set property 'isPartOfGeneratorUnit' to 'true' if property 'Blocktransformator' is set in Integral data.
|
|
4415
4501
|
if (this.blocktransformatoren.includes((0, parser_utils_1.convertToNumberI7)(i7Data.id))) {
|
|
@@ -4439,10 +4525,9 @@ class ConverterIntegral7 {
|
|
|
4439
4525
|
const ur1 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
|
|
4440
4526
|
const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
|
|
4441
4527
|
const ur3 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 3);
|
|
4442
|
-
|
|
4443
|
-
const
|
|
4444
|
-
const
|
|
4445
|
-
const ir3 = sr3 * Math.pow(10, 6) / ((ur3 * Math.pow(10, 3)) * Math.sqrt(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;
|
|
4446
4531
|
//Leerlaufverluste in kW
|
|
4447
4532
|
const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
|
|
4448
4533
|
// Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
|
|
@@ -4495,7 +4580,7 @@ class ConverterIntegral7 {
|
|
|
4495
4580
|
powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
|
|
4496
4581
|
powerTransformerEnd1.ratedU = ur1;
|
|
4497
4582
|
powerTransformerEnd1.ratedS = sr1;
|
|
4498
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7,
|
|
4583
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
|
|
4499
4584
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4500
4585
|
let equivalentInjection = undefined;
|
|
4501
4586
|
if (terminal1) {
|
|
@@ -4505,6 +4590,9 @@ class ConverterIntegral7 {
|
|
|
4505
4590
|
equivalentInjection = this.createBoundaryEquivalentInjection(frame, tmp_cn);
|
|
4506
4591
|
}
|
|
4507
4592
|
}
|
|
4593
|
+
if (powerTransformer.mrid === "49afe40b-89cc-419f-afc5-f330c6589f82") {
|
|
4594
|
+
const stop = true;
|
|
4595
|
+
}
|
|
4508
4596
|
//set transformer end winding connection
|
|
4509
4597
|
powerTransformerEnd1.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd1.endNumber, powerTransformerEnd1.grounded);
|
|
4510
4598
|
powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
|
|
@@ -4545,7 +4633,7 @@ class ConverterIntegral7 {
|
|
|
4545
4633
|
powerTransformerEnd2.ratedS = sr2;
|
|
4546
4634
|
powerTransformerEnd2.ratedU = ur2;
|
|
4547
4635
|
powerTransformerEnd2.powerTransformer = powerTransformer;
|
|
4548
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, terminal2, sternpunktKnotenMap, integral7,
|
|
4636
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, terminal2, sternpunktKnotenMap, integral7, sdauer2, i7Data, defaultValuesConfig, trafoWicklungen);
|
|
4549
4637
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4550
4638
|
equivalentInjection = undefined;
|
|
4551
4639
|
if (terminal2) {
|
|
@@ -4595,7 +4683,7 @@ class ConverterIntegral7 {
|
|
|
4595
4683
|
powerTransformerEnd3.ratedS = sr3;
|
|
4596
4684
|
powerTransformerEnd3.ratedU = ur3;
|
|
4597
4685
|
powerTransformerEnd3.powerTransformer = powerTransformer;
|
|
4598
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd3, powerTransformer, terminal3, sternpunktKnotenMap, integral7,
|
|
4686
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd3, powerTransformer, terminal3, sternpunktKnotenMap, integral7, sdauer3, i7Data, defaultValuesConfig, trafoWicklungen);
|
|
4599
4687
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4600
4688
|
equivalentInjection = undefined;
|
|
4601
4689
|
if (terminal3) {
|
|
@@ -4748,60 +4836,6 @@ class ConverterIntegral7 {
|
|
|
4748
4836
|
equipment.equipmentContainer = undefined;
|
|
4749
4837
|
cimModel.removeObject(equipment);
|
|
4750
4838
|
}
|
|
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
|
-
}*/
|
|
4805
4839
|
/** Geokoordinaten */
|
|
4806
4840
|
const location = substation.location;
|
|
4807
4841
|
for (let i = 0; i < connectivityNodes.length; i++) {
|
|
@@ -4821,8 +4855,7 @@ class ConverterIntegral7 {
|
|
|
4821
4855
|
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);
|
|
4822
4856
|
junction.terminals.set(terminal.getUUID(), terminal);
|
|
4823
4857
|
terminal.conductingEquipment = junction;
|
|
4824
|
-
|
|
4825
|
-
// terminal.connectivityNode = connectivityNode;
|
|
4858
|
+
terminal.connectivityNode = connectivityNode;
|
|
4826
4859
|
line.addEquipment(junction);
|
|
4827
4860
|
/** Die Geokoordinaten der UA wird auf die Junction des ConnectivityNodes übertragen */
|
|
4828
4861
|
if (location && location.positionPoints.length) {
|
|
@@ -4899,11 +4932,12 @@ class ConverterIntegral7 {
|
|
|
4899
4932
|
data.laenge = 1;
|
|
4900
4933
|
}
|
|
4901
4934
|
// 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.
|
|
4902
|
-
if ((0, parser_utils_1.isNumericI7)(data.laenge) && data.laenge > 0
|
|
4935
|
+
if ((0, parser_utils_1.isNumericI7)(data.laenge) && data.laenge > 0 && !data.flag_impedanzlos) {
|
|
4903
4936
|
acLineSegment.length = data.laenge;
|
|
4904
|
-
}
|
|
4905
|
-
|
|
4906
|
-
|
|
4937
|
+
}
|
|
4938
|
+
else {
|
|
4939
|
+
acLineSegment.length = 1;
|
|
4940
|
+
}
|
|
4907
4941
|
const assetType = defaultModel.getWireInfoByName(data.nametyp);
|
|
4908
4942
|
// r0
|
|
4909
4943
|
if ((0, parser_utils_1.isNumericI7)(data.r0) && data.r0 > 0 && !data.flag_impedanzlos) {
|
|
@@ -4977,48 +5011,92 @@ class ConverterIntegral7 {
|
|
|
4977
5011
|
}
|
|
4978
5012
|
// ir
|
|
4979
5013
|
for (const terminal of acLineSegment.terminals.values()) {
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
else if (assetType && assetType.ratedCurrent && assetType.ratedCurrent !== 0) {
|
|
4984
|
-
this.setConductingEquipmentCurrentLimit(cimModel, acLineSegment.name, terminal, assetType.ratedCurrent);
|
|
4985
|
-
}
|
|
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);
|
|
4986
5017
|
//PSRType
|
|
4987
5018
|
const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, data.typ);
|
|
4988
5019
|
acLineSegment.psrTypeUUID = psrType.mrid;
|
|
4989
|
-
// psrType.addPowerSystemResource(acLineSegment);
|
|
4990
5020
|
}
|
|
4991
5021
|
}
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
|
|
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
|
+
}
|
|
5022
5100
|
}
|
|
5023
5101
|
}
|
|
5024
5102
|
createIfNotExistOperationalLimitType(cimModel, name, type, direction) {
|
|
@@ -5050,7 +5128,10 @@ class ConverterIntegral7 {
|
|
|
5050
5128
|
terminal.phases = phase;
|
|
5051
5129
|
terminal.conductingEquipment = conductingEquipment;
|
|
5052
5130
|
conductingEquipment.addTerminal(terminal);
|
|
5053
|
-
terminal.connected = connected;
|
|
5131
|
+
terminal.connected = (terminal.connected !== undefined) ? terminal.connected : connected;
|
|
5132
|
+
if (terminal.connected === false) {
|
|
5133
|
+
const stop = true;
|
|
5134
|
+
}
|
|
5054
5135
|
if (!isNameSet) {
|
|
5055
5136
|
terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
|
|
5056
5137
|
}
|
|
@@ -5060,7 +5141,7 @@ class ConverterIntegral7 {
|
|
|
5060
5141
|
createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
|
|
5061
5142
|
const cimModel = frame.cimModel;
|
|
5062
5143
|
const anschlussUUID = this.integralID2UUID.get(i7ObjectID);
|
|
5063
|
-
let terminal;
|
|
5144
|
+
let terminal = undefined;
|
|
5064
5145
|
let cn = undefined;
|
|
5065
5146
|
if (cimModel.objects.has(anschlussUUID)) {
|
|
5066
5147
|
// Anschluss befindet sich im selben Modell
|
|
@@ -5114,7 +5195,7 @@ class ConverterIntegral7 {
|
|
|
5114
5195
|
this.annotateBoundaryNode(frame.name, frame.isoCode, frame.tsoName, cn);
|
|
5115
5196
|
}
|
|
5116
5197
|
else {
|
|
5117
|
-
this.logger.error(`Für das Objekt ${conductingEquipment.constructor.name} ${conductingEquipment.getUUID()} konnte am I7-Objekt ${i7ObjectID} kein
|
|
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`);
|
|
5118
5199
|
}
|
|
5119
5200
|
if (terminal) {
|
|
5120
5201
|
terminal.conductingEquipment = conductingEquipment;
|
|
@@ -5122,7 +5203,7 @@ class ConverterIntegral7 {
|
|
|
5122
5203
|
}
|
|
5123
5204
|
}
|
|
5124
5205
|
else {
|
|
5125
|
-
this.logger.error(`Für das Objekt ${conductingEquipment.constructor.name} ${conductingEquipment.getUUID()} konnte am I7-Objekt ${i7ObjectID} kein
|
|
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`);
|
|
5126
5207
|
}
|
|
5127
5208
|
}
|
|
5128
5209
|
return terminal;
|
|
@@ -5221,6 +5302,7 @@ class ConverterIntegral7 {
|
|
|
5221
5302
|
getSpannungsbandTrafo(i7Data, powerTransformerEnds) {
|
|
5222
5303
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
5223
5304
|
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
5305
|
+
var _a, _b, _c;
|
|
5224
5306
|
let minMaxSollResult;
|
|
5225
5307
|
// Spannungsgeregelter Anschluss
|
|
5226
5308
|
/**
|
|
@@ -5229,9 +5311,18 @@ class ConverterIntegral7 {
|
|
|
5229
5311
|
* 2 - Niederspannungsseite (Anschluss 3)
|
|
5230
5312
|
* 3 - Externer Knoten
|
|
5231
5313
|
* */
|
|
5232
|
-
|
|
5233
|
-
|
|
5234
|
-
|
|
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;
|
|
5235
5326
|
tempKnotenId = i7Data.spgreg_anschluss === 3 ? (i7Data.spgreg_knoten !== undefined ? i7Data.spgreg_knoten : undefined) : tempKnotenId;
|
|
5236
5327
|
if (i7Data.spgreg_anschluss >= 0 && i7Data.spgreg_anschluss <= 2 && tempKnotenId !== undefined) { // Lokale Regelung
|
|
5237
5328
|
// Falls tempKnotenId ausgeprägt ist, bestimme in welcher Tabelle der aKnoten bzw. eKnoten enthalten ist.
|
|
@@ -5551,14 +5642,14 @@ class ConverterIntegral7 {
|
|
|
5551
5642
|
coordinateSystem.crsUrn = crsUrn;
|
|
5552
5643
|
cimModel.addCoordinateSystem(coordinateSystem);
|
|
5553
5644
|
}
|
|
5554
|
-
setPowerTransformerEndProperties(frame, powerTransformerEnd, powerTransformer, terminal, sternpunktKnotenMap, integral7,
|
|
5645
|
+
setPowerTransformerEndProperties(frame, powerTransformerEnd, powerTransformer, terminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig, windings) {
|
|
5555
5646
|
var _a, _b;
|
|
5556
5647
|
const cimModel = frame.cimModel;
|
|
5557
5648
|
if (terminal) {
|
|
5558
5649
|
// Topologie
|
|
5559
5650
|
powerTransformerEnd.terminal = terminal;
|
|
5560
|
-
//
|
|
5561
|
-
this.
|
|
5651
|
+
// ApparentPowerLimit
|
|
5652
|
+
this.setConductingEquipmentOperationalLimit(cimModel, `W${powerTransformerEnd.endNumber}` + (powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name), terminal, sdauer, new ApparentPowerLimit_1.ApparentPowerLimit());
|
|
5562
5653
|
let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
|
|
5563
5654
|
// Erdung / Sternpunkt
|
|
5564
5655
|
if (sternpunktKnotenMap.has(i7Data.id) && isTrafo2w) {
|
|
@@ -5612,25 +5703,25 @@ class ConverterIntegral7 {
|
|
|
5612
5703
|
}
|
|
5613
5704
|
convertTapChangers(i7Data, transformerEnds, cimModel, transformerinfo, connectivityNode, spannungsband) {
|
|
5614
5705
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
5615
|
-
/*if(getUUID(i7Data.guid
|
|
5706
|
+
/*if(getUUID(i7Data.guid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
|
|
5616
5707
|
let stop = true; DONE
|
|
5617
5708
|
}
|
|
5618
|
-
if(getUUID(i7Data.guid
|
|
5709
|
+
if(getUUID(i7Data.guid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
|
|
5619
5710
|
let stop = true; DONE
|
|
5620
5711
|
}*/
|
|
5621
|
-
/*if(getUUID(i7Data.guid
|
|
5712
|
+
/*if(getUUID(i7Data.guid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
|
|
5622
5713
|
let stop = true;
|
|
5623
5714
|
}*/
|
|
5624
|
-
if ((0, parser_utils_1.getUUID)(i7Data.guid
|
|
5715
|
+
if ((0, parser_utils_1.getUUID)(i7Data.guid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
|
|
5625
5716
|
let stop = true;
|
|
5626
5717
|
}
|
|
5627
|
-
/*if(getUUID(i7Data.guid
|
|
5718
|
+
/*if(getUUID(i7Data.guid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
|
|
5628
5719
|
let stop = true;
|
|
5629
5720
|
}*/
|
|
5630
|
-
if ((0, parser_utils_1.getUUID)(i7Data.guid
|
|
5721
|
+
if ((0, parser_utils_1.getUUID)(i7Data.guid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
|
|
5631
5722
|
let stop = true;
|
|
5632
5723
|
}
|
|
5633
|
-
/*if(getUUID(i7Data.guid
|
|
5724
|
+
/*if(getUUID(i7Data.guid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
|
|
5634
5725
|
let stop = true;
|
|
5635
5726
|
}*/
|
|
5636
5727
|
let ratioPhaseTapChangerPresent = false;
|
|
@@ -5708,21 +5799,23 @@ class ConverterIntegral7 {
|
|
|
5708
5799
|
const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
|
|
5709
5800
|
//const neutralU = transformerEnd.ratedU;
|
|
5710
5801
|
let tapChanger = undefined;
|
|
5711
|
-
|
|
5712
|
-
|
|
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")
|
|
5713
5805
|
tapChanger = this.createPhaseTapChanger(i7Data, transformerEnds, cimModel, gestufteSeite, entryI7, transformerinfo);
|
|
5714
5806
|
}
|
|
5715
5807
|
else {
|
|
5716
|
-
//
|
|
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;
|
|
5717
5810
|
tapChanger = this.createRatioTapChanger(i7Data, transformerEnds, cimModel, connectivityNode, gestufteSeite, entryI7, spannungsband, transformerinfo);
|
|
5718
5811
|
}
|
|
5719
5812
|
// Stufen
|
|
5720
|
-
this.setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, entryI7, ratioPhaseTapChangerPresent, tapChangerInfo);
|
|
5813
|
+
this.setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, entryI7, ratioPhaseTapChangerPresent, invert, tapChangerInfo);
|
|
5721
5814
|
let stop = true;
|
|
5722
5815
|
}
|
|
5723
5816
|
let stop = true;
|
|
5724
5817
|
}
|
|
5725
|
-
setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, tapChangerNumber, ratioPhaseTapChangerPresent, tapChangerInfo) {
|
|
5818
|
+
setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, tapChangerNumber, ratioPhaseTapChangerPresent, invert, tapChangerInfo) {
|
|
5726
5819
|
var _a;
|
|
5727
5820
|
let lowStep = (0, parser_utils_1.isNumericI7)(i7Data[`minstufe_s${tapChangerNumber}`])
|
|
5728
5821
|
? i7Data[`minstufe_s${tapChangerNumber}`]
|
|
@@ -5744,43 +5837,66 @@ class ConverterIntegral7 {
|
|
|
5744
5837
|
const neutralStepIndex = i7TapArray.indexOf(neutralStep);*/
|
|
5745
5838
|
const lowerVoltageStepCount = (0, utils_2.getTapChangerStepCount)(lowStep, neutralStep);
|
|
5746
5839
|
const upperVoltageStepCount = (0, utils_2.getTapChangerStepCount)(neutralStep, highStep);
|
|
5747
|
-
|
|
5840
|
+
let uMin = (0, parser_utils_1.isNumericI7)(i7Data[`umin_s${tapChangerNumber}`])
|
|
5748
5841
|
? i7Data[`umin_s${tapChangerNumber}`]
|
|
5749
5842
|
: tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.uMin;
|
|
5750
|
-
|
|
5843
|
+
let uMax = (0, parser_utils_1.isNumericI7)(i7Data[`umax_s${tapChangerNumber}`])
|
|
5751
5844
|
? i7Data[`umax_s${tapChangerNumber}`]
|
|
5752
5845
|
: tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.uMax;
|
|
5753
|
-
let
|
|
5846
|
+
let lowerVoltageStepDecrement = Math.abs(uMin / lowerVoltageStepCount);
|
|
5754
5847
|
let upperVoltageStepIncrement = Math.abs(uMax / upperVoltageStepCount);
|
|
5755
5848
|
let increaseVoltageStepIncrement = (0, parser_utils_1.isNumericI7)(upperVoltageStepIncrement) ? upperVoltageStepIncrement : 0;
|
|
5756
5849
|
if (tapChanger instanceof RatioTapChanger_1.RatioTapChanger) {
|
|
5757
5850
|
const ratioTapChanger = tapChanger;
|
|
5758
|
-
|
|
5759
|
-
|
|
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
|
+
}
|
|
5760
5858
|
const ratioTapChangerTable = new RatioTapChangerTable_1.RatioTapChangerTable(common_utils_1.CommonUtils.generateUUID(), `${i7Data.bezeichner} W_${tapChangerNumber}`);
|
|
5761
5859
|
let step_tmp = 0;
|
|
5762
5860
|
let start_step_tmp = step_tmp;
|
|
5763
|
-
//
|
|
5764
|
-
|
|
5765
|
-
|
|
5766
|
-
|
|
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
|
+
}
|
|
5767
5873
|
}
|
|
5768
|
-
//
|
|
5874
|
+
//neutral step
|
|
5769
5875
|
step_tmp++;
|
|
5770
5876
|
(0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[step_tmp], 1);
|
|
5771
5877
|
step_tmp++;
|
|
5772
5878
|
start_step_tmp = step_tmp;
|
|
5773
|
-
//
|
|
5774
|
-
|
|
5775
|
-
|
|
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
|
+
}
|
|
5776
5889
|
}
|
|
5777
5890
|
tapChanger.ratioTapChangerTable = ratioTapChangerTable;
|
|
5778
5891
|
ratioTapChangerTable.ratioTapChanger = tapChanger;
|
|
5779
|
-
//
|
|
5780
|
-
ratioTapChanger.stepVoltageIncrement = Math.abs(Math.round(
|
|
5892
|
+
//average
|
|
5893
|
+
//ratioTapChanger.stepVoltageIncrement = Math.abs(Math.round(lowerVoltageStepDecrement)) + Math.abs(Math.round(increaseVoltageStepIncrement)) / 2;
|
|
5781
5894
|
cimModel.addRatioTapChangerTable(ratioTapChangerTable);
|
|
5782
5895
|
}
|
|
5783
|
-
|
|
5896
|
+
else {
|
|
5897
|
+
//uMin and uMax are symmetrical
|
|
5898
|
+
ratioTapChanger.stepVoltageIncrement = increaseVoltageStepIncrement;
|
|
5899
|
+
}
|
|
5784
5900
|
}
|
|
5785
5901
|
if (tapChanger instanceof PhaseTapChangerNonLinear_1.PhaseTapChangerNonLinear) {
|
|
5786
5902
|
tapChanger.voltageStepIncrement = increaseVoltageStepIncrement;
|
|
@@ -5793,8 +5909,8 @@ class ConverterIntegral7 {
|
|
|
5793
5909
|
tapChanger.neutralStep = neutralStep;
|
|
5794
5910
|
tapChanger.normalStep = currentStep;
|
|
5795
5911
|
tapChanger.step = currentStep;
|
|
5796
|
-
if (Math.abs(
|
|
5797
|
-
this.logger.info(`Trafo ${i7Data.id}: Zusatzspannung Min/Max sind nicht symmetrisch MIN ${
|
|
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.`);
|
|
5798
5914
|
}
|
|
5799
5915
|
}
|
|
5800
5916
|
createRatioTapChanger(i7Data, transformerEnds, cimModel, regulatingConnectivityNode, gestufteSeite, tapChangerNumber, spannungsband, transformerinfo) {
|
|
@@ -5811,6 +5927,9 @@ class ConverterIntegral7 {
|
|
|
5811
5927
|
* */
|
|
5812
5928
|
/** Regelung */
|
|
5813
5929
|
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
|
+
}
|
|
5814
5933
|
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;
|
|
5815
5934
|
ratioTapChanger.transformerEnd = transformerEnd;
|
|
5816
5935
|
//transformerEnd.ratioTapChanger = ratioTapChanger;
|
|
@@ -5852,7 +5971,7 @@ class ConverterIntegral7 {
|
|
|
5852
5971
|
cimModel.addTapChangerControl(tapChangerControl);
|
|
5853
5972
|
}
|
|
5854
5973
|
else {
|
|
5855
|
-
this.logger.
|
|
5974
|
+
this.logger.debug(`debug --- Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
|
|
5856
5975
|
}
|
|
5857
5976
|
cimModel.addRatioTapChanger(ratioTapChanger);
|
|
5858
5977
|
return ratioTapChanger;
|
|
@@ -5900,14 +6019,24 @@ class ConverterIntegral7 {
|
|
|
5900
6019
|
}
|
|
5901
6020
|
default: {
|
|
5902
6021
|
// There is no information given about special tapchanger control, thus create PhaseTapChangerLinear
|
|
5903
|
-
const phaseTapChangerLin = new
|
|
5904
|
-
|
|
5905
|
-
|
|
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);
|
|
5906
6029
|
break;
|
|
5907
6030
|
}
|
|
5908
6031
|
}
|
|
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
|
+
}
|
|
5909
6038
|
// Attribute
|
|
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;
|
|
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;
|
|
5911
6040
|
phaseTapChanger.transformerEnd = transformerEnd;
|
|
5912
6041
|
//transformerEnd.phaseTapChanger = phaseTapChanger;
|
|
5913
6042
|
// Wirkleistungsregelung Anschluss
|
|
@@ -5946,7 +6075,7 @@ class ConverterIntegral7 {
|
|
|
5946
6075
|
cimModel.addTapChangerControl(tapChangerControl);
|
|
5947
6076
|
}
|
|
5948
6077
|
else {
|
|
5949
|
-
this.logger.
|
|
6078
|
+
this.logger.debug(`debug --- Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
|
|
5950
6079
|
}
|
|
5951
6080
|
return phaseTapChanger;
|
|
5952
6081
|
}
|
|
@@ -6268,32 +6397,98 @@ function getGeoCoordinates(i7Data) {
|
|
|
6268
6397
|
return undefined;
|
|
6269
6398
|
}
|
|
6270
6399
|
exports.getGeoCoordinates = getGeoCoordinates;
|
|
6271
|
-
function getDCNodeFromConverter(acDcConverter) {
|
|
6400
|
+
function getDCNodeFromConverter(acDcConverter, polarity) {
|
|
6272
6401
|
let ret_val = undefined;
|
|
6273
6402
|
if (acDcConverter.dCTerminals) {
|
|
6274
6403
|
for (const terminal of acDcConverter.dCTerminals.values()) {
|
|
6275
|
-
if (terminal.dcNode) {
|
|
6404
|
+
if (terminal.dcNode && terminal.polarity === polarity) {
|
|
6276
6405
|
ret_val = terminal.dcNode;
|
|
6277
6406
|
}
|
|
6278
6407
|
}
|
|
6279
6408
|
}
|
|
6280
6409
|
return ret_val;
|
|
6281
6410
|
}
|
|
6282
|
-
function
|
|
6283
|
-
|
|
6284
|
-
|
|
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;
|
|
6285
6436
|
}
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
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);
|
|
6289
6460
|
}
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
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);
|
|
6293
6489
|
}
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
|
|
6490
|
+
function logExecutionTime(logger, startTime, text) {
|
|
6491
|
+
logger.debug(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
|
|
6492
|
+
console.log(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
|
|
6297
6493
|
}
|
|
6298
|
-
exports.connectDCGround = connectDCGround;
|
|
6299
6494
|
//# sourceMappingURL=converter.integral7.js.map
|