@enervance/insight-cim-model 0.0.153 → 0.0.157
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 +957 -764
- 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 +15 -2
- package/dist/converter/integral7/utils.js +186 -16
- package/dist/converter/integral7/utils.js.map +1 -1
- package/dist/etl/etl-neplan/etl-neplan.js +15 -8
- 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,19 @@ 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
|
-
const powerData = (0, utils_2.
|
|
1149
|
+
const powerData = (0, utils_2.getActiveReactivePower2)(i7Data, mf);
|
|
1150
|
+
// const powerDatav2 = getActiveReactivePower2(i7Data, mf);
|
|
1130
1151
|
load.p = powerData[0];
|
|
1131
1152
|
load.q = powerData[1];
|
|
1132
|
-
/**
|
|
1153
|
+
/** AMPI7 profile */
|
|
1133
1154
|
load.p_mf = powerData[2] ? powerData[2] : undefined;
|
|
1134
1155
|
load.q_mf = powerData[3] ? powerData[3] : undefined;
|
|
1156
|
+
load.cos_phi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
|
|
1157
|
+
load.normallyInService = inBetrieb;
|
|
1135
1158
|
//TODO
|
|
1136
1159
|
/* conformLoad.pFixed = conformLoad.p;
|
|
1137
1160
|
conformLoad.qFixed = conformLoad.q; */
|
|
@@ -1149,9 +1172,8 @@ class ConverterIntegral7 {
|
|
|
1149
1172
|
}
|
|
1150
1173
|
});
|
|
1151
1174
|
}
|
|
1152
|
-
convertEinspeisungen(cimModel, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
|
|
1175
|
+
convertEinspeisungen(cimModel, targetVoltages, knotenSfIDs, objectMappingConfig, energySourceTypeMappingConfig) {
|
|
1153
1176
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1154
|
-
const targetConfig = objectMappingConfig.Einspeisung;
|
|
1155
1177
|
const targetClass = objectMappingConfig.Einspeisung.class;
|
|
1156
1178
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.EINSPEISUNG)) {
|
|
1157
1179
|
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 +1183,7 @@ class ConverterIntegral7 {
|
|
|
1161
1183
|
break;
|
|
1162
1184
|
}
|
|
1163
1185
|
case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
|
|
1164
|
-
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, result);
|
|
1186
|
+
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result);
|
|
1165
1187
|
break;
|
|
1166
1188
|
}
|
|
1167
1189
|
case cim_class_names_1.ClassNames.EnergySource: {
|
|
@@ -1169,17 +1191,17 @@ class ConverterIntegral7 {
|
|
|
1169
1191
|
const filtered = result.filter(it => it.spannungsgeregelt && it.einspprio === config.prio);
|
|
1170
1192
|
switch (config.class) {
|
|
1171
1193
|
case 'ExternalNetworkInjection': {
|
|
1172
|
-
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, filtered);
|
|
1194
|
+
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, filtered);
|
|
1173
1195
|
break;
|
|
1174
1196
|
}
|
|
1175
1197
|
case 'SynchronousMachine': {
|
|
1176
|
-
yield this.convertEnergySourceToSynchronousMachine(cimModel, filtered);
|
|
1198
|
+
yield this.convertEnergySourceToSynchronousMachine(cimModel, targetVoltages, filtered);
|
|
1177
1199
|
break;
|
|
1178
1200
|
}
|
|
1179
1201
|
}
|
|
1180
1202
|
}
|
|
1181
1203
|
const i7EnergySourceResults = result.filter(it => !it.spannungsgeregelt);
|
|
1182
|
-
yield this.convertEinspeisungen2EnergySource(cimModel, i7EnergySourceResults, energySourceTypeMappingConfig);
|
|
1204
|
+
yield this.convertEinspeisungen2EnergySource(cimModel, targetVoltages, i7EnergySourceResults, energySourceTypeMappingConfig);
|
|
1183
1205
|
const others = result.filter(it => !it.spannungsgeregelt && !it.einspprio);
|
|
1184
1206
|
console.log(`convertEinspeisungen nicht konvertierte Objekte ${others.length}`);
|
|
1185
1207
|
break;
|
|
@@ -1191,21 +1213,21 @@ class ConverterIntegral7 {
|
|
|
1191
1213
|
}
|
|
1192
1214
|
});
|
|
1193
1215
|
}
|
|
1194
|
-
convertErsatzQuerZweige(cimModel, knotenSfIDs, targetClass) {
|
|
1216
|
+
convertErsatzQuerZweige(cimModel, targetVoltages, knotenSfIDs, targetClass) {
|
|
1195
1217
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1196
1218
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
|
|
1197
1219
|
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
1220
|
switch (targetClass) {
|
|
1199
1221
|
case cim_class_names_1.ClassNames.EquivalentInjection: {
|
|
1200
|
-
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, result);
|
|
1222
|
+
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1201
1223
|
break;
|
|
1202
1224
|
}
|
|
1203
1225
|
case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
|
|
1204
|
-
yield this.convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, result);
|
|
1226
|
+
yield this.convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, targetVoltages, result);
|
|
1205
1227
|
break;
|
|
1206
1228
|
}
|
|
1207
1229
|
default: {
|
|
1208
|
-
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, result);
|
|
1230
|
+
yield this.convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1209
1231
|
}
|
|
1210
1232
|
}
|
|
1211
1233
|
}
|
|
@@ -1214,7 +1236,7 @@ class ConverterIntegral7 {
|
|
|
1214
1236
|
}
|
|
1215
1237
|
});
|
|
1216
1238
|
}
|
|
1217
|
-
convertGeneratoren(cimModel, knotenSfIDs, energyTypesConfig) {
|
|
1239
|
+
convertGeneratoren(cimModel, targetVoltages, knotenSfIDs, energyTypesConfig) {
|
|
1218
1240
|
var _a;
|
|
1219
1241
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1220
1242
|
// Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
|
|
@@ -1224,6 +1246,7 @@ class ConverterIntegral7 {
|
|
|
1224
1246
|
const genType = this.generatorTypen.get(i7Data.nametyp);
|
|
1225
1247
|
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
1248
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
1249
|
+
const cosPhi = (0, parser_utils_1.isNumericI7)(i7Data.cos_phi) ? (0, parser_utils_1.convertToNumberI7)(i7Data.cos_phi) : undefined;
|
|
1227
1250
|
const maxP = (0, parser_utils_1.isNumericI7)(i7Data.p_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_max) : undefined;
|
|
1228
1251
|
const minP = (0, parser_utils_1.isNumericI7)(i7Data.p_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_min) : undefined;
|
|
1229
1252
|
const mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
|
|
@@ -1234,7 +1257,9 @@ class ConverterIntegral7 {
|
|
|
1234
1257
|
const isRotatingPhaseShifter = (mf !== undefined && maxP === 0 && minP === 0) || flagCondenserOperationMode;
|
|
1235
1258
|
const isGenerator = (maxP > 0 || maxP === undefined);
|
|
1236
1259
|
const isMotor = (minP < 0 || minP === undefined);
|
|
1260
|
+
/**AMPI7 profile */
|
|
1237
1261
|
synchronousMachine.nameprimaertyp = i7Data.nameprimaertyp !== undefined ? i7Data.nameprimaertyp : (genType !== undefined ? genType.nameprimaertyp : undefined);
|
|
1262
|
+
synchronousMachine.cos_phi = cosPhi;
|
|
1238
1263
|
/** Set machine type */
|
|
1239
1264
|
if (isRotatingPhaseShifter && isGenerator && isMotor) {
|
|
1240
1265
|
synchronousMachine.type = SynchronousMachineKind_1.SynchronousMachineKind.generatorOrCondenserOrMotor;
|
|
@@ -1303,16 +1328,24 @@ class ConverterIntegral7 {
|
|
|
1303
1328
|
}
|
|
1304
1329
|
const prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
|
|
1305
1330
|
synchronousMachine.referencePriority = prio;
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1331
|
+
let maxQ = (0, parser_utils_1.isNumericI7)(i7Data.q_max) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_max) : undefined;
|
|
1332
|
+
let minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
|
|
1333
|
+
let maxQvonPmax = (0, parser_utils_1.isNumericI7)(i7Data.qmax_von_pmax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmax_von_pmax) : undefined;
|
|
1334
|
+
let minQvonPmax = (0, parser_utils_1.isNumericI7)(i7Data.qmin_von_pmax) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmin_von_pmax) : undefined;
|
|
1335
|
+
let maxQvonPmin = (0, parser_utils_1.isNumericI7)(i7Data.qmax_von_pmin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmax_von_pmin) : undefined;
|
|
1336
|
+
let minQvonPmin = (0, parser_utils_1.isNumericI7)(i7Data.qmin_von_pmin) ? (0, parser_utils_1.convertToNumberI7)(i7Data.qmin_von_pmin) : undefined;
|
|
1337
|
+
maxQ = maxQ ? maxQ : minQ;
|
|
1338
|
+
minQ = minQ ? minQ : maxQ;
|
|
1339
|
+
maxQvonPmax = maxQvonPmax ? maxQvonPmax : maxQvonPmin;
|
|
1340
|
+
minQvonPmax = minQvonPmax ? minQvonPmax : minQvonPmin;
|
|
1341
|
+
maxQvonPmin = maxQvonPmin ? maxQvonPmin : maxQvonPmax;
|
|
1342
|
+
minQvonPmin = minQvonPmin ? minQvonPmin : minQvonPmax;
|
|
1312
1343
|
synchronousMachine.maxQ = maxQ ? maxQ : maxQvonPmax;
|
|
1313
1344
|
synchronousMachine.minQ = minQ ? minQ : minQvonPmin;
|
|
1314
1345
|
const pType = (genType === null || genType === void 0 ? void 0 : genType.sr) * (genType === null || genType === void 0 ? void 0 : genType.cosphir);
|
|
1315
1346
|
const qType = Math.sqrt(Math.pow(genType === null || genType === void 0 ? void 0 : genType.sr, 2) - Math.pow(pType, 2));
|
|
1347
|
+
// AMP I7 Profil
|
|
1348
|
+
synchronousMachine.cos_phi = i7Data.cos_phi;
|
|
1316
1349
|
// SSH Profil
|
|
1317
1350
|
synchronousMachine.setActivePower(p * -1); //convert to load sign system
|
|
1318
1351
|
synchronousMachine.setReactivePower(q * -1); //convert to load sign system
|
|
@@ -1339,21 +1372,21 @@ class ConverterIntegral7 {
|
|
|
1339
1372
|
/** EQ-SC */
|
|
1340
1373
|
synchronousMachine.earthing = ((_a = i7Data.erdung) === null || _a === void 0 ? void 0 : _a.length) > 0 && i7Data.erdung != 'isoliert' ? true : false;
|
|
1341
1374
|
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 =
|
|
1375
|
+
synchronousMachine.r0 = 0;
|
|
1343
1376
|
synchronousMachine.r2 = 0;
|
|
1344
|
-
synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
1377
|
+
synchronousMachine.x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0g) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0g) : undefined;
|
|
1345
1378
|
synchronousMachine.x2 = 0;
|
|
1346
1379
|
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
1380
|
// synchronousMachine.earthingStarPointR
|
|
1348
1381
|
// synchronousMachine.earthingStarPointX
|
|
1349
|
-
synchronousMachine.ikk = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
1382
|
+
synchronousMachine.ikk = (0, parser_utils_1.isNumericI7)(i7Data.ikd) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ikd) : undefined;
|
|
1350
1383
|
// synchronousMachine.mu: number;
|
|
1351
1384
|
// synchronousMachine.satDirectSyncX: number;
|
|
1352
1385
|
// synchronousMachine.satDirectTransX: number;
|
|
1353
1386
|
// synchronousMachine.shortCircuitRotorType: ShortCircuitRotorKind;
|
|
1354
1387
|
// synchronousMachine.voltageRegulationRange: number;
|
|
1355
1388
|
/** Create ReactiveCapabilityCurves */
|
|
1356
|
-
if (minP && maxP && minQvonPmin && maxQvonPmax) {
|
|
1389
|
+
if (minP !== undefined && maxP !== undefined && minQvonPmin != undefined && maxQvonPmax !== undefined) {
|
|
1357
1390
|
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
1391
|
reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
|
|
1359
1392
|
reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
|
|
@@ -1376,26 +1409,6 @@ class ConverterIntegral7 {
|
|
|
1376
1409
|
cimModel.addReactiveCapabilityCurve(reactiveCapabilityCurve);
|
|
1377
1410
|
synchronousMachine.initialReactiveCapabilityCurveUUID = reactiveCapabilityCurve.mrid;
|
|
1378
1411
|
}
|
|
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
1412
|
/** GeneratingUnit section*/
|
|
1400
1413
|
let generatingUnit;
|
|
1401
1414
|
if (synchronousMachine.type !== SynchronousMachineKind_1.SynchronousMachineKind.condenser) {
|
|
@@ -1486,7 +1499,7 @@ class ConverterIntegral7 {
|
|
|
1486
1499
|
generatingUnit.addRotatingMachine(synchronousMachine);
|
|
1487
1500
|
synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
|
|
1488
1501
|
}
|
|
1489
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data,
|
|
1502
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages, generatingUnit);
|
|
1490
1503
|
const smtcr = new SynchronousMachineTimeConstantReactance_1.SynchronousMachineTimeConstantReactance(common_utils_1.CommonUtils.generateUUID(), `smtcr_${synchronousMachine.name}`);
|
|
1491
1504
|
smtcr.enabled = inBetrieb;
|
|
1492
1505
|
// TODO: default value?
|
|
@@ -1530,12 +1543,9 @@ class ConverterIntegral7 {
|
|
|
1530
1543
|
}
|
|
1531
1544
|
});
|
|
1532
1545
|
}
|
|
1533
|
-
convertEnergySourceToSynchronousMachine(cimModel, result) {
|
|
1546
|
+
convertEnergySourceToSynchronousMachine(cimModel, targetVoltages, result) {
|
|
1534
1547
|
for (const i7Data of result) {
|
|
1535
1548
|
try {
|
|
1536
|
-
if (i7Data.guid.toLowerCase().includes('_e11f3fe9-0b7a-4ff1-a0dc-214c4c3fd8cc')) {
|
|
1537
|
-
console.log();
|
|
1538
|
-
}
|
|
1539
1549
|
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
1550
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
1541
1551
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data);
|
|
@@ -1558,28 +1568,7 @@ class ConverterIntegral7 {
|
|
|
1558
1568
|
const usoll = +i7Data.usoll;
|
|
1559
1569
|
synchronousMachine.ratedU = usoll;
|
|
1560
1570
|
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);
|
|
1571
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages);
|
|
1583
1572
|
cimModel.addSynchronousMachine(synchronousMachine);
|
|
1584
1573
|
this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.GENERATOR);
|
|
1585
1574
|
}
|
|
@@ -1595,41 +1584,48 @@ class ConverterIntegral7 {
|
|
|
1595
1584
|
const result = yield this.mysqlController.execQuery((0, integral_sql_1.getNetzQuery)(integral_sql_1.I7Objects.ASYNCHRONMOTOR, 0, 0, knotenSfIDs));
|
|
1596
1585
|
for (const i7Data of result) {
|
|
1597
1586
|
const assetType = this.asynchronmotorTypen.get(i7Data.nametyp);
|
|
1598
|
-
const
|
|
1587
|
+
const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : true;
|
|
1588
|
+
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);
|
|
1589
|
+
const wirkungsgrad = (0, parser_utils_1.isNumericI7)(i7Data.wirkungsgrad) ? i7Data.wirkungsgrad : undefined;
|
|
1590
|
+
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);
|
|
1591
|
+
//AMPI7 profile content
|
|
1592
|
+
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
1593
|
let mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
|
|
1600
1594
|
if (mf) {
|
|
1601
1595
|
cimModel.addMultiplierFactor(mf);
|
|
1602
1596
|
asynchronousMachine.multiplierFactorUUID = mf.getUUID();
|
|
1603
1597
|
}
|
|
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;
|
|
1598
|
+
asynchronousMachine.normallyInService = inBetrieb;
|
|
1599
|
+
//EQ core profile content
|
|
1600
|
+
asynchronousMachine.ratedPowerFactor = cosphir;
|
|
1611
1601
|
asynchronousMachine.ratedS = (0, parser_utils_1.isNumericI7)(i7Data.sr) ? i7Data.sr : assetType === null || assetType === void 0 ? void 0 : assetType.sr;
|
|
1612
1602
|
asynchronousMachine.ratedU = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? i7Data.ur : assetType === null || assetType === void 0 ? void 0 : assetType.ur;
|
|
1603
|
+
//EQ short circuit profile content
|
|
1604
|
+
asynchronousMachine.converterFedDrive = false;
|
|
1605
|
+
asynchronousMachine.efficiency = wirkungsgrad * 100;
|
|
1606
|
+
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);
|
|
1607
|
+
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);
|
|
1608
|
+
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));
|
|
1609
|
+
asynchronousMachine.reversible = false;
|
|
1610
|
+
//SSH profile content
|
|
1613
1611
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
|
|
1614
1612
|
const p = powerData[0];
|
|
1615
1613
|
const q = powerData[1];
|
|
1616
1614
|
asynchronousMachine.setActivePower(p);
|
|
1617
1615
|
asynchronousMachine.setReactivePower(q);
|
|
1616
|
+
asynchronousMachine.asynchronousMachineType = AsynchronousMachineKind_1.AsynchronousMachineKind.motor;
|
|
1617
|
+
asynchronousMachine.controlEnabled = false;
|
|
1618
|
+
//AMPI7 profile content
|
|
1618
1619
|
asynchronousMachine.p_mf = powerData[2] ? powerData[2] : undefined;
|
|
1619
1620
|
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;
|
|
1621
|
+
//EQ core profile content
|
|
1623
1622
|
const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
1624
1623
|
if (connectivityNode) {
|
|
1625
1624
|
(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
1625
|
const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()));
|
|
1628
1626
|
if (equipmentContainer) {
|
|
1629
1627
|
equipmentContainer.addEquipment(asynchronousMachine);
|
|
1630
1628
|
asynchronousMachine.equipmentContainer = equipmentContainer;
|
|
1631
|
-
cimModel.addAsynchronousMachine(asynchronousMachine);
|
|
1632
|
-
this.addIdMapping(i7Data.id, asynchronousMachine.mrid, integral_sql_1.Integral7TableNames.ASYNCHRONMOTOR);
|
|
1633
1629
|
}
|
|
1634
1630
|
else {
|
|
1635
1631
|
this.logger.debug(`AsynchronousMachine ${i7Data.id} besitzt keinen EquipmentContainer.`);
|
|
@@ -1638,6 +1634,8 @@ class ConverterIntegral7 {
|
|
|
1638
1634
|
else {
|
|
1639
1635
|
this.logger.debug(`AsynchronousMachine ${i7Data.id} besitzt keinen ConnectivityNode.`);
|
|
1640
1636
|
}
|
|
1637
|
+
cimModel.addAsynchronousMachine(asynchronousMachine);
|
|
1638
|
+
this.addIdMapping(i7Data.id, asynchronousMachine.mrid, integral_sql_1.Integral7TableNames.ASYNCHRONMOTOR);
|
|
1641
1639
|
}
|
|
1642
1640
|
}
|
|
1643
1641
|
else {
|
|
@@ -1645,7 +1643,7 @@ class ConverterIntegral7 {
|
|
|
1645
1643
|
}
|
|
1646
1644
|
});
|
|
1647
1645
|
}
|
|
1648
|
-
convertKraftwerksbloecke(cimModel, knotenSfIDs, energyTypesConfig) {
|
|
1646
|
+
convertKraftwerksbloecke(cimModel, targetVoltages, knotenSfIDs, energyTypesConfig) {
|
|
1649
1647
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1650
1648
|
// Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
|
|
1651
1649
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KWBLOCK)) {
|
|
@@ -1702,19 +1700,6 @@ class ConverterIntegral7 {
|
|
|
1702
1700
|
// synchronousMachine.x0 = i7Data.x0k;
|
|
1703
1701
|
// synchronousMachine.x2 = 0;
|
|
1704
1702
|
// 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
1703
|
// GeneratingUnit
|
|
1719
1704
|
const generatingUnitConfig = energyTypesConfig[i7Data.nameprimaertyp];
|
|
1720
1705
|
/** Wenn ein Config für den Primärenergietyp vorhanden*/
|
|
@@ -1785,8 +1770,18 @@ class ConverterIntegral7 {
|
|
|
1785
1770
|
// generatingUnit.totalEfficiency
|
|
1786
1771
|
generatingUnit.addRotatingMachine(synchronousMachine);
|
|
1787
1772
|
synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
|
|
1788
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data,
|
|
1789
|
-
|
|
1773
|
+
const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, targetVoltages, generatingUnit);
|
|
1774
|
+
switch (i7Data.spannungsgeregelt) {
|
|
1775
|
+
// TODO Welche Modi sind möglich?
|
|
1776
|
+
case 1: {
|
|
1777
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
1778
|
+
break;
|
|
1779
|
+
}
|
|
1780
|
+
default: {
|
|
1781
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.timeScheduled;
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
synchronousMachine.regulatingControlUUID = regulatingControl.mrid;
|
|
1790
1785
|
cimModel.addGeneratingUnit(generatingUnit);
|
|
1791
1786
|
cimModel.addSynchronousMachine(synchronousMachine);
|
|
1792
1787
|
this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.KWBLOCK);
|
|
@@ -1794,7 +1789,7 @@ class ConverterIntegral7 {
|
|
|
1794
1789
|
}
|
|
1795
1790
|
});
|
|
1796
1791
|
}
|
|
1797
|
-
convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, result) {
|
|
1792
|
+
convertErsatzQuerZweige2ExternalNetworkInjection(cimModel, targetVoltages, result) {
|
|
1798
1793
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1799
1794
|
for (const i7Data of result) {
|
|
1800
1795
|
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 +1817,14 @@ class ConverterIntegral7 {
|
|
|
1822
1817
|
externalNetworkInjection.minZ0ToZ1Ratio
|
|
1823
1818
|
externalNetworkInjection.p
|
|
1824
1819
|
externalNetworkInjection.q*/
|
|
1825
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data);
|
|
1820
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
1826
1821
|
// ToDo PSRType
|
|
1827
1822
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
1828
1823
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG);
|
|
1829
1824
|
}
|
|
1830
1825
|
});
|
|
1831
1826
|
}
|
|
1832
|
-
convertErsatzQuerZweige2EquivalentInjection(cimModel, result) {
|
|
1827
|
+
convertErsatzQuerZweige2EquivalentInjection(cimModel, targetVoltages, result) {
|
|
1833
1828
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1834
1829
|
for (const i7Data of result) {
|
|
1835
1830
|
const einspeisePrio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : 1;
|
|
@@ -1842,10 +1837,10 @@ class ConverterIntegral7 {
|
|
|
1842
1837
|
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
1838
|
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
1839
|
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.
|
|
1840
|
+
const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r0) : undefined;
|
|
1846
1841
|
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.
|
|
1842
|
+
const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : undefined;
|
|
1843
|
+
const x1 = (0, parser_utils_1.isNumericI7)(i7Data.x1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x1) : undefined;
|
|
1849
1844
|
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
1845
|
/** Export Extended Ward equivalent with voltage regulation */
|
|
1851
1846
|
if (flag_lfl && !flag_ks && usoll && (r_ext !== 0 || x_ext !== 0)) {
|
|
@@ -1862,6 +1857,19 @@ class ConverterIntegral7 {
|
|
|
1862
1857
|
equivalentInjection.x0 = 1e9;
|
|
1863
1858
|
equivalentInjection.x2 = 1e9;
|
|
1864
1859
|
}
|
|
1860
|
+
/** Export Extended Ward equivalent with no voltage regulation */
|
|
1861
|
+
else if ((r_ext !== 0 || x_ext !== 0)) {
|
|
1862
|
+
equivalentInjection.regulationCapability = false;
|
|
1863
|
+
equivalentInjection.rExt = r_ext;
|
|
1864
|
+
equivalentInjection.r = 1e9;
|
|
1865
|
+
equivalentInjection.r0 = 1e9;
|
|
1866
|
+
equivalentInjection.r2 = 1e9;
|
|
1867
|
+
equivalentInjection.xExt = x_ext;
|
|
1868
|
+
equivalentInjection.x = 1e9;
|
|
1869
|
+
equivalentInjection.x0 = 1e9;
|
|
1870
|
+
equivalentInjection.x2 = 1e9;
|
|
1871
|
+
}
|
|
1872
|
+
/** Export equivalent with only short circuit computation capability */
|
|
1865
1873
|
else if (!flag_lfl && flag_ks) {
|
|
1866
1874
|
equivalentInjection.regulationCapability = false;
|
|
1867
1875
|
equivalentInjection.r = r1;
|
|
@@ -1882,17 +1890,6 @@ class ConverterIntegral7 {
|
|
|
1882
1890
|
equivalentInjection.x0 = x0;
|
|
1883
1891
|
equivalentInjection.x2 = x1;
|
|
1884
1892
|
}
|
|
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
1893
|
else {
|
|
1897
1894
|
equivalentInjection.regulationCapability = false;
|
|
1898
1895
|
equivalentInjection.r = 1e9;
|
|
@@ -1908,30 +1905,30 @@ class ConverterIntegral7 {
|
|
|
1908
1905
|
equivalentInjection.einspeisePrio = einspeisePrio;
|
|
1909
1906
|
equivalentInjection.kr = kr;
|
|
1910
1907
|
equivalentInjection.aggregate = true; // default Wert im I7 Export. Not needed for EquivalentInjection, BusbarSection, PowerTransformerEnd, EquivalentShunt, EquivalentBranch
|
|
1911
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data);
|
|
1908
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data, targetVoltages);
|
|
1912
1909
|
// ToDo PSRType
|
|
1913
1910
|
cimModel.addEquivalentInjection(equivalentInjection);
|
|
1914
1911
|
this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG);
|
|
1915
1912
|
}
|
|
1916
1913
|
});
|
|
1917
1914
|
}
|
|
1918
|
-
//TODO: Die Randnetzeinspeisung ist nach CGMES 2.4.15 eine
|
|
1919
|
-
convertBoundaryInjections(cimModel, knotenSfIDs, targetClass) {
|
|
1915
|
+
//TODO: Die Randnetzeinspeisung ist nach CGMES 2.4.15 eine equivalentInjection, d.h. die Fallunterscheidung kann ausbleiben?...Diskussion mit Andreas
|
|
1916
|
+
convertBoundaryInjections(cimModel, targetVoltages, knotenSfIDs, targetClass) {
|
|
1920
1917
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1921
1918
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.BOUNDARYINJECTION)) {
|
|
1922
1919
|
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
1920
|
switch (targetClass) {
|
|
1924
1921
|
case cim_class_names_1.ClassNames.EquivalentInjection: {
|
|
1925
|
-
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, result);
|
|
1922
|
+
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1926
1923
|
break;
|
|
1927
1924
|
}
|
|
1928
1925
|
case cim_class_names_1.ClassNames.ExternalNetworkInjection: {
|
|
1929
|
-
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, result);
|
|
1926
|
+
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result);
|
|
1930
1927
|
break;
|
|
1931
1928
|
}
|
|
1932
1929
|
default: {
|
|
1933
1930
|
//BoundaryInjections are always exported to EquivalentInjection objects for Boundary profile
|
|
1934
|
-
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, result);
|
|
1931
|
+
yield this.convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result);
|
|
1935
1932
|
}
|
|
1936
1933
|
}
|
|
1937
1934
|
}
|
|
@@ -1940,7 +1937,7 @@ class ConverterIntegral7 {
|
|
|
1940
1937
|
}
|
|
1941
1938
|
});
|
|
1942
1939
|
}
|
|
1943
|
-
convertBoundaryInjections2EquivalentInjection(cimModel, result) {
|
|
1940
|
+
convertBoundaryInjections2EquivalentInjection(cimModel, targetVoltages, result) {
|
|
1944
1941
|
for (const i7Data of result) {
|
|
1945
1942
|
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
1943
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
@@ -1967,7 +1964,7 @@ class ConverterIntegral7 {
|
|
|
1967
1964
|
/** Spannung in kilo*/
|
|
1968
1965
|
// regulatingControl.targetValueUnitMultiplier = UnitMultiplier.k;
|
|
1969
1966
|
// equivalentInjection.regulatingControl = regulatingControl;
|
|
1970
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data);
|
|
1967
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data, targetVoltages);
|
|
1971
1968
|
// const connectivityNode = this.cimModelDefaultValues.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
|
|
1972
1969
|
/** aus dem EqContainer die Sollspannung bestimmen */
|
|
1973
1970
|
// ToDo PSRType
|
|
@@ -1992,7 +1989,7 @@ class ConverterIntegral7 {
|
|
|
1992
1989
|
this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.BOUNDARYINJECTION);
|
|
1993
1990
|
}
|
|
1994
1991
|
}
|
|
1995
|
-
convertBoundaryInjections2ExternalNetworkInjection(cimModel, result) {
|
|
1992
|
+
convertBoundaryInjections2ExternalNetworkInjection(cimModel, targetVoltages, result) {
|
|
1996
1993
|
for (const i7Data of result) {
|
|
1997
1994
|
const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection((0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid), (0, utils_2.getName)(i7Data), i7Data.kurzname);
|
|
1998
1995
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
@@ -2008,18 +2005,7 @@ class ConverterIntegral7 {
|
|
|
2008
2005
|
/** externalNetworkInjection.maxR0ToX0Ratio = 1/(/x0/r0)
|
|
2009
2006
|
externalNetworkInjection.maxR1ToX1Ratio = (1/x1/r1) */
|
|
2010
2007
|
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);
|
|
2008
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
2023
2009
|
// const connectivityNode = this.cimModelDefaultValues.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
|
|
2024
2010
|
/** aus dem EqContainer die Sollspannung bestimmen */
|
|
2025
2011
|
// ToDo PSRType
|
|
@@ -2040,7 +2026,6 @@ class ConverterIntegral7 {
|
|
|
2040
2026
|
}*/
|
|
2041
2027
|
// ToDo PSRType
|
|
2042
2028
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
2043
|
-
cimModel.addRegulatingControl(regulatingControl);
|
|
2044
2029
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.BOUNDARYINJECTION);
|
|
2045
2030
|
}
|
|
2046
2031
|
}
|
|
@@ -2079,26 +2064,31 @@ class ConverterIntegral7 {
|
|
|
2079
2064
|
this.createBoundaryConnection(frame, equivalentBranch, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
|
|
2080
2065
|
this.createBoundaryConnection(frame, equivalentBranch, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
|
|
2081
2066
|
/**EQ */
|
|
2082
|
-
if (flag_lfl
|
|
2067
|
+
if (flag_lfl && !flag_ks) {
|
|
2083
2068
|
equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
|
|
2084
2069
|
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
|
-
|
|
2070
|
+
/*equivalentBranch.r21 = isNumericI7(i7Data.r21_lfl) ? convertToNumberI7(i7Data.r21_lfl) : equivalentBranch.r;
|
|
2071
|
+
equivalentBranch.x21 = isNumericI7(i7Data.x21_lfl) ? convertToNumberI7(i7Data.x21_lfl) : equivalentBranch.x;
|
|
2072
|
+
|
|
2073
|
+
equivalentBranch.positiveR12 = isNumericI7(i7Data.r12_ks) ? convertToNumberI7(i7Data.r12_ks) : 10e9;
|
|
2088
2074
|
equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
|
|
2089
|
-
equivalentBranch.positiveX12 =
|
|
2075
|
+
equivalentBranch.positiveX12 = isNumericI7(i7Data.x12_ks) ? convertToNumberI7(i7Data.x12_ks) : 10e9;
|
|
2090
2076
|
equivalentBranch.positiveX21 = equivalentBranch.positiveX12;
|
|
2077
|
+
|
|
2091
2078
|
equivalentBranch.negativeR12 = equivalentBranch.positiveR12;
|
|
2092
2079
|
equivalentBranch.negativeR21 = equivalentBranch.positiveR21;
|
|
2093
2080
|
equivalentBranch.negativeX12 = equivalentBranch.positiveX12;
|
|
2094
2081
|
equivalentBranch.negativeX21 = equivalentBranch.positiveX21;
|
|
2095
|
-
|
|
2082
|
+
|
|
2083
|
+
equivalentBranch.zeroR12 = isNumericI7(i7Data.r0) ? convertToNumberI7(i7Data.r0) : 10e9;
|
|
2096
2084
|
equivalentBranch.zeroR21 = equivalentBranch.zeroR12;
|
|
2097
|
-
equivalentBranch.zeroX12 =
|
|
2098
|
-
equivalentBranch.zeroX21 = equivalentBranch.zeroX12
|
|
2085
|
+
equivalentBranch.zeroX12 = isNumericI7(i7Data.x0) ? convertToNumberI7(i7Data.x0) : 10e9
|
|
2086
|
+
equivalentBranch.zeroX21 = equivalentBranch.zeroX12;*/
|
|
2099
2087
|
}
|
|
2100
2088
|
else if (!flag_lfl && flag_ks) {
|
|
2101
2089
|
/**EQ-SC */
|
|
2090
|
+
equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
|
|
2091
|
+
equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
|
|
2102
2092
|
equivalentBranch.positiveR12 = (0, parser_utils_1.isNumericI7)(i7Data.r12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_ks) : 10e9;
|
|
2103
2093
|
equivalentBranch.positiveR21 = equivalentBranch.positiveR12;
|
|
2104
2094
|
equivalentBranch.positiveX12 = (0, parser_utils_1.isNumericI7)(i7Data.x12_ks) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_ks) : 10e9;
|
|
@@ -2112,7 +2102,7 @@ class ConverterIntegral7 {
|
|
|
2112
2102
|
equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
|
|
2113
2103
|
equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
|
|
2114
2104
|
}
|
|
2115
|
-
else { //If neither flag_lfl nor flag_ks are specified, any impedance value that is specified will be exported.
|
|
2105
|
+
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
2106
|
equivalentBranch.r = (0, parser_utils_1.isNumericI7)(i7Data.r12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r12_lfl) : 0;
|
|
2117
2107
|
equivalentBranch.x = (0, parser_utils_1.isNumericI7)(i7Data.x12_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x12_lfl) : 0;
|
|
2118
2108
|
equivalentBranch.r21 = (0, parser_utils_1.isNumericI7)(i7Data.r21_lfl) ? (0, parser_utils_1.convertToNumberI7)(i7Data.r21_lfl) : equivalentBranch.r;
|
|
@@ -2129,7 +2119,9 @@ class ConverterIntegral7 {
|
|
|
2129
2119
|
equivalentBranch.zeroR21 = equivalentBranch.zeroR12;
|
|
2130
2120
|
equivalentBranch.zeroX12 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? (0, parser_utils_1.convertToNumberI7)(i7Data.x0) : 10e9;
|
|
2131
2121
|
equivalentBranch.zeroX21 = equivalentBranch.zeroX12;
|
|
2132
|
-
|
|
2122
|
+
if (!flag_lfl && !flag_ks) {
|
|
2123
|
+
this.logger.warn(`Ersatzlängszweig mit GUID ${equivalentBranch.getUUID()} sind die Flags flag_lfl sowie flag_ks nicht definiert.`);
|
|
2124
|
+
}
|
|
2133
2125
|
}
|
|
2134
2126
|
const bdf = [];
|
|
2135
2127
|
bdf.push(this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten)));
|
|
@@ -2159,7 +2151,6 @@ class ConverterIntegral7 {
|
|
|
2159
2151
|
}
|
|
2160
2152
|
/** Kompensationsdrossel*/
|
|
2161
2153
|
convertKompensationsdrossel(cimModel, targetVoltages, knotenSfIDs) {
|
|
2162
|
-
var _a, _b;
|
|
2163
2154
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2164
2155
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL)) {
|
|
2165
2156
|
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 +2207,13 @@ class ConverterIntegral7 {
|
|
|
2216
2207
|
}
|
|
2217
2208
|
shunt.bPerSection = (0, utils_2.calculateBPerSection)(qr * -1, shunt.nomU, shunt.maximumSections);
|
|
2218
2209
|
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
2210
|
//SHC section
|
|
2267
2211
|
const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? i7Data.r0 : undefined;
|
|
2268
2212
|
const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? i7Data.x0 : undefined;
|
|
2269
2213
|
shunt.b0PerSection = (0, utils_2.calculateB0PerSection)(/*r0,*/ Math.abs(x0)) * -1;
|
|
2270
2214
|
shunt.g0PerSection = (0, utils_2.calculateG0PerSection)(r0 /*,x0*/);
|
|
2271
2215
|
this.setShuntGrounding(shunt, sternpunktKnotenMap.get(i7Data.knoten1p), r0, x0);
|
|
2272
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data,
|
|
2216
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, targetVoltages);
|
|
2273
2217
|
cimModel.addLinearShuntCompensator(shunt);
|
|
2274
2218
|
this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL);
|
|
2275
2219
|
}
|
|
@@ -2281,7 +2225,6 @@ class ConverterIntegral7 {
|
|
|
2281
2225
|
}
|
|
2282
2226
|
/** Kompensationskondensator*/
|
|
2283
2227
|
convertKompensationskondensatoren(cimModel, targetVoltages, knotenSfIDs) {
|
|
2284
|
-
var _a, _b;
|
|
2285
2228
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2286
2229
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR)) {
|
|
2287
2230
|
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 +2281,13 @@ class ConverterIntegral7 {
|
|
|
2338
2281
|
}
|
|
2339
2282
|
shunt.bPerSection = (0, utils_2.calculateBPerSection)(qr, shunt.nomU, shunt.maximumSections);
|
|
2340
2283
|
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
2284
|
//SHC section
|
|
2389
2285
|
const r0 = (0, parser_utils_1.isNumericI7)(i7Data.r0) ? i7Data.r0 : undefined;
|
|
2390
2286
|
const x0 = (0, parser_utils_1.isNumericI7)(i7Data.x0) ? i7Data.x0 : undefined;
|
|
2391
2287
|
shunt.b0PerSection = (0, utils_2.calculateB0PerSection)(/*r0,*/ Math.abs(x0));
|
|
2392
2288
|
shunt.g0PerSection = (0, utils_2.calculateG0PerSection)(r0 /*,x0*/);
|
|
2393
2289
|
this.setShuntGrounding(shunt, sternpunktKnotenMap.get(i7Data.knoten1p), r0, x0);
|
|
2394
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data,
|
|
2290
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, targetVoltages);
|
|
2395
2291
|
cimModel.addLinearShuntCompensator(shunt);
|
|
2396
2292
|
this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR);
|
|
2397
2293
|
}
|
|
@@ -2401,13 +2297,12 @@ class ConverterIntegral7 {
|
|
|
2401
2297
|
}
|
|
2402
2298
|
});
|
|
2403
2299
|
}
|
|
2404
|
-
convertStatcom(cimModel, knotenSfIDs) {
|
|
2300
|
+
convertStatcom(cimModel, targetVoltages, knotenSfIDs) {
|
|
2405
2301
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2406
2302
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STATCOM)) {
|
|
2407
2303
|
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
2304
|
for (const i7Data of result) {
|
|
2409
2305
|
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
2306
|
const ur = (0, parser_utils_1.isNumericI7)(i7Data.ur) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ur) : undefined;
|
|
2412
2307
|
const uref = (0, parser_utils_1.isNumericI7)(i7Data.uref) ? (0, parser_utils_1.convertToNumberI7)(i7Data.uref) : undefined;
|
|
2413
2308
|
const mrez = (0, parser_utils_1.isNumericI7)(i7Data.mrez) ? (0, parser_utils_1.convertToNumberI7)(i7Data.mrez) : undefined;
|
|
@@ -2425,34 +2320,12 @@ class ConverterIntegral7 {
|
|
|
2425
2320
|
/** SV */
|
|
2426
2321
|
//statVarCom.svpowerflow
|
|
2427
2322
|
/** 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
|
-
}
|
|
2323
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_rc);
|
|
2324
|
+
const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, true);
|
|
2454
2325
|
/** EQ */
|
|
2455
|
-
|
|
2326
|
+
if (regulatingControl) {
|
|
2327
|
+
statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
|
|
2328
|
+
}
|
|
2456
2329
|
cimModel.addStaticVarCompensator(statVarCom);
|
|
2457
2330
|
this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
|
|
2458
2331
|
}
|
|
@@ -2462,7 +2335,7 @@ class ConverterIntegral7 {
|
|
|
2462
2335
|
}
|
|
2463
2336
|
});
|
|
2464
2337
|
}
|
|
2465
|
-
convertSVC(cimModel, knotenSfIDs) {
|
|
2338
|
+
convertSVC(cimModel, targetVoltages, knotenSfIDs) {
|
|
2466
2339
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2467
2340
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SVC)) {
|
|
2468
2341
|
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 +2358,7 @@ class ConverterIntegral7 {
|
|
|
2485
2358
|
statVarCom.q = (0, parser_utils_1.isNumericI7)(i7Data.q0svc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q0svc) : undefined;
|
|
2486
2359
|
/** SV */
|
|
2487
2360
|
//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
|
-
}
|
|
2361
|
+
const regulatingControl = this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, targetVoltages, undefined, false);
|
|
2515
2362
|
/** EQ */
|
|
2516
2363
|
statVarCom.voltageSetPoint = regulatingControl.targetValue ? regulatingControl.targetValue : ur;
|
|
2517
2364
|
cimModel.addStaticVarCompensator(statVarCom);
|
|
@@ -2529,10 +2376,9 @@ class ConverterIntegral7 {
|
|
|
2529
2376
|
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
2377
|
for (const i7Data of result) {
|
|
2531
2378
|
/** 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;
|
|
2379
|
+
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
2380
|
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.
|
|
2381
|
+
dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.krdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.krdc) : undefined;
|
|
2536
2382
|
// Topologie
|
|
2537
2383
|
/* Anfang
|
|
2538
2384
|
* 3 moegliche Anschluesse
|
|
@@ -2558,54 +2404,46 @@ class ConverterIntegral7 {
|
|
|
2558
2404
|
else {
|
|
2559
2405
|
this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen ConnectivityNode.`);
|
|
2560
2406
|
}
|
|
2561
|
-
const csConverter = new CsConverter_1.CsConverter((0, parser_utils_1.getUUID)(i7Data.guid
|
|
2407
|
+
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);
|
|
2408
|
+
const pr = (0, parser_utils_1.isNumericI7)(i7Data.pr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pr) : undefined;
|
|
2409
|
+
const pges = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pges) : undefined;
|
|
2562
2410
|
/** Wenn Leitungen konvertiert werden, wird das Attribut operationMode gesetzt. */
|
|
2563
2411
|
csConverter.equipmentContainer = dcConverterUnit;
|
|
2564
2412
|
/** Bemessungsleistung (Gleichstromseite) in MW
|
|
2565
2413
|
* im CS-Fall S = P?
|
|
2566
2414
|
* Abhängig vom */
|
|
2567
|
-
csConverter.baseS =
|
|
2415
|
+
csConverter.baseS = pr;
|
|
2568
2416
|
/** Bemessungsspannung (Gleichstromseite) in kV*/
|
|
2569
|
-
csConverter.ratedUdc = (0, parser_utils_1.isNumericI7)(i7Data.
|
|
2417
|
+
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);
|
|
2418
|
+
csConverter.ratedIdc = (0, utils_2.calculateRatedIdc)(csConverter.ratedUdc, pr);
|
|
2570
2419
|
/** spannungsabhängige Wirk-Verluste in kW bei Leerlauf mit Bemessungsspannung in kV*/
|
|
2571
2420
|
csConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
|
|
2572
2421
|
csConverter.maxUdc = csConverter.ratedUdc * 1.05; // +5% * ratedUdc
|
|
2573
2422
|
csConverter.minUdc = csConverter.ratedUdc * 0.95; // -5% * ratedUdc
|
|
2574
|
-
csConverter.resistiveLoss = 0;
|
|
2423
|
+
csConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
|
|
2575
2424
|
csConverter.switchingLoss = 0;
|
|
2576
2425
|
/* csConverter.numberOfValves
|
|
2577
2426
|
csConverter.valveU0*/
|
|
2578
2427
|
/** Stromrichter */
|
|
2579
2428
|
/** Zündwinkel bei Gleichrichterbetrieb (ins Drehstromnetz eingespeiste Wirkleistung < 0) - etwa 15 Grad */
|
|
2580
|
-
|
|
2581
|
-
|
|
2429
|
+
csConverter.maxAlpha = 180;
|
|
2430
|
+
csConverter.minAlpha = (0, parser_utils_1.isNumericI7)(i7Data.alpha) ? (0, parser_utils_1.convertToNumberI7)(i7Data.alpha) : 15;
|
|
2582
2431
|
/** Löschwinkel bei Wechselrichterbetrieb (ins Drehstromnetz Wirkleistung > 0) - etwa 21,5 Grad */
|
|
2583
|
-
|
|
2584
|
-
|
|
2432
|
+
csConverter.maxGamma = undefined;
|
|
2433
|
+
csConverter.minGamma = (0, parser_utils_1.isNumericI7)(i7Data.gamma) ? (0, parser_utils_1.convertToNumberI7)(i7Data.gamma) : 21.5;
|
|
2585
2434
|
/** SSH profile export*/
|
|
2586
|
-
csConverter.p =
|
|
2435
|
+
csConverter.p = pges ? pges * -1 : 0;
|
|
2587
2436
|
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
|
-
}
|
|
2437
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, csConverter, i7Data);
|
|
2599
2438
|
/** Status */
|
|
2600
2439
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
2601
2440
|
csConverter.normallyInService = inBetrieb;
|
|
2602
2441
|
/** Topologie AC Seite*/
|
|
2603
|
-
if (acConnectivityNode) {
|
|
2604
|
-
|
|
2605
|
-
}
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
}
|
|
2442
|
+
/**if (acConnectivityNode) {
|
|
2443
|
+
csConverter.pccTerminal = this.reateConnection(cimModel, csConverter, acConnectivityNode, PhaseCode.ABC, true);
|
|
2444
|
+
} else {
|
|
2445
|
+
this.logger.debug(`CsConverter ${i7Data.id} ${csConverter.mrid} besitzt keinen AC Anschluss.`);
|
|
2446
|
+
}**/
|
|
2609
2447
|
/** Topologie DC Seite*/
|
|
2610
2448
|
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
2449
|
dcNode.dcEquipmentContainer = dcConverterUnit;
|
|
@@ -2631,17 +2469,27 @@ class ConverterIntegral7 {
|
|
|
2631
2469
|
}
|
|
2632
2470
|
});
|
|
2633
2471
|
}
|
|
2634
|
-
convertVsConverterDC(cimModel, integral7, knotenSfIDs) {
|
|
2635
|
-
var _a, _b;
|
|
2472
|
+
convertVsConverterDC(cimModel, targetVoltages, integral7, knotenSfIDs) {
|
|
2636
2473
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2637
2474
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC)) {
|
|
2638
2475
|
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
2476
|
for (const i7Data of result) {
|
|
2640
2477
|
/** Containment DC DCConverterUnit */
|
|
2641
|
-
const dcConverterUnit = new DCConverterUnit_1.INTEGRALDCConverterUnit((0, parser_utils_1.getUUID)(i7Data.guid_dcconverterp
|
|
2642
|
-
|
|
2478
|
+
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']));
|
|
2479
|
+
/** target voltage local*/
|
|
2480
|
+
const localTargetVoltage = (0, parser_utils_1.isNumericI7)(i7Data.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7Data.usoll) : undefined;
|
|
2481
|
+
dcConverterUnit.referencePriority = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
|
|
2643
2482
|
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.
|
|
2483
|
+
dcConverterUnit.governorSCDDc = (0, parser_utils_1.isNumericI7)(i7Data.krdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.krdc) : undefined;
|
|
2484
|
+
if (dcConverterUnit.governorSCDAc !== undefined) {
|
|
2485
|
+
this.logger.debug(`Object Kopfstation from Table ${integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC} has no governorSCDAc.`);
|
|
2486
|
+
}
|
|
2487
|
+
if (dcConverterUnit.governorSCDDc !== undefined) {
|
|
2488
|
+
this.logger.debug(`Object Kopfstation from Table ${integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC} has no governorSCDDc.`);
|
|
2489
|
+
}
|
|
2490
|
+
if (dcConverterUnit.referencePriority !== undefined) {
|
|
2491
|
+
this.logger.debug(`Object Kopfstation from Table ${integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC} has no referencePriority.`);
|
|
2492
|
+
}
|
|
2645
2493
|
// Topologie
|
|
2646
2494
|
/** Anfang
|
|
2647
2495
|
* 3 moegliche Anschluesse
|
|
@@ -2676,44 +2524,23 @@ class ConverterIntegral7 {
|
|
|
2676
2524
|
//If udc is set in Integral data model set converter.ratedUdc as i7Data.udc else take the data value for i7Data.ur (Bemessungsspannung)
|
|
2677
2525
|
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
2526
|
/** 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;
|
|
2527
|
+
vsConverter.idleLoss = (0, parser_utils_1.isNumericI7)(i7Data.p_leer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.p_leer) * Math.pow(10, -3) : undefined;
|
|
2528
|
+
vsConverter.maxUdc = vsConverter.ratedUdc * 1.08; // +5% * ratedUdc
|
|
2529
|
+
vsConverter.minUdc = vsConverter.ratedUdc * 0.98; // -5% * ratedUdc
|
|
2530
|
+
vsConverter.resistiveLoss = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) * Math.pow(10, -3) : undefined;
|
|
2683
2531
|
vsConverter.switchingLoss = undefined;
|
|
2684
2532
|
/* csConverter.maxModulationIndex = ;
|
|
2685
2533
|
csConverter.maxValveCurrent = */
|
|
2686
2534
|
/** SSH export values */
|
|
2687
2535
|
vsConverter.p = (0, parser_utils_1.isNumericI7)(i7Data.pges) ? i7Data.pges * -1 : 0;
|
|
2688
2536
|
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
|
-
}
|
|
2537
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, vsConverter, i7Data, targetVoltages);
|
|
2704
2538
|
vsConverter.droop = 0; //pu
|
|
2705
2539
|
vsConverter.droopCompensation = 0; //Resistance
|
|
2706
2540
|
vsConverter.qShare = 0; //PerCent
|
|
2707
2541
|
/** Status */
|
|
2708
2542
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
2709
2543
|
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
2544
|
/** Topologie DC Seite mit DCGround*/
|
|
2718
2545
|
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
2546
|
dcNode.dcEquipmentContainer = dcConverterUnit;
|
|
@@ -2724,32 +2551,11 @@ class ConverterIntegral7 {
|
|
|
2724
2551
|
vsConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
|
|
2725
2552
|
acDCConverterDCTerminal.dcNode = dcNode;
|
|
2726
2553
|
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
2554
|
/** DCNode speichern, um später DCLines anschließen zu können*/
|
|
2745
2555
|
cimModel.addDCConverterUnit(dcConverterUnit);
|
|
2746
2556
|
cimModel.addVSConverter(vsConverter);
|
|
2747
2557
|
cimModel.addDCNode(dcNode);
|
|
2748
|
-
cimModel.addDCNode(dcNodeG);
|
|
2749
2558
|
cimModel.addACDCConverterDCTerminal(acDCConverterDCTerminal);
|
|
2750
|
-
cimModel.addDCTerminal(dcTerminalG);
|
|
2751
|
-
cimModel.addDCGround(dcGround);
|
|
2752
|
-
cimModel.addACDCConverterDCTerminal(dcTerminalM1);
|
|
2753
2559
|
integral7.integralHgueKopf.set(i7Data.id, i7Data);
|
|
2754
2560
|
this.checkAnschlussIDs(i7Data.id, integral7);
|
|
2755
2561
|
this.addIdMapping(i7Data.id, vsConverter.mrid, integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC);
|
|
@@ -2757,7 +2563,7 @@ class ConverterIntegral7 {
|
|
|
2757
2563
|
}
|
|
2758
2564
|
});
|
|
2759
2565
|
}
|
|
2760
|
-
convertEinspeisungen2EnergySource(cimModel, result, energySourceTypeMappingConfig) {
|
|
2566
|
+
convertEinspeisungen2EnergySource(cimModel, targetVoltages, result, energySourceTypeMappingConfig) {
|
|
2761
2567
|
var _a, _b, _c, _d;
|
|
2762
2568
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2763
2569
|
for (const i7Data of result) {
|
|
@@ -2802,37 +2608,15 @@ class ConverterIntegral7 {
|
|
|
2802
2608
|
}
|
|
2803
2609
|
});
|
|
2804
2610
|
}
|
|
2805
|
-
convertEnergySourceToExternalNetworkInjection(cimModel, i7Data, prio, inBetrieb) {
|
|
2611
|
+
convertEnergySourceToExternalNetworkInjection(cimModel, targetVoltages, i7Data, prio, inBetrieb) {
|
|
2806
2612
|
const rdfid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
2807
2613
|
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
2614
|
externalNetworkInjection.referencePriority = prio;
|
|
2809
2615
|
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
2616
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data);
|
|
2833
2617
|
externalNetworkInjection.p = powerData[0];
|
|
2834
2618
|
externalNetworkInjection.q = powerData[1];
|
|
2835
|
-
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data,
|
|
2619
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
2836
2620
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
2837
2621
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
|
|
2838
2622
|
}
|
|
@@ -2858,20 +2642,19 @@ class ConverterIntegral7 {
|
|
|
2858
2642
|
this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.EINSPEISUNG);
|
|
2859
2643
|
}
|
|
2860
2644
|
catch (err) {
|
|
2861
|
-
this.logger.error(`
|
|
2645
|
+
this.logger.error(`error --- convertEinspeisungen2EquivalentInjection ${i7Data.id} ${err}`);
|
|
2862
2646
|
}
|
|
2863
2647
|
}
|
|
2864
2648
|
});
|
|
2865
2649
|
}
|
|
2866
|
-
convertEinspeisungen2ExternalNetworkInjection(cimModel, result) {
|
|
2650
|
+
convertEinspeisungen2ExternalNetworkInjection(cimModel, targetVoltages, result) {
|
|
2651
|
+
var _a;
|
|
2867
2652
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2868
2653
|
for (const i7Data of result) {
|
|
2869
2654
|
try {
|
|
2870
|
-
const
|
|
2871
|
-
const
|
|
2872
|
-
|
|
2873
|
-
// const un = cn.getVoltageLevel().getBaseVoltageAsNumber();
|
|
2874
|
-
externalNetworkInjection.nameprimaertyp = i7Data.nameprimaertyp;
|
|
2655
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
2656
|
+
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);
|
|
2657
|
+
externalNetworkInjection.nameprimaertyp = i7Data.nameprimaertyp !== undefined ? i7Data.nameprimaertyp : undefined;
|
|
2875
2658
|
let mf = undefined;
|
|
2876
2659
|
mf = this.cimModelDefault.multiplierFactors.get(this.integralID2UUID.get(i7Data.multfaktor));
|
|
2877
2660
|
if (mf) {
|
|
@@ -2890,15 +2673,8 @@ class ConverterIntegral7 {
|
|
|
2890
2673
|
externalNetworkInjection.minP = minP;
|
|
2891
2674
|
const minQ = (0, parser_utils_1.isNumericI7)(i7Data.q_min) ? (0, parser_utils_1.convertToNumberI7)(i7Data.q_min) : undefined;
|
|
2892
2675
|
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
|
|
2676
|
+
/** Convert EQ-profile dataset. */
|
|
2677
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, targetVoltages);
|
|
2902
2678
|
/**Convert short circuit constants */
|
|
2903
2679
|
const r0X0 = (0, parser_utils_1.isNumericI7)(i7Data.x0_r0) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x0_r0) : undefined;
|
|
2904
2680
|
const r1X1 = (0, parser_utils_1.isNumericI7)(i7Data.x1_r1) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x1_r1) : undefined;
|
|
@@ -2907,7 +2683,7 @@ class ConverterIntegral7 {
|
|
|
2907
2683
|
externalNetworkInjection.maxR0ToX0Ratio = maxR0X0Ratio;
|
|
2908
2684
|
const maxR1X1Ratio = (0, parser_utils_1.isNumericI7)(i7Data.x1_r1_max) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x1_r1_max) : r1X1;
|
|
2909
2685
|
externalNetworkInjection.maxR1ToX1Ratio = maxR1X1Ratio;
|
|
2910
|
-
const maxZ0Z1Ratio =
|
|
2686
|
+
const maxZ0Z1Ratio = z0Z1;
|
|
2911
2687
|
externalNetworkInjection.maxZ0ToZ1Ratio = maxZ0Z1Ratio;
|
|
2912
2688
|
const minR0X0Ratio = (0, parser_utils_1.isNumericI7)(i7Data.x0_r0_min) ? 1 / (0, parser_utils_1.convertToNumberI7)(i7Data.x0_r0_min) : r0X0;
|
|
2913
2689
|
externalNetworkInjection.minR0ToX0Ratio = minR0X0Ratio;
|
|
@@ -2922,41 +2698,22 @@ class ConverterIntegral7 {
|
|
|
2922
2698
|
externalNetworkInjection.minInitialSymShCCurrent = minIkSecond;
|
|
2923
2699
|
const maxIkSecond = (0, parser_utils_1.isNumericI7)(i7Data.sk_max) ? (0, parser_utils_1.convertToNumberI7)(skMax) / Math.sqrt(3) * skMax : undefined;
|
|
2924
2700
|
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
|
|
2701
|
+
const inBetrieb = (0, parser_utils_1.isBooleanI7)(i7Data.betrieb) ? (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb) : false;
|
|
2949
2702
|
/** Convert SSH-profile dataset. */
|
|
2950
2703
|
/**
|
|
2951
|
-
* @description Set einspprio as referencePriority. PowerFactory sets external network injections with referencePriority to
|
|
2704
|
+
* @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
2705
|
* einspprio having no effect in loadflow calculation if voltage control does not exists.
|
|
2953
2706
|
* */
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2707
|
+
let prio = (0, parser_utils_1.isNumericI7)(i7Data.einspprio) ? (0, parser_utils_1.convertToNumberI7)(i7Data.einspprio) : undefined;
|
|
2708
|
+
if (((_a = externalNetworkInjection.regulatingControl) === null || _a === void 0 ? void 0 : _a.mode) === RegulatingControlModeKind_1.RegulatingControlModeKind.voltage) {
|
|
2709
|
+
if (prio !== undefined && prio > 0) {
|
|
2710
|
+
externalNetworkInjection.referencePriority = prio + 1; //TODO: SLACK is a injection with maximum prio in the network section and active voltage control.
|
|
2711
|
+
}
|
|
2712
|
+
else if (prio !== undefined && prio === 0) {
|
|
2713
|
+
externalNetworkInjection.referencePriority = prio;
|
|
2957
2714
|
}
|
|
2958
2715
|
else {
|
|
2959
|
-
|
|
2716
|
+
externalNetworkInjection.referencePriority = undefined;
|
|
2960
2717
|
}
|
|
2961
2718
|
}
|
|
2962
2719
|
const powerData = (0, utils_2.getActiveReactivePower)(i7Data, mf);
|
|
@@ -2964,43 +2721,352 @@ class ConverterIntegral7 {
|
|
|
2964
2721
|
const q = powerData[1];
|
|
2965
2722
|
externalNetworkInjection.setActivePower(p * -1); //convert to load sign system
|
|
2966
2723
|
externalNetworkInjection.setReactivePower(q * -1); //convert to load sign system
|
|
2967
|
-
|
|
2968
|
-
|
|
2724
|
+
// AMPI7 profile
|
|
2725
|
+
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;
|
|
2726
|
+
externalNetworkInjection.cos_phi = cosPhi;
|
|
2727
|
+
externalNetworkInjection.p_mf = (mf && powerData[2]) ? powerData[2] * -1 : undefined;
|
|
2728
|
+
externalNetworkInjection.q_mf = (mf && powerData[3]) ? powerData[3] * -1 : undefined;
|
|
2729
|
+
externalNetworkInjection.normallyInService = inBetrieb;
|
|
2969
2730
|
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
2970
2731
|
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
|
|
2971
2732
|
}
|
|
2972
2733
|
catch (err) {
|
|
2973
|
-
this.logger.error(`
|
|
2734
|
+
this.logger.error(`error --- convertEinspeisungen2ExternalNetworkInjection ${i7Data.id} ${err}`);
|
|
2974
2735
|
}
|
|
2975
2736
|
}
|
|
2976
2737
|
});
|
|
2977
2738
|
}
|
|
2978
|
-
setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data,
|
|
2979
|
-
var _a, _b, _c;
|
|
2739
|
+
setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data, targetVoltages, generatingUnit, isStatcom) {
|
|
2740
|
+
var _a, _b, _c, _d;
|
|
2980
2741
|
const inBetrieb = (0, parser_utils_1.convertToBooleanI7)(i7Data.betrieb);
|
|
2981
2742
|
condEquip.normallyInService = inBetrieb;
|
|
2982
2743
|
const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
2983
|
-
let
|
|
2744
|
+
let usoll = undefined;
|
|
2745
|
+
let rControl = undefined;
|
|
2746
|
+
let i7DataEinsp = undefined;
|
|
2747
|
+
let i7DataSVC = undefined;
|
|
2748
|
+
let i7DataKomp = undefined;
|
|
2749
|
+
let i7DataRQ = undefined;
|
|
2750
|
+
let i7DataHgue = undefined;
|
|
2751
|
+
let suffix = undefined;
|
|
2752
|
+
let uband = undefined;
|
|
2753
|
+
let tCn = undefined; //controlled node of this device
|
|
2754
|
+
let spannungsregelungLokal = undefined;
|
|
2755
|
+
let spannungsregelungRemote = undefined;
|
|
2756
|
+
let knotenSpgGeregelt = undefined;
|
|
2757
|
+
let isRegulatingControl = undefined;
|
|
2758
|
+
let hasGeneratingUnit = undefined;
|
|
2759
|
+
if (condEquip instanceof RotatingMachine_1.RotatingMachine || condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection || condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
|
|
2760
|
+
i7DataEinsp = i7Data;
|
|
2761
|
+
i7DataRQ = i7Data;
|
|
2762
|
+
}
|
|
2763
|
+
if (condEquip instanceof SynchronousMachine_1.SynchronousMachine) {
|
|
2764
|
+
suffix = '_SM';
|
|
2765
|
+
if (generatingUnit !== undefined) {
|
|
2766
|
+
hasGeneratingUnit = true;
|
|
2767
|
+
}
|
|
2768
|
+
else {
|
|
2769
|
+
hasGeneratingUnit = false;
|
|
2770
|
+
}
|
|
2771
|
+
}
|
|
2772
|
+
else if (condEquip instanceof AsynchronousMachine_1.AsynchronousMachine) {
|
|
2773
|
+
suffix = '_ASM';
|
|
2774
|
+
}
|
|
2775
|
+
else if (condEquip instanceof ExternalNetworkInjection_1.ExternalNetworkInjection) {
|
|
2776
|
+
suffix = '_ENI';
|
|
2777
|
+
}
|
|
2778
|
+
else if (condEquip instanceof EquivalentInjection_1.EquivalentInjection) {
|
|
2779
|
+
suffix = '_EI';
|
|
2780
|
+
}
|
|
2781
|
+
else if (condEquip instanceof StaticVarCompensator_1.StaticVarCompensator) {
|
|
2782
|
+
i7DataSVC = i7Data;
|
|
2783
|
+
i7DataRQ = i7Data;
|
|
2784
|
+
suffix = '_SVC';
|
|
2785
|
+
}
|
|
2786
|
+
else if (condEquip instanceof LinearShuntCompensator_1.LinearShuntCompensator) {
|
|
2787
|
+
i7DataKomp = i7Data;
|
|
2788
|
+
i7DataRQ = i7Data;
|
|
2789
|
+
suffix = '_LSC';
|
|
2790
|
+
}
|
|
2791
|
+
else if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
|
|
2792
|
+
i7DataHgue = i7Data;
|
|
2793
|
+
suffix = '_ACDCC';
|
|
2794
|
+
}
|
|
2795
|
+
// RegulatingControl: Test if this is a regulating control.
|
|
2796
|
+
if (i7DataEinsp) {
|
|
2797
|
+
spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7DataEinsp.spannungsgeregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataEinsp.spannungsgeregelt) : false;
|
|
2798
|
+
spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7DataEinsp.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataEinsp.rpv_geregelt) : false;
|
|
2799
|
+
knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7DataEinsp.knotenspgreg));
|
|
2800
|
+
isRegulatingControl = spannungsregelungLokal || spannungsregelungRemote;
|
|
2801
|
+
}
|
|
2802
|
+
else if (i7DataKomp) {
|
|
2803
|
+
spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7DataKomp.flag_lf) ? (0, parser_utils_1.convertToBooleanI7)(i7DataKomp.flag_lf) : false;
|
|
2804
|
+
spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7DataKomp.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataKomp.rpv_geregelt) : false;
|
|
2805
|
+
knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7DataKomp.knotenspgreg));
|
|
2806
|
+
isRegulatingControl = spannungsregelungLokal || spannungsregelungRemote;
|
|
2807
|
+
}
|
|
2808
|
+
else if (i7DataHgue) {
|
|
2809
|
+
spannungsregelungLokal = (0, parser_utils_1.isBooleanI7)(i7DataHgue.spannungsgeregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.spannungsgeregelt) : false;
|
|
2810
|
+
spannungsregelungRemote = (0, parser_utils_1.isBooleanI7)(i7DataHgue.rpv_geregelt) ? (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.rpv_geregelt) : false;
|
|
2811
|
+
knotenSpgGeregelt = cimModel.objects.get(this.integralID2UUID.get(i7DataHgue.knotenspgreg));
|
|
2812
|
+
isRegulatingControl = false;
|
|
2813
|
+
}
|
|
2814
|
+
else if (i7DataSVC) {
|
|
2815
|
+
isRegulatingControl = true;
|
|
2816
|
+
}
|
|
2817
|
+
else {
|
|
2818
|
+
isRegulatingControl = false;
|
|
2819
|
+
}
|
|
2984
2820
|
if (connectivityNode) {
|
|
2985
|
-
const
|
|
2986
|
-
|
|
2987
|
-
if (
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
if (
|
|
2995
|
-
|
|
2996
|
-
if (
|
|
2997
|
-
|
|
2821
|
+
const cpTerminal = this.createConnection(cimModel, condEquip, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
|
|
2822
|
+
//create regulating control
|
|
2823
|
+
if (isRegulatingControl && (i7DataEinsp || i7DataKomp)) {
|
|
2824
|
+
let cterminal = undefined; //connection point terminal of this device
|
|
2825
|
+
let tVMax = undefined; //maximum target voltage
|
|
2826
|
+
let tVMin = undefined; //minimum target voltage
|
|
2827
|
+
const regCondEquip = condEquip;
|
|
2828
|
+
if (spannungsregelungLokal || spannungsregelungRemote) {
|
|
2829
|
+
//get rated voltage of controlled node.
|
|
2830
|
+
if (knotenSpgGeregelt && spannungsregelungRemote) {
|
|
2831
|
+
cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
|
|
2832
|
+
if (cterminal === undefined) {
|
|
2833
|
+
let stop = true;
|
|
2834
|
+
}
|
|
2835
|
+
if (cterminal) {
|
|
2836
|
+
tCn = cterminal.getConnectivityNode();
|
|
2837
|
+
if (tCn) {
|
|
2838
|
+
tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
|
|
2839
|
+
tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
|
|
2840
|
+
usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
|
|
2841
|
+
}
|
|
2842
|
+
else {
|
|
2843
|
+
this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
|
|
2844
|
+
}
|
|
2845
|
+
}
|
|
2846
|
+
else {
|
|
2847
|
+
this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
|
|
2848
|
+
}
|
|
2849
|
+
}
|
|
2850
|
+
if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal) {
|
|
2851
|
+
switch (knotenSpgGeregelt) {
|
|
2852
|
+
case undefined: {
|
|
2853
|
+
cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
|
|
2854
|
+
if (cterminal === undefined) {
|
|
2855
|
+
cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
|
|
2856
|
+
}
|
|
2857
|
+
break;
|
|
2858
|
+
}
|
|
2859
|
+
default: {
|
|
2860
|
+
cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
|
|
2861
|
+
}
|
|
2862
|
+
}
|
|
2863
|
+
if (cterminal) {
|
|
2864
|
+
tCn = cterminal.getConnectivityNode();
|
|
2865
|
+
if (tCn) {
|
|
2866
|
+
tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
|
|
2867
|
+
tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
|
|
2868
|
+
usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
|
|
2869
|
+
}
|
|
2870
|
+
else {
|
|
2871
|
+
this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
|
|
2872
|
+
}
|
|
2873
|
+
}
|
|
2874
|
+
}
|
|
2875
|
+
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;
|
|
2876
|
+
if (uband === undefined) {
|
|
2877
|
+
if (tCn) {
|
|
2878
|
+
uband = tCn.getBaseVoltageAsNumber() * 0.1;
|
|
2879
|
+
}
|
|
2880
|
+
}
|
|
2881
|
+
}
|
|
2882
|
+
//Create and define regulating control for voltage control
|
|
2883
|
+
if (cterminal !== undefined) {
|
|
2884
|
+
const uuid = (0, parser_utils_1.getUUID)(i7DataRQ.guid_rc);
|
|
2885
|
+
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);
|
|
2886
|
+
if (i7DataEinsp) {
|
|
2887
|
+
rControl.discrete = false; //default for ExternalNetworkInjection is false. s. CGMES Doku
|
|
2888
|
+
}
|
|
2889
|
+
else {
|
|
2890
|
+
rControl.discrete = true; //default for LinearShuntCompensator is true because of stepping mode.
|
|
2891
|
+
}
|
|
2892
|
+
rControl.targetDeadband = (0, parser_utils_1.isNumericI7)(uband) ? uband : undefined; //zulässiges Spannungsband
|
|
2893
|
+
/** Spannung in kilo*/
|
|
2894
|
+
rControl.targetValue = usoll;
|
|
2895
|
+
const guidSuffix = (_a = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _a === void 0 ? void 0 : _a.getUUID().substring(0, 8);
|
|
2896
|
+
rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
|
|
2897
|
+
rControl.terminalUUID = cterminal.getUUID();
|
|
2898
|
+
rControl.addRegulatingCondEq(regCondEquip);
|
|
2899
|
+
regCondEquip.regulatingControlUUID = rControl.mrid;
|
|
2900
|
+
regCondEquip.controlEnabled = rControl === undefined ? false : rControl.enabled;
|
|
2901
|
+
regCondEquip.regulatingControl = rControl;
|
|
2902
|
+
cimModel.addRegulatingControl(rControl);
|
|
2903
|
+
const term = cimModel.terminals.get(rControl.terminalUUID);
|
|
2904
|
+
if (term) {
|
|
2905
|
+
term.addRegulatingControl(rControl);
|
|
2906
|
+
}
|
|
2907
|
+
}
|
|
2908
|
+
else {
|
|
2909
|
+
const stop = true;
|
|
2910
|
+
}
|
|
2911
|
+
}
|
|
2912
|
+
else if (isRegulatingControl && i7DataSVC) {
|
|
2913
|
+
/** Regelung */
|
|
2914
|
+
const regCondEquip = condEquip;
|
|
2915
|
+
const cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
|
|
2916
|
+
let tVMax = undefined;
|
|
2917
|
+
let tVMin = undefined;
|
|
2918
|
+
if (cterminal) {
|
|
2919
|
+
tCn = cterminal.getConnectivityNode();
|
|
2920
|
+
if (tCn) {
|
|
2921
|
+
tVMax = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umax'];
|
|
2922
|
+
tVMin = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['umin'];
|
|
2923
|
+
usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
|
|
2924
|
+
}
|
|
2925
|
+
else {
|
|
2926
|
+
this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Lokal geregelter Knoten konnte nicht ermittelt werden.`);
|
|
2927
|
+
}
|
|
2928
|
+
}
|
|
2929
|
+
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;
|
|
2930
|
+
if (uband === undefined) {
|
|
2931
|
+
if (tCn) {
|
|
2932
|
+
uband = tCn.getBaseVoltageAsNumber() * 0.1;
|
|
2933
|
+
}
|
|
2934
|
+
}
|
|
2935
|
+
if (cterminal !== undefined) {
|
|
2936
|
+
const uuid = (0, parser_utils_1.getUUID)(i7DataSVC.guid_rc);
|
|
2937
|
+
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);
|
|
2938
|
+
rControl.enabled = true;
|
|
2939
|
+
if (isStatcom) {
|
|
2940
|
+
rControl.discrete = true;
|
|
2941
|
+
}
|
|
2942
|
+
else {
|
|
2943
|
+
rControl.discrete = false;
|
|
2944
|
+
}
|
|
2945
|
+
condEquip.controlEnabled = true;
|
|
2946
|
+
const flagOS = (0, parser_utils_1.convertToBooleanI7)(i7DataSVC.flag_os);
|
|
2947
|
+
/** die Regelung erfolgt auf die Oberspannungsseite des zugehörenden Transformators */
|
|
2948
|
+
if (flagOS && i7DataSVC.trafo) {
|
|
2949
|
+
const trafoUUID = this.integralID2UUID.get(i7DataSVC.trafo);
|
|
2950
|
+
const powerTransformer = cimModel.getObject(trafoUUID);
|
|
2951
|
+
if (powerTransformer) {
|
|
2952
|
+
try {
|
|
2953
|
+
for (const end of powerTransformer.powerTransformerEnd) {
|
|
2954
|
+
if (end.phaseTapChanger) {
|
|
2955
|
+
end.phaseTapChanger.controlEnabled = false;
|
|
2956
|
+
}
|
|
2957
|
+
if (end.ratioTapChanger) {
|
|
2958
|
+
end.ratioTapChanger.controlEnabled = false;
|
|
2959
|
+
}
|
|
2960
|
+
}
|
|
2961
|
+
}
|
|
2962
|
+
catch (e) {
|
|
2963
|
+
this.logger.debug(`debug --- ${i7DataSVC.constructor.name} Zuordnung zu Trafo fehlgeschlagen.`);
|
|
2964
|
+
}
|
|
2998
2965
|
}
|
|
2999
2966
|
}
|
|
2967
|
+
rControl.targetValue = usoll;
|
|
2968
|
+
rControl.targetDeadband = uband;
|
|
2969
|
+
rControl.terminal = cterminal;
|
|
2970
|
+
const guidSuffix = (_b = tCn === null || tCn === void 0 ? void 0 : tCn.getVoltageLevel()) === null || _b === void 0 ? void 0 : _b.getUUID().substring(0, 8);
|
|
2971
|
+
rControl.name = (0, util_create_1.createNotation)([rControl.name, '_', guidSuffix, '_RC'], 32, true);
|
|
2972
|
+
regCondEquip.regulatingControlUUID = rControl.mrid;
|
|
2973
|
+
regCondEquip.controlEnabled = rControl === undefined ? false : rControl.enabled;
|
|
2974
|
+
regCondEquip.regulatingControl = rControl;
|
|
2975
|
+
cterminal.addRegulatingControl(rControl);
|
|
2976
|
+
cimModel.addRegulatingControl(rControl);
|
|
2977
|
+
}
|
|
2978
|
+
else {
|
|
2979
|
+
const stop = true;
|
|
3000
2980
|
}
|
|
3001
2981
|
}
|
|
3002
|
-
|
|
2982
|
+
else if (i7DataHgue) {
|
|
2983
|
+
let cterminal = (0, util_graph2tree_1.getNextBusbar)(connectivityNode);
|
|
2984
|
+
const regelungU = (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.u_geregelt);
|
|
2985
|
+
const regelungP = (0, parser_utils_1.convertToBooleanI7)(i7DataHgue.p_geregelt);
|
|
2986
|
+
condEquip.pccTerminal = cpTerminal;
|
|
2987
|
+
if (condEquip instanceof CsConverter_1.CsConverter) {
|
|
2988
|
+
if (regelungU) {
|
|
2989
|
+
condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.inverter;
|
|
2990
|
+
condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.dcVoltage;
|
|
2991
|
+
condEquip.targetUdc = (0, parser_utils_1.isNumericI7)(i7DataHgue.udc) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.udc) : condEquip.ratedUdc;
|
|
2992
|
+
}
|
|
2993
|
+
else if (regelungP) {
|
|
2994
|
+
condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
|
|
2995
|
+
condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.activePower;
|
|
2996
|
+
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);
|
|
2997
|
+
}
|
|
2998
|
+
else {
|
|
2999
|
+
condEquip.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
|
|
3000
|
+
condEquip.pPccControl = CsPpccControlKind_1.CsPpccControlKind.activePower;
|
|
3001
|
+
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);
|
|
3002
|
+
}
|
|
3003
|
+
}
|
|
3004
|
+
else if (condEquip instanceof VsConverter_1.VsConverter) {
|
|
3005
|
+
usoll = (0, parser_utils_1.isNumericI7)(i7DataHgue.usoll) ? (0, parser_utils_1.convertToNumberI7)(i7DataHgue.usoll) : undefined;
|
|
3006
|
+
if (regelungU) {
|
|
3007
|
+
condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.udc;
|
|
3008
|
+
condEquip.targetUdc = condEquip.ratedUdc;
|
|
3009
|
+
}
|
|
3010
|
+
else if (regelungP) {
|
|
3011
|
+
condEquip.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
|
|
3012
|
+
condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
|
|
3013
|
+
condEquip.targetPpcc = condEquip.baseS * -1; //ActivePower
|
|
3014
|
+
condEquip.targetQpcc = 0; //ReactivePower, TODO: define ReactivePowerCapabilityCurve
|
|
3015
|
+
}
|
|
3016
|
+
if (spannungsregelungLokal || spannungsregelungRemote) {
|
|
3017
|
+
//get rated voltage of controlled node.
|
|
3018
|
+
if (knotenSpgGeregelt && spannungsregelungRemote) {
|
|
3019
|
+
cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
|
|
3020
|
+
if (cterminal === undefined) {
|
|
3021
|
+
let stop = true;
|
|
3022
|
+
}
|
|
3023
|
+
if (cterminal) {
|
|
3024
|
+
tCn = cterminal.getConnectivityNode();
|
|
3025
|
+
if (tCn) {
|
|
3026
|
+
usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
|
|
3027
|
+
}
|
|
3028
|
+
else {
|
|
3029
|
+
this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Entfernt geregelter Knoten konnte nicht ermittelt werden.`);
|
|
3030
|
+
}
|
|
3031
|
+
}
|
|
3032
|
+
else {
|
|
3033
|
+
this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Anschlusspunkt (Terminal) des entfernt geregelter Knoten konnte nicht ermittelt werden.`);
|
|
3034
|
+
}
|
|
3035
|
+
}
|
|
3036
|
+
else if ((knotenSpgGeregelt || connectivityNode) && spannungsregelungLokal && usoll === undefined) {
|
|
3037
|
+
switch (knotenSpgGeregelt) {
|
|
3038
|
+
case undefined: {
|
|
3039
|
+
if (cterminal === undefined) {
|
|
3040
|
+
cterminal = (0, util_graph2tree_1.getControlledNode)(cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)), cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)));
|
|
3041
|
+
}
|
|
3042
|
+
break;
|
|
3043
|
+
}
|
|
3044
|
+
default: {
|
|
3045
|
+
cterminal = (0, util_graph2tree_1.getControlledNode)(connectivityNode, knotenSpgGeregelt);
|
|
3046
|
+
}
|
|
3047
|
+
}
|
|
3048
|
+
if (cterminal) {
|
|
3049
|
+
tCn = cterminal.getConnectivityNode();
|
|
3050
|
+
if (tCn) {
|
|
3051
|
+
usoll = targetVoltages.get(this.UUID2Integral7ID.get(tCn.getUUID()).find(elem => elem))['usoll'];
|
|
3052
|
+
}
|
|
3053
|
+
}
|
|
3054
|
+
}
|
|
3055
|
+
condEquip.qPccControl = VsQpccControlKind_1.VsQpccControlKind.voltagePcc;
|
|
3056
|
+
if (usoll !== undefined) {
|
|
3057
|
+
condEquip.targetUpcc = usoll;
|
|
3058
|
+
}
|
|
3059
|
+
else {
|
|
3060
|
+
this.logger.debug(`debug --- ${i7Data.constructor.name} ${i7Data.id} Sollspannung konnte nicht ermittelt werden.`);
|
|
3061
|
+
}
|
|
3062
|
+
}
|
|
3063
|
+
}
|
|
3064
|
+
}
|
|
3065
|
+
let equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, connectivityNode.connectivityNodeContainer);
|
|
3003
3066
|
if (equipmentContainer) {
|
|
3067
|
+
if (condEquip instanceof ACDCConverter_1.ACDCConverter) {
|
|
3068
|
+
equipmentContainer = condEquip.equipmentContainer;
|
|
3069
|
+
}
|
|
3004
3070
|
condEquip.equipmentContainer = equipmentContainer;
|
|
3005
3071
|
equipmentContainer.addEquipment(condEquip);
|
|
3006
3072
|
//TODO: Überarbeitung notwendig, da hier der Präfix nicht eindeutig für Einspeisungen ermittelt werden kann.
|
|
@@ -3021,27 +3087,36 @@ class ConverterIntegral7 {
|
|
|
3021
3087
|
i7Schluessel = (0, utils_2.getDescription)(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
|
|
3022
3088
|
integral_prefix_1.EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
|
|
3023
3089
|
}
|
|
3090
|
+
else if (condEquip instanceof VsConverter_1.VsConverter) {
|
|
3091
|
+
i7Schluessel = (0, utils_2.getDescription)(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
|
|
3092
|
+
integral_prefix_1.HGUEKOPFVSC_PRAEFIX + i7Data.bezeichner;
|
|
3093
|
+
}
|
|
3094
|
+
else if (condEquip instanceof CsConverter_1.CsConverter) {
|
|
3095
|
+
i7Schluessel = (0, utils_2.getDescription)(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
|
|
3096
|
+
integral_prefix_1.HGUEKOPFKLASSISCH_PRAEFIX + i7Data.bezeichner;
|
|
3097
|
+
}
|
|
3024
3098
|
condEquip.description = i7Schluessel;
|
|
3025
|
-
if (
|
|
3099
|
+
if (hasGeneratingUnit) {
|
|
3026
3100
|
const substation = this.determineEquipmentContainer('Substation', cimModel, equipmentContainer);
|
|
3027
3101
|
generatingUnit.equipmentContainer = substation;
|
|
3028
3102
|
}
|
|
3029
3103
|
}
|
|
3030
3104
|
else {
|
|
3031
|
-
this.logger.error(
|
|
3105
|
+
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
3106
|
}
|
|
3033
3107
|
}
|
|
3034
3108
|
else {
|
|
3035
|
-
this.logger.error(
|
|
3109
|
+
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
3110
|
}
|
|
3111
|
+
return rControl;
|
|
3037
3112
|
}
|
|
3038
3113
|
convertQuerkupplungen(cimModel, integral7, schaltanlagenAbschnittIDs) {
|
|
3039
3114
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3040
3115
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.QUERKUPPLUNG)) {
|
|
3041
3116
|
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
3117
|
for (const i7Data of result) {
|
|
3043
|
-
const
|
|
3044
|
-
const bay = new AMPRIONBay_1.AMPRIONBay(
|
|
3118
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
3119
|
+
const bay = new AMPRIONBay_1.AMPRIONBay(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_B']), 'Querkupplung');
|
|
3045
3120
|
bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
|
|
3046
3121
|
bay.locationID = i7Data.ips_folder_id;
|
|
3047
3122
|
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
|
|
@@ -3049,12 +3124,12 @@ class ConverterIntegral7 {
|
|
|
3049
3124
|
bay.voltageLevel = voltageLevel;
|
|
3050
3125
|
voltageLevel.addBay(bay);
|
|
3051
3126
|
const i7Schluessel = voltageLevel.description +
|
|
3052
|
-
|
|
3127
|
+
integral_prefix_1.QUERKUPPLUNG_PRAEFIX +
|
|
3053
3128
|
(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner);
|
|
3054
3129
|
bay.description = i7Schluessel;
|
|
3055
3130
|
}
|
|
3056
3131
|
else {
|
|
3057
|
-
this.logger.debug(`Querkupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3132
|
+
this.logger.debug(`debug --- Querkupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3058
3133
|
}
|
|
3059
3134
|
integral7.querkupplungIDs.push(i7Data.id);
|
|
3060
3135
|
cimModel.addBay(bay);
|
|
@@ -3062,7 +3137,7 @@ class ConverterIntegral7 {
|
|
|
3062
3137
|
}
|
|
3063
3138
|
}
|
|
3064
3139
|
else {
|
|
3065
|
-
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
|
|
3140
|
+
this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
|
|
3066
3141
|
}
|
|
3067
3142
|
});
|
|
3068
3143
|
}
|
|
@@ -3071,8 +3146,8 @@ class ConverterIntegral7 {
|
|
|
3071
3146
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
|
|
3072
3147
|
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
3148
|
for (const i7Data of result) {
|
|
3074
|
-
const
|
|
3075
|
-
const bay = new AMPRIONBay_1.AMPRIONBay(
|
|
3149
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
3150
|
+
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
3151
|
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
|
|
3077
3152
|
bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
|
|
3078
3153
|
bay.locationID = i7Data.ips_folder_id;
|
|
@@ -3085,7 +3160,7 @@ class ConverterIntegral7 {
|
|
|
3085
3160
|
bay.description = i7Schluessel;
|
|
3086
3161
|
}
|
|
3087
3162
|
else {
|
|
3088
|
-
this.logger.debug(`Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3163
|
+
this.logger.debug(`debug --- Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
3089
3164
|
}
|
|
3090
3165
|
const lKupplungImpl = new Laengskupplung_1.LaengskupplungImpl(i7Data);
|
|
3091
3166
|
integral7.integralLaengskupplungen.set(i7Data.id, lKupplungImpl);
|
|
@@ -3095,7 +3170,7 @@ class ConverterIntegral7 {
|
|
|
3095
3170
|
}
|
|
3096
3171
|
}
|
|
3097
3172
|
else {
|
|
3098
|
-
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
|
|
3173
|
+
this.logger.debug(`debug --- Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
|
|
3099
3174
|
}
|
|
3100
3175
|
});
|
|
3101
3176
|
}
|
|
@@ -3273,11 +3348,8 @@ class ConverterIntegral7 {
|
|
|
3273
3348
|
/** Spannungsebene */
|
|
3274
3349
|
const baseVoltages = (0, utils_2.getTerminalUn)(cimModel, bdf, seriesCompensator);
|
|
3275
3350
|
seriesCompensator.baseVoltage = baseVoltages[0] ? baseVoltages[0] : baseVoltages[1];
|
|
3276
|
-
if (seriesCompensator.baseVoltage === undefined) {
|
|
3277
|
-
let stop = true;
|
|
3278
|
-
}
|
|
3279
3351
|
/** EQ */
|
|
3280
|
-
const ur =
|
|
3352
|
+
const ur = seriesCompensator.baseVoltage.nominalVoltage.value; //getU(i7Data.ur);
|
|
3281
3353
|
const ir = (0, parser_utils_1.isNumericI7)(i7Data.ir) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ir) : undefined;
|
|
3282
3354
|
const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
|
|
3283
3355
|
const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
|
|
@@ -3290,7 +3362,7 @@ class ConverterIntegral7 {
|
|
|
3290
3362
|
/** CurrentLimit */
|
|
3291
3363
|
const terminal = startTerminal;
|
|
3292
3364
|
if (terminal) {
|
|
3293
|
-
this.
|
|
3365
|
+
this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
|
|
3294
3366
|
}
|
|
3295
3367
|
else {
|
|
3296
3368
|
this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
|
|
@@ -3361,9 +3433,9 @@ class ConverterIntegral7 {
|
|
|
3361
3433
|
bdf.push(this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.eknoten)));
|
|
3362
3434
|
/** Spannungsebene */
|
|
3363
3435
|
const baseVoltages = (0, utils_2.getTerminalUn)(cimModel, bdf, seriesCompensator);
|
|
3364
|
-
seriesCompensator.baseVoltage = baseVoltages[0];
|
|
3436
|
+
seriesCompensator.baseVoltage = baseVoltages[0] ? baseVoltages[0] : baseVoltages[1];
|
|
3365
3437
|
/** EQ */
|
|
3366
|
-
const ur =
|
|
3438
|
+
const ur = seriesCompensator.baseVoltage.nominalVoltage.value; //getU(i7Data.ur);
|
|
3367
3439
|
const ir = (0, parser_utils_1.isNumericI7)(i7Data.ir) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ir) : undefined;
|
|
3368
3440
|
const ukr = (0, parser_utils_1.isNumericI7)(i7Data.ukr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.ukr) : undefined;
|
|
3369
3441
|
const pkr = (0, parser_utils_1.isNumericI7)(i7Data.pkr) ? (0, parser_utils_1.convertToNumberI7)(i7Data.pkr) : undefined;
|
|
@@ -3376,7 +3448,7 @@ class ConverterIntegral7 {
|
|
|
3376
3448
|
/** CurrentLimit */
|
|
3377
3449
|
const terminal = startTerminal;
|
|
3378
3450
|
if (terminal) {
|
|
3379
|
-
this.
|
|
3451
|
+
this.setConductingEquipmentOperationalLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, ir, new CurrentLimit_1.CurrentLimit());
|
|
3380
3452
|
}
|
|
3381
3453
|
else {
|
|
3382
3454
|
this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
|
|
@@ -3447,6 +3519,7 @@ class ConverterIntegral7 {
|
|
|
3447
3519
|
}
|
|
3448
3520
|
// Verbindung herstellen
|
|
3449
3521
|
const terminal = this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.N, true);
|
|
3522
|
+
cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
|
|
3450
3523
|
integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
|
|
3451
3524
|
integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
|
|
3452
3525
|
integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
|
|
@@ -3499,6 +3572,7 @@ class ConverterIntegral7 {
|
|
|
3499
3572
|
// Verbindung herstellen
|
|
3500
3573
|
if (connectivityNode) {
|
|
3501
3574
|
const terminal = this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
|
|
3575
|
+
cimModel.terminals.delete(terminal.mrid); //TODO: complete/repair implementation of star point connections.
|
|
3502
3576
|
}
|
|
3503
3577
|
}
|
|
3504
3578
|
}
|
|
@@ -3557,8 +3631,8 @@ class ConverterIntegral7 {
|
|
|
3557
3631
|
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
|
|
3558
3632
|
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
3633
|
for (const i7Data of result) {
|
|
3560
|
-
const
|
|
3561
|
-
const bay = new AMPRIONBay_1.AMPRIONBay(
|
|
3634
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
3635
|
+
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
3636
|
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
|
|
3563
3637
|
bay.number = (0, parser_utils_1.isNumericI7)(i7Data.feldnummer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.feldnummer).toString() : undefined;
|
|
3564
3638
|
bay.locationID = i7Data.ips_folder_id;
|
|
@@ -3624,6 +3698,7 @@ class ConverterIntegral7 {
|
|
|
3624
3698
|
object.x0 = +data.x0; // new ReactancePerLength(data.x1, UnitMultiplier.none, UnitSymbol.ohm);
|
|
3625
3699
|
object.c0 = +data.c0; // new CapacitancePerLength(data.c1, UnitMultiplier.micro, UnitSymbol.F);
|
|
3626
3700
|
object.ratedCurrent = +data.ir;
|
|
3701
|
+
object.limitingCurrent = +data.igrenz;
|
|
3627
3702
|
}
|
|
3628
3703
|
convertLeitungen(frame, integral7, defaultValuesConfig) {
|
|
3629
3704
|
var _a, _b, _c;
|
|
@@ -3632,9 +3707,6 @@ class ConverterIntegral7 {
|
|
|
3632
3707
|
const cimModel = frame.cimModel;
|
|
3633
3708
|
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
3709
|
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
3710
|
const cableAvailable = this.isTableAvailable(integral_sql_1.Integral7TableNames.KABEL);
|
|
3639
3711
|
const overheadAvailable = this.isTableAvailable(integral_sql_1.Integral7TableNames.FREILEITUNG);
|
|
3640
3712
|
let type = integral_sql_1.I7Objects.STROMKREISABSCHNITT;
|
|
@@ -3687,8 +3759,8 @@ class ConverterIntegral7 {
|
|
|
3687
3759
|
(0, utils_2.ueberpruefeZeichenkette)(i7Data.bezeichner) +
|
|
3688
3760
|
'-' +
|
|
3689
3761
|
(0, utils_2.ueberpruefeZeichenkette)(stk.bezeichner);
|
|
3690
|
-
const
|
|
3691
|
-
const acLineSegment = new INTEGRALACLineSegment_1.INTEGRALACLineSegment(
|
|
3762
|
+
const uuid = (0, parser_utils_1.getUUID)(stk.custom_guid_0120 + stk.custom_guid_2137, this.objectMappingConfig.standardiseUuid);
|
|
3763
|
+
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
3764
|
if (stk.baujahr) {
|
|
3693
3765
|
const wire = new EVWireObject_1.EVWireObject(common_utils_1.CommonUtils.generateUUID(), stk.name);
|
|
3694
3766
|
wire.type = 'Stromkreisabschnitt';
|
|
@@ -3715,6 +3787,9 @@ class ConverterIntegral7 {
|
|
|
3715
3787
|
* KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt
|
|
3716
3788
|
*/
|
|
3717
3789
|
const acLineSegmentStart = acLineSegments[0];
|
|
3790
|
+
if (line.getUUID() === "4637c6dc-fad5-45f1-91e0-091d00717a3b" || line.getUUID() === "a992f3c9-f2e1-4cd6-8cc6-fd3d5d167871") {
|
|
3791
|
+
const stop = true;
|
|
3792
|
+
}
|
|
3718
3793
|
const startTerminal = this.createBoundaryConnection(frame, acLineSegmentStart, i7Data.aknoten, PhaseCode_1.PhaseCode.ABC);
|
|
3719
3794
|
if (startTerminal) {
|
|
3720
3795
|
//this.setACLineSegmentCurrentLimt(cimModel, acLineSegmentStart, acLineSegmentStart.description, startTerminal);
|
|
@@ -3816,7 +3891,7 @@ class ConverterIntegral7 {
|
|
|
3816
3891
|
}
|
|
3817
3892
|
}
|
|
3818
3893
|
else {
|
|
3819
|
-
this.logger.error(`Leitung ${line.getUUID()} with Terminal ${terminal.getUUID()}:
|
|
3894
|
+
this.logger.error(`Leitung ${line.getUUID()} with Terminal ${terminal.getUUID()}: SubGeographicalRegion konnte nicht bestimmt werden.`);
|
|
3820
3895
|
}
|
|
3821
3896
|
tmp_terminal = values.next();
|
|
3822
3897
|
}
|
|
@@ -3838,7 +3913,7 @@ class ConverterIntegral7 {
|
|
|
3838
3913
|
});
|
|
3839
3914
|
}
|
|
3840
3915
|
convertDCLines(cimModel, integral7, defaultValuesConfig) {
|
|
3841
|
-
var _a;
|
|
3916
|
+
var _a, _b;
|
|
3842
3917
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3843
3918
|
//Workaround: Prefill Integral 7 model hgueAnschlussKnotenIDs because of missing bays and schlaufen for dc objects this data structure keeps empty.
|
|
3844
3919
|
//for(let dc_node of this.hgueAnschlussKnotenIDs){
|
|
@@ -3862,7 +3937,10 @@ class ConverterIntegral7 {
|
|
|
3862
3937
|
let converterTargetNeg = false;
|
|
3863
3938
|
let converterUnitTargetSide = false;
|
|
3864
3939
|
let bipol = (0, parser_utils_1.convertToBooleanI7)(i7Data.bipol);
|
|
3865
|
-
bipol
|
|
3940
|
+
if (bipol === undefined) {
|
|
3941
|
+
bipol = false;
|
|
3942
|
+
}
|
|
3943
|
+
let dcNode = undefined;
|
|
3866
3944
|
//Parameter "guidp" is available for monopolar and bipolar dc systems. Thus create DCLineSegment with positive sign property in any case.
|
|
3867
3945
|
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
3946
|
let dcLineSegmentNeg = undefined;
|
|
@@ -3874,7 +3952,7 @@ class ConverterIntegral7 {
|
|
|
3874
3952
|
dcLineSegment.capacitance = undefined;
|
|
3875
3953
|
dcLineSegment.inductance = undefined;
|
|
3876
3954
|
/**EQ: given directly by the INTEGRAL system model */
|
|
3877
|
-
dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (
|
|
3955
|
+
dcLineSegment.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
|
|
3878
3956
|
dcLineSegment.equipmentContainer = dcLine;
|
|
3879
3957
|
//create second dcLineSegment in case this dcLine is a bipol.
|
|
3880
3958
|
if (bipol) {
|
|
@@ -3883,34 +3961,42 @@ class ConverterIntegral7 {
|
|
|
3883
3961
|
dcLineSegmentNeg.length = dcLineSegment.length;
|
|
3884
3962
|
dcLineSegmentNeg.capacitance = undefined;
|
|
3885
3963
|
dcLineSegmentNeg.inductance = undefined;
|
|
3886
|
-
dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (
|
|
3964
|
+
dcLineSegmentNeg.resistance = (0, parser_utils_1.isNumericI7)(i7Data.rdc) ? (0, parser_utils_1.convertToNumberI7)(i7Data.rdc) : undefined;
|
|
3887
3965
|
dcLineSegmentNeg.equipmentContainer = dcLineNeg;
|
|
3888
3966
|
}
|
|
3889
3967
|
const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt)) : undefined;
|
|
3890
3968
|
converterStart = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStart !== undefined);
|
|
3891
3969
|
let acDCConverterStartNeg = undefined;
|
|
3892
3970
|
const acDCConverterTarget = cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) ? cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt)) : undefined;
|
|
3893
|
-
|
|
3971
|
+
converterTarget = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTarget !== undefined);
|
|
3894
3972
|
let acDCConverterTargetNeg = undefined;
|
|
3973
|
+
if (acDCConverterTarget === undefined) {
|
|
3974
|
+
const stop = true;
|
|
3975
|
+
}
|
|
3976
|
+
else if (acDCConverterStart === undefined) {
|
|
3977
|
+
const stop = true;
|
|
3978
|
+
}
|
|
3979
|
+
const int7hguekopfStart = converterStart ? (_a = integral7.integralHgueKopf) === null || _a === void 0 ? void 0 : _a.get(this.UUID2Integral7ID.get(acDCConverterStart.getUUID()).find(elem => elem)) : undefined;
|
|
3980
|
+
const int7hguekopfTarget = converterTarget ? (_b = integral7.integralHgueKopf) === null || _b === void 0 ? void 0 : _b.get(this.UUID2Integral7ID.get(acDCConverterTarget.getUUID()).find(elem => elem)) : undefined;
|
|
3895
3981
|
//Setting acDCConverterStartNeg and acDCConverterTargetNeg in case this DCLine is a bipol
|
|
3896
3982
|
if (bipol) {
|
|
3897
|
-
|
|
3898
|
-
acDCConverterStartNeg = converterStart && int7hguekopf !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopf, acDCConverterStart.constructor.name, acDCConverterStart) : undefined;
|
|
3983
|
+
acDCConverterStartNeg = converterStart && int7hguekopfStart !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfStart, acDCConverterStart.constructor.name, acDCConverterStart) : undefined;
|
|
3899
3984
|
converterStartNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterStartNeg !== undefined);
|
|
3900
|
-
acDCConverterTargetNeg = converterTarget &&
|
|
3985
|
+
acDCConverterTargetNeg = converterTarget && int7hguekopfTarget !== undefined ? (0, util_create_1.createACDCConverterNeg)(cimModel, int7hguekopfTarget, acDCConverterTarget.constructor.name, acDCConverterTarget) : undefined;
|
|
3901
3986
|
converterTargetNeg = (0, parser_utils_1.convertToBooleanI7)(acDCConverterTargetNeg !== undefined);
|
|
3902
3987
|
}
|
|
3988
|
+
//Set grounding for dcConverterUnit
|
|
3989
|
+
const converterUnitStart = (acDCConverterStart === null || acDCConverterStart === void 0 ? void 0 : acDCConverterStart.equipmentContainer) ? acDCConverterStart.equipmentContainer : undefined;
|
|
3990
|
+
converterUnitStartSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitStart !== undefined);
|
|
3991
|
+
const converterUnitTarget = (acDCConverterTarget === null || acDCConverterTarget === void 0 ? void 0 : acDCConverterTarget.equipmentContainer) ? acDCConverterTarget.equipmentContainer : undefined;
|
|
3992
|
+
converterUnitTargetSide = (0, parser_utils_1.convertToBooleanI7)(converterUnitTarget !== undefined);
|
|
3903
3993
|
if (converterStart && !converterStartNeg) {
|
|
3904
|
-
createDCGround(acDCConverterStart);
|
|
3994
|
+
dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
|
|
3905
3995
|
}
|
|
3906
3996
|
else if (converterStart && converterStartNeg) {
|
|
3907
|
-
createDCGround(acDCConverterStart);
|
|
3908
|
-
connectDCGround(acDCConverterStartNeg);
|
|
3997
|
+
dcNode = createDCGround(cimModel, acDCConverterStart, int7hguekopfStart);
|
|
3998
|
+
connectDCGround(cimModel, acDCConverterStartNeg, int7hguekopfStart, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
|
|
3909
3999
|
}
|
|
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
4000
|
switch (bipol) {
|
|
3915
4001
|
case true: {
|
|
3916
4002
|
if (converterUnitStartSide && !converterUnitTargetSide) {
|
|
@@ -3921,11 +4007,11 @@ class ConverterIntegral7 {
|
|
|
3921
4007
|
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
|
|
3922
4008
|
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
|
|
3923
4009
|
if (converterTarget && !converterTargetNeg) {
|
|
3924
|
-
createDCGround(acDCConverterTarget);
|
|
4010
|
+
dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
|
|
3925
4011
|
}
|
|
3926
4012
|
else if (converterTarget && converterTargetNeg) {
|
|
3927
|
-
createDCGround(acDCConverterTarget);
|
|
3928
|
-
connectDCGround(acDCConverterTargetNeg);
|
|
4013
|
+
dcNode = createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
|
|
4014
|
+
connectDCGround(cimModel, acDCConverterTargetNeg, int7hguekopfTarget, dcNode, DCPolarityKind_1.DCPolarityKind.middle);
|
|
3929
4015
|
}
|
|
3930
4016
|
else {
|
|
3931
4017
|
this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r ACDCConverter konnte nicht ermittelt werden.`);
|
|
@@ -3939,27 +4025,29 @@ class ConverterIntegral7 {
|
|
|
3939
4025
|
case false: {
|
|
3940
4026
|
if (converterUnitStartSide && !converterUnitTargetSide) {
|
|
3941
4027
|
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
3942
|
-
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
3943
|
-
createNeutralGroundReturn(converterUnitStart, converterUnitTarget);
|
|
3944
4028
|
this.logger.error(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: zugehörende/r DCConverterUnit am Leitungsende konnte nicht ermittelt werden.`);
|
|
3945
4029
|
}
|
|
3946
4030
|
else if (converterUnitStartSide && converterUnitTargetSide) {
|
|
3947
4031
|
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
4032
|
+
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
4033
|
+
createDCGround(cimModel, acDCConverterTarget, int7hguekopfTarget);
|
|
3948
4034
|
}
|
|
4035
|
+
break;
|
|
3949
4036
|
}
|
|
3950
4037
|
default: {
|
|
3951
|
-
this.logger.
|
|
4038
|
+
this.logger.info(`info --- HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid}: die bipol-Eigenschaft ist nicht gesetzt.`);
|
|
3952
4039
|
}
|
|
3953
4040
|
}
|
|
3954
4041
|
// Topologie DC
|
|
3955
4042
|
/* Anfang / Ende DCNodes*/
|
|
3956
|
-
|
|
3957
|
-
const startDCNodeNeg =
|
|
4043
|
+
let startDCNode = converterStart ? getDCNodeFromConverter(acDCConverterStart, DCPolarityKind_1.DCPolarityKind.positive) : undefined;
|
|
4044
|
+
const startDCNodeNeg = converterStartNeg ? getDCNodeFromConverter(acDCConverterStartNeg, DCPolarityKind_1.DCPolarityKind.negative) : undefined;
|
|
3958
4045
|
if (startDCNode) {
|
|
3959
|
-
const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)('i7Data.
|
|
3960
|
-
dcTerminal.connected = true;
|
|
4046
|
+
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
4047
|
dcTerminal.dCConductingEquipment = dcLineSegment;
|
|
4048
|
+
dcTerminal.connected = true;
|
|
3962
4049
|
dcTerminal.dcNode = startDCNode;
|
|
4050
|
+
dcLineSegment.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3963
4051
|
startDCNode.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3964
4052
|
cimModel.addDCTerminal(dcTerminal);
|
|
3965
4053
|
}
|
|
@@ -3967,23 +4055,23 @@ class ConverterIntegral7 {
|
|
|
3967
4055
|
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Anfangsknoten. ${i7Data.anetzobjekt} ${this.integralID2UUID.get(i7Data.anetzobjekt)}`);
|
|
3968
4056
|
}
|
|
3969
4057
|
if (startDCNodeNeg) {
|
|
3970
|
-
const dcTerminal = new DCTerminal_1.DCTerminal((0, parser_utils_1.getUUID)('i7Data.
|
|
3971
|
-
dcTerminal.connected = true;
|
|
4058
|
+
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
4059
|
dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
|
|
3973
4060
|
dcTerminal.dcNode = startDCNodeNeg;
|
|
4061
|
+
dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3974
4062
|
startDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3975
4063
|
cimModel.addDCTerminal(dcTerminal);
|
|
3976
4064
|
}
|
|
3977
4065
|
else {
|
|
3978
4066
|
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Anfangsknoten NEG. ${i7Data.anetzobjekt} ${this.integralID2UUID.get(i7Data.anetzobjekt)}`);
|
|
3979
4067
|
}
|
|
3980
|
-
const targetDCNode =
|
|
3981
|
-
const targetDCNodeNeg =
|
|
4068
|
+
const targetDCNode = converterTarget ? getDCNodeFromConverter(acDCConverterTarget, DCPolarityKind_1.DCPolarityKind.positive) : undefined;
|
|
4069
|
+
const targetDCNodeNeg = converterTargetNeg ? getDCNodeFromConverter(acDCConverterTargetNeg, DCPolarityKind_1.DCPolarityKind.negative) : undefined;
|
|
3982
4070
|
if (targetDCNode) {
|
|
3983
|
-
const dcTerminal = new DCTerminal_1.DCTerminal(
|
|
3984
|
-
dcTerminal.connected = true;
|
|
4071
|
+
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
4072
|
dcTerminal.dCConductingEquipment = dcLineSegment;
|
|
3986
4073
|
dcTerminal.dcNode = targetDCNode;
|
|
4074
|
+
dcLineSegment.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3987
4075
|
targetDCNode.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3988
4076
|
cimModel.addDCTerminal(dcTerminal);
|
|
3989
4077
|
}
|
|
@@ -3991,10 +4079,10 @@ class ConverterIntegral7 {
|
|
|
3991
4079
|
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Zielknoten. ${i7Data.enetzobjekt} ${this.integralID2UUID.get(i7Data.enetzobjekt)}`);
|
|
3992
4080
|
}
|
|
3993
4081
|
if (targetDCNodeNeg) {
|
|
3994
|
-
const dcTerminal = new DCTerminal_1.DCTerminal(
|
|
3995
|
-
dcTerminal.connected = true;
|
|
4082
|
+
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
4083
|
dcTerminal.dCConductingEquipment = dcLineSegmentNeg;
|
|
3997
4084
|
dcTerminal.dcNode = targetDCNodeNeg;
|
|
4085
|
+
dcLineSegmentNeg.dCTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3998
4086
|
targetDCNodeNeg.dcTerminals.set(dcTerminal.getUUID(), dcTerminal);
|
|
3999
4087
|
cimModel.addDCTerminal(dcTerminal);
|
|
4000
4088
|
}
|
|
@@ -4003,7 +4091,7 @@ class ConverterIntegral7 {
|
|
|
4003
4091
|
}
|
|
4004
4092
|
cimModel.addDCLine(dcLine);
|
|
4005
4093
|
cimModel.addDCLineSegment(dcLineSegment);
|
|
4006
|
-
if (bipol) {
|
|
4094
|
+
if (bipol && dcLineNeg && dcLineSegmentNeg) {
|
|
4007
4095
|
cimModel.addDCLine(dcLineNeg);
|
|
4008
4096
|
cimModel.addDCLineSegment(dcLineSegmentNeg);
|
|
4009
4097
|
}
|
|
@@ -4179,8 +4267,11 @@ class ConverterIntegral7 {
|
|
|
4179
4267
|
}
|
|
4180
4268
|
}
|
|
4181
4269
|
for (const i7Data of result) {
|
|
4182
|
-
const
|
|
4183
|
-
|
|
4270
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
4271
|
+
if (uuid === "02b17e6c-eeed-451e-a822-c54e6d6c4db1") {
|
|
4272
|
+
const stop = true;
|
|
4273
|
+
}
|
|
4274
|
+
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
4275
|
const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer);
|
|
4185
4276
|
/** AssetInfos */
|
|
4186
4277
|
if (i7Data.baujahr) {
|
|
@@ -4238,9 +4329,7 @@ class ConverterIntegral7 {
|
|
|
4238
4329
|
const ukr = (0, utils_2.getUkrTrafo)(i7Data, powerTransformerInfo, '');
|
|
4239
4330
|
const sr = (0, utils_2.getSrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
|
|
4240
4331
|
const ur = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber);
|
|
4241
|
-
|
|
4242
|
-
// I rated
|
|
4243
|
-
const ir1 = (0, utils_2.getTrafoIr)(ur, sr);
|
|
4332
|
+
const sdauer = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer) : sr;
|
|
4244
4333
|
// P0 Lastverluste im I7 Modell p_leer
|
|
4245
4334
|
const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
|
|
4246
4335
|
// Leerlaufverluste
|
|
@@ -4269,7 +4358,7 @@ class ConverterIntegral7 {
|
|
|
4269
4358
|
const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode.ABC, true, 1) : undefined;*/
|
|
4270
4359
|
if (!startTerminal)
|
|
4271
4360
|
this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
|
|
4272
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7,
|
|
4361
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig);
|
|
4273
4362
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4274
4363
|
let equivalentInjection = undefined;
|
|
4275
4364
|
if (startTerminal) {
|
|
@@ -4295,14 +4384,12 @@ class ConverterIntegral7 {
|
|
|
4295
4384
|
powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
|
|
4296
4385
|
powerTransformerEnd2.x0 = zeroSequImpedanzWx.x02;
|
|
4297
4386
|
powerTransformerEnd2.r0 = zeroSequImpedanzWx.r02;
|
|
4298
|
-
// I rated
|
|
4299
|
-
const ir2 = (sr * Math.pow(10, 6) / ur2 * 1000) / Math.sqrt(3);
|
|
4300
4387
|
/* const ziel = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
|
|
4301
4388
|
const zielTerminal = ziel ? this.createConnection(cimModel, powerTransformer, ziel, PhaseCode.ABC, true, 2) : undefined;*/
|
|
4302
4389
|
const zielTerminal = this.createBoundaryConnection(frame, powerTransformer, i7Data.eknoten, PhaseCode_1.PhaseCode.ABC);
|
|
4303
4390
|
if (!zielTerminal)
|
|
4304
4391
|
this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
|
|
4305
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7,
|
|
4392
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, undefined, i7Data, defaultValuesConfig);
|
|
4306
4393
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4307
4394
|
if (zielTerminal) {
|
|
4308
4395
|
let bdf = this.getConnectedBoundaryModel(this.integralID2UUID.get(i7Data.aknoten));
|
|
@@ -4391,8 +4478,15 @@ class ConverterIntegral7 {
|
|
|
4391
4478
|
}
|
|
4392
4479
|
for (const i7Data of result) {
|
|
4393
4480
|
const sternpunktKnotenMap = new Map();
|
|
4394
|
-
const
|
|
4395
|
-
const powerTransformer = new PowerTransformer_1.PowerTransformer(
|
|
4481
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid, this.objectMappingConfig.standardiseUuid);
|
|
4482
|
+
const powerTransformer = new PowerTransformer_1.PowerTransformer(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_PT']), i7Data.kurzname, i7Data.kommentar);
|
|
4483
|
+
const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
|
|
4484
|
+
if (substation) {
|
|
4485
|
+
powerTransformer.equipmentContainer = substation;
|
|
4486
|
+
}
|
|
4487
|
+
else {
|
|
4488
|
+
this.logger.debug(`Trafo3W ${i7Data.id} besitzt keine Umspannanlage.`);
|
|
4489
|
+
}
|
|
4396
4490
|
const facility = util_asset_model_1.UtilAssetModel.createFacilityInstanceForPsr(cimModel, powerTransformer, cim_constants_1.CimAssetAliasNames.Transformer);
|
|
4397
4491
|
/** AssetInfos */
|
|
4398
4492
|
if (i7Data.baujahr) {
|
|
@@ -4403,13 +4497,6 @@ class ConverterIntegral7 {
|
|
|
4403
4497
|
facility.setAssetInfo(powerTransformerInfo);
|
|
4404
4498
|
powerTransformerInfo.addAsset(facility);
|
|
4405
4499
|
}
|
|
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
4500
|
const schaltgruppe = i7Data.schaltgr;
|
|
4414
4501
|
//Set property 'isPartOfGeneratorUnit' to 'true' if property 'Blocktransformator' is set in Integral data.
|
|
4415
4502
|
if (this.blocktransformatoren.includes((0, parser_utils_1.convertToNumberI7)(i7Data.id))) {
|
|
@@ -4439,10 +4526,9 @@ class ConverterIntegral7 {
|
|
|
4439
4526
|
const ur1 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 1);
|
|
4440
4527
|
const ur2 = (0, utils_2.getUrTrafo)(i7Data, powerTransformerInfo, 2);
|
|
4441
4528
|
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));
|
|
4529
|
+
const sdauer1 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_1) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_1) : sr1;
|
|
4530
|
+
const sdauer2 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_2) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_2) : sr2;
|
|
4531
|
+
const sdauer3 = (0, parser_utils_1.isNumericI7)(i7Data.s_dauer_3) ? (0, parser_utils_1.convertToNumberI7)(i7Data.s_dauer_3) : sr3;
|
|
4446
4532
|
//Leerlaufverluste in kW
|
|
4447
4533
|
const pLeer = (0, utils_2.getTrafoPleer)(i7Data, powerTransformerInfo);
|
|
4448
4534
|
// Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
|
|
@@ -4495,7 +4581,7 @@ class ConverterIntegral7 {
|
|
|
4495
4581
|
powerTransformerEnd1.r0 = zeroSequImpedanzWx.r01;
|
|
4496
4582
|
powerTransformerEnd1.ratedU = ur1;
|
|
4497
4583
|
powerTransformerEnd1.ratedS = sr1;
|
|
4498
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7,
|
|
4584
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd1, powerTransformer, terminal1, sternpunktKnotenMap, integral7, sdauer1, i7Data, defaultValuesConfig, trafoWicklungen);
|
|
4499
4585
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4500
4586
|
let equivalentInjection = undefined;
|
|
4501
4587
|
if (terminal1) {
|
|
@@ -4505,6 +4591,9 @@ class ConverterIntegral7 {
|
|
|
4505
4591
|
equivalentInjection = this.createBoundaryEquivalentInjection(frame, tmp_cn);
|
|
4506
4592
|
}
|
|
4507
4593
|
}
|
|
4594
|
+
if (powerTransformer.mrid === "49afe40b-89cc-419f-afc5-f330c6589f82") {
|
|
4595
|
+
const stop = true;
|
|
4596
|
+
}
|
|
4508
4597
|
//set transformer end winding connection
|
|
4509
4598
|
powerTransformerEnd1.connectionKind = (0, utils_2.getSchaltgruppe)(schaltgruppe, powerTransformerEnd1.endNumber, powerTransformerEnd1.grounded);
|
|
4510
4599
|
powerTransformerEnd1.phaseAngleClock = (0, utils_2.getSchaltgruppeAngleClock)(schaltgruppe, powerTransformerEnd1.endNumber);
|
|
@@ -4545,7 +4634,7 @@ class ConverterIntegral7 {
|
|
|
4545
4634
|
powerTransformerEnd2.ratedS = sr2;
|
|
4546
4635
|
powerTransformerEnd2.ratedU = ur2;
|
|
4547
4636
|
powerTransformerEnd2.powerTransformer = powerTransformer;
|
|
4548
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, terminal2, sternpunktKnotenMap, integral7,
|
|
4637
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd2, powerTransformer, terminal2, sternpunktKnotenMap, integral7, sdauer2, i7Data, defaultValuesConfig, trafoWicklungen);
|
|
4549
4638
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4550
4639
|
equivalentInjection = undefined;
|
|
4551
4640
|
if (terminal2) {
|
|
@@ -4595,7 +4684,7 @@ class ConverterIntegral7 {
|
|
|
4595
4684
|
powerTransformerEnd3.ratedS = sr3;
|
|
4596
4685
|
powerTransformerEnd3.ratedU = ur3;
|
|
4597
4686
|
powerTransformerEnd3.powerTransformer = powerTransformer;
|
|
4598
|
-
this.setPowerTransformerEndProperties(frame, powerTransformerEnd3, powerTransformer, terminal3, sternpunktKnotenMap, integral7,
|
|
4687
|
+
this.setPowerTransformerEndProperties(frame, powerTransformerEnd3, powerTransformer, terminal3, sternpunktKnotenMap, integral7, sdauer3, i7Data, defaultValuesConfig, trafoWicklungen);
|
|
4599
4688
|
/**Add boundary equivalent injection if terminal is connected to boudary point. */
|
|
4600
4689
|
equivalentInjection = undefined;
|
|
4601
4690
|
if (terminal3) {
|
|
@@ -4748,60 +4837,6 @@ class ConverterIntegral7 {
|
|
|
4748
4837
|
equipment.equipmentContainer = undefined;
|
|
4749
4838
|
cimModel.removeObject(equipment);
|
|
4750
4839
|
}
|
|
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
4840
|
/** Geokoordinaten */
|
|
4806
4841
|
const location = substation.location;
|
|
4807
4842
|
for (let i = 0; i < connectivityNodes.length; i++) {
|
|
@@ -4821,8 +4856,7 @@ class ConverterIntegral7 {
|
|
|
4821
4856
|
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
4857
|
junction.terminals.set(terminal.getUUID(), terminal);
|
|
4823
4858
|
terminal.conductingEquipment = junction;
|
|
4824
|
-
|
|
4825
|
-
// terminal.connectivityNode = connectivityNode;
|
|
4859
|
+
terminal.connectivityNode = connectivityNode;
|
|
4826
4860
|
line.addEquipment(junction);
|
|
4827
4861
|
/** Die Geokoordinaten der UA wird auf die Junction des ConnectivityNodes übertragen */
|
|
4828
4862
|
if (location && location.positionPoints.length) {
|
|
@@ -4899,11 +4933,12 @@ class ConverterIntegral7 {
|
|
|
4899
4933
|
data.laenge = 1;
|
|
4900
4934
|
}
|
|
4901
4935
|
// 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
|
|
4936
|
+
if ((0, parser_utils_1.isNumericI7)(data.laenge) && data.laenge > 0 && !data.flag_impedanzlos) {
|
|
4903
4937
|
acLineSegment.length = data.laenge;
|
|
4904
|
-
}
|
|
4905
|
-
|
|
4906
|
-
|
|
4938
|
+
}
|
|
4939
|
+
else {
|
|
4940
|
+
acLineSegment.length = 1;
|
|
4941
|
+
}
|
|
4907
4942
|
const assetType = defaultModel.getWireInfoByName(data.nametyp);
|
|
4908
4943
|
// r0
|
|
4909
4944
|
if ((0, parser_utils_1.isNumericI7)(data.r0) && data.r0 > 0 && !data.flag_impedanzlos) {
|
|
@@ -4977,48 +5012,89 @@ class ConverterIntegral7 {
|
|
|
4977
5012
|
}
|
|
4978
5013
|
// ir
|
|
4979
5014
|
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
|
-
}
|
|
5015
|
+
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);
|
|
5016
|
+
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);
|
|
5017
|
+
this.setConductingEquipmentOperationalLimit(cimModel, acLineSegment.name, terminal, ir, new CurrentLimit_1.CurrentLimit(common_utils_1.CommonUtils.generateUUID(), acLineSegment.name), igrenz);
|
|
4986
5018
|
//PSRType
|
|
4987
5019
|
const psrType = (0, utils_1.createIfNotExitsPSRType)(cimModel, data.typ);
|
|
4988
5020
|
acLineSegment.psrTypeUUID = psrType.mrid;
|
|
4989
|
-
// psrType.addPowerSystemResource(acLineSegment);
|
|
4990
5021
|
}
|
|
4991
5022
|
}
|
|
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
|
-
|
|
5023
|
+
setConductingEquipmentOperationalLimit(cimModel, name, terminal, physLimit, limit, igrenz) {
|
|
5024
|
+
let operationalLimitSet = undefined;
|
|
5025
|
+
let operationalLimitTypePatl = undefined;
|
|
5026
|
+
if (limit instanceof CurrentLimit_1.CurrentLimit) {
|
|
5027
|
+
//mandatory for aclinesegments and powertransformers
|
|
5028
|
+
const ir = physLimit;
|
|
5029
|
+
let currentLimitTatl = undefined;
|
|
5030
|
+
let currentLimitPatl = undefined;
|
|
5031
|
+
let operationalLimitTypeTatl = undefined;
|
|
5032
|
+
if (ir) {
|
|
5033
|
+
currentLimitPatl = limit;
|
|
5034
|
+
currentLimitPatl.value = new CurrentFlow_1.CurrentFlow(ir, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
|
|
5035
|
+
cimModel.addCurrentLimit(currentLimitPatl);
|
|
5036
|
+
}
|
|
5037
|
+
//optional
|
|
5038
|
+
if (igrenz) {
|
|
5039
|
+
currentLimitTatl = new CurrentLimit_1.CurrentLimit(common_utils_1.CommonUtils.generateUUID(), `${name}`);
|
|
5040
|
+
currentLimitTatl.value = new CurrentFlow_1.CurrentFlow(igrenz, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
|
|
5041
|
+
cimModel.addCurrentLimit(currentLimitTatl);
|
|
5042
|
+
}
|
|
5043
|
+
if (currentLimitPatl && currentLimitTatl) {
|
|
5044
|
+
operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
|
|
5045
|
+
cimModel.addOperationalLimitSet(operationalLimitSet);
|
|
5046
|
+
operationalLimitSet.addOperationalLimit(currentLimitPatl);
|
|
5047
|
+
currentLimitPatl.operationalLimitSet = operationalLimitSet;
|
|
5048
|
+
operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
|
|
5049
|
+
operationalLimitTypePatl.addOperationalLimit(currentLimitPatl);
|
|
5050
|
+
currentLimitPatl.operationalLimitType = operationalLimitTypePatl;
|
|
5051
|
+
operationalLimitSet.terminal = terminal;
|
|
5052
|
+
operationalLimitSet.addOperationalLimit(currentLimitTatl);
|
|
5053
|
+
currentLimitTatl.operationalLimitSet = operationalLimitSet;
|
|
5054
|
+
operationalLimitTypeTatl = this.createIfNotExistOperationalLimitType(cimModel, 'tatl', LimitTypeKind_1.LimitTypeKind.tatl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
|
|
5055
|
+
operationalLimitTypeTatl.addOperationalLimit(currentLimitTatl);
|
|
5056
|
+
currentLimitTatl.operationalLimitType = operationalLimitTypeTatl;
|
|
5057
|
+
}
|
|
5058
|
+
else if (currentLimitPatl) {
|
|
5059
|
+
operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
|
|
5060
|
+
cimModel.addOperationalLimitSet(operationalLimitSet);
|
|
5061
|
+
operationalLimitSet.addOperationalLimit(currentLimitPatl);
|
|
5062
|
+
currentLimitPatl.operationalLimitSet = operationalLimitSet;
|
|
5063
|
+
operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
|
|
5064
|
+
operationalLimitTypePatl.addOperationalLimit(currentLimitPatl);
|
|
5065
|
+
currentLimitPatl.operationalLimitType = operationalLimitTypePatl;
|
|
5066
|
+
operationalLimitSet.terminal = terminal;
|
|
5067
|
+
}
|
|
5068
|
+
else if (currentLimitTatl) {
|
|
5069
|
+
operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
|
|
5070
|
+
cimModel.addOperationalLimitSet(operationalLimitSet);
|
|
5071
|
+
operationalLimitSet.addOperationalLimit(currentLimitTatl);
|
|
5072
|
+
currentLimitTatl.operationalLimitSet = operationalLimitSet;
|
|
5073
|
+
operationalLimitTypeTatl = this.createIfNotExistOperationalLimitType(cimModel, 'tatl', LimitTypeKind_1.LimitTypeKind.tatl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
|
|
5074
|
+
operationalLimitTypeTatl.addOperationalLimit(currentLimitTatl);
|
|
5075
|
+
currentLimitTatl.operationalLimitType = operationalLimitTypeTatl;
|
|
5076
|
+
operationalLimitSet.terminal = terminal;
|
|
5077
|
+
}
|
|
5078
|
+
}
|
|
5079
|
+
else if (limit instanceof ApparentPowerLimit_1.ApparentPowerLimit) {
|
|
5080
|
+
let apparentPowerLimit = undefined;
|
|
5081
|
+
if (physLimit != undefined) {
|
|
5082
|
+
apparentPowerLimit = limit;
|
|
5083
|
+
apparentPowerLimit.uuid = common_utils_1.CommonUtils.generateUUID();
|
|
5084
|
+
apparentPowerLimit.name = `${name}`;
|
|
5085
|
+
cimModel.addCurrentLimit(apparentPowerLimit);
|
|
5086
|
+
apparentPowerLimit.value = new ApparentPower_1.ApparentPower(physLimit, UnitMultiplier_1.UnitMultiplier.M, UnitSymbol_1.UnitSymbol.VA);
|
|
5087
|
+
if (apparentPowerLimit) {
|
|
5088
|
+
operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(common_utils_1.CommonUtils.generateUUID(), `${name}`);
|
|
5089
|
+
cimModel.addOperationalLimitSet(operationalLimitSet);
|
|
5090
|
+
operationalLimitSet.addOperationalLimit(apparentPowerLimit);
|
|
5091
|
+
apparentPowerLimit.operationalLimitSet = operationalLimitSet;
|
|
5092
|
+
operationalLimitTypePatl = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
|
|
5093
|
+
operationalLimitTypePatl.addOperationalLimit(apparentPowerLimit);
|
|
5094
|
+
apparentPowerLimit.operationalLimitType = operationalLimitTypePatl;
|
|
5095
|
+
operationalLimitSet.terminal = terminal;
|
|
5096
|
+
}
|
|
5097
|
+
}
|
|
5022
5098
|
}
|
|
5023
5099
|
}
|
|
5024
5100
|
createIfNotExistOperationalLimitType(cimModel, name, type, direction) {
|
|
@@ -5050,7 +5126,10 @@ class ConverterIntegral7 {
|
|
|
5050
5126
|
terminal.phases = phase;
|
|
5051
5127
|
terminal.conductingEquipment = conductingEquipment;
|
|
5052
5128
|
conductingEquipment.addTerminal(terminal);
|
|
5053
|
-
terminal.connected = connected;
|
|
5129
|
+
terminal.connected = (terminal.connected !== undefined) ? terminal.connected : connected;
|
|
5130
|
+
if (terminal.connected === false) {
|
|
5131
|
+
const stop = true;
|
|
5132
|
+
}
|
|
5054
5133
|
if (!isNameSet) {
|
|
5055
5134
|
terminal.name = (0, util_create_1.createNotation)([conductingEquipment.getUUID().substring(0, 8), '_' + terminal.name], 32, true);
|
|
5056
5135
|
}
|
|
@@ -5060,7 +5139,7 @@ class ConverterIntegral7 {
|
|
|
5060
5139
|
createBoundaryConnection(frame, conductingEquipment, i7ObjectID, phase) {
|
|
5061
5140
|
const cimModel = frame.cimModel;
|
|
5062
5141
|
const anschlussUUID = this.integralID2UUID.get(i7ObjectID);
|
|
5063
|
-
let terminal;
|
|
5142
|
+
let terminal = undefined;
|
|
5064
5143
|
let cn = undefined;
|
|
5065
5144
|
if (cimModel.objects.has(anschlussUUID)) {
|
|
5066
5145
|
// Anschluss befindet sich im selben Modell
|
|
@@ -5114,7 +5193,7 @@ class ConverterIntegral7 {
|
|
|
5114
5193
|
this.annotateBoundaryNode(frame.name, frame.isoCode, frame.tsoName, cn);
|
|
5115
5194
|
}
|
|
5116
5195
|
else {
|
|
5117
|
-
this.logger.error(`Für das Objekt ${conductingEquipment.constructor.name} ${conductingEquipment.getUUID()} konnte am I7-Objekt ${i7ObjectID} kein
|
|
5196
|
+
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
5197
|
}
|
|
5119
5198
|
if (terminal) {
|
|
5120
5199
|
terminal.conductingEquipment = conductingEquipment;
|
|
@@ -5122,7 +5201,7 @@ class ConverterIntegral7 {
|
|
|
5122
5201
|
}
|
|
5123
5202
|
}
|
|
5124
5203
|
else {
|
|
5125
|
-
this.logger.error(`Für das Objekt ${conductingEquipment.constructor.name} ${conductingEquipment.getUUID()} konnte am I7-Objekt ${i7ObjectID} kein
|
|
5204
|
+
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
5205
|
}
|
|
5127
5206
|
}
|
|
5128
5207
|
return terminal;
|
|
@@ -5221,6 +5300,7 @@ class ConverterIntegral7 {
|
|
|
5221
5300
|
getSpannungsbandTrafo(i7Data, powerTransformerEnds) {
|
|
5222
5301
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
5223
5302
|
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
5303
|
+
var _a, _b, _c;
|
|
5224
5304
|
let minMaxSollResult;
|
|
5225
5305
|
// Spannungsgeregelter Anschluss
|
|
5226
5306
|
/**
|
|
@@ -5229,9 +5309,18 @@ class ConverterIntegral7 {
|
|
|
5229
5309
|
* 2 - Niederspannungsseite (Anschluss 3)
|
|
5230
5310
|
* 3 - Externer Knoten
|
|
5231
5311
|
* */
|
|
5232
|
-
|
|
5233
|
-
|
|
5234
|
-
|
|
5312
|
+
if (powerTransformerEnds[0] && powerTransformerEnds[0].getTerminal() === undefined) {
|
|
5313
|
+
const stop = true;
|
|
5314
|
+
}
|
|
5315
|
+
if (powerTransformerEnds[1] && powerTransformerEnds[1].getTerminal() === undefined) {
|
|
5316
|
+
const stop = true;
|
|
5317
|
+
}
|
|
5318
|
+
if (powerTransformerEnds[2] && powerTransformerEnds[2].getTerminal() === undefined) {
|
|
5319
|
+
const stop = true;
|
|
5320
|
+
}
|
|
5321
|
+
let tempKnotenId = i7Data.spgreg_anschluss === 0 ? this.UUID2Integral7ID.get((_a = powerTransformerEnds[0].getTerminal()) === null || _a === void 0 ? void 0 : _a.getConnectivityNodeUUID())[0] : undefined;
|
|
5322
|
+
tempKnotenId = i7Data.spgreg_anschluss === 1 ? this.UUID2Integral7ID.get((_b = powerTransformerEnds[1].getTerminal()) === null || _b === void 0 ? void 0 : _b.getConnectivityNodeUUID())[0] : tempKnotenId;
|
|
5323
|
+
tempKnotenId = i7Data.spgreg_anschluss === 2 ? this.UUID2Integral7ID.get((_c = powerTransformerEnds[2].getTerminal()) === null || _c === void 0 ? void 0 : _c.getConnectivityNodeUUID())[0] : tempKnotenId;
|
|
5235
5324
|
tempKnotenId = i7Data.spgreg_anschluss === 3 ? (i7Data.spgreg_knoten !== undefined ? i7Data.spgreg_knoten : undefined) : tempKnotenId;
|
|
5236
5325
|
if (i7Data.spgreg_anschluss >= 0 && i7Data.spgreg_anschluss <= 2 && tempKnotenId !== undefined) { // Lokale Regelung
|
|
5237
5326
|
// Falls tempKnotenId ausgeprägt ist, bestimme in welcher Tabelle der aKnoten bzw. eKnoten enthalten ist.
|
|
@@ -5551,14 +5640,14 @@ class ConverterIntegral7 {
|
|
|
5551
5640
|
coordinateSystem.crsUrn = crsUrn;
|
|
5552
5641
|
cimModel.addCoordinateSystem(coordinateSystem);
|
|
5553
5642
|
}
|
|
5554
|
-
setPowerTransformerEndProperties(frame, powerTransformerEnd, powerTransformer, terminal, sternpunktKnotenMap, integral7,
|
|
5643
|
+
setPowerTransformerEndProperties(frame, powerTransformerEnd, powerTransformer, terminal, sternpunktKnotenMap, integral7, sdauer, i7Data, defaultValuesConfig, windings) {
|
|
5555
5644
|
var _a, _b;
|
|
5556
5645
|
const cimModel = frame.cimModel;
|
|
5557
5646
|
if (terminal) {
|
|
5558
5647
|
// Topologie
|
|
5559
5648
|
powerTransformerEnd.terminal = terminal;
|
|
5560
|
-
//
|
|
5561
|
-
this.
|
|
5649
|
+
// ApparentPowerLimit
|
|
5650
|
+
this.setConductingEquipmentOperationalLimit(cimModel, `W${powerTransformerEnd.endNumber}` + (powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.name), terminal, sdauer, new ApparentPowerLimit_1.ApparentPowerLimit());
|
|
5562
5651
|
let isTrafo2w = i7Data.trafowicklung3w3 === undefined ? true : false;
|
|
5563
5652
|
// Erdung / Sternpunkt
|
|
5564
5653
|
if (sternpunktKnotenMap.has(i7Data.id) && isTrafo2w) {
|
|
@@ -5612,25 +5701,25 @@ class ConverterIntegral7 {
|
|
|
5612
5701
|
}
|
|
5613
5702
|
convertTapChangers(i7Data, transformerEnds, cimModel, transformerinfo, connectivityNode, spannungsband) {
|
|
5614
5703
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
5615
|
-
/*if(getUUID(i7Data.guid
|
|
5704
|
+
/*if(getUUID(i7Data.guid) === '11e7be86-8bb7-41ba-898a-74cd5e8efbb9'){ //Zeile50
|
|
5616
5705
|
let stop = true; DONE
|
|
5617
5706
|
}
|
|
5618
|
-
if(getUUID(i7Data.guid
|
|
5707
|
+
if(getUUID(i7Data.guid) === '1239F03C-ED5B-4FDF-9453-D97E611FCC36'){ //Zeile52 - Datenfehler: Transformatoren mit definierter Zusatzspannung und Stufungsbereich, jedoch 'Stufensteller nicht vorhanden'
|
|
5619
5708
|
let stop = true; DONE
|
|
5620
5709
|
}*/
|
|
5621
|
-
/*if(getUUID(i7Data.guid
|
|
5710
|
+
/*if(getUUID(i7Data.guid)=== 'CFDAA56A-A0DA-4C5B-92CC-21138B6D6D07'){ //Standard LR
|
|
5622
5711
|
let stop = true;
|
|
5623
5712
|
}*/
|
|
5624
|
-
if ((0, parser_utils_1.getUUID)(i7Data.guid
|
|
5713
|
+
if ((0, parser_utils_1.getUUID)(i7Data.guid) === '00ebe00e-50fa-4fc0-9ed6-557528a9b460') { //Zeile53 - Typ Meeden'
|
|
5625
5714
|
let stop = true;
|
|
5626
5715
|
}
|
|
5627
|
-
/*if(getUUID(i7Data.guid
|
|
5716
|
+
/*if(getUUID(i7Data.guid) === '012416f2d9584971baa93360fcf40be2'){ //Zeile55 - SR statt LR'
|
|
5628
5717
|
let stop = true;
|
|
5629
5718
|
}*/
|
|
5630
|
-
if ((0, parser_utils_1.getUUID)(i7Data.guid
|
|
5719
|
+
if ((0, parser_utils_1.getUUID)(i7Data.guid) === '515508dc-5982-4686-ad26-08d39db91421') { //Zeile81 - SR statt LR'
|
|
5631
5720
|
let stop = true;
|
|
5632
5721
|
}
|
|
5633
|
-
/*if(getUUID(i7Data.guid
|
|
5722
|
+
/*if(getUUID(i7Data.guid) === '5ec82d14-ee64-43b6-86ff-c7615d96f7ad'){ //Zeile58
|
|
5634
5723
|
let stop = true;
|
|
5635
5724
|
}*/
|
|
5636
5725
|
let ratioPhaseTapChangerPresent = false;
|
|
@@ -5708,21 +5797,23 @@ class ConverterIntegral7 {
|
|
|
5708
5797
|
const spezialRegelung = (0, parser_utils_1.isNumericI7)(i7Data.trafo_spezial) ? i7Data.trafo_spezial : transformerinfo === null || transformerinfo === void 0 ? void 0 : transformerinfo.spezialRegelung;
|
|
5709
5798
|
//const neutralU = transformerEnd.ratedU;
|
|
5710
5799
|
let tapChanger = undefined;
|
|
5711
|
-
|
|
5712
|
-
|
|
5800
|
+
let invert = undefined;
|
|
5801
|
+
if ((0, parser_utils_1.isNumericI7)(angle) && (0, parser_utils_1.convertToNumberI7)(angle) % 180 !== 0 || spezialRegelung === 1 || spezialRegelung === 2) {
|
|
5802
|
+
//angle is given and angle%180===0 or angle is not given but spezialRegelung, thus => PhaseTapChanger ("Querregler" oder "Schrägregler")
|
|
5713
5803
|
tapChanger = this.createPhaseTapChanger(i7Data, transformerEnds, cimModel, gestufteSeite, entryI7, transformerinfo);
|
|
5714
5804
|
}
|
|
5715
5805
|
else {
|
|
5716
|
-
//
|
|
5806
|
+
//invert sign if tapChanger angle%180===0 && angle%360!==0
|
|
5807
|
+
invert = Math.trunc((0, parser_utils_1.convertToNumberI7)(angle) / 180) % 2 === 0 ? 1 : -1;
|
|
5717
5808
|
tapChanger = this.createRatioTapChanger(i7Data, transformerEnds, cimModel, connectivityNode, gestufteSeite, entryI7, spannungsband, transformerinfo);
|
|
5718
5809
|
}
|
|
5719
5810
|
// Stufen
|
|
5720
|
-
this.setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, entryI7, ratioPhaseTapChangerPresent, tapChangerInfo);
|
|
5811
|
+
this.setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, entryI7, ratioPhaseTapChangerPresent, invert, tapChangerInfo);
|
|
5721
5812
|
let stop = true;
|
|
5722
5813
|
}
|
|
5723
5814
|
let stop = true;
|
|
5724
5815
|
}
|
|
5725
|
-
setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, tapChangerNumber, ratioPhaseTapChangerPresent, tapChangerInfo) {
|
|
5816
|
+
setTapChangerVoltageProperties(i7Data, cimModel, tapChanger, tapChangerNumber, ratioPhaseTapChangerPresent, invert, tapChangerInfo) {
|
|
5726
5817
|
var _a;
|
|
5727
5818
|
let lowStep = (0, parser_utils_1.isNumericI7)(i7Data[`minstufe_s${tapChangerNumber}`])
|
|
5728
5819
|
? i7Data[`minstufe_s${tapChangerNumber}`]
|
|
@@ -5744,43 +5835,66 @@ class ConverterIntegral7 {
|
|
|
5744
5835
|
const neutralStepIndex = i7TapArray.indexOf(neutralStep);*/
|
|
5745
5836
|
const lowerVoltageStepCount = (0, utils_2.getTapChangerStepCount)(lowStep, neutralStep);
|
|
5746
5837
|
const upperVoltageStepCount = (0, utils_2.getTapChangerStepCount)(neutralStep, highStep);
|
|
5747
|
-
|
|
5838
|
+
let uMin = (0, parser_utils_1.isNumericI7)(i7Data[`umin_s${tapChangerNumber}`])
|
|
5748
5839
|
? i7Data[`umin_s${tapChangerNumber}`]
|
|
5749
5840
|
: tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.uMin;
|
|
5750
|
-
|
|
5841
|
+
let uMax = (0, parser_utils_1.isNumericI7)(i7Data[`umax_s${tapChangerNumber}`])
|
|
5751
5842
|
? i7Data[`umax_s${tapChangerNumber}`]
|
|
5752
5843
|
: tapChangerInfo === null || tapChangerInfo === void 0 ? void 0 : tapChangerInfo.uMax;
|
|
5753
|
-
let
|
|
5844
|
+
let lowerVoltageStepDecrement = Math.abs(uMin / lowerVoltageStepCount);
|
|
5754
5845
|
let upperVoltageStepIncrement = Math.abs(uMax / upperVoltageStepCount);
|
|
5755
5846
|
let increaseVoltageStepIncrement = (0, parser_utils_1.isNumericI7)(upperVoltageStepIncrement) ? upperVoltageStepIncrement : 0;
|
|
5756
5847
|
if (tapChanger instanceof RatioTapChanger_1.RatioTapChanger) {
|
|
5757
5848
|
const ratioTapChanger = tapChanger;
|
|
5758
|
-
|
|
5759
|
-
|
|
5849
|
+
uMin = uMin * invert;
|
|
5850
|
+
uMax = uMax * invert;
|
|
5851
|
+
//test for uMin and uMax voltage add are not symmetrical...
|
|
5852
|
+
if (Math.abs(lowerVoltageStepDecrement) !== Math.abs(upperVoltageStepIncrement) || uMax < uMin || uMax === uMin || ratioPhaseTapChangerPresent) {
|
|
5853
|
+
if (uMax === uMin) {
|
|
5854
|
+
const stop = true;
|
|
5855
|
+
}
|
|
5760
5856
|
const ratioTapChangerTable = new RatioTapChangerTable_1.RatioTapChangerTable(common_utils_1.CommonUtils.generateUUID(), `${i7Data.bezeichner} W_${tapChangerNumber}`);
|
|
5761
5857
|
let step_tmp = 0;
|
|
5762
5858
|
let start_step_tmp = step_tmp;
|
|
5763
|
-
//
|
|
5764
|
-
|
|
5765
|
-
|
|
5766
|
-
|
|
5859
|
+
//voltage decrement
|
|
5860
|
+
if (uMin < 0) {
|
|
5861
|
+
for (let i = 0; i < Math.abs(lowerVoltageStepCount); i++) {
|
|
5862
|
+
(0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((Math.abs(lowerVoltageStepDecrement) * Math.abs(lowerVoltageStepCount - i)) / 100)));
|
|
5863
|
+
step_tmp = i;
|
|
5864
|
+
}
|
|
5865
|
+
}
|
|
5866
|
+
else {
|
|
5867
|
+
for (let i = 0; i < Math.abs(lowerVoltageStepCount); i++) {
|
|
5868
|
+
(0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((lowerVoltageStepDecrement * Math.abs(lowerVoltageStepCount - i)) / 100)));
|
|
5869
|
+
step_tmp = i;
|
|
5870
|
+
}
|
|
5767
5871
|
}
|
|
5768
|
-
//
|
|
5872
|
+
//neutral step
|
|
5769
5873
|
step_tmp++;
|
|
5770
5874
|
(0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[step_tmp], 1);
|
|
5771
5875
|
step_tmp++;
|
|
5772
5876
|
start_step_tmp = step_tmp;
|
|
5773
|
-
//
|
|
5774
|
-
|
|
5775
|
-
|
|
5877
|
+
//voltage increment
|
|
5878
|
+
if (uMax > 0) {
|
|
5879
|
+
for (let i = start_step_tmp; i < start_step_tmp + Math.abs(upperVoltageStepCount); i++) {
|
|
5880
|
+
(0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 + ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)));
|
|
5881
|
+
}
|
|
5882
|
+
}
|
|
5883
|
+
else {
|
|
5884
|
+
for (let i = start_step_tmp; i < start_step_tmp + Math.abs(upperVoltageStepCount); i++) {
|
|
5885
|
+
(0, util_create_1.createRatioTapChangerTablePoint)(ratioTapChangerTable, i7TapArray[i], (1 - ((upperVoltageStepIncrement * (i - start_step_tmp + 1)) / 100)));
|
|
5886
|
+
}
|
|
5776
5887
|
}
|
|
5777
5888
|
tapChanger.ratioTapChangerTable = ratioTapChangerTable;
|
|
5778
5889
|
ratioTapChangerTable.ratioTapChanger = tapChanger;
|
|
5779
|
-
//
|
|
5780
|
-
ratioTapChanger.stepVoltageIncrement = Math.abs(Math.round(
|
|
5890
|
+
//average
|
|
5891
|
+
//ratioTapChanger.stepVoltageIncrement = Math.abs(Math.round(lowerVoltageStepDecrement)) + Math.abs(Math.round(increaseVoltageStepIncrement)) / 2;
|
|
5781
5892
|
cimModel.addRatioTapChangerTable(ratioTapChangerTable);
|
|
5782
5893
|
}
|
|
5783
|
-
|
|
5894
|
+
else {
|
|
5895
|
+
//uMin and uMax are symmetrical
|
|
5896
|
+
ratioTapChanger.stepVoltageIncrement = increaseVoltageStepIncrement;
|
|
5897
|
+
}
|
|
5784
5898
|
}
|
|
5785
5899
|
if (tapChanger instanceof PhaseTapChangerNonLinear_1.PhaseTapChangerNonLinear) {
|
|
5786
5900
|
tapChanger.voltageStepIncrement = increaseVoltageStepIncrement;
|
|
@@ -5793,8 +5907,8 @@ class ConverterIntegral7 {
|
|
|
5793
5907
|
tapChanger.neutralStep = neutralStep;
|
|
5794
5908
|
tapChanger.normalStep = currentStep;
|
|
5795
5909
|
tapChanger.step = currentStep;
|
|
5796
|
-
if (Math.abs(
|
|
5797
|
-
this.logger.info(`Trafo ${i7Data.id}: Zusatzspannung Min/Max sind nicht symmetrisch MIN ${
|
|
5910
|
+
if (Math.abs(lowerVoltageStepDecrement) !== Math.abs(increaseVoltageStepIncrement)) {
|
|
5911
|
+
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
5912
|
}
|
|
5799
5913
|
}
|
|
5800
5914
|
createRatioTapChanger(i7Data, transformerEnds, cimModel, regulatingConnectivityNode, gestufteSeite, tapChangerNumber, spannungsband, transformerinfo) {
|
|
@@ -5811,6 +5925,9 @@ class ConverterIntegral7 {
|
|
|
5811
5925
|
* */
|
|
5812
5926
|
/** Regelung */
|
|
5813
5927
|
const ratioTapChanger = new RatioTapChanger_1.RatioTapChanger((0, parser_utils_1.getUUID)(eval(`i7Data.guid_tch${tapChangerNumber}`), this.objectMappingConfig.standardiseUuid), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
|
|
5928
|
+
if (ratioTapChanger.mrid === "df659ba2-a075-4f7d-bdd6-6b038cae962a") {
|
|
5929
|
+
const stop = true;
|
|
5930
|
+
}
|
|
5814
5931
|
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
5932
|
ratioTapChanger.transformerEnd = transformerEnd;
|
|
5816
5933
|
//transformerEnd.ratioTapChanger = ratioTapChanger;
|
|
@@ -5852,7 +5969,7 @@ class ConverterIntegral7 {
|
|
|
5852
5969
|
cimModel.addTapChangerControl(tapChangerControl);
|
|
5853
5970
|
}
|
|
5854
5971
|
else {
|
|
5855
|
-
this.logger.
|
|
5972
|
+
this.logger.debug(`debug --- Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
|
|
5856
5973
|
}
|
|
5857
5974
|
cimModel.addRatioTapChanger(ratioTapChanger);
|
|
5858
5975
|
return ratioTapChanger;
|
|
@@ -5900,14 +6017,24 @@ class ConverterIntegral7 {
|
|
|
5900
6017
|
}
|
|
5901
6018
|
default: {
|
|
5902
6019
|
// There is no information given about special tapchanger control, thus create PhaseTapChangerLinear
|
|
5903
|
-
const phaseTapChangerLin = new
|
|
5904
|
-
|
|
5905
|
-
|
|
6020
|
+
/**const phaseTapChangerLin = new PhaseTapChangerLinear(getUUID(eval(`i7Data.guid_tch${tapChangerNumber}`)), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
|
|
6021
|
+
phaseTapChanger = phaseTapChangerLin;
|
|
6022
|
+
cimModel.addPhaseTapChangerLinear(phaseTapChangerLin);*/
|
|
6023
|
+
const phaseTapChangerAsym = new PhaseTapChangerAsymmetrical_1.PhaseTapChangerAsymmetrical((0, parser_utils_1.getUUID)(eval(`i7Data.guid_tch${tapChangerNumber}`)), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
|
|
6024
|
+
phaseTapChangerAsym.windingConnectionAngle = winkel;
|
|
6025
|
+
phaseTapChanger = phaseTapChangerAsym;
|
|
6026
|
+
cimModel.addPhaseTapChangerAsymmetrical(phaseTapChangerAsym);
|
|
5906
6027
|
break;
|
|
5907
6028
|
}
|
|
5908
6029
|
}
|
|
6030
|
+
if (phaseTapChanger.mrid === "df659ba2-a075-4f7d-bdd6-6b038cae962a") {
|
|
6031
|
+
const stop = true;
|
|
6032
|
+
}
|
|
6033
|
+
if (phaseTapChanger.mrid === "3d0bdc23-fe46-408d-99b3-369a02d28a28") {
|
|
6034
|
+
const stop = true;
|
|
6035
|
+
}
|
|
5909
6036
|
// 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;
|
|
6037
|
+
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
6038
|
phaseTapChanger.transformerEnd = transformerEnd;
|
|
5912
6039
|
//transformerEnd.phaseTapChanger = phaseTapChanger;
|
|
5913
6040
|
// Wirkleistungsregelung Anschluss
|
|
@@ -5946,7 +6073,7 @@ class ConverterIntegral7 {
|
|
|
5946
6073
|
cimModel.addTapChangerControl(tapChangerControl);
|
|
5947
6074
|
}
|
|
5948
6075
|
else {
|
|
5949
|
-
this.logger.
|
|
6076
|
+
this.logger.debug(`debug --- Trafo ${i7Data.id}: TapChangerControl konnte nicht erstellt werden.`);
|
|
5950
6077
|
}
|
|
5951
6078
|
return phaseTapChanger;
|
|
5952
6079
|
}
|
|
@@ -6268,32 +6395,98 @@ function getGeoCoordinates(i7Data) {
|
|
|
6268
6395
|
return undefined;
|
|
6269
6396
|
}
|
|
6270
6397
|
exports.getGeoCoordinates = getGeoCoordinates;
|
|
6271
|
-
function getDCNodeFromConverter(acDcConverter) {
|
|
6398
|
+
function getDCNodeFromConverter(acDcConverter, polarity) {
|
|
6272
6399
|
let ret_val = undefined;
|
|
6273
6400
|
if (acDcConverter.dCTerminals) {
|
|
6274
6401
|
for (const terminal of acDcConverter.dCTerminals.values()) {
|
|
6275
|
-
if (terminal.dcNode) {
|
|
6402
|
+
if (terminal.dcNode && terminal.polarity === polarity) {
|
|
6276
6403
|
ret_val = terminal.dcNode;
|
|
6277
6404
|
}
|
|
6278
6405
|
}
|
|
6279
6406
|
}
|
|
6280
6407
|
return ret_val;
|
|
6281
6408
|
}
|
|
6282
|
-
function
|
|
6283
|
-
|
|
6284
|
-
|
|
6409
|
+
function createDCGround(cimModel, acDCConverter, i7Data) {
|
|
6410
|
+
const dcConverterUnit = acDCConverter.equipmentContainer;
|
|
6411
|
+
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));
|
|
6412
|
+
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']));
|
|
6413
|
+
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']));
|
|
6414
|
+
const dcNodeG = new DCNode_1.DCNode((0, parser_utils_1.getUUID)(i7Data.guid_dcnodem1));
|
|
6415
|
+
dcTerminalG.dCConductingEquipment = dcGround;
|
|
6416
|
+
dcTerminalM1.dCConductingEquipment = acDCConverter;
|
|
6417
|
+
dcTerminalM1.polarity = DCPolarityKind_1.DCPolarityKind.middle;
|
|
6418
|
+
dcTerminalG.dcNode = dcNodeG;
|
|
6419
|
+
dcTerminalM1.dcNode = dcNodeG;
|
|
6420
|
+
dcGround.equipmentContainer = dcConverterUnit;
|
|
6421
|
+
dcGround.dCTerminals.set(dcTerminalG.getUUID(), dcTerminalG);
|
|
6422
|
+
dcNodeG.dcEquipmentContainer = dcConverterUnit;
|
|
6423
|
+
dcNodeG.dcTerminals.set(dcTerminalG.getUUID(), dcTerminalG);
|
|
6424
|
+
dcNodeG.dcTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
|
|
6425
|
+
acDCConverter.dCTerminals.set(dcTerminalM1.getUUID(), dcTerminalM1);
|
|
6426
|
+
cimModel.addDCTerminal(dcTerminalG);
|
|
6427
|
+
cimModel.addDCGround(dcGround);
|
|
6428
|
+
cimModel.addDCGroundTerminal(dcTerminalM1);
|
|
6429
|
+
cimModel.addDCNode(dcNodeG);
|
|
6430
|
+
/** EQ-SC */
|
|
6431
|
+
dcGround.r = undefined;
|
|
6432
|
+
dcGround.inductance = undefined;
|
|
6433
|
+
return dcNodeG;
|
|
6285
6434
|
}
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6435
|
+
/**
|
|
6436
|
+
*
|
|
6437
|
+
* @param acDCConverter
|
|
6438
|
+
* @param i7Data
|
|
6439
|
+
* @param endNumber Start means a value of '1'. Target means a value of '2'.
|
|
6440
|
+
*/
|
|
6441
|
+
function connectDCGround(cimModel, acdcConverter, i7Data, dcNode, polarity) {
|
|
6442
|
+
let dcTerminalMx = undefined;
|
|
6443
|
+
let dcNodeG = dcNode;
|
|
6444
|
+
const dcTerminalM1UUID = (0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm1);
|
|
6445
|
+
const dcTerminalM2UUID = (0, parser_utils_1.getUUID)(i7Data.guid_dcterminalm2);
|
|
6446
|
+
if (dcNodeG.dcTerminals.get(dcTerminalM1UUID)) {
|
|
6447
|
+
dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM2UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_NEG', '_DCT']));
|
|
6448
|
+
}
|
|
6449
|
+
else {
|
|
6450
|
+
dcTerminalMx = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(dcTerminalM1UUID), (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_DCT']));
|
|
6451
|
+
}
|
|
6452
|
+
dcTerminalMx.polarity = polarity;
|
|
6453
|
+
dcNodeG.dcTerminals.set(dcTerminalMx.getUUID(), dcTerminalMx);
|
|
6454
|
+
acdcConverter.dCTerminals.set(dcTerminalMx.getUUID(), dcTerminalMx);
|
|
6455
|
+
dcTerminalMx.dCConductingEquipment = acdcConverter;
|
|
6456
|
+
dcTerminalMx.dcNode = dcNodeG;
|
|
6457
|
+
cimModel.addDCGroundTerminal(dcTerminalMx);
|
|
6289
6458
|
}
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6459
|
+
function createNeutralGroundReturn(cimModel, i7Data, acdcConverterStart, acdcConverterTarget) {
|
|
6460
|
+
let dcNodeM1 = (0, utils_1.getDCNodeGroundByDCConverterUnit)(cimModel, acdcConverterStart.getUUID());
|
|
6461
|
+
let dcNodeM2 = (0, utils_1.getDCNodeGroundByDCConverterUnit)(cimModel, acdcConverterTarget.getUUID());
|
|
6462
|
+
let dcTerminalN1 = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(undefined), (0, util_create_1.createNotation)(['NeutrallineStart_DCT']));
|
|
6463
|
+
let dcTerminalN2 = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal((0, parser_utils_1.getUUID)(undefined), (0, util_create_1.createNotation)(['NeutrallineTarget_DCT']));
|
|
6464
|
+
//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');
|
|
6465
|
+
if (dcNodeM1 !== undefined) {
|
|
6466
|
+
dcNodeM1.dcTerminals.set(dcTerminalN1.getUUID(), dcTerminalN1);
|
|
6467
|
+
acdcConverterStart.dCTerminals.set(dcTerminalN1.getUUID(), dcTerminalN1);
|
|
6468
|
+
}
|
|
6469
|
+
else {
|
|
6470
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_dcnodem1);
|
|
6471
|
+
dcNodeM1 = new DCNode_1.DCNode(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_DCCN'], 32, true), 'M1');
|
|
6472
|
+
dcNodeM1.dcTerminals.set(dcTerminalN1.getUUID(), dcTerminalN1);
|
|
6473
|
+
dcTerminalN1.dCConductingEquipment = undefined;
|
|
6474
|
+
}
|
|
6475
|
+
if (dcNodeM2 !== undefined) {
|
|
6476
|
+
dcNodeM2.dcTerminals.set(dcTerminalN2.getUUID(), dcTerminalN2);
|
|
6477
|
+
}
|
|
6478
|
+
else {
|
|
6479
|
+
const uuid = (0, parser_utils_1.getUUID)(i7Data.guid_dcnodem2);
|
|
6480
|
+
dcNodeM2 = new DCNode_1.DCNode(uuid, (0, util_create_1.createNotation)([(0, utils_2.getName)(i7Data), '_', uuid.substring(0, 8), '_DCCN'], 32, true), 'M2');
|
|
6481
|
+
dcNodeM2.dcTerminals.set(dcTerminalN2.getUUID(), dcTerminalN2);
|
|
6482
|
+
}
|
|
6483
|
+
cimModel.addACDCConverterDCTerminal(dcTerminalN1);
|
|
6484
|
+
cimModel.addACDCConverterDCTerminal(dcTerminalN2);
|
|
6485
|
+
//cimModel.addDCLineSegment(dcNeutralLineSegment);
|
|
6486
|
+
//cimModel.addDCLine(dcNeutralLine);
|
|
6293
6487
|
}
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
|
|
6488
|
+
function logExecutionTime(logger, startTime, text) {
|
|
6489
|
+
logger.debug(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
|
|
6490
|
+
console.log(`${text} ${(perf_hooks.performance.now() - startTime) / 1000} seconds`);
|
|
6297
6491
|
}
|
|
6298
|
-
exports.connectDCGround = connectDCGround;
|
|
6299
6492
|
//# sourceMappingURL=converter.integral7.js.map
|