@enervance/insight-cim-model 0.0.25 → 0.0.27
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/analysis/analysis-neplan/digi-ons.d.ts +58 -0
- package/dist/analysis/analysis-neplan/digi-ons.js +361 -0
- package/dist/analysis/analysis-neplan/digi-ons.js.map +1 -0
- package/dist/config/config.utils.d.ts +1 -0
- package/dist/config/config.utils.js +37 -0
- package/dist/config/config.utils.js.map +1 -0
- package/dist/config/westnetz-neplan/callbacks/cb-connectivitynode.js +1 -1
- package/dist/config/westnetz-neplan/callbacks/cb-connectivitynode.js.map +1 -1
- package/dist/config/westnetz-neplan/neplan-load.config.d.ts +1 -0
- package/dist/config/westnetz-neplan/neplan-load.config.js +37 -1
- package/dist/config/westnetz-neplan/neplan-load.config.js.map +1 -1
- package/dist/constants/cim-class-definition.js +12 -0
- package/dist/constants/cim-class-definition.js.map +1 -1
- package/dist/constants/cim-class-names.d.ts +8 -0
- package/dist/constants/cim-class-names.js +8 -0
- package/dist/constants/cim-class-names.js.map +1 -1
- package/dist/constants/init-data/JENA_SPARQL.js +1 -1
- package/dist/constants/init-data/xml/settings.d.ts +1 -0
- package/dist/constants/init-data/xml/settings.js +70 -0
- package/dist/constants/init-data/xml/settings.js.map +1 -0
- package/dist/constants/rdf-xml.d.ts +7 -2
- package/dist/constants/rdf-xml.js +7 -2
- package/dist/constants/rdf-xml.js.map +1 -1
- package/dist/converter/cgmes-validator.js +2 -0
- package/dist/converter/cgmes-validator.js.map +1 -1
- package/dist/converter/integral7/ConverterIntegral7.d.ts +51 -21
- package/dist/converter/integral7/ConverterIntegral7.js +1097 -1385
- package/dist/converter/integral7/ConverterIntegral7.js.map +1 -1
- package/dist/converter/integral7/converter-i7.d.ts +175 -0
- package/dist/converter/integral7/converter-i7.js +3175 -0
- package/dist/converter/integral7/converter-i7.js.map +1 -0
- package/dist/converter/integral7/interface-i7/IDefaultValuesConfig.d.ts +207 -157
- package/dist/converter/integral7/interface-i7/IObjectMappingConfig.d.ts +8 -0
- package/dist/converter/integral7/interface-i7/IObjectMappingConfig.js +3 -0
- package/dist/converter/integral7/interface-i7/IObjectMappingConfig.js.map +1 -0
- package/dist/converter/integral7/interface-i7/IUkzExportConfig.d.ts +5 -0
- package/dist/converter/integral7/interface-i7/{db-config.js → IUkzExportConfig.js} +1 -1
- package/dist/converter/integral7/interface-i7/IUkzExportConfig.js.map +1 -0
- package/dist/converter/integral7/interface-i7/data-structures-i7.d.ts +34 -0
- package/dist/converter/integral7/interface-i7/data-structures-i7.js +3 -0
- package/dist/converter/integral7/interface-i7/data-structures-i7.js.map +1 -0
- package/dist/converter/integral7/interface-i7/export-frame-i7.d.ts +20 -0
- package/dist/converter/integral7/interface-i7/export-frame-i7.js +185 -0
- package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -0
- package/dist/converter/integral7/model/interfaces.d.ts +30 -7
- package/dist/converter/integral7/sql/integral.sql.d.ts +3 -1
- package/dist/converter/integral7/sql/integral.sql.js +236 -2
- package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
- package/dist/converter/integral7/utils-cgmes-export.d.ts +15 -0
- package/dist/converter/integral7/utils-cgmes-export.js +119 -0
- package/dist/converter/integral7/utils-cgmes-export.js.map +1 -0
- package/dist/converter/integral7/utils.d.ts +33 -6
- package/dist/converter/integral7/utils.js +352 -66
- package/dist/converter/integral7/utils.js.map +1 -1
- package/dist/data-structures/Settings.d.ts +16 -0
- package/dist/data-structures/Settings.js +74 -0
- package/dist/data-structures/Settings.js.map +1 -0
- package/dist/data-structures/graph/GraphObject.d.ts +4 -2
- package/dist/data-structures/graph/GraphObject.js +3 -1
- package/dist/data-structures/graph/GraphObject.js.map +1 -1
- package/dist/data-structures/graph/Types.d.ts +2 -1
- package/dist/data-structures/graph/Types.js +1 -0
- package/dist/data-structures/graph/Types.js.map +1 -1
- package/dist/data-structures/graph/edges/GraphEdge.d.ts +2 -1
- package/dist/data-structures/graph/edges/GraphEdge.js +2 -2
- package/dist/data-structures/graph/edges/GraphEdge.js.map +1 -1
- package/dist/data-structures/graph/graph.js +3 -3
- package/dist/data-structures/graph/graph.js.map +1 -1
- package/dist/data-structures/graph/nodes/GraphNode.d.ts +2 -1
- package/dist/data-structures/graph/nodes/GraphNode.js +2 -2
- package/dist/data-structures/graph/nodes/GraphNode.js.map +1 -1
- package/dist/data-structures/tree/GraphTree.js +3 -3
- package/dist/data-structures/tree/GraphTree.js.map +1 -1
- package/dist/data-structures/tree/GraphTreeEdge.d.ts +1 -1
- package/dist/data-structures/tree/GraphTreeEdge.js +2 -2
- package/dist/data-structures/tree/GraphTreeEdge.js.map +1 -1
- package/dist/data-structures/tree/GraphTreeNode.d.ts +1 -1
- package/dist/data-structures/tree/GraphTreeNode.js +2 -2
- package/dist/data-structures/tree/GraphTreeNode.js.map +1 -1
- package/dist/data-structures/tree/GraphTreeObject.d.ts +2 -1
- package/dist/data-structures/tree/GraphTreeObject.js +2 -1
- package/dist/data-structures/tree/GraphTreeObject.js.map +1 -1
- package/dist/etl/etl-neplan/etl-neplan-csv.js +70 -63
- package/dist/etl/etl-neplan/etl-neplan-csv.js.map +1 -1
- package/dist/etl/etl-neplan/etl-neplan-feederline.d.ts +20 -0
- package/dist/etl/etl-neplan/etl-neplan-feederline.js +83 -2
- package/dist/etl/etl-neplan/etl-neplan-feederline.js.map +1 -1
- package/dist/etl/etl-neplan/etl-neplan-geo.d.ts +5 -0
- package/dist/etl/etl-neplan/etl-neplan-geo.js +221 -1
- package/dist/etl/etl-neplan/etl-neplan-geo.js.map +1 -1
- package/dist/etl/etl-neplan/etl-neplan.js +4 -1
- package/dist/etl/etl-neplan/etl-neplan.js.map +1 -1
- package/dist/etl/etl-neplan/neplan-contingency-analysis.js +4 -4
- package/dist/etl/etl-neplan/neplan-contingency-analysis.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/ILogger.d.ts +2 -0
- package/dist/interfaces/model/core/IIdentifiedObject.d.ts +3 -1
- package/dist/model/assetinfo/PowerTransformerInfo.js +2 -2
- package/dist/model/assetinfo/PowerTransformerInfo.js.map +1 -1
- package/dist/model/assetinfo/TapChangerInfo.js +17 -15
- package/dist/model/assetinfo/TapChangerInfo.js.map +1 -1
- package/dist/model/assetinfo/TransformerEndInfo.js +7 -5
- package/dist/model/assetinfo/TransformerEndInfo.js.map +1 -1
- package/dist/model/assetinfo/WireInfo.js +4 -3
- package/dist/model/assetinfo/WireInfo.js.map +1 -1
- package/dist/model/assets/Structure.d.ts +6 -0
- package/dist/model/assets/Structure.js +11 -0
- package/dist/model/assets/Structure.js.map +1 -0
- package/dist/model/assets/TowerConstructionKind.d.ts +4 -0
- package/dist/model/assets/TowerConstructionKind.js +9 -0
- package/dist/model/assets/TowerConstructionKind.js.map +1 -0
- package/dist/model/common/CoordinateSystem.js +4 -2
- package/dist/model/common/CoordinateSystem.js.map +1 -1
- package/dist/model/common/Location.js +4 -3
- package/dist/model/common/Location.js.map +1 -1
- package/dist/model/common/PositionPoint.js +6 -5
- package/dist/model/common/PositionPoint.js.map +1 -1
- package/dist/model/core/ACDCTerminal.d.ts +3 -1
- package/dist/model/core/ACDCTerminal.js +9 -4
- package/dist/model/core/ACDCTerminal.js.map +1 -1
- package/dist/model/core/BaseVoltage.js +5 -4
- package/dist/model/core/BaseVoltage.js.map +1 -1
- package/dist/model/core/Bay.d.ts +1 -0
- package/dist/model/core/Bay.js +13 -8
- package/dist/model/core/Bay.js.map +1 -1
- package/dist/model/core/ConductingEquipment.js +2 -1
- package/dist/model/core/ConductingEquipment.js.map +1 -1
- package/dist/model/core/ConnectivityNode.d.ts +8 -1
- package/dist/model/core/ConnectivityNode.js +22 -6
- package/dist/model/core/ConnectivityNode.js.map +1 -1
- package/dist/model/core/Curve.js +5 -5
- package/dist/model/core/Curve.js.map +1 -1
- package/dist/model/core/CurveData.js +8 -7
- package/dist/model/core/CurveData.js.map +1 -1
- package/dist/model/core/Equipment.js +7 -9
- package/dist/model/core/Equipment.js.map +1 -1
- package/dist/model/core/Feeder.js +4 -3
- package/dist/model/core/Feeder.js.map +1 -1
- package/dist/model/core/GeographicalRegion.js +3 -3
- package/dist/model/core/GeographicalRegion.js.map +1 -1
- package/dist/model/core/IdentifiedObject.d.ts +5 -3
- package/dist/model/core/IdentifiedObject.js +18 -9
- package/dist/model/core/IdentifiedObject.js.map +1 -1
- package/dist/model/core/PSRType.js +2 -2
- package/dist/model/core/PSRType.js.map +1 -1
- package/dist/model/core/PowerSystemResource.js +2 -1
- package/dist/model/core/PowerSystemResource.js.map +1 -1
- package/dist/model/core/SubGeographicalRegion.js +5 -5
- package/dist/model/core/SubGeographicalRegion.js.map +1 -1
- package/dist/model/core/Substation.d.ts +1 -0
- package/dist/model/core/Substation.js +7 -4
- package/dist/model/core/Substation.js.map +1 -1
- package/dist/model/core/Terminal.d.ts +7 -3
- package/dist/model/core/Terminal.js +31 -13
- package/dist/model/core/Terminal.js.map +1 -1
- package/dist/model/core/VoltageLevel.js +10 -14
- package/dist/model/core/VoltageLevel.js.map +1 -1
- package/dist/model/dc/ACDCConverter.js +22 -21
- package/dist/model/dc/ACDCConverter.js.map +1 -1
- package/dist/model/dc/ACDCConverterDCTerminal.js +4 -4
- package/dist/model/dc/ACDCConverterDCTerminal.js.map +1 -1
- package/dist/model/dc/CsConverter.js +18 -18
- package/dist/model/dc/CsConverter.js.map +1 -1
- package/dist/model/dc/DCBaseTerminal.js +3 -3
- package/dist/model/dc/DCBaseTerminal.js.map +1 -1
- package/dist/model/dc/DCConverterUnit.js +4 -4
- package/dist/model/dc/DCConverterUnit.js.map +1 -1
- package/dist/model/dc/DCLine.js +2 -2
- package/dist/model/dc/DCLine.js.map +1 -1
- package/dist/model/dc/DCLineSegment.js +6 -6
- package/dist/model/dc/DCLineSegment.js.map +1 -1
- package/dist/model/dc/DCNode.js +3 -3
- package/dist/model/dc/DCNode.js.map +1 -1
- package/dist/model/dc/DCTerminal.js +3 -3
- package/dist/model/dc/DCTerminal.js.map +1 -1
- package/dist/model/dc/VsConverter.js +17 -17
- package/dist/model/dc/VsConverter.js.map +1 -1
- package/dist/model/diagram/Diagram.js +4 -4
- package/dist/model/diagram/Diagram.js.map +1 -1
- package/dist/model/diagram/DiagramObject.d.ts +4 -3
- package/dist/model/diagram/DiagramObject.js +22 -9
- package/dist/model/diagram/DiagramObject.js.map +1 -1
- package/dist/model/diagram/DiagramObjectPoint.d.ts +6 -5
- package/dist/model/diagram/DiagramObjectPoint.js +22 -9
- package/dist/model/diagram/DiagramObjectPoint.js.map +1 -1
- package/dist/model/diagram/DiagramStyle.js +4 -3
- package/dist/model/diagram/DiagramStyle.js.map +1 -1
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/DynamicsEnums.d.ts +16 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/DynamicsEnums.js +23 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/DynamicsEnums.js.map +1 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/DynamicsFunctionBlock.d.ts +8 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/DynamicsFunctionBlock.js +22 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/DynamicsFunctionBlock.js.map +1 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/RotatingMachineDynamics.d.ts +9 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/RotatingMachineDynamics.js +8 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/RotatingMachineDynamics.js.map +1 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineDetailed.d.ts +8 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineDetailed.js +8 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineDetailed.js.map +1 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineDynamics.d.ts +7 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineDynamics.js +16 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineDynamics.js.map +1 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineTimeConstantReactance.d.ts +25 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineTimeConstantReactance.js +61 -0
- package/dist/model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineTimeConstantReactance.js.map +1 -0
- package/dist/model/equivalents/EquivalentBranch.js +19 -17
- package/dist/model/equivalents/EquivalentBranch.js.map +1 -1
- package/dist/model/equivalents/EquivalentInjection.d.ts +25 -0
- package/dist/model/equivalents/EquivalentInjection.js +93 -0
- package/dist/model/equivalents/EquivalentInjection.js.map +1 -0
- package/dist/model/extensions/amprion/assets/AMPRIONConstructionContainer.d.ts +22 -0
- package/dist/model/extensions/amprion/assets/AMPRIONConstructionContainer.js +90 -0
- package/dist/model/extensions/amprion/assets/AMPRIONConstructionContainer.js.map +1 -0
- package/dist/model/extensions/amprion/assets/AMPRIONFacility.d.ts +25 -0
- package/dist/model/extensions/amprion/assets/AMPRIONFacility.js +98 -0
- package/dist/model/extensions/amprion/assets/AMPRIONFacility.js.map +1 -0
- package/dist/model/extensions/amprion/assets/AMPRIONSpanField.d.ts +27 -0
- package/dist/model/extensions/amprion/assets/AMPRIONSpanField.js +99 -0
- package/dist/model/extensions/amprion/assets/AMPRIONSpanField.js.map +1 -0
- package/dist/model/extensions/amprion/assets/AMPRIONStatusTypeKind.d.ts +9 -0
- package/dist/model/extensions/amprion/assets/AMPRIONStatusTypeKind.js +14 -0
- package/dist/model/extensions/amprion/assets/AMPRIONStatusTypeKind.js.map +1 -0
- package/dist/model/extensions/amprion/assets/AMPRIONTower.d.ts +34 -0
- package/dist/model/extensions/amprion/assets/AMPRIONTower.js +103 -0
- package/dist/model/extensions/amprion/assets/AMPRIONTower.js.map +1 -0
- package/dist/model/extensions/amprion/assets/AMPRIONWire.d.ts +38 -0
- package/dist/model/extensions/amprion/assets/AMPRIONWire.js +120 -0
- package/dist/model/extensions/amprion/assets/AMPRIONWire.js.map +1 -0
- package/dist/model/extensions/amprion/common/AMPRIONStateTypeKind.d.ts +5 -0
- package/dist/model/extensions/amprion/common/AMPRIONStateTypeKind.js +10 -0
- package/dist/model/extensions/amprion/common/AMPRIONStateTypeKind.js.map +1 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireIsolationTypeKind.d.ts +11 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireIsolationTypeKind.js +16 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireIsolationTypeKind.js.map +1 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireLayoutKind.d.ts +6 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireLayoutKind.js +11 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireLayoutKind.js.map +1 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireOperatingTypeKind.d.ts +10 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireOperatingTypeKind.js +15 -0
- package/dist/model/extensions/amprion/common/AMPRIONWireOperatingTypeKind.js.map +1 -0
- package/dist/model/extensions/amprion/core/AMPRIONBay.js +5 -4
- package/dist/model/extensions/amprion/core/AMPRIONBay.js.map +1 -1
- package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js +5 -5
- package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js.map +1 -1
- package/dist/model/extensions/amprion/core/AMPRIONLine.d.ts +5 -0
- package/dist/model/extensions/amprion/core/AMPRIONLine.js +33 -0
- package/dist/model/extensions/amprion/core/AMPRIONLine.js.map +1 -0
- package/dist/model/extensions/amprion/core/AMPRIONSubstation.d.ts +15 -0
- package/dist/model/extensions/amprion/core/AMPRIONSubstation.js +93 -0
- package/dist/model/extensions/amprion/core/AMPRIONSubstation.js.map +1 -0
- package/dist/model/extensions/amprion/model/AMPRIONModel.d.ts +22 -2
- package/dist/model/extensions/amprion/model/AMPRIONModel.js +57 -3
- package/dist/model/extensions/amprion/model/AMPRIONModel.js.map +1 -1
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProject.d.ts +2 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProject.js +2 -2
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProject.js.map +1 -1
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectPhase.js +30 -30
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectPhase.js.map +1 -1
- package/dist/model/extensions/amprion/wires/AMPRIONACLineSegment.d.ts +13 -0
- package/dist/model/extensions/amprion/wires/AMPRIONACLineSegment.js +80 -0
- package/dist/model/extensions/amprion/wires/AMPRIONACLineSegment.js.map +1 -0
- package/dist/model/extensions/amprion/wires/AMPRIONSeriesCompensator.js +4 -4
- package/dist/model/extensions/amprion/wires/AMPRIONSeriesCompensator.js.map +1 -1
- package/dist/model/extensions/enervance/assetinfo/EVPowerTransformerEndInfo.js +9 -8
- package/dist/model/extensions/enervance/assetinfo/EVPowerTransformerEndInfo.js.map +1 -1
- package/dist/model/extensions/enervance/assetinfo/EVPowerTransformerInfo.js +9 -8
- package/dist/model/extensions/enervance/assetinfo/EVPowerTransformerInfo.js.map +1 -1
- package/dist/model/extensions/enervance/assetinfo/EVWireInfo.js +14 -13
- package/dist/model/extensions/enervance/assetinfo/EVWireInfo.js.map +1 -1
- package/dist/model/extensions/enervance/assets/EVWireObject.d.ts +1 -1
- package/dist/model/extensions/enervance/assets/EVWireObject.js +10 -5
- package/dist/model/extensions/enervance/assets/EVWireObject.js.map +1 -1
- package/dist/model/extensions/enervance/core/EVTerminal.d.ts +3 -0
- package/dist/model/extensions/enervance/core/EVTerminal.js +19 -0
- package/dist/model/extensions/enervance/core/EVTerminal.js.map +1 -1
- package/dist/model/extensions/enervance/wires/EVACLineSegment.d.ts +1 -1
- package/dist/model/extensions/enervance/wires/EVACLineSegment.js +3 -3
- package/dist/model/extensions/enervance/wires/EVACLineSegment.js.map +1 -1
- package/dist/model/extensions/enervance/wires/EVACLineSubSegment.js.map +1 -1
- package/dist/model/extensions/neplan-westnetz/assets/WNFacility.d.ts +1 -1
- package/dist/model/extensions/neplan-westnetz/assets/WNFacility.js +22 -2
- package/dist/model/extensions/neplan-westnetz/assets/WNFacility.js.map +1 -1
- package/dist/model/extensions/neplan-westnetz/assets/WNFacilityKind.d.ts +5 -0
- package/dist/model/extensions/neplan-westnetz/assets/WNFacilityKind.js +14 -0
- package/dist/model/extensions/neplan-westnetz/assets/WNFacilityKind.js.map +1 -0
- package/dist/model/extensions/neplan-westnetz/assets/WNWireInfo.js +3 -2
- package/dist/model/extensions/neplan-westnetz/assets/WNWireInfo.js.map +1 -1
- package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.d.ts +10 -3
- package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js +147 -98
- package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js.map +1 -1
- package/dist/model/extensions/neplan-westnetz/core/WNFeeder.d.ts +8 -2
- package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js +80 -9
- package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js.map +1 -1
- package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.d.ts +5 -4
- package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js +114 -45
- package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js.map +1 -1
- package/dist/model/generation/FossilFuel.js +4 -4
- package/dist/model/generation/FossilFuel.js.map +1 -1
- package/dist/model/generation/GeneratingUnit.js +7 -6
- package/dist/model/generation/GeneratingUnit.js.map +1 -1
- package/dist/model/generation/HydroGeneratingUnit.d.ts +3 -0
- package/dist/model/generation/HydroGeneratingUnit.js +21 -0
- package/dist/model/generation/HydroGeneratingUnit.js.map +1 -1
- package/dist/model/generation/SolarGeneratingUnit.d.ts +2 -0
- package/dist/model/generation/SolarGeneratingUnit.js +13 -0
- package/dist/model/generation/SolarGeneratingUnit.js.map +1 -1
- package/dist/model/generation/ThermalGeneratingUnit.js +2 -2
- package/dist/model/generation/ThermalGeneratingUnit.js.map +1 -1
- package/dist/model/generation/WindGeneratingUnit.js +3 -3
- package/dist/model/generation/WindGeneratingUnit.js.map +1 -1
- package/dist/model/loadmodel/ConformLoad.js +3 -3
- package/dist/model/loadmodel/ConformLoad.js.map +1 -1
- package/dist/model/loadmodel/ConformLoadGroup.js +2 -2
- package/dist/model/loadmodel/ConformLoadGroup.js.map +1 -1
- package/dist/model/loadmodel/LoadArea.js +2 -2
- package/dist/model/loadmodel/LoadArea.js.map +1 -1
- package/dist/model/loadmodel/LoadGroup.js +2 -2
- package/dist/model/loadmodel/LoadGroup.js.map +1 -1
- package/dist/model/loadmodel/SubLoadArea.js +3 -3
- package/dist/model/loadmodel/SubLoadArea.js.map +1 -1
- package/dist/model/model/Model.d.ts +34 -2
- package/dist/model/model/Model.js +86 -12
- package/dist/model/model/Model.js.map +1 -1
- package/dist/model/operationallimits/CurrentLimit.js +3 -2
- package/dist/model/operationallimits/CurrentLimit.js.map +1 -1
- package/dist/model/operationallimits/OperationalLimit.js +7 -14
- package/dist/model/operationallimits/OperationalLimit.js.map +1 -1
- package/dist/model/operationallimits/OperationalLimitSet.js +5 -8
- package/dist/model/operationallimits/OperationalLimitSet.js.map +1 -1
- package/dist/model/operationallimits/OperationalLimitType.js +4 -4
- package/dist/model/operationallimits/OperationalLimitType.js.map +1 -1
- package/dist/model/operationallimits/VoltageLimit.d.ts +9 -0
- package/dist/model/operationallimits/VoltageLimit.js +38 -0
- package/dist/model/operationallimits/VoltageLimit.js.map +1 -0
- package/dist/model/statevariables/SvPowerFlow.js +5 -5
- package/dist/model/statevariables/SvPowerFlow.js.map +1 -1
- package/dist/model/statevariables/SvStatus.js +5 -5
- package/dist/model/statevariables/SvStatus.js.map +1 -1
- package/dist/model/statevariables/SvTapStep.js +5 -5
- package/dist/model/statevariables/SvTapStep.js.map +1 -1
- package/dist/model/topology/TopologicalNode.js +5 -4
- package/dist/model/topology/TopologicalNode.js.map +1 -1
- package/dist/model/wires/ACLineSegment.js +12 -11
- package/dist/model/wires/ACLineSegment.js.map +1 -1
- package/dist/model/wires/AsynchronousMachine.js +20 -20
- package/dist/model/wires/AsynchronousMachine.js.map +1 -1
- package/dist/model/wires/Breaker.js +2 -2
- package/dist/model/wires/Breaker.js.map +1 -1
- package/dist/model/wires/BusbarSection.js +3 -3
- package/dist/model/wires/BusbarSection.js.map +1 -1
- package/dist/model/wires/Conductor.js +8 -2
- package/dist/model/wires/Conductor.js.map +1 -1
- package/dist/model/wires/Disconnector.js +2 -2
- package/dist/model/wires/Disconnector.js.map +1 -1
- package/dist/model/wires/EarthFaultCompensator.js +2 -1
- package/dist/model/wires/EarthFaultCompensator.js.map +1 -1
- package/dist/model/wires/EnergyConsumer.js +10 -9
- package/dist/model/wires/EnergyConsumer.js.map +1 -1
- package/dist/model/wires/EnergySource.js +13 -12
- package/dist/model/wires/EnergySource.js.map +1 -1
- package/dist/model/wires/ExternalNetworkInjection.js +20 -19
- package/dist/model/wires/ExternalNetworkInjection.js.map +1 -1
- package/dist/model/wires/GroundingImpedance.js +3 -3
- package/dist/model/wires/GroundingImpedance.js.map +1 -1
- package/dist/model/wires/Junction.js +3 -3
- package/dist/model/wires/Junction.js.map +1 -1
- package/dist/model/wires/Line.d.ts +3 -0
- package/dist/model/wires/Line.js +20 -5
- package/dist/model/wires/Line.js.map +1 -1
- package/dist/model/wires/LinearShuntCompensator.js +6 -6
- package/dist/model/wires/LinearShuntCompensator.js.map +1 -1
- package/dist/model/wires/PetersenCoil.js +9 -9
- package/dist/model/wires/PetersenCoil.js.map +1 -1
- package/dist/model/wires/PhaseTapChanger.d.ts +9 -0
- package/dist/model/wires/PhaseTapChanger.js +27 -0
- package/dist/model/wires/PhaseTapChanger.js.map +1 -0
- package/dist/model/wires/PhaseTapChangerAsymmetrical.d.ts +10 -0
- package/dist/model/wires/PhaseTapChangerAsymmetrical.js +41 -0
- package/dist/model/wires/PhaseTapChangerAsymmetrical.js.map +1 -0
- package/dist/model/wires/PhaseTapChangerLinear.d.ts +12 -0
- package/dist/model/wires/PhaseTapChangerLinear.js +51 -0
- package/dist/model/wires/PhaseTapChangerLinear.js.map +1 -0
- package/dist/model/wires/PhaseTapChangerNonLinear.d.ts +10 -0
- package/dist/model/wires/PhaseTapChangerNonLinear.js +37 -0
- package/dist/model/wires/PhaseTapChangerNonLinear.js.map +1 -0
- package/dist/model/wires/PhaseTapChangerSymmetrical.d.ts +6 -0
- package/dist/model/wires/PhaseTapChangerSymmetrical.js +24 -0
- package/dist/model/wires/PhaseTapChangerSymmetrical.js.map +1 -0
- package/dist/model/wires/PhaseTapChangerTable.d.ts +14 -0
- package/dist/model/wires/PhaseTapChangerTable.js +44 -0
- package/dist/model/wires/PhaseTapChangerTable.js.map +1 -0
- package/dist/model/wires/PhaseTapChangerTablePoint.d.ts +15 -0
- package/dist/model/wires/PhaseTapChangerTablePoint.js +54 -0
- package/dist/model/wires/PhaseTapChangerTablePoint.js.map +1 -0
- package/dist/model/wires/PhaseTapChangerTabular.d.ts +10 -0
- package/dist/model/wires/PhaseTapChangerTabular.js +38 -0
- package/dist/model/wires/PhaseTapChangerTabular.js.map +1 -0
- package/dist/model/wires/PowerTransformer.js +3 -2
- package/dist/model/wires/PowerTransformer.js.map +1 -1
- package/dist/model/wires/PowerTransformerEnd.js +21 -21
- package/dist/model/wires/PowerTransformerEnd.js.map +1 -1
- package/dist/model/wires/RatioTapChanger.d.ts +2 -0
- package/dist/model/wires/RatioTapChanger.js +21 -24
- package/dist/model/wires/RatioTapChanger.js.map +1 -1
- package/dist/model/wires/RatioTapChangerTable.d.ts +3 -0
- package/dist/model/wires/RatioTapChangerTable.js +16 -2
- package/dist/model/wires/RatioTapChangerTable.js.map +1 -1
- package/dist/model/wires/RatioTapChangerTablePoint.js +4 -4
- package/dist/model/wires/RatioTapChangerTablePoint.js.map +1 -1
- package/dist/model/wires/ReactiveCapabilityCurve.js +2 -2
- package/dist/model/wires/ReactiveCapabilityCurve.js.map +1 -1
- package/dist/model/wires/RegulatingCondEq.js +3 -2
- package/dist/model/wires/RegulatingCondEq.js.map +1 -1
- package/dist/model/wires/RegulatingControl.js +9 -8
- package/dist/model/wires/RegulatingControl.js.map +1 -1
- package/dist/model/wires/RotatingMachine.d.ts +1 -0
- package/dist/model/wires/RotatingMachine.js +21 -7
- package/dist/model/wires/RotatingMachine.js.map +1 -1
- package/dist/model/wires/SeriesCompensator.js +9 -8
- package/dist/model/wires/SeriesCompensator.js.map +1 -1
- package/dist/model/wires/ShuntCompensator.js +15 -15
- package/dist/model/wires/ShuntCompensator.js.map +1 -1
- package/dist/model/wires/StaticVarCompensator.js +14 -14
- package/dist/model/wires/StaticVarCompensator.js.map +1 -1
- package/dist/model/wires/Switch.js +4 -3
- package/dist/model/wires/Switch.js.map +1 -1
- package/dist/model/wires/SynchronousMachine.d.ts +2 -0
- package/dist/model/wires/SynchronousMachine.js +28 -31
- package/dist/model/wires/SynchronousMachine.js.map +1 -1
- package/dist/model/wires/TapChanger.d.ts +2 -0
- package/dist/model/wires/TapChanger.js +15 -15
- package/dist/model/wires/TapChanger.js.map +1 -1
- package/dist/model/wires/TapChangerControl.js +3 -3
- package/dist/model/wires/TapChangerControl.js.map +1 -1
- package/dist/model/wires/TapChangerTablePoint.d.ts +3 -0
- package/dist/model/wires/TapChangerTablePoint.js +34 -7
- package/dist/model/wires/TapChangerTablePoint.js.map +1 -1
- package/dist/model/wires/TransformerEnd.d.ts +3 -0
- package/dist/model/wires/TransformerEnd.js +12 -19
- package/dist/model/wires/TransformerEnd.js.map +1 -1
- package/dist/util/collection/util-dot.d.ts +2 -0
- package/dist/util/collection/util-dot.js +71 -0
- package/dist/util/collection/util-dot.js.map +1 -0
- package/dist/util/collection/util-excel.d.ts +10 -0
- package/dist/util/collection/util-excel.js +58 -0
- package/dist/util/collection/util-excel.js.map +1 -0
- package/dist/util/collection/util-graph.d.ts +7 -0
- package/dist/util/collection/util-graph.js +168 -0
- package/dist/util/collection/util-graph.js.map +1 -0
- package/dist/util/collection/util-graph2tree.d.ts +39 -0
- package/dist/util/collection/util-graph2tree.js +172 -0
- package/dist/util/collection/util-graph2tree.js.map +1 -0
- package/dist/util/collection/util-tree.d.ts +65 -0
- package/dist/util/collection/util-tree.js +236 -0
- package/dist/util/collection/util-tree.js.map +1 -0
- package/dist/util/database/mysql-controller.d.ts +16 -0
- package/dist/util/database/mysql-controller.js +45 -0
- package/dist/util/database/mysql-controller.js.map +1 -0
- package/dist/util/sparql/sparql-utils.d.ts +1 -0
- package/dist/util/sparql/sparql-utils.js +5 -1
- package/dist/util/sparql/sparql-utils.js.map +1 -1
- package/dist/util/util-create.d.ts +5 -2
- package/dist/util/util-create.js +18 -6
- package/dist/util/util-create.js.map +1 -1
- package/dist/util/util-test.d.ts +18 -0
- package/dist/util/util-test.js +300 -0
- package/dist/util/util-test.js.map +1 -0
- package/dist/util/util-topology.js +0 -2
- package/dist/util/util-topology.js.map +1 -1
- package/dist/util/utils.d.ts +0 -12
- package/dist/util/utils.js +17 -33
- package/dist/util/utils.js.map +1 -1
- package/dist/util/xml/xml.serializer.d.ts +12 -0
- package/dist/util/xml/xml.serializer.js +33 -3
- package/dist/util/xml/xml.serializer.js.map +1 -1
- package/package.json +11 -5
- package/dist/converter/integral7/interface-i7/db-config.d.ts +0 -13
- package/dist/converter/integral7/interface-i7/db-config.js.map +0 -1
|
@@ -0,0 +1,3175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConverterI7 = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const Model_1 = require("../../model/model/Model");
|
|
6
|
+
const export_frame_i7_1 = require("./interface-i7/export-frame-i7");
|
|
7
|
+
const mysql_controller_1 = require("../../util/database/mysql-controller");
|
|
8
|
+
const rdf_xml_1 = require("../../constants/rdf-xml");
|
|
9
|
+
const utils_1 = require("../../util/utils");
|
|
10
|
+
const LoadArea_1 = require("../../model/loadmodel/LoadArea");
|
|
11
|
+
const SubLoadArea_1 = require("../../model/loadmodel/SubLoadArea");
|
|
12
|
+
const ConformLoadGroup_1 = require("../../model/loadmodel/ConformLoadGroup");
|
|
13
|
+
const CoordinateSystem_1 = require("../../model/common/CoordinateSystem");
|
|
14
|
+
const integral_sql_1 = require("./sql/integral.sql");
|
|
15
|
+
const GeographicalRegion_1 = require("../../model/core/GeographicalRegion");
|
|
16
|
+
const SubGeographicalRegion_1 = require("../../model/core/SubGeographicalRegion");
|
|
17
|
+
const integral_prefix_1 = require("./config/integral-prefix");
|
|
18
|
+
const utils_2 = require("./utils");
|
|
19
|
+
const AMPRIONSubstation_1 = require("../../model/extensions/amprion/core/AMPRIONSubstation");
|
|
20
|
+
const Location_1 = require("../../model/common/Location");
|
|
21
|
+
const PositionPoint_1 = require("../../model/common/PositionPoint");
|
|
22
|
+
const Standort_1 = require("./model/integral/Standort");
|
|
23
|
+
const ConverterIntegral7_1 = require("./ConverterIntegral7");
|
|
24
|
+
const Line_1 = require("../../model/wires/Line");
|
|
25
|
+
const Junction_1 = require("../../model/wires/Junction");
|
|
26
|
+
const Schaltanlage_1 = require("./model/integral/Schaltanlage");
|
|
27
|
+
const Schaltanlagenabschnitt_1 = require("./model/integral/Schaltanlagenabschnitt");
|
|
28
|
+
const Schaltfeld_1 = require("./model/integral/Schaltfeld");
|
|
29
|
+
const KnotenSo_1 = require("./model/integral/KnotenSo");
|
|
30
|
+
const VoltageLevel_1 = require("../../model/core/VoltageLevel");
|
|
31
|
+
const util_create_1 = require("../../util/util-create");
|
|
32
|
+
const AMPRIONBay_1 = require("../../model/extensions/amprion/core/AMPRIONBay");
|
|
33
|
+
const Substation_1 = require("../../model/core/Substation");
|
|
34
|
+
const AMPRIONConnectivityNode_1 = require("../../model/extensions/amprion/core/AMPRIONConnectivityNode");
|
|
35
|
+
const ConnectivityNode_1 = require("../../model/core/ConnectivityNode");
|
|
36
|
+
const Bay_1 = require("../../model/core/Bay");
|
|
37
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
38
|
+
const Terminal_1 = require("../../model/core/Terminal");
|
|
39
|
+
const PhaseCode_1 = require("../../model/core/PhaseCode");
|
|
40
|
+
const BusbarSection_1 = require("../../model/wires/BusbarSection");
|
|
41
|
+
const cim_class_names_1 = require("../../constants/cim-class-names");
|
|
42
|
+
const ConformLoad_1 = require("../../model/loadmodel/ConformLoad");
|
|
43
|
+
const EnergyConsumer_1 = require("../../model/wires/EnergyConsumer");
|
|
44
|
+
const EnergySource_1 = require("../../model/wires/EnergySource");
|
|
45
|
+
const EquivalentInjection_1 = require("../../model/equivalents/EquivalentInjection");
|
|
46
|
+
const ExternalNetworkInjection_1 = require("../../model/wires/ExternalNetworkInjection");
|
|
47
|
+
const Disconnector_1 = require("../../model/wires/Disconnector");
|
|
48
|
+
const Breaker_1 = require("../../model/wires/Breaker");
|
|
49
|
+
const GroundingImpedance_1 = require("../../model/wires/GroundingImpedance");
|
|
50
|
+
const PetersenCoil_1 = require("../../model/wires/PetersenCoil");
|
|
51
|
+
const Leitung_1 = require("./model/integral/Leitung");
|
|
52
|
+
const ACLineSegment_1 = require("../../model/wires/ACLineSegment");
|
|
53
|
+
const CurrentLimit_1 = require("../../model/operationallimits/CurrentLimit");
|
|
54
|
+
const CurrentFlow_1 = require("../../model/domain/CurrentFlow");
|
|
55
|
+
const UnitMultiplier_1 = require("../../model/domain/UnitMultiplier");
|
|
56
|
+
const UnitSymbol_1 = require("../../model/domain/UnitSymbol");
|
|
57
|
+
const OperationalLimitSet_1 = require("../../model/operationallimits/OperationalLimitSet");
|
|
58
|
+
const OperationalLimitType_1 = require("../../model/operationallimits/OperationalLimitType");
|
|
59
|
+
const OperationalLimitDirectionKind_1 = require("../../model/operationallimits/OperationalLimitDirectionKind");
|
|
60
|
+
const LimitTypeKind_1 = require("../../model/operationallimits/LimitTypeKind");
|
|
61
|
+
const EVWireInfo_1 = require("../../model/extensions/enervance/assetinfo/EVWireInfo");
|
|
62
|
+
const EVPowerTransformerInfo_1 = require("../../model/extensions/enervance/assetinfo/EVPowerTransformerInfo");
|
|
63
|
+
const EVPowerTransformerEndInfo_1 = require("../../model/extensions/enervance/assetinfo/EVPowerTransformerEndInfo");
|
|
64
|
+
const ApparentPower_1 = require("../../model/domain/ApparentPower");
|
|
65
|
+
const Voltage_1 = require("../../model/domain/Voltage");
|
|
66
|
+
const TapChangerInfo_1 = require("../../model/assetinfo/TapChangerInfo");
|
|
67
|
+
const PowerTransformer_1 = require("../../model/wires/PowerTransformer");
|
|
68
|
+
const PowerTransformerEnd_1 = require("../../model/wires/PowerTransformerEnd");
|
|
69
|
+
const VoltageLimit_1 = require("../../model/operationallimits/VoltageLimit");
|
|
70
|
+
const PhaseTapChangerAsymmetrical_1 = require("../../model/wires/PhaseTapChangerAsymmetrical");
|
|
71
|
+
const PhaseTapChangerLinear_1 = require("../../model/wires/PhaseTapChangerLinear");
|
|
72
|
+
const TapChangerControl_1 = require("../../model/wires/TapChangerControl");
|
|
73
|
+
const RegulatingControlModeKind_1 = require("../../model/wires/RegulatingControlModeKind");
|
|
74
|
+
const utils_trafo3w_1 = require("./utils-trafo3w");
|
|
75
|
+
const SynchronousMachine_1 = require("../../model/wires/SynchronousMachine");
|
|
76
|
+
const SynchronousMachineKind_1 = require("../../model/wires/SynchronousMachineKind");
|
|
77
|
+
const SynchronousMachineOperatingMode_1 = require("../../model/wires/SynchronousMachineOperatingMode");
|
|
78
|
+
const ReactiveCapabilityCurve_1 = require("../../model/wires/ReactiveCapabilityCurve");
|
|
79
|
+
const CurveStyle_1 = require("../../model/core/CurveStyle");
|
|
80
|
+
const CurveData_1 = require("../../model/core/CurveData");
|
|
81
|
+
const RegulatingControl_1 = require("../../model/wires/RegulatingControl");
|
|
82
|
+
const ThermalGeneratingUnit_1 = require("../../model/generation/ThermalGeneratingUnit");
|
|
83
|
+
const SolarGeneratingUnit_1 = require("../../model/generation/SolarGeneratingUnit");
|
|
84
|
+
const WindGeneratingUnit_1 = require("../../model/generation/WindGeneratingUnit");
|
|
85
|
+
const WindGenUnitKind_1 = require("../../model/generation/WindGenUnitKind");
|
|
86
|
+
const NuclearGeneratingUnit_1 = require("../../model/generation/NuclearGeneratingUnit");
|
|
87
|
+
const HydroGeneratingUnit_1 = require("../../model/generation/HydroGeneratingUnit");
|
|
88
|
+
const HydroEnergyConversionKind_1 = require("../../model/generation/HydroEnergyConversionKind");
|
|
89
|
+
const GeneratingUnit_1 = require("../../model/generation/GeneratingUnit");
|
|
90
|
+
const GeneratorControlSource_1 = require("../../model/generation/GeneratorControlSource");
|
|
91
|
+
const SynchronousMachineTimeConstantReactance_1 = require("../../model/dynamics/standard-models/synchronous-machine-dynamics/SynchronousMachineTimeConstantReactance");
|
|
92
|
+
const LinearShuntCompensator_1 = require("../../model/wires/LinearShuntCompensator");
|
|
93
|
+
const StaticVarCompensator_1 = require("../../model/wires/StaticVarCompensator");
|
|
94
|
+
const DCConverterUnit_1 = require("../../model/dc/DCConverterUnit");
|
|
95
|
+
const CsConverter_1 = require("../../model/dc/CsConverter");
|
|
96
|
+
const CsOperatingModeKind_1 = require("../../model/dc/CsOperatingModeKind");
|
|
97
|
+
const DCNode_1 = require("../../model/dc/DCNode");
|
|
98
|
+
const ACDCConverterDCTerminal_1 = require("../../model/dc/ACDCConverterDCTerminal");
|
|
99
|
+
const VsConverter_1 = require("../../model/dc/VsConverter");
|
|
100
|
+
const VsPpccControlKind_1 = require("../../model/dc/VsPpccControlKind");
|
|
101
|
+
const VsQpccControlKind_1 = require("../../model/dc/VsQpccControlKind");
|
|
102
|
+
const DCLine_1 = require("../../model/dc/DCLine");
|
|
103
|
+
const DCLineSegment_1 = require("../../model/dc/DCLineSegment");
|
|
104
|
+
const DCConverterOperatingModeKind_1 = require("../../model/dc/DCConverterOperatingModeKind");
|
|
105
|
+
const DCTerminal_1 = require("../../model/dc/DCTerminal");
|
|
106
|
+
const AMPRIONSeriesCompensator_1 = require("../../model/extensions/amprion/wires/AMPRIONSeriesCompensator");
|
|
107
|
+
class ConverterI7 {
|
|
108
|
+
constructor() {
|
|
109
|
+
this.exportFrames = new Map();
|
|
110
|
+
this.cimModelDefault = new Model_1.Model();
|
|
111
|
+
this.availableTableNames = [];
|
|
112
|
+
this.integralID2Type = new Map();
|
|
113
|
+
this.coordinateSystem = 'EPSG:4326';
|
|
114
|
+
this.integralID2UUID = new Map();
|
|
115
|
+
this.UUID2Integral7ID = new Map();
|
|
116
|
+
this.integral7Modells = new Map();
|
|
117
|
+
this.kdrosseltypen = new Map();
|
|
118
|
+
this.leitungAnschlussKnotenIDs = new Set();
|
|
119
|
+
this.trafo2wAnschlussKnotenIDs = new Set();
|
|
120
|
+
this.trafo3wAnschlussKnotenIDs = new Set();
|
|
121
|
+
this.hgueAnschlussKnotenIDs = new Set();
|
|
122
|
+
this.lDrosselAnschlussKnotenIDs = new Set();
|
|
123
|
+
this.lKondensatorAnschlussKnotenIDs = new Set();
|
|
124
|
+
this.ersatzZweigAnschlussKnotenIDs = new Set();
|
|
125
|
+
}
|
|
126
|
+
convert(objectMappingConfig, defaultValuesConfig, energyTypesConfig, ukzExportConfig, tempDirPath) {
|
|
127
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
try {
|
|
130
|
+
yield this.createColumnIndex();
|
|
131
|
+
const ukz2GeoregionMapping = yield this.mysqlController.execQuery(`
|
|
132
|
+
SELECT gr.id AS georegion_id, sgr.id AS subgeoregion_id, group_concat(DISTINCT standort.ukz) AS ukzCSV
|
|
133
|
+
FROM netz_subgeoregion sgr
|
|
134
|
+
LEFT OUTER JOIN netz_georegion gr ON sgr.georegion = gr.id
|
|
135
|
+
LEFT OUTER JOIN netz_standort standort ON sgr.id = standort.subgeoregion
|
|
136
|
+
GROUP BY georegion_id; `);
|
|
137
|
+
yield this.convertBetriebsmitteltypenKdrossel();
|
|
138
|
+
yield this.convertBetriebsmitteltypenLeitung();
|
|
139
|
+
yield this.convertBetriebsmitteltypenTrafo();
|
|
140
|
+
yield this.queryLeitungsAnschlussIDs();
|
|
141
|
+
yield this.queryTrafosAnschlussIDs();
|
|
142
|
+
yield this.queryHgueAnschlussIDs();
|
|
143
|
+
yield this.queryLDroselAnschlussIDs();
|
|
144
|
+
yield this.queryErsatzLaengsAnschlussIDs();
|
|
145
|
+
yield this.queryLkondensatorAnschlussIDs();
|
|
146
|
+
ukz2GeoregionMapping.map(elem => elem.ukzArray = elem.ukzCSV.split(','));
|
|
147
|
+
const allGeoRegions = yield this.convertGeoRegionen();
|
|
148
|
+
const allSubGeoRegions = yield this.convertSubGeoRegionen(allGeoRegions, defaultValuesConfig);
|
|
149
|
+
const boundaryGeoRegionSet = new Set();
|
|
150
|
+
const internalGeoRegionSet = new Set();
|
|
151
|
+
for (const ukzRegionMap of ukz2GeoregionMapping) {
|
|
152
|
+
for (const bdUkz of ukzExportConfig.boundaryUkz) {
|
|
153
|
+
const geoRegionUUID = this.integralID2UUID.get(ukzRegionMap.georegion_id);
|
|
154
|
+
const geoRegion = allGeoRegions.find(elem => elem.mrid === geoRegionUUID);
|
|
155
|
+
if (!geoRegion)
|
|
156
|
+
continue;
|
|
157
|
+
if (ukzRegionMap.ukzArray.indexOf(bdUkz.name) > -1) {
|
|
158
|
+
if (!boundaryGeoRegionSet.has(geoRegion)) {
|
|
159
|
+
boundaryGeoRegionSet.add(geoRegion);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
internalGeoRegionSet.add(geoRegion);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const boundaryGeoRegions = Array.from(boundaryGeoRegionSet);
|
|
168
|
+
const profileGeoRegions = Array.from(internalGeoRegionSet);
|
|
169
|
+
this.logger.debug(`BoundaryGeoRegions ${boundaryGeoRegions.map(elem => elem.name).join()}`);
|
|
170
|
+
this.logger.debug(`ProfileGeoRegions ${profileGeoRegions.map(elem => elem.name).join()}`);
|
|
171
|
+
const bdExportFrame = new export_frame_i7_1.I7ExportFrame('Boundary', [rdf_xml_1.RDF_XML.PROFILE_EQ, rdf_xml_1.RDF_XML.PROFILE_SSH, rdf_xml_1.RDF_XML.PROFILE_GL, rdf_xml_1.RDF_XML.PROFILE_EQ_BD], tempDirPath, new Map());
|
|
172
|
+
for (const bdRegion of boundaryGeoRegions) {
|
|
173
|
+
bdExportFrame.cimModel.addGeographicalRegion(bdRegion);
|
|
174
|
+
for (const subGeoRegion of bdRegion.regions) {
|
|
175
|
+
bdExportFrame.cimModel.addSubGeographicalRegion(subGeoRegion);
|
|
176
|
+
}
|
|
177
|
+
this.addDefaultObjectsGeo(bdExportFrame.cimModel, defaultValuesConfig);
|
|
178
|
+
this.exportFrames.set(bdRegion.mrid, bdExportFrame);
|
|
179
|
+
}
|
|
180
|
+
const cgmesExportProfiles = [rdf_xml_1.RDF_XML.PROFILE_EQ, rdf_xml_1.RDF_XML.PROFILE_SSH, rdf_xml_1.RDF_XML.PROFILE_SV, rdf_xml_1.RDF_XML.PROFILE_DL, rdf_xml_1.RDF_XML.PROFILE_GL, rdf_xml_1.RDF_XML.PROFILE_AMPI7];
|
|
181
|
+
const dependentOnModels = new Map();
|
|
182
|
+
dependentOnModels.set(rdf_xml_1.RDF_XML.PROFILE_EQ_BD, [bdExportFrame.getModelUUID(rdf_xml_1.RDF_XML.PROFILE_EQ_BD)]);
|
|
183
|
+
for (const pRegion of profileGeoRegions) {
|
|
184
|
+
if (!ukzExportConfig.exportGeoRegion.find(elem => elem.name === pRegion.name))
|
|
185
|
+
continue;
|
|
186
|
+
const exportFrame = new export_frame_i7_1.I7ExportFrame(pRegion.name, cgmesExportProfiles, tempDirPath, dependentOnModels);
|
|
187
|
+
exportFrame.cimModel.addGeographicalRegion(pRegion);
|
|
188
|
+
for (const subGeoRegion of pRegion.regions) {
|
|
189
|
+
exportFrame.cimModel.addSubGeographicalRegion(subGeoRegion);
|
|
190
|
+
}
|
|
191
|
+
this.addDefaultObjectsLoadModel(exportFrame.cimModel, defaultValuesConfig);
|
|
192
|
+
this.addDefaultObjectsGeo(exportFrame.cimModel, defaultValuesConfig);
|
|
193
|
+
this.exportFrames.set(pRegion.mrid, exportFrame);
|
|
194
|
+
}
|
|
195
|
+
for (const entry of this.exportFrames.entries()) {
|
|
196
|
+
const geoRegionUUID = entry[0];
|
|
197
|
+
const frame = entry[1];
|
|
198
|
+
const cimModel = frame.cimModel;
|
|
199
|
+
const geoRegion = cimModel.getGeographicalRegion(geoRegionUUID);
|
|
200
|
+
if (!geoRegion)
|
|
201
|
+
continue;
|
|
202
|
+
const integral7Modell = {
|
|
203
|
+
integralStandorte: new Map(),
|
|
204
|
+
integralSchaltanlagen: new Map(),
|
|
205
|
+
integralSchaltanlagenAbschnitte: new Map(),
|
|
206
|
+
integralSchaltfelder: new Map(),
|
|
207
|
+
integralKnotenSo: new Map(),
|
|
208
|
+
integralLeitungen: new Map(),
|
|
209
|
+
knotenSfIDs: [],
|
|
210
|
+
kontenZwIDs: [],
|
|
211
|
+
querkupplungIDs: [],
|
|
212
|
+
laengskupplungIDs: [],
|
|
213
|
+
leitungsAnschlussIDs: [],
|
|
214
|
+
trafo2wAnschlussKnotenIDs: [],
|
|
215
|
+
trafo3wAnschlussKnotenIDs: [],
|
|
216
|
+
hgueAnschlussKnotenIDs: [],
|
|
217
|
+
lDrosselAnschlussKnotenIDs: [],
|
|
218
|
+
lKondensatorAnschlussKnotenIDs: [],
|
|
219
|
+
ersatzZweigAnschlussKnotenIDs: [],
|
|
220
|
+
targetVoltages: new Map(),
|
|
221
|
+
sternPunktImpModel: {
|
|
222
|
+
stpSchieneJunctionUUIDs: new Map(),
|
|
223
|
+
stpSchieneTerminal: new Map(),
|
|
224
|
+
junctionUUIDstpImp: new Map(),
|
|
225
|
+
petersenCoils: new Map(),
|
|
226
|
+
junctions: new Map(),
|
|
227
|
+
groundingImpedances: new Map(),
|
|
228
|
+
connectivityNodes: new Map(),
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
this.integral7Modells.set(geoRegionUUID, integral7Modell);
|
|
232
|
+
const subGeoRegionsUUIDs = geoRegion.regions.map(elem => elem.mrid);
|
|
233
|
+
const subGeoRegionsI7IDs = [];
|
|
234
|
+
for (const uuid of subGeoRegionsUUIDs) {
|
|
235
|
+
subGeoRegionsI7IDs.push(...this.UUID2Integral7ID.get(uuid));
|
|
236
|
+
}
|
|
237
|
+
let startTime = perf_hooks_1.performance.now();
|
|
238
|
+
yield this.convertStandorte(cimModel, integral7Modell, subGeoRegionsI7IDs, defaultValuesConfig);
|
|
239
|
+
logExecutionTime(this.logger, startTime, `convertStandorte(${cimModel.substations.size + cimModel.lines.size})`);
|
|
240
|
+
startTime = perf_hooks_1.performance.now();
|
|
241
|
+
const standortIDs = [...integral7Modell.integralStandorte.keys()];
|
|
242
|
+
if (standortIDs.length)
|
|
243
|
+
yield this.covertSchaltanlagen(cimModel, integral7Modell, standortIDs, defaultValuesConfig);
|
|
244
|
+
logExecutionTime(this.logger, startTime, `covertSchaltanlagen(${standortIDs.length})`);
|
|
245
|
+
startTime = perf_hooks_1.performance.now();
|
|
246
|
+
const schaltanlagenIDs = [...integral7Modell.integralSchaltanlagen.keys()];
|
|
247
|
+
if (schaltanlagenIDs.length)
|
|
248
|
+
yield this.convertSchaltanlagenAbschnitte(cimModel, integral7Modell, schaltanlagenIDs);
|
|
249
|
+
logExecutionTime(this.logger, startTime, `convertSchaltanlagenAbschnitte(${schaltanlagenIDs.length})`);
|
|
250
|
+
startTime = perf_hooks_1.performance.now();
|
|
251
|
+
const schaltanlagenAbschnittIDs = [...integral7Modell.integralSchaltanlagenAbschnitte.keys()];
|
|
252
|
+
if (schaltanlagenAbschnittIDs.length > 0)
|
|
253
|
+
yield this.convertSchaltfelder(cimModel, integral7Modell, schaltanlagenAbschnittIDs);
|
|
254
|
+
logExecutionTime(this.logger, startTime, `convertSchaltfelder()`);
|
|
255
|
+
startTime = perf_hooks_1.performance.now();
|
|
256
|
+
if (schaltanlagenAbschnittIDs.length > 0) {
|
|
257
|
+
yield this.convertQuerkupplungen(cimModel, integral7Modell, schaltanlagenAbschnittIDs);
|
|
258
|
+
yield this.convertLaegskupplungen(cimModel, integral7Modell, schaltanlagenAbschnittIDs);
|
|
259
|
+
}
|
|
260
|
+
logExecutionTime(this.logger, startTime, `convertKupplungen()`);
|
|
261
|
+
startTime = perf_hooks_1.performance.now();
|
|
262
|
+
if (standortIDs.length)
|
|
263
|
+
yield this.convertKnotenSo(cimModel, integral7Modell, standortIDs, defaultValuesConfig);
|
|
264
|
+
logExecutionTime(this.logger, startTime, `convertKupplungen()`);
|
|
265
|
+
const knotenSoIDs = [...integral7Modell.integralKnotenSo.keys()];
|
|
266
|
+
startTime = perf_hooks_1.performance.now();
|
|
267
|
+
const schaltfeldIDs = [...integral7Modell.integralSchaltfelder.keys()];
|
|
268
|
+
if (knotenSoIDs.length)
|
|
269
|
+
yield this.convertKnotenSf(cimModel, integral7Modell, schaltfeldIDs);
|
|
270
|
+
logExecutionTime(this.logger, startTime, `convertKnotenSf()`);
|
|
271
|
+
startTime = perf_hooks_1.performance.now();
|
|
272
|
+
if (integral7Modell.querkupplungIDs.length > 0) {
|
|
273
|
+
yield this.convertKnotenKf(cimModel, integral7Modell.querkupplungIDs);
|
|
274
|
+
}
|
|
275
|
+
logExecutionTime(this.logger, startTime, `convertKnotenKf()`);
|
|
276
|
+
startTime = perf_hooks_1.performance.now();
|
|
277
|
+
if (integral7Modell.laengskupplungIDs.length > 0) {
|
|
278
|
+
yield this.convertKnotenLk(cimModel, integral7Modell.laengskupplungIDs);
|
|
279
|
+
}
|
|
280
|
+
logExecutionTime(this.logger, startTime, `convertKnotenLk()`);
|
|
281
|
+
startTime = perf_hooks_1.performance.now();
|
|
282
|
+
if (knotenSoIDs.length > 0)
|
|
283
|
+
yield this.convertSchlaufen(cimModel, integral7Modell, knotenSoIDs);
|
|
284
|
+
logExecutionTime(this.logger, startTime, `convertSchlaufen()`);
|
|
285
|
+
startTime = perf_hooks_1.performance.now();
|
|
286
|
+
if (schaltanlagenAbschnittIDs.length > 0)
|
|
287
|
+
yield this.convertSammelschienenAbschnitte(cimModel, integral7Modell, schaltanlagenAbschnittIDs);
|
|
288
|
+
logExecutionTime(this.logger, startTime, `convertSammelschienenAbschnitte(${cimModel.busbarSections.size})`);
|
|
289
|
+
startTime = perf_hooks_1.performance.now();
|
|
290
|
+
const eqiupmentContainerIDs = [...schaltfeldIDs, ...integral7Modell.querkupplungIDs, ...integral7Modell.laengskupplungIDs];
|
|
291
|
+
if (eqiupmentContainerIDs.length > 0) {
|
|
292
|
+
yield this.convertStarreVerbindungen(cimModel, eqiupmentContainerIDs);
|
|
293
|
+
}
|
|
294
|
+
logExecutionTime(this.logger, startTime, `convertStarreVerbindungen(${cimModel.junctions.size})`);
|
|
295
|
+
const soSfKonoten = [...knotenSoIDs, ...integral7Modell.knotenSfIDs];
|
|
296
|
+
startTime = perf_hooks_1.performance.now();
|
|
297
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
298
|
+
yield this.convertBelastungen(cimModel, soSfKonoten, defaultValuesConfig, objectMappingConfig.Belastung.class);
|
|
299
|
+
}
|
|
300
|
+
logExecutionTime(this.logger, startTime, `convertBelastungen()`);
|
|
301
|
+
startTime = perf_hooks_1.performance.now();
|
|
302
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
303
|
+
yield this.convertEinspeisungen(cimModel, soSfKonoten, objectMappingConfig.Einspeisung.class);
|
|
304
|
+
}
|
|
305
|
+
logExecutionTime(this.logger, startTime, `convertEinspeisungen()`);
|
|
306
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
307
|
+
yield this.convertGeneratoren(cimModel, soSfKonoten, energyTypesConfig);
|
|
308
|
+
}
|
|
309
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
310
|
+
yield this.convertKraftwerksbloecke(cimModel, soSfKonoten, energyTypesConfig);
|
|
311
|
+
}
|
|
312
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
313
|
+
yield this.convertErsatzQuerZweige(cimModel, soSfKonoten);
|
|
314
|
+
}
|
|
315
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
316
|
+
yield this.convertBoundaryInjections(cimModel, soSfKonoten);
|
|
317
|
+
}
|
|
318
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
319
|
+
yield this.convertKompensationsdrossel(cimModel, soSfKonoten);
|
|
320
|
+
}
|
|
321
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
322
|
+
yield this.convertKompensationskondensatoren(cimModel, soSfKonoten);
|
|
323
|
+
}
|
|
324
|
+
startTime = perf_hooks_1.performance.now();
|
|
325
|
+
if (eqiupmentContainerIDs.length > 0) {
|
|
326
|
+
yield this.convertTrenner3f(cimModel, eqiupmentContainerIDs);
|
|
327
|
+
}
|
|
328
|
+
logExecutionTime(this.logger, startTime, `convertTrenner3f()`);
|
|
329
|
+
startTime = perf_hooks_1.performance.now();
|
|
330
|
+
if (eqiupmentContainerIDs.length > 0) {
|
|
331
|
+
yield this.convertTrennerFi3f(cimModel, eqiupmentContainerIDs);
|
|
332
|
+
}
|
|
333
|
+
logExecutionTime(this.logger, startTime, `convertTrennerFi3f(`);
|
|
334
|
+
startTime = perf_hooks_1.performance.now();
|
|
335
|
+
if (eqiupmentContainerIDs.length > 0) {
|
|
336
|
+
yield this.convertLeistungsschalter(cimModel, eqiupmentContainerIDs);
|
|
337
|
+
}
|
|
338
|
+
logExecutionTime(this.logger, startTime, `convertLeistungsschalter(${cimModel.breakers.size})`);
|
|
339
|
+
if (standortIDs.length > 0) {
|
|
340
|
+
startTime = perf_hooks_1.performance.now();
|
|
341
|
+
const stpSchieneID = yield this.convertSternpunktSchienen(cimModel, integral7Modell, standortIDs);
|
|
342
|
+
yield this.convertKdrossel(cimModel, integral7Modell, stpSchieneID);
|
|
343
|
+
yield this.convertStpSchaltelemente(integral7Modell, stpSchieneID);
|
|
344
|
+
logExecutionTime(this.logger, startTime, `convertSternpunktImp-Modell()`);
|
|
345
|
+
}
|
|
346
|
+
if (standortIDs.length > 0) {
|
|
347
|
+
startTime = perf_hooks_1.performance.now();
|
|
348
|
+
yield this.convertTrafo2W(cimModel, integral7Modell, defaultValuesConfig, standortIDs);
|
|
349
|
+
logExecutionTime(this.logger, startTime, `convertTrafo2W-Modell`);
|
|
350
|
+
}
|
|
351
|
+
if (standortIDs.length > 0) {
|
|
352
|
+
startTime = perf_hooks_1.performance.now();
|
|
353
|
+
yield this.convertTrafo3W(cimModel, integral7Modell, defaultValuesConfig, standortIDs);
|
|
354
|
+
logExecutionTime(this.logger, startTime, `convertTrafo3W-Modell`);
|
|
355
|
+
}
|
|
356
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
357
|
+
yield this.convertStatcom(cimModel, soSfKonoten);
|
|
358
|
+
}
|
|
359
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
360
|
+
yield this.convertSVC(cimModel, soSfKonoten);
|
|
361
|
+
}
|
|
362
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
363
|
+
yield this.convertCsConverterDC(cimModel, soSfKonoten);
|
|
364
|
+
}
|
|
365
|
+
if (knotenSoIDs.length > 0 || integral7Modell.knotenSfIDs.length > 0) {
|
|
366
|
+
yield this.convertVsConverterDC(cimModel, soSfKonoten);
|
|
367
|
+
}
|
|
368
|
+
if (bdExportFrame !== frame) {
|
|
369
|
+
startTime = perf_hooks_1.performance.now();
|
|
370
|
+
yield this.convertLeitungen(cimModel, integral7Modell, defaultValuesConfig);
|
|
371
|
+
logExecutionTime(this.logger, startTime, `convertLeitungen`);
|
|
372
|
+
}
|
|
373
|
+
yield this.convertDCLines(cimModel, integral7Modell, defaultValuesConfig);
|
|
374
|
+
yield this.convertLaengskondensatoren(cimModel, integral7Modell, defaultValuesConfig);
|
|
375
|
+
if (boundaryGeoRegions.indexOf(geoRegion) > -1) {
|
|
376
|
+
yield this.transformBoundaryModel(frame.cimModel, defaultValuesConfig);
|
|
377
|
+
}
|
|
378
|
+
startTime = perf_hooks_1.performance.now();
|
|
379
|
+
frame.openXMLModel();
|
|
380
|
+
frame.serializeModel(defaultValuesConfig);
|
|
381
|
+
yield frame.closeXMLModel();
|
|
382
|
+
let endTime = perf_hooks_1.performance.now();
|
|
383
|
+
console.log(`\tSerializeModel ${geoRegion.name} ${(endTime - startTime) / 1000} seconds`);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
catch (e) {
|
|
387
|
+
this.logger.error(e);
|
|
388
|
+
console.error("ERROR:" + e);
|
|
389
|
+
}
|
|
390
|
+
finally {
|
|
391
|
+
yield this.dropColumnIndex();
|
|
392
|
+
resolve();
|
|
393
|
+
}
|
|
394
|
+
}));
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
convertGeoRegionen() {
|
|
398
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
399
|
+
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
400
|
+
const regions = [];
|
|
401
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.REGION)) {
|
|
402
|
+
this.mysqlController.execQuery(integral_sql_1.getNetzQuery(integral_sql_1.I7Objects.REGION, 0, 0, []))
|
|
403
|
+
.then((result) => {
|
|
404
|
+
for (const i7Data of result) {
|
|
405
|
+
const region = new GeographicalRegion_1.GeographicalRegion(utils_1.getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname);
|
|
406
|
+
this.addIdMapping(i7Data.id, region.mrid, integral_sql_1.Integral7TableNames.REGION);
|
|
407
|
+
regions.push(region);
|
|
408
|
+
}
|
|
409
|
+
})
|
|
410
|
+
.catch(err => {
|
|
411
|
+
this.logger.error(`convertGeoRegionen ${err.toString()}`);
|
|
412
|
+
})
|
|
413
|
+
.finally(() => {
|
|
414
|
+
resolve(regions);
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.REGION} ist nicht vorhanden.`);
|
|
419
|
+
resolve(regions);
|
|
420
|
+
}
|
|
421
|
+
}));
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
convertSubGeoRegionen(regions, defaultValuesConfig) {
|
|
425
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
426
|
+
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
427
|
+
const subRegions = [];
|
|
428
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SUBREGION)) {
|
|
429
|
+
this.mysqlController.execQuery(integral_sql_1.getNetzQuery(integral_sql_1.I7Objects.SUBREGION, 0, 0, []))
|
|
430
|
+
.then((result) => {
|
|
431
|
+
for (const i7Data of result) {
|
|
432
|
+
const subregion = new SubGeographicalRegion_1.SubGeographicalRegion(utils_1.getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname);
|
|
433
|
+
const regionUUID = this.integralID2UUID.get(i7Data.georegion);
|
|
434
|
+
let region = regions.find(elem => elem.mrid === regionUUID);
|
|
435
|
+
if (!region) {
|
|
436
|
+
region = utils_1.createIfNotExitsGeoregionByName(this.cimModelDefault, defaultValuesConfig.GeographicalRegion.name);
|
|
437
|
+
this.logger.debug(`SubGeographicalRegion UUID ${subregion.mrid} I7-ID ${i7Data.id} Name ${i7Data.bezeichner} hat keine Region.`);
|
|
438
|
+
}
|
|
439
|
+
subregion.region = region;
|
|
440
|
+
region.addSubGeographicalRegion(subregion);
|
|
441
|
+
this.addIdMapping(i7Data.id, subregion.mrid, integral_sql_1.Integral7TableNames.SUBREGION);
|
|
442
|
+
subRegions.push(subregion);
|
|
443
|
+
}
|
|
444
|
+
})
|
|
445
|
+
.catch(err => {
|
|
446
|
+
this.logger.error(`convertSubGeoRegionen ${err.toString()}`);
|
|
447
|
+
})
|
|
448
|
+
.finally(() => {
|
|
449
|
+
resolve(subRegions);
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SUBREGION} ist nicht vorhanden.`);
|
|
454
|
+
resolve(subRegions);
|
|
455
|
+
}
|
|
456
|
+
}));
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
convertStandorte(cimModel, integral7, whereID, defaultValuesConfig) {
|
|
460
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
461
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STANDORT)) {
|
|
462
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STANDORT, whereID));
|
|
463
|
+
for (const i7Data of result) {
|
|
464
|
+
const i7Schluessel = integral_prefix_1.STANDORT_PRAEFIX +
|
|
465
|
+
utils_2.ueberpruefeZeichenkette(i7Data.ukz) +
|
|
466
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
467
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
468
|
+
const substation = new AMPRIONSubstation_1.AMPRIONSubstation(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.id + '', i7Schluessel, i7Data.stationsnummer);
|
|
469
|
+
let subregion = cimModel.getSubGeographicalRegion(this.integralID2UUID.get(i7Data.subgeoregion));
|
|
470
|
+
if (!subregion) {
|
|
471
|
+
const region = utils_1.createIfNotExitsGeoregionByName(cimModel, defaultValuesConfig.GeographicalRegion.name);
|
|
472
|
+
subregion = utils_1.createIfNotExitsSubGeoregionByName(cimModel, defaultValuesConfig.SubGeographicalRegion.name, region);
|
|
473
|
+
}
|
|
474
|
+
substation.subGeographicalRegion = subregion;
|
|
475
|
+
subregion.addSubstation(substation);
|
|
476
|
+
const coor = ConverterIntegral7_1.getGeoCoordinates(i7Data);
|
|
477
|
+
if ((coor === null || coor === void 0 ? void 0 : coor.length) === 2) {
|
|
478
|
+
const coordinateSystem = cimModel.getCoordinateSystemByName(this.coordinateSystem);
|
|
479
|
+
const location = new Location_1.Location(utils_1.generateUUID(), `Location of ${substation.name}`);
|
|
480
|
+
location.addPowerSystemResource(substation);
|
|
481
|
+
substation.location = location;
|
|
482
|
+
location.coordinateSystem = coordinateSystem;
|
|
483
|
+
const positionPoint = new PositionPoint_1.PositionPoint(utils_1.generateUUID());
|
|
484
|
+
positionPoint.xPosition = coor[0];
|
|
485
|
+
positionPoint.yPosition = coor[1];
|
|
486
|
+
positionPoint.location = location;
|
|
487
|
+
location.addPositionPoint(positionPoint);
|
|
488
|
+
cimModel.addLocation(location);
|
|
489
|
+
}
|
|
490
|
+
integral7.integralStandorte.set(i7Data.id, new Standort_1.StandortImpl(i7Data));
|
|
491
|
+
this.addIdMapping(i7Data.id, substation.mrid, integral_sql_1.Integral7TableNames.STANDORT);
|
|
492
|
+
cimModel.addSubstation(substation);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
else {
|
|
496
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STANDORT} ist nicht vorhanden.`);
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
covertSchaltanlagen(cimModel, integral7, standortIDs, defaultValuesConfig) {
|
|
501
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
502
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SCHALTANLAGE)) {
|
|
503
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.SCHALTANLAGE, standortIDs));
|
|
504
|
+
for (const i7Data of result) {
|
|
505
|
+
const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
|
|
506
|
+
const object = cimModel.getObject(this.integralID2UUID.get(i7Data.standort));
|
|
507
|
+
if (!object) {
|
|
508
|
+
this.logger.warn(`Schaltanlage ${i7Data.id}/${i7Data.guid} ist keinem Standort (${i7Data.standort}) zugeornet.`);
|
|
509
|
+
continue;
|
|
510
|
+
}
|
|
511
|
+
else if (!(object instanceof Substation_1.Substation)) {
|
|
512
|
+
continue;
|
|
513
|
+
}
|
|
514
|
+
const i7Schluessel = substation.description +
|
|
515
|
+
integral_prefix_1.KNOTEN_STANDORT_PRAEFIX +
|
|
516
|
+
i7Data.un +
|
|
517
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
518
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
519
|
+
const vl = new VoltageLevel_1.VoltageLevel(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname, i7Schluessel);
|
|
520
|
+
const un = utils_2.getU(i7Data.un, defaultValuesConfig.DefaultVoltage);
|
|
521
|
+
const baseVoltage = util_create_1.createBaseVoltageIfNotExists(cimModel, un);
|
|
522
|
+
vl.baseVoltage = baseVoltage;
|
|
523
|
+
cimModel.addVoltageLevel(vl);
|
|
524
|
+
this.addIdMapping(i7Data.id, vl.mrid, integral_sql_1.Integral7TableNames.SCHALTANLAGE);
|
|
525
|
+
vl.substation = substation;
|
|
526
|
+
substation.addVoltageLevel(vl);
|
|
527
|
+
const schaltanlage = new Schaltanlage_1.SchaltanlageImpl(i7Data);
|
|
528
|
+
schaltanlage.addStandort(integral7.integralStandorte.get(schaltanlage.standortid));
|
|
529
|
+
integral7.integralSchaltanlagen.set(i7Data.id, schaltanlage);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
else {
|
|
533
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SCHALTANLAGE} ist nicht vorhanden.`);
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
convertSchaltanlagenAbschnitte(cimModel, integral7, schaltanlagenIDs) {
|
|
538
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
539
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SCHALTANLAGENABSCHNITT)) {
|
|
540
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.SCHALTANLAGENABSCHNITT, schaltanlagenIDs));
|
|
541
|
+
for (const i7Data of result) {
|
|
542
|
+
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
|
|
543
|
+
if (!voltageLevel) {
|
|
544
|
+
this.logger.warn(`Schaltanlagenabschnitt ${i7Data.id} ist keiner Schaltanlage zugeornet.`);
|
|
545
|
+
continue;
|
|
546
|
+
}
|
|
547
|
+
const schaltanlagenabschnitt = new Schaltanlagenabschnitt_1.SchaltanlagenabschnittImpl(i7Data);
|
|
548
|
+
schaltanlagenabschnitt.addSchaltanlage(integral7.integralSchaltanlagen.get(schaltanlagenabschnitt.schaltanlageid));
|
|
549
|
+
integral7.integralSchaltanlagenAbschnitte.set(i7Data.id, schaltanlagenabschnitt);
|
|
550
|
+
this.addIdMapping(i7Data.id, voltageLevel.mrid, integral_sql_1.Integral7TableNames.SCHALTANLAGENABSCHNITT);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SCHALTANLAGENABSCHNITT} ist nicht vorhanden.`);
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
convertSchaltfelder(cimModel, integral7, schaltanlagenAbschnittIDs) {
|
|
559
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
560
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SCHALTFELD)) {
|
|
561
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.SCHALTFELD, schaltanlagenAbschnittIDs));
|
|
562
|
+
for (const i7Data of result) {
|
|
563
|
+
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
|
|
564
|
+
if (!voltageLevel) {
|
|
565
|
+
this.logger.warn(`Schaltfeld ${i7Data.id}/${i7Data.guid} ist keinem Schaltanlagenabschnitt zugeornet.`);
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
const i7Schluessel = voltageLevel.description +
|
|
569
|
+
integral_prefix_1.SCHALTFELD_PRAEFIX +
|
|
570
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
571
|
+
const bay = new AMPRIONBay_1.AMPRIONBay(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname, i7Schluessel);
|
|
572
|
+
bay.number = i7Data.feldnummer;
|
|
573
|
+
bay.locationID = i7Data.ips_folder_id;
|
|
574
|
+
bay.voltageLevel = voltageLevel;
|
|
575
|
+
voltageLevel.addBay(bay);
|
|
576
|
+
const sfImpl = new Schaltfeld_1.SchaltfeldImpl(i7Data);
|
|
577
|
+
integral7.integralSchaltfelder.set(i7Data.id, sfImpl);
|
|
578
|
+
if (integral7.integralSchaltanlagenAbschnitte.has(sfImpl.saabschnittid)) {
|
|
579
|
+
sfImpl.saabschnitt = integral7.integralSchaltanlagenAbschnitte.get(sfImpl.saabschnittid);
|
|
580
|
+
sfImpl.saabschnitt.schaltfelder.push(sfImpl);
|
|
581
|
+
}
|
|
582
|
+
cimModel.addBay(bay);
|
|
583
|
+
this.addIdMapping(i7Data.id, bay.mrid, integral_sql_1.Integral7TableNames.SCHALTFELD);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
else {
|
|
587
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SCHALTFELD} ist nicht vorhanden.`);
|
|
588
|
+
}
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
convertKnotenSo(cimModel, integral7, standortIDs, defaultValuesConfig) {
|
|
592
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
593
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_SO)) {
|
|
594
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.KNOTEN_SO, standortIDs));
|
|
595
|
+
for (const i7Data of result) {
|
|
596
|
+
const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
|
|
597
|
+
const vl = new VoltageLevel_1.VoltageLevel(utils_1.getUUID(i7Data.guid), substation.name + "/" + utils_2.getName(i7Data), i7Data.kurzname);
|
|
598
|
+
const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(utils_1.generateUUID(), 'Abzweig', String(i7Data.id));
|
|
599
|
+
connectivityNode.connectivityNodeContainer = vl;
|
|
600
|
+
connectivityNode.nodeNumber = i7Data.id_psse_cape;
|
|
601
|
+
vl.addConnectivityNode(connectivityNode);
|
|
602
|
+
const un = utils_2.getU(i7Data.un, defaultValuesConfig.DefaultVoltage);
|
|
603
|
+
const baseVoltage = util_create_1.createBaseVoltageIfNotExists(cimModel, un);
|
|
604
|
+
integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
|
|
605
|
+
vl.baseVoltage = baseVoltage;
|
|
606
|
+
if (substation) {
|
|
607
|
+
vl.substation = substation;
|
|
608
|
+
substation.addVoltageLevel(vl);
|
|
609
|
+
const i7Schluessel = substation.description +
|
|
610
|
+
integral_prefix_1.KNOTEN_STANDORT_PRAEFIX +
|
|
611
|
+
i7Data.un +
|
|
612
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
613
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
614
|
+
vl.description = i7Schluessel;
|
|
615
|
+
connectivityNode.description = i7Schluessel;
|
|
616
|
+
}
|
|
617
|
+
else {
|
|
618
|
+
this.logger.debug(`KnotenSo ${i7Data.id} ${vl.mrid} besitzt keine Substation.`);
|
|
619
|
+
}
|
|
620
|
+
const psrType = utils_2.getPSRType(cimModel, 'Abzweigmast');
|
|
621
|
+
vl.psrTypeUUID = psrType === null || psrType === void 0 ? void 0 : psrType.mrid;
|
|
622
|
+
const object = new KnotenSo_1.KnotenSoImpl(i7Data);
|
|
623
|
+
integral7.integralKnotenSo.set(i7Data.id, object);
|
|
624
|
+
object.standort = integral7.integralStandorte.get(object.standortid);
|
|
625
|
+
cimModel.addVoltageLevel(vl);
|
|
626
|
+
cimModel.addConnectivityNode(connectivityNode);
|
|
627
|
+
this.addIdMapping(i7Data.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.KNOTEN_SO);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
else {
|
|
631
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.KNOTEN_SO} ist nicht vorhanden.`);
|
|
632
|
+
}
|
|
633
|
+
});
|
|
634
|
+
}
|
|
635
|
+
convertSammelschienenAbschnitte(cimModel, integral7, schaltanlagenAbschnittIDs) {
|
|
636
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
637
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SAMMELSCHIENE)) {
|
|
638
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.SAMMELSCHIENE, schaltanlagenAbschnittIDs));
|
|
639
|
+
for (const i7Data of result) {
|
|
640
|
+
const busbarSection = new BusbarSection_1.BusbarSection(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
641
|
+
busbarSection.ipMax = i7Data.limit_ip;
|
|
642
|
+
busbarSection.aggregate = false;
|
|
643
|
+
const connectivityNode = new AMPRIONConnectivityNode_1.AMPRIONConnectivityNode(utils_1.generateUUID(), 'ssab cn');
|
|
644
|
+
const terminal = this.createConnection(cimModel, busbarSection, connectivityNode, PhaseCode_1.PhaseCode.ABC, true, 1);
|
|
645
|
+
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
|
|
646
|
+
connectivityNode.nodeNumber = i7Data.id_psse_cape;
|
|
647
|
+
if (voltageLevel) {
|
|
648
|
+
busbarSection.equipmentContainer = voltageLevel;
|
|
649
|
+
voltageLevel.addEquipment(busbarSection);
|
|
650
|
+
connectivityNode.connectivityNodeContainer = voltageLevel;
|
|
651
|
+
voltageLevel.addConnectivityNode(connectivityNode);
|
|
652
|
+
voltageLevel.highVoltageLimit = i7Data.umax;
|
|
653
|
+
voltageLevel.lowVoltageLimit = i7Data.umin;
|
|
654
|
+
const i7Schluessel = voltageLevel.description +
|
|
655
|
+
integral_prefix_1.SAMMELSCHIENENABSCHNITT_PRAEFIX +
|
|
656
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
657
|
+
busbarSection.description = i7Schluessel;
|
|
658
|
+
connectivityNode.description = i7Schluessel;
|
|
659
|
+
integral7.targetVoltages.set(i7Data.id, { usoll: i7Data.usoll, umin: i7Data.umin, umax: i7Data.umax });
|
|
660
|
+
}
|
|
661
|
+
else {
|
|
662
|
+
this.logger.debug('Sammelschiene ' + i7Data.id + ' besitzt keine Schaltanlage.');
|
|
663
|
+
}
|
|
664
|
+
this.addIdMapping(i7Data.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.SAMMELSCHIENE);
|
|
665
|
+
cimModel.addConnectivityNode(connectivityNode);
|
|
666
|
+
cimModel.addBusbarSection(busbarSection);
|
|
667
|
+
if (integral7.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
|
|
668
|
+
integral7.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt).ssab.push(i7Data);
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
else {
|
|
673
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SAMMELSCHIENE} ist nicht vorhanden.`);
|
|
674
|
+
}
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
convertKnotenSf(cimModel, integral7, schaltfeldIDs) {
|
|
678
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
679
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_SF)) {
|
|
680
|
+
const result = yield this.queryDataInChuncks(integral_sql_1.I7Objects.KNOTEN_SF, schaltfeldIDs);
|
|
681
|
+
for (const i7Data of result) {
|
|
682
|
+
const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.schaltfeld));
|
|
683
|
+
const connectivityNode = new ConnectivityNode_1.ConnectivityNode(utils_1.getUUID(i7Data.guid), 'knotensf cn', 'knotensf', `${bay.description}/${i7Data.bezeichner}`);
|
|
684
|
+
if (bay) {
|
|
685
|
+
connectivityNode.connectivityNodeContainer = bay;
|
|
686
|
+
bay.addConnectivityNode(connectivityNode);
|
|
687
|
+
}
|
|
688
|
+
else {
|
|
689
|
+
this.logger.debug(`KnotenSf ${i7Data.id} besitzt kein Schaltfeld.`);
|
|
690
|
+
}
|
|
691
|
+
integral7.knotenSfIDs.push(i7Data.id);
|
|
692
|
+
this.checkAnschlussIDs(i7Data.id, integral7);
|
|
693
|
+
cimModel.addConnectivityNode(connectivityNode);
|
|
694
|
+
this.addIdMapping(i7Data.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.KNOTEN_SF);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
else {
|
|
698
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.KNOTEN_SF} ist nicht vorhanden.`);
|
|
699
|
+
}
|
|
700
|
+
});
|
|
701
|
+
}
|
|
702
|
+
convertKnotenKf(cimModel, querkupplungIDs) {
|
|
703
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
704
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_KF)) {
|
|
705
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.KNOTEN_KF, querkupplungIDs));
|
|
706
|
+
for (const i7Data of result) {
|
|
707
|
+
const connectivityNode = new ConnectivityNode_1.ConnectivityNode(utils_1.getUUID(i7Data.guid), 'knotenkf cn', 'knotenkf');
|
|
708
|
+
const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.kpfeld));
|
|
709
|
+
if (bay) {
|
|
710
|
+
connectivityNode.connectivityNodeContainer = bay;
|
|
711
|
+
bay.addConnectivityNode(connectivityNode);
|
|
712
|
+
}
|
|
713
|
+
else {
|
|
714
|
+
this.logger.debug(`KnotenKf ${i7Data.id} besitzt kein Schaltfeld.`);
|
|
715
|
+
}
|
|
716
|
+
this.addIdMapping(i7Data.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.KNOTEN_KF);
|
|
717
|
+
cimModel.addConnectivityNode(connectivityNode);
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
else {
|
|
721
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.KNOTEN_KF} ist nicht vorhanden.`);
|
|
722
|
+
}
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
convertKnotenLk(cimModel, laengskupplungIDs) {
|
|
726
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
727
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_LK)) {
|
|
728
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.KNOTEN_LK, laengskupplungIDs));
|
|
729
|
+
for (const i7Data of result) {
|
|
730
|
+
const connectivityNode = new ConnectivityNode_1.ConnectivityNode(utils_1.generateUUID(), utils_2.getName(i7Data), 'KnotenLk');
|
|
731
|
+
const bay = cimModel.getBay(this.integralID2UUID.get(i7Data.lkupplung));
|
|
732
|
+
if (bay) {
|
|
733
|
+
connectivityNode.connectivityNodeContainer = bay;
|
|
734
|
+
bay.addConnectivityNode(connectivityNode);
|
|
735
|
+
}
|
|
736
|
+
else {
|
|
737
|
+
this.logger.debug(`KnotenLk ${i7Data.id} besitzt kein Schaltfeld.`);
|
|
738
|
+
}
|
|
739
|
+
this.addIdMapping(i7Data.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.KNOTEN_LK);
|
|
740
|
+
cimModel.addConnectivityNode(connectivityNode);
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
else {
|
|
744
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.KNOTEN_LK} ist nicht vorhanden.`);
|
|
745
|
+
}
|
|
746
|
+
});
|
|
747
|
+
}
|
|
748
|
+
convertSchlaufen(cimModel, integral7, knotenSoIDs) {
|
|
749
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
750
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SCHLAUFE)) {
|
|
751
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.SCHLAUFE, knotenSoIDs));
|
|
752
|
+
for (const i7Data of result) {
|
|
753
|
+
const terminal = new Terminal_1.Terminal(utils_1.generateUUID(), 'T_Schlaufe', String(i7Data.id));
|
|
754
|
+
terminal.connected = utils_2.convertToBooleanI7(i7Data.schaltzustand);
|
|
755
|
+
terminal.phases = PhaseCode_1.PhaseCode.ABC;
|
|
756
|
+
this.addIdMapping(i7Data.id, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
|
|
757
|
+
this.addIdMapping(i7Data.knotenzw, terminal.mrid, integral_sql_1.Integral7TableNames.SCHLAUFE);
|
|
758
|
+
integral7.kontenZwIDs.push(i7Data.knotenzw);
|
|
759
|
+
this.checkAnschlussIDs(i7Data.knotenzw, integral7);
|
|
760
|
+
cimModel.addTerminal(terminal);
|
|
761
|
+
const connectivityNode = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
|
|
762
|
+
if (connectivityNode) {
|
|
763
|
+
connectivityNode.addTerminal(terminal);
|
|
764
|
+
terminal.connectivityNode = connectivityNode;
|
|
765
|
+
}
|
|
766
|
+
else {
|
|
767
|
+
this.logger.debug(`Schlaufe ${i7Data.id} besitzt keinen anschluss.`);
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
else {
|
|
772
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.SCHLAUFE} ist nicht vorhanden.`);
|
|
773
|
+
}
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
convertBelastungen(cimModel, knotenSfIDs, defaultValuesConfig, targetClass) {
|
|
777
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
778
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.BELASTUNG)) {
|
|
779
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.BELASTUNG, knotenSfIDs));
|
|
780
|
+
for (const i7Data of result) {
|
|
781
|
+
const load = targetClass === cim_class_names_1.CIM_CLASS_NAMES.ConformLoad ? new ConformLoad_1.ConformLoad(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data)) : new EnergyConsumer_1.EnergyConsumer(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data));
|
|
782
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, load, i7Data);
|
|
783
|
+
const powerData = utils_2.getActiveReactivePower(i7Data);
|
|
784
|
+
load.p = powerData[0];
|
|
785
|
+
load.q = powerData[1];
|
|
786
|
+
if (targetClass === cim_class_names_1.CIM_CLASS_NAMES.ConformLoad) {
|
|
787
|
+
const conformLoadGroup = cimModel.getObjectByName(defaultValuesConfig.ConformLoadGroup.name, cim_class_names_1.CIM_CLASS_NAMES.ConformLoadGroup);
|
|
788
|
+
load.loadGroup = conformLoadGroup;
|
|
789
|
+
cimModel.addConformLoad(load);
|
|
790
|
+
}
|
|
791
|
+
else {
|
|
792
|
+
cimModel.addEnergyConsumer(load);
|
|
793
|
+
}
|
|
794
|
+
this.addIdMapping(i7Data.id, load.mrid, integral_sql_1.Integral7TableNames.BELASTUNG);
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
});
|
|
798
|
+
}
|
|
799
|
+
convertEinspeisungen(cimModel, knotenSfIDs, targetClass) {
|
|
800
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
801
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.EINSPEISUNG)) {
|
|
802
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.EINSPEISUNG, knotenSfIDs));
|
|
803
|
+
switch (targetClass) {
|
|
804
|
+
case cim_class_names_1.CIM_CLASS_NAMES.EquivalentInjection: {
|
|
805
|
+
yield this.convertEinspeisungen2EquivalentInjection(cimModel, result);
|
|
806
|
+
break;
|
|
807
|
+
}
|
|
808
|
+
case cim_class_names_1.CIM_CLASS_NAMES.ExternalNetworkInjection: {
|
|
809
|
+
yield this.convertEinspeisungen2ExternalNetworkInjection(cimModel, result);
|
|
810
|
+
break;
|
|
811
|
+
}
|
|
812
|
+
default: {
|
|
813
|
+
yield this.convertEinspeisungen2EnergySource(cimModel, result);
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
else {
|
|
818
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.EINSPEISUNG} ist nicht vorhanden.`);
|
|
819
|
+
}
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
convertGeneratoren(cimModel, knotenSfIDs, energyTypesConfig) {
|
|
823
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
824
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.GENERATOR)) {
|
|
825
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.GENERATOR, knotenSfIDs));
|
|
826
|
+
for (const i7Data of result) {
|
|
827
|
+
const synchronousMachine = new SynchronousMachine_1.SynchronousMachine(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname, i7Data.nameprimaertyp);
|
|
828
|
+
synchronousMachine.type = SynchronousMachineKind_1.SynchronousMachineKind.generator;
|
|
829
|
+
synchronousMachine.operatingMode = SynchronousMachineOperatingMode_1.SynchronousMachineOperatingMode.generator;
|
|
830
|
+
synchronousMachine.referencePriority = utils_2.isNumericI7(i7Data.einspprio) ? utils_2.convertToNumberI7(i7Data.einspprio) : undefined;
|
|
831
|
+
const maxP = utils_2.isNumericI7(i7Data.p_max) ? utils_2.convertToNumberI7(i7Data.p_max) : 0;
|
|
832
|
+
const maxQ = utils_2.isNumericI7(i7Data.q_max) ? utils_2.convertToNumberI7(i7Data.q_max) : undefined;
|
|
833
|
+
const minQ = utils_2.isNumericI7(i7Data.q_min) ? utils_2.convertToNumberI7(i7Data.q_min) : undefined;
|
|
834
|
+
const maxQvonPmax = utils_2.isNumericI7(i7Data.qmax_von_pmax) ? utils_2.convertToNumberI7(i7Data.qmax_von_pmax) : undefined;
|
|
835
|
+
const minQvonPmin = utils_2.isNumericI7(i7Data.qmin_von_pmin) ? utils_2.convertToNumberI7(i7Data.qmin_von_pmin) : undefined;
|
|
836
|
+
synchronousMachine.maxQ = maxQ ? maxQ : maxQvonPmax;
|
|
837
|
+
synchronousMachine.minQ = minQ ? minQ : minQvonPmin;
|
|
838
|
+
const powerData = utils_2.getActiveReactivePower(i7Data);
|
|
839
|
+
const p = powerData[0];
|
|
840
|
+
const q = powerData[1];
|
|
841
|
+
synchronousMachine.p = p;
|
|
842
|
+
synchronousMachine.q = q;
|
|
843
|
+
const sr = utils_2.isNumericI7(i7Data.sr) ? utils_2.convertToNumberI7(i7Data.sr) : undefined;
|
|
844
|
+
if (sr && sr >= 0) {
|
|
845
|
+
synchronousMachine.ratedS = sr;
|
|
846
|
+
}
|
|
847
|
+
else {
|
|
848
|
+
synchronousMachine.ratedS = Math.sqrt(Math.pow(maxP, 2) + Math.pow(maxQvonPmax, 2));
|
|
849
|
+
}
|
|
850
|
+
if (!utils_2.isNumericI7(synchronousMachine.ratedS)) {
|
|
851
|
+
console.log();
|
|
852
|
+
}
|
|
853
|
+
const ur = utils_2.isNumericI7(i7Data.ur) ? utils_2.convertToNumberI7(i7Data.ur) : undefined;
|
|
854
|
+
const usoll = utils_2.isNumericI7(i7Data.usoll) ? utils_2.convertToNumberI7(i7Data.usoll) : undefined;
|
|
855
|
+
synchronousMachine.ratedU = usoll ? usoll : ur;
|
|
856
|
+
synchronousMachine.aggregate = true;
|
|
857
|
+
synchronousMachine.ratedPowerFactor = utils_2.isNumericI7(i7Data.cosphir) ? utils_2.convertToNumberI7(i7Data.cosphir) : undefined;
|
|
858
|
+
synchronousMachine.r = utils_2.isNumericI7(i7Data.rg) ? utils_2.convertToNumberI7(i7Data.rg) : undefined;
|
|
859
|
+
const reactiveCapabilityCurve = new ReactiveCapabilityCurve_1.ReactiveCapabilityCurve(utils_1.generateUUID(), 'CurveData');
|
|
860
|
+
reactiveCapabilityCurve.curveStyle = CurveStyle_1.CurveStyle.straightLineYValues;
|
|
861
|
+
reactiveCapabilityCurve.xUnit = UnitSymbol_1.UnitSymbol.W;
|
|
862
|
+
reactiveCapabilityCurve.y1Unit = UnitSymbol_1.UnitSymbol.VAr;
|
|
863
|
+
reactiveCapabilityCurve.y2Unit = UnitSymbol_1.UnitSymbol.VAr;
|
|
864
|
+
const curveData1 = new CurveData_1.CurveData(utils_1.generateUUID());
|
|
865
|
+
curveData1.curve = reactiveCapabilityCurve;
|
|
866
|
+
curveData1.xvalue = i7Data.p_min;
|
|
867
|
+
curveData1.y1value = i7Data.qmin_von_pmin;
|
|
868
|
+
curveData1.y2value = i7Data.qmax_von_pmin;
|
|
869
|
+
cimModel.addCurveData(curveData1);
|
|
870
|
+
const curveData2 = new CurveData_1.CurveData(utils_1.generateUUID());
|
|
871
|
+
curveData2.curve = reactiveCapabilityCurve;
|
|
872
|
+
curveData2.xvalue = i7Data.p_max;
|
|
873
|
+
curveData2.y1value = i7Data.qmin_von_pmax;
|
|
874
|
+
curveData2.y2value = i7Data.qmax_von_pmax;
|
|
875
|
+
cimModel.addCurveData(curveData2);
|
|
876
|
+
cimModel.addReactiveCapabilityCurve(reactiveCapabilityCurve);
|
|
877
|
+
synchronousMachine.initialReactiveCapabilityCurveUUID = reactiveCapabilityCurve.mrid;
|
|
878
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
879
|
+
const regulatingControl = new RegulatingControl_1.RegulatingControl(utils_1.generateUUID(), `RG_Gen_${i7Data.id}`);
|
|
880
|
+
regulatingControl.enabled = inBetrieb;
|
|
881
|
+
regulatingControl.targetValue = usoll;
|
|
882
|
+
switch (i7Data.spannungsgeregelt) {
|
|
883
|
+
case 1: {
|
|
884
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
885
|
+
break;
|
|
886
|
+
}
|
|
887
|
+
default: {
|
|
888
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
synchronousMachine.regulatingControlUUID = regulatingControl.mrid;
|
|
892
|
+
const generatingUnitConfig = energyTypesConfig[i7Data.nameprimaertyp];
|
|
893
|
+
let generatingUnit;
|
|
894
|
+
if (generatingUnitConfig) {
|
|
895
|
+
switch (generatingUnitConfig.class) {
|
|
896
|
+
case 'ThermalGeneratingUnit': {
|
|
897
|
+
generatingUnit = new ThermalGeneratingUnit_1.ThermalGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
|
|
898
|
+
if (generatingUnitConfig.fuelType) {
|
|
899
|
+
utils_2.generateFuelType(i7Data.nameprimaertyp, generatingUnitConfig.fuelType, generatingUnit, cimModel);
|
|
900
|
+
}
|
|
901
|
+
break;
|
|
902
|
+
}
|
|
903
|
+
case 'SolarGeneratingUnit': {
|
|
904
|
+
generatingUnit = new SolarGeneratingUnit_1.SolarGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
|
|
905
|
+
break;
|
|
906
|
+
}
|
|
907
|
+
case 'WindGeneratingUnit': {
|
|
908
|
+
generatingUnit = new WindGeneratingUnit_1.WindGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
|
|
909
|
+
switch (generatingUnitConfig.fuelType) {
|
|
910
|
+
case 'onshore': {
|
|
911
|
+
generatingUnit.windGenUnitType = WindGenUnitKind_1.WindGenUnitKind.onshore;
|
|
912
|
+
break;
|
|
913
|
+
}
|
|
914
|
+
case 'offshore': {
|
|
915
|
+
generatingUnit.windGenUnitType = WindGenUnitKind_1.WindGenUnitKind.offshore;
|
|
916
|
+
break;
|
|
917
|
+
}
|
|
918
|
+
default: {
|
|
919
|
+
generatingUnit.windGenUnitType = WindGenUnitKind_1.WindGenUnitKind.onshore;
|
|
920
|
+
break;
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
break;
|
|
924
|
+
}
|
|
925
|
+
case 'NuclearGeneratingUnit': {
|
|
926
|
+
generatingUnit = new NuclearGeneratingUnit_1.NuclearGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
|
|
927
|
+
break;
|
|
928
|
+
}
|
|
929
|
+
case 'HydroGeneratingUnit': {
|
|
930
|
+
generatingUnit = new HydroGeneratingUnit_1.HydroGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
|
|
931
|
+
generatingUnit.energyConversionCapability = HydroEnergyConversionKind_1.HydroEnergyConversionKind.pumpAndGenerator;
|
|
932
|
+
break;
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
if (!generatingUnit) {
|
|
937
|
+
generatingUnit = new GeneratingUnit_1.GeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
|
|
938
|
+
}
|
|
939
|
+
generatingUnit.genControlSource = GeneratorControlSource_1.GeneratorControlSource.unavailable;
|
|
940
|
+
generatingUnit.initialP = utils_2.isNumericI7(i7Data.p0) ? utils_2.convertToNumberI7(i7Data.p0) : undefined;
|
|
941
|
+
generatingUnit.maxOperatingP = utils_2.isNumericI7(i7Data.p_max) ? utils_2.convertToNumberI7(i7Data.p_max) : undefined;
|
|
942
|
+
generatingUnit.minOperatingP = utils_2.isNumericI7(i7Data.p_min) ? utils_2.convertToNumberI7(i7Data.p_min) : undefined;
|
|
943
|
+
generatingUnit.nominalP = generatingUnit.maxOperatingP;
|
|
944
|
+
const kr = utils_2.isNumericI7(i7Data.kr) ? utils_2.convertToNumberI7(i7Data.kr) : undefined;
|
|
945
|
+
const fn = 50;
|
|
946
|
+
const pn = generatingUnit.maxOperatingP;
|
|
947
|
+
generatingUnit.governorSCD = (utils_2.isNumericI7(kr) && utils_2.isNumericI7(generatingUnit.nominalP)) ? utils_2.calculateSigma(fn, pn, kr) : undefined;
|
|
948
|
+
generatingUnit.addRotatingMachine(synchronousMachine);
|
|
949
|
+
synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
|
|
950
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, regulatingControl, generatingUnit);
|
|
951
|
+
const smtcr = new SynchronousMachineTimeConstantReactance_1.SynchronousMachineTimeConstantReactance(utils_1.generateUUID(), `smtcr_${synchronousMachine.name}`);
|
|
952
|
+
smtcr.enabled = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
953
|
+
smtcr.tpdo = utils_2.isNumericI7(i7Data.td1s) ? utils_2.convertToNumberI7(i7Data.td1s) : undefined;
|
|
954
|
+
smtcr.tppdo = utils_2.isNumericI7(i7Data.td2s) ? utils_2.convertToNumberI7(i7Data.td2s) : undefined;
|
|
955
|
+
smtcr.tpqo = utils_2.isNumericI7(i7Data.tq1s) ? utils_2.convertToNumberI7(i7Data.tq1s) : undefined;
|
|
956
|
+
smtcr.tppqo = utils_2.isNumericI7(i7Data.tq2s) ? utils_2.convertToNumberI7(i7Data.tq2s) : undefined;
|
|
957
|
+
smtcr.xDirectSync = utils_2.isNumericI7(i7Data.xdu) ? utils_2.convertToNumberI7(i7Data.xdu) : undefined;
|
|
958
|
+
smtcr.xDirectTrans = utils_2.isNumericI7(i7Data.xdu1s) ? utils_2.convertToNumberI7(i7Data.xdu1s) : undefined;
|
|
959
|
+
smtcr.xDirectSubtrans = utils_2.isNumericI7(i7Data.xdu2s) ? utils_2.convertToNumberI7(i7Data.xdu2s) : undefined;
|
|
960
|
+
smtcr.xQuadSync = utils_2.isNumericI7(i7Data.xqu) ? utils_2.convertToNumberI7(i7Data.xqu) : undefined;
|
|
961
|
+
smtcr.xQuadTrans = utils_2.isNumericI7(i7Data.xqu1s) ? utils_2.convertToNumberI7(i7Data.xqu1s) : undefined;
|
|
962
|
+
smtcr.xQuadSubtrans = utils_2.isNumericI7(i7Data.xqu2s) ? utils_2.convertToNumberI7(i7Data.xqu2s) : undefined;
|
|
963
|
+
smtcr.synchronousMachine = synchronousMachine;
|
|
964
|
+
synchronousMachine.synchronousMachineDynamics = smtcr;
|
|
965
|
+
cimModel.addRegulatingControl(regulatingControl);
|
|
966
|
+
cimModel.addGeneratingUnit(generatingUnit);
|
|
967
|
+
cimModel.addSynchronousMachine(synchronousMachine);
|
|
968
|
+
cimModel.addSynchronousMachineTimeConstantReactance(smtcr);
|
|
969
|
+
this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.GENERATOR);
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
});
|
|
973
|
+
}
|
|
974
|
+
convertKraftwerksbloecke(cimModel, knotenSfIDs, energyTypesConfig) {
|
|
975
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
976
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KWBLOCK)) {
|
|
977
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.KWBLOCK, knotenSfIDs));
|
|
978
|
+
for (const i7Data of result) {
|
|
979
|
+
const synchronousMachine = new SynchronousMachine_1.SynchronousMachine(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
980
|
+
synchronousMachine.type = SynchronousMachineKind_1.SynchronousMachineKind.generator;
|
|
981
|
+
synchronousMachine.operatingMode = SynchronousMachineOperatingMode_1.SynchronousMachineOperatingMode.generator;
|
|
982
|
+
synchronousMachine.referencePriority = utils_2.isNumericI7(i7Data.einspprio) ? utils_2.convertToNumberI7(i7Data.einspprio) : undefined;
|
|
983
|
+
const maxP = utils_2.isNumericI7(i7Data.p_max) ? utils_2.convertToNumberI7(i7Data.p_max) : 0;
|
|
984
|
+
const maxQ = utils_2.isNumericI7(i7Data.q_max) ? utils_2.convertToNumberI7(i7Data.q_max) : undefined;
|
|
985
|
+
const minQ = utils_2.isNumericI7(i7Data.q_min) ? utils_2.convertToNumberI7(i7Data.q_min) : undefined;
|
|
986
|
+
synchronousMachine.maxQ = maxQ;
|
|
987
|
+
synchronousMachine.minQ = minQ;
|
|
988
|
+
const sr = utils_2.isNumericI7(i7Data.srg) ? utils_2.convertToNumberI7(i7Data.srg) : undefined;
|
|
989
|
+
synchronousMachine.ratedS = sr;
|
|
990
|
+
const ur = utils_2.isNumericI7(i7Data.urg) ? utils_2.convertToNumberI7(i7Data.urg) : undefined;
|
|
991
|
+
synchronousMachine.ratedU = ur;
|
|
992
|
+
synchronousMachine.aggregate = true;
|
|
993
|
+
const regulatingControl = new RegulatingControl_1.RegulatingControl(utils_1.generateUUID(), `RG_KWBlock ${i7Data.id}`);
|
|
994
|
+
switch (i7Data.spannungsgeregelt) {
|
|
995
|
+
case 1: {
|
|
996
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
997
|
+
break;
|
|
998
|
+
}
|
|
999
|
+
default: {
|
|
1000
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.timeScheduled;
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
synchronousMachine.regulatingControlUUID = regulatingControl.mrid;
|
|
1004
|
+
const generatingUnitConfig = energyTypesConfig[i7Data.nameprimaertyp];
|
|
1005
|
+
let generatingUnit;
|
|
1006
|
+
if (generatingUnitConfig) {
|
|
1007
|
+
switch (generatingUnitConfig.class) {
|
|
1008
|
+
case 'ThermalGeneratingUnit': {
|
|
1009
|
+
generatingUnit = new ThermalGeneratingUnit_1.ThermalGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
|
|
1010
|
+
if (generatingUnitConfig.fuelType) {
|
|
1011
|
+
utils_2.generateFuelType(i7Data.nameprimaertyp, generatingUnitConfig.fuelType, generatingUnit, cimModel);
|
|
1012
|
+
}
|
|
1013
|
+
break;
|
|
1014
|
+
}
|
|
1015
|
+
case 'SolarGeneratingUnit': {
|
|
1016
|
+
generatingUnit = new SolarGeneratingUnit_1.SolarGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
|
|
1017
|
+
break;
|
|
1018
|
+
}
|
|
1019
|
+
case 'WindGeneratingUnit': {
|
|
1020
|
+
generatingUnit = new WindGeneratingUnit_1.WindGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
|
|
1021
|
+
switch (generatingUnitConfig.fuelType) {
|
|
1022
|
+
case 'onshore': {
|
|
1023
|
+
generatingUnit.windGenUnitType = WindGenUnitKind_1.WindGenUnitKind.onshore;
|
|
1024
|
+
break;
|
|
1025
|
+
}
|
|
1026
|
+
case 'offshore': {
|
|
1027
|
+
generatingUnit.windGenUnitType = WindGenUnitKind_1.WindGenUnitKind.offshore;
|
|
1028
|
+
break;
|
|
1029
|
+
}
|
|
1030
|
+
default: {
|
|
1031
|
+
generatingUnit.windGenUnitType = WindGenUnitKind_1.WindGenUnitKind.onshore;
|
|
1032
|
+
break;
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
break;
|
|
1036
|
+
}
|
|
1037
|
+
case 'NuclearGeneratingUnit': {
|
|
1038
|
+
generatingUnit = new NuclearGeneratingUnit_1.NuclearGeneratingUnit(utils_1.getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
|
|
1039
|
+
break;
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
if (!generatingUnit) {
|
|
1044
|
+
generatingUnit = new GeneratingUnit_1.GeneratingUnit(utils_1.getUUID(''), 'KWBlock' + i7Data.bezeichner, i7Data.kurzname);
|
|
1045
|
+
}
|
|
1046
|
+
generatingUnit.genControlSource = GeneratorControlSource_1.GeneratorControlSource.unavailable;
|
|
1047
|
+
generatingUnit.initialP = utils_2.isNumericI7(i7Data.p0) ? utils_2.convertToNumberI7(i7Data.p0) : undefined;
|
|
1048
|
+
generatingUnit.maxOperatingP = utils_2.isNumericI7(i7Data.p_max) ? utils_2.convertToNumberI7(i7Data.p_max) : undefined;
|
|
1049
|
+
generatingUnit.minOperatingP = utils_2.isNumericI7(i7Data.p_min) ? utils_2.convertToNumberI7(i7Data.p_min) : undefined;
|
|
1050
|
+
generatingUnit.nominalP = generatingUnit.maxOperatingP;
|
|
1051
|
+
const kr = utils_2.isNumericI7(i7Data.kr) ? utils_2.convertToNumberI7(i7Data.kr) : undefined;
|
|
1052
|
+
const fn = 50;
|
|
1053
|
+
const pn = generatingUnit.maxOperatingP;
|
|
1054
|
+
generatingUnit.governorSCD = (utils_2.isNumericI7(kr) && utils_2.isNumericI7(generatingUnit.nominalP)) ? utils_2.calculateSigma(fn, pn, kr) : undefined;
|
|
1055
|
+
generatingUnit.addRotatingMachine(synchronousMachine);
|
|
1056
|
+
synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
|
|
1057
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, synchronousMachine, i7Data, regulatingControl, generatingUnit);
|
|
1058
|
+
cimModel.addRegulatingControl(regulatingControl);
|
|
1059
|
+
cimModel.addGeneratingUnit(generatingUnit);
|
|
1060
|
+
cimModel.addSynchronousMachine(synchronousMachine);
|
|
1061
|
+
this.addIdMapping(i7Data.id, synchronousMachine.mrid, integral_sql_1.Integral7TableNames.KWBLOCK);
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
});
|
|
1065
|
+
}
|
|
1066
|
+
convertErsatzQuerZweige(cimModel, knotenSfIDs) {
|
|
1067
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1068
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG)) {
|
|
1069
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.ERSATZQUERZWEIG, knotenSfIDs));
|
|
1070
|
+
for (const i7Data of result) {
|
|
1071
|
+
const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1072
|
+
const usoll = utils_2.isNumericI7(i7Data.usoll) ? utils_2.convertToNumberI7(i7Data.usoll) : undefined;
|
|
1073
|
+
const kr = 0;
|
|
1074
|
+
externalNetworkInjection.governorSCD = kr;
|
|
1075
|
+
const prio = utils_2.isNumericI7(i7Data.einspprio) ? utils_2.convertToNumberI7(i7Data.einspprio) : undefined;
|
|
1076
|
+
externalNetworkInjection.referencePriority = prio;
|
|
1077
|
+
externalNetworkInjection.aggregate = true;
|
|
1078
|
+
externalNetworkInjection.ikSecond = true;
|
|
1079
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data);
|
|
1080
|
+
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
1081
|
+
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.ERSATZQUERZWEIG);
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
else {
|
|
1085
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.EINSPEISUNG} ist nicht vorhanden.`);
|
|
1086
|
+
}
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
1089
|
+
convertBoundaryInjections(cimModel, knotenSfIDs) {
|
|
1090
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1091
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.BOUNDARYINJECTION)) {
|
|
1092
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.BOUNDARYINJECTION, knotenSfIDs));
|
|
1093
|
+
for (const i7Data of result) {
|
|
1094
|
+
const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1095
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1096
|
+
const einspeisePrio = utils_2.convertToNumberI7(i7Data.einspprio);
|
|
1097
|
+
externalNetworkInjection.p = utils_2.convertToNumberI7(i7Data.p_ersatznetz) + utils_2.convertToNumberI7(i7Data.p_restnetz);
|
|
1098
|
+
externalNetworkInjection.q = utils_2.convertToNumberI7(i7Data.q_ersatznetz) + utils_2.convertToNumberI7(i7Data.q_restnetz);
|
|
1099
|
+
const kr = 0;
|
|
1100
|
+
externalNetworkInjection.governorSCD = kr;
|
|
1101
|
+
externalNetworkInjection.referencePriority = einspeisePrio;
|
|
1102
|
+
externalNetworkInjection.maxZ0ToZ1Ratio = utils_2.convertToNumberI7(i7Data.z0_z1);
|
|
1103
|
+
const regulatingControl = new RegulatingControl_1.RegulatingControl(utils_1.generateUUID(), `RG_BI_${i7Data.id}`);
|
|
1104
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
1105
|
+
regulatingControl.discrete = true;
|
|
1106
|
+
regulatingControl.enabled = inBetrieb;
|
|
1107
|
+
regulatingControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
|
|
1108
|
+
externalNetworkInjection.regulatingControl = regulatingControl;
|
|
1109
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data, regulatingControl);
|
|
1110
|
+
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
1111
|
+
cimModel.addRegulatingControl(regulatingControl);
|
|
1112
|
+
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.Integral7TableNames.BOUNDARYINJECTION);
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
else {
|
|
1116
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.EINSPEISUNG} ist nicht vorhanden.`);
|
|
1117
|
+
}
|
|
1118
|
+
});
|
|
1119
|
+
}
|
|
1120
|
+
convertKompensationsdrossel(cimModel, knotenSfIDs) {
|
|
1121
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1122
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL)) {
|
|
1123
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.KOMPENSATIONSDROSSEL, knotenSfIDs));
|
|
1124
|
+
for (const i7Data of result) {
|
|
1125
|
+
const shunt = new LinearShuntCompensator_1.LinearShuntCompensator(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname, i7Data.kommentar);
|
|
1126
|
+
shunt.normalSections = i7Data.aktstufe;
|
|
1127
|
+
shunt.maximumSections = i7Data.maxstufe;
|
|
1128
|
+
shunt.nomU = i7Data.ur;
|
|
1129
|
+
shunt.gPerSection = i7Data.pr / Math.pow(i7Data.ur, 2);
|
|
1130
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1131
|
+
const spannungsregelungLokal = utils_2.isBooleanI7(i7Data.flag_lf) ? utils_2.convertToBooleanI7(i7Data.flag_lf) : false;
|
|
1132
|
+
const spannungsregelungRemote = utils_2.isBooleanI7(i7Data.rpv_geregelt) ? utils_2.convertToBooleanI7(i7Data.rpv_geregelt) : false;
|
|
1133
|
+
let regulatingControl;
|
|
1134
|
+
if (spannungsregelungLokal || spannungsregelungRemote) {
|
|
1135
|
+
regulatingControl = new RegulatingControl_1.RegulatingControl(utils_1.generateUUID(), `RG_Kompdrossel ${i7Data.id}`);
|
|
1136
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
1137
|
+
regulatingControl.discrete = true;
|
|
1138
|
+
regulatingControl.targetDeadband = i7Data.uband;
|
|
1139
|
+
regulatingControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
|
|
1140
|
+
regulatingControl.enabled = inBetrieb;
|
|
1141
|
+
shunt.regulatingControl = regulatingControl;
|
|
1142
|
+
cimModel.addRegulatingControl(regulatingControl);
|
|
1143
|
+
}
|
|
1144
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data, regulatingControl);
|
|
1145
|
+
cimModel.addLinearShuntCompensator(shunt);
|
|
1146
|
+
this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL);
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
else {
|
|
1150
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL} ist nicht vorhanden.`);
|
|
1151
|
+
}
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
convertKompensationskondensatoren(cimModel, knotenSfIDs) {
|
|
1155
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1156
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KOMPENSATIONSKONDENSATOR)) {
|
|
1157
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.KOMPENSATIONSKONDENSATOR, knotenSfIDs));
|
|
1158
|
+
for (const i7Data of result) {
|
|
1159
|
+
const shunt = new LinearShuntCompensator_1.LinearShuntCompensator(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname, i7Data.kommentar);
|
|
1160
|
+
shunt.normalSections = i7Data.aktstufe;
|
|
1161
|
+
shunt.maximumSections = i7Data.maxstufe;
|
|
1162
|
+
shunt.nomU = i7Data.ur;
|
|
1163
|
+
shunt.gPerSection = i7Data.pr / Math.pow(i7Data.ur, 2);
|
|
1164
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1165
|
+
const spannungsregelungLokal = utils_2.isBooleanI7(i7Data.flag_lf) ? utils_2.convertToBooleanI7(i7Data.flag_lf) : false;
|
|
1166
|
+
const spannungsregelungRemote = utils_2.isBooleanI7(i7Data.rpv_geregelt) ? utils_2.convertToBooleanI7(i7Data.rpv_geregelt) : false;
|
|
1167
|
+
let regulatingControl;
|
|
1168
|
+
if (spannungsregelungLokal || spannungsregelungRemote) {
|
|
1169
|
+
regulatingControl = new RegulatingControl_1.RegulatingControl(utils_1.generateUUID(), `RG_Kompkond ${i7Data.id}`);
|
|
1170
|
+
regulatingControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
1171
|
+
regulatingControl.discrete = true;
|
|
1172
|
+
regulatingControl.enabled = inBetrieb;
|
|
1173
|
+
regulatingControl.targetDeadband = i7Data.uband;
|
|
1174
|
+
regulatingControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
|
|
1175
|
+
shunt.regulatingControl = regulatingControl;
|
|
1176
|
+
cimModel.addRegulatingControl(regulatingControl);
|
|
1177
|
+
}
|
|
1178
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, shunt, i7Data);
|
|
1179
|
+
cimModel.addLinearShuntCompensator(shunt);
|
|
1180
|
+
this.addIdMapping(i7Data.id, shunt.mrid, integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL);
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
else {
|
|
1184
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.KOMPENSATIONSDROSSEL} ist nicht vorhanden.`);
|
|
1185
|
+
}
|
|
1186
|
+
});
|
|
1187
|
+
}
|
|
1188
|
+
convertStatcom(cimModel, knotenSfIDs) {
|
|
1189
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1190
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STATCOM)) {
|
|
1191
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STATCOM, knotenSfIDs));
|
|
1192
|
+
for (const i7Data of result) {
|
|
1193
|
+
const statVarCom = new StaticVarCompensator_1.StaticVarCompensator(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1194
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1195
|
+
const regulatingControl = utils_2.createRegulatingControl(`RG_Statcom ${i7Data.id}`, inBetrieb, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage, cimModel, statVarCom);
|
|
1196
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, regulatingControl);
|
|
1197
|
+
const uref = utils_2.isNumericI7(i7Data.uref) ? utils_2.convertToNumberI7(i7Data.uref) : undefined;
|
|
1198
|
+
regulatingControl.targetValue = uref;
|
|
1199
|
+
statVarCom.voltageSetPoint = uref;
|
|
1200
|
+
const flagOS = utils_2.convertToBooleanI7(i7Data.flag_os);
|
|
1201
|
+
if (flagOS && i7Data.trafo) {
|
|
1202
|
+
const trafoUUID = this.integralID2UUID.get(i7Data.trafo);
|
|
1203
|
+
const powerTransformer = cimModel.getObject(trafoUUID);
|
|
1204
|
+
if (powerTransformer) {
|
|
1205
|
+
try {
|
|
1206
|
+
const bvNumbers = powerTransformer.powerTransformerEnds.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; });
|
|
1207
|
+
const maxBv = Math.max(...bvNumbers);
|
|
1208
|
+
const powerTransformerEnd = powerTransformer.powerTransformerEnds[bvNumbers.indexOf(maxBv)];
|
|
1209
|
+
regulatingControl.terminal = powerTransformerEnd.terminal;
|
|
1210
|
+
}
|
|
1211
|
+
catch (e) {
|
|
1212
|
+
this.logger.debug(`Statcom Zuordnung zu Trafo fehlgeschlagen.`);
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
else {
|
|
1216
|
+
this.logger.debug(`Statcom RegulatingControl ${i7Data.id} konnte dem Trafo ${i7Data.trafo} nicht zugeordnet werden.`);
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
cimModel.addStaticVarCompensator(statVarCom);
|
|
1220
|
+
this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.STATCOM);
|
|
1221
|
+
}
|
|
1222
|
+
}
|
|
1223
|
+
else {
|
|
1224
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STATCOM} ist nicht vorhanden.`);
|
|
1225
|
+
}
|
|
1226
|
+
});
|
|
1227
|
+
}
|
|
1228
|
+
convertSVC(cimModel, knotenSfIDs) {
|
|
1229
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1230
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.SVC)) {
|
|
1231
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.SVC, knotenSfIDs));
|
|
1232
|
+
for (const i7Data of result) {
|
|
1233
|
+
const statVarCom = new StaticVarCompensator_1.StaticVarCompensator(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1234
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1235
|
+
const regulatingControl = utils_2.createRegulatingControl(`RG_SVC ${i7Data.id}`, inBetrieb, UnitMultiplier_1.UnitMultiplier.k, RegulatingControlModeKind_1.RegulatingControlModeKind.voltage, cimModel, statVarCom);
|
|
1236
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, statVarCom, i7Data, regulatingControl);
|
|
1237
|
+
const uref = utils_2.isNumericI7(i7Data.uref) ? utils_2.convertToNumberI7(i7Data.uref) : undefined;
|
|
1238
|
+
regulatingControl.targetValue = uref;
|
|
1239
|
+
statVarCom.voltageSetPoint = uref;
|
|
1240
|
+
const flagOS = utils_2.convertToBooleanI7(i7Data.flag_os);
|
|
1241
|
+
if (flagOS && i7Data.trafo) {
|
|
1242
|
+
const trafoUUID = this.integralID2UUID.get(i7Data.trafo);
|
|
1243
|
+
const powerTransformer = cimModel.getObject(trafoUUID);
|
|
1244
|
+
if (powerTransformer) {
|
|
1245
|
+
try {
|
|
1246
|
+
const bvNumbers = powerTransformer.powerTransformerEnds.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; });
|
|
1247
|
+
const maxBv = Math.max(...bvNumbers);
|
|
1248
|
+
const powerTransformerEnd = powerTransformer.powerTransformerEnds[bvNumbers.indexOf(maxBv)];
|
|
1249
|
+
regulatingControl.terminal = powerTransformerEnd.terminal;
|
|
1250
|
+
}
|
|
1251
|
+
catch (e) {
|
|
1252
|
+
this.logger.debug(`Statcom Zuordnung zu Trafo fehlgeschlagen.`);
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
else {
|
|
1256
|
+
this.logger.debug(`Statcom RegulatingControl ${i7Data.id} konnte dem Trafo ${i7Data.trafo} nicht zugeordnet werden.`);
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
cimModel.addStaticVarCompensator(statVarCom);
|
|
1260
|
+
this.addIdMapping(i7Data.id, statVarCom.mrid, integral_sql_1.Integral7TableNames.SVC);
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
else {
|
|
1264
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STATCOM} ist nicht vorhanden.`);
|
|
1265
|
+
}
|
|
1266
|
+
});
|
|
1267
|
+
}
|
|
1268
|
+
convertCsConverterDC(cimModel, knotenSfIDs) {
|
|
1269
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1270
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_KLASSISCH)) {
|
|
1271
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.HGUE_KOPFSTATION_KLASSISCH, knotenSfIDs));
|
|
1272
|
+
for (const i7Data of result) {
|
|
1273
|
+
const dcConverterUnit = new DCConverterUnit_1.DCConverterUnit(utils_1.generateUUID(), 'DCConverterUnit');
|
|
1274
|
+
const acConnectivityNode = cimModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
1275
|
+
if (acConnectivityNode) {
|
|
1276
|
+
const equipmentContainer = this.determineEquipmentContainer('Substation', cimModel, acConnectivityNode.connectivityNodeContainer);
|
|
1277
|
+
if (equipmentContainer) {
|
|
1278
|
+
dcConverterUnit.name = `DCConverterUnit ${equipmentContainer.name}`;
|
|
1279
|
+
dcConverterUnit.setSubstation(equipmentContainer);
|
|
1280
|
+
}
|
|
1281
|
+
else {
|
|
1282
|
+
this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen EquipmentContainer.`);
|
|
1283
|
+
}
|
|
1284
|
+
}
|
|
1285
|
+
else {
|
|
1286
|
+
this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen ConnectivityNode.`);
|
|
1287
|
+
}
|
|
1288
|
+
const csConverter = new CsConverter_1.CsConverter(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1289
|
+
csConverter.equipmentContainer = dcConverterUnit;
|
|
1290
|
+
csConverter.baseS = i7Data.pr;
|
|
1291
|
+
csConverter.ratedUdc = i7Data.ur;
|
|
1292
|
+
csConverter.idleLoss = i7Data.p_leer;
|
|
1293
|
+
csConverter.maxUdc = csConverter.ratedUdc * 1.05;
|
|
1294
|
+
csConverter.minUdc = csConverter.ratedUdc * 0.95;
|
|
1295
|
+
csConverter.resistiveLoss = 0;
|
|
1296
|
+
csConverter.switchingLoss = 0;
|
|
1297
|
+
const regelungU = utils_2.convertToBooleanI7(i7Data.u_geregelt);
|
|
1298
|
+
const regelungP = utils_2.convertToBooleanI7(i7Data.p_geregelt);
|
|
1299
|
+
const regelungW = utils_2.convertToBooleanI7(i7Data.grad_geregelt);
|
|
1300
|
+
if (regelungU) {
|
|
1301
|
+
csConverter.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.inverter;
|
|
1302
|
+
}
|
|
1303
|
+
else if (regelungP) {
|
|
1304
|
+
csConverter.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
|
|
1305
|
+
}
|
|
1306
|
+
else {
|
|
1307
|
+
csConverter.operatingMode = CsOperatingModeKind_1.CsOperatingModeKind.rectifier;
|
|
1308
|
+
}
|
|
1309
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1310
|
+
util_create_1.createSvStatus(cimModel, inBetrieb, csConverter);
|
|
1311
|
+
if (acConnectivityNode) {
|
|
1312
|
+
this.createConnection(cimModel, csConverter, acConnectivityNode, PhaseCode_1.PhaseCode.ABC, true, 1);
|
|
1313
|
+
}
|
|
1314
|
+
else {
|
|
1315
|
+
this.logger.debug(`CsConverter ${i7Data.id} ${csConverter.mrid} besitzt keinen AC Anschluss.`);
|
|
1316
|
+
}
|
|
1317
|
+
const dcNode = new DCNode_1.DCNode(utils_1.generateUUID(), 'DCNode');
|
|
1318
|
+
dcNode.dcEquipmentContainer = dcConverterUnit;
|
|
1319
|
+
dcConverterUnit.dCNodes.set(dcNode.getUUID(), dcNode);
|
|
1320
|
+
const acDCConverterDCTerminal = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal(utils_1.generateUUID(), 'ACDCConvTerminal');
|
|
1321
|
+
acDCConverterDCTerminal.sequenceNumber = 1;
|
|
1322
|
+
acDCConverterDCTerminal.dCConductingEquipment = csConverter;
|
|
1323
|
+
csConverter.dCTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
|
|
1324
|
+
acDCConverterDCTerminal.dcNode = dcNode;
|
|
1325
|
+
dcNode.dcTerminals.set(acDCConverterDCTerminal.getUUID(), acDCConverterDCTerminal);
|
|
1326
|
+
cimModel.addDCConverterUnit(dcConverterUnit);
|
|
1327
|
+
cimModel.addCSConverter(csConverter);
|
|
1328
|
+
cimModel.addDCNode(dcNode);
|
|
1329
|
+
cimModel.addACDCConverterDCTerminal(acDCConverterDCTerminal);
|
|
1330
|
+
this.addIdMapping(i7Data.id, csConverter.mrid, integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_KLASSISCH);
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
});
|
|
1334
|
+
}
|
|
1335
|
+
convertVsConverterDC(cimModel, knotenSfIDs) {
|
|
1336
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1337
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC)) {
|
|
1338
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.HGUE_KOPFSTATION_VSC, knotenSfIDs));
|
|
1339
|
+
for (const i7Data of result) {
|
|
1340
|
+
const dcConverterUnit = new DCConverterUnit_1.DCConverterUnit(utils_1.generateUUID(), 'DCConverterUnit');
|
|
1341
|
+
const acConnectivityNode = cimModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
1342
|
+
if (acConnectivityNode) {
|
|
1343
|
+
const equipmentContainer = this.determineEquipmentContainer('Substation', cimModel, acConnectivityNode.connectivityNodeContainer);
|
|
1344
|
+
if (equipmentContainer) {
|
|
1345
|
+
dcConverterUnit.name = `DCConverterUnit ${equipmentContainer.name}`;
|
|
1346
|
+
dcConverterUnit.setSubstation(equipmentContainer);
|
|
1347
|
+
}
|
|
1348
|
+
else {
|
|
1349
|
+
this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen EquipmentContainer.`);
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
else {
|
|
1353
|
+
this.logger.debug(`DCConverterUnit ${i7Data.id} besitzt keinen ConnectivityNode.`);
|
|
1354
|
+
}
|
|
1355
|
+
const vsConverter = new VsConverter_1.VsConverter(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1356
|
+
vsConverter.equipmentContainer = dcConverterUnit;
|
|
1357
|
+
vsConverter.baseS = i7Data.pr;
|
|
1358
|
+
vsConverter.ratedUdc = i7Data.ur;
|
|
1359
|
+
vsConverter.idleLoss = i7Data.p_leer;
|
|
1360
|
+
vsConverter.maxUdc = vsConverter.ratedUdc * 1.05;
|
|
1361
|
+
vsConverter.minUdc = vsConverter.ratedUdc * 0.95;
|
|
1362
|
+
vsConverter.resistiveLoss = 0;
|
|
1363
|
+
vsConverter.switchingLoss = 0;
|
|
1364
|
+
const regelungU = utils_2.convertToBooleanI7(i7Data.u_geregelt);
|
|
1365
|
+
const regelungP = utils_2.convertToBooleanI7(i7Data.p_geregelt);
|
|
1366
|
+
const regelungW = utils_2.convertToBooleanI7(i7Data.grad_geregelt);
|
|
1367
|
+
if (regelungU) {
|
|
1368
|
+
vsConverter.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
|
|
1369
|
+
vsConverter.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
|
|
1370
|
+
}
|
|
1371
|
+
else if (regelungP) {
|
|
1372
|
+
vsConverter.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
|
|
1373
|
+
vsConverter.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
|
|
1374
|
+
}
|
|
1375
|
+
else {
|
|
1376
|
+
vsConverter.pPccControl = VsPpccControlKind_1.VsPpccControlKind.pPcc;
|
|
1377
|
+
vsConverter.qPccControl = VsQpccControlKind_1.VsQpccControlKind.powerFactorPcc;
|
|
1378
|
+
}
|
|
1379
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1380
|
+
util_create_1.createSvStatus(cimModel, inBetrieb, vsConverter);
|
|
1381
|
+
if (acConnectivityNode) {
|
|
1382
|
+
util_create_1.createConnection(cimModel, vsConverter, acConnectivityNode, PhaseCode_1.PhaseCode.ABC, 1);
|
|
1383
|
+
}
|
|
1384
|
+
else {
|
|
1385
|
+
this.logger.debug(`VsConverter ${i7Data.id} ${vsConverter.mrid} besitzt keinen AC Anschluss.`);
|
|
1386
|
+
}
|
|
1387
|
+
const dcNode = new DCNode_1.DCNode(utils_1.generateUUID(), 'DCNode');
|
|
1388
|
+
dcNode.dcEquipmentContainer = dcConverterUnit;
|
|
1389
|
+
const acDCConverterDCTerminal = new ACDCConverterDCTerminal_1.ACDCConverterDCTerminal(utils_1.generateUUID(), 'ACDCConvTerminal');
|
|
1390
|
+
acDCConverterDCTerminal.sequenceNumber = 1;
|
|
1391
|
+
acDCConverterDCTerminal.dCConductingEquipmentUUID = vsConverter.mrid;
|
|
1392
|
+
acDCConverterDCTerminal.dcNodeUUID = dcNode.mrid;
|
|
1393
|
+
cimModel.addDCConverterUnit(dcConverterUnit);
|
|
1394
|
+
cimModel.addVSConverter(vsConverter);
|
|
1395
|
+
cimModel.addDCNode(dcNode);
|
|
1396
|
+
cimModel.addACDCConverterDCTerminal(acDCConverterDCTerminal);
|
|
1397
|
+
this.addIdMapping(i7Data.id, vsConverter.mrid, integral_sql_1.Integral7TableNames.HGUE_KOPFSTATION_VSC);
|
|
1398
|
+
}
|
|
1399
|
+
}
|
|
1400
|
+
});
|
|
1401
|
+
}
|
|
1402
|
+
convertEinspeisungen2EnergySource(cimModel, result) {
|
|
1403
|
+
var _a, _b, _c;
|
|
1404
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1405
|
+
for (const i7Data of result) {
|
|
1406
|
+
try {
|
|
1407
|
+
const energySource = new EnergySource_1.EnergySource(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1408
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, energySource, i7Data);
|
|
1409
|
+
energySource.nominalVoltage = (_c = (_b = (_a = energySource.equipmentContainer) === null || _a === void 0 ? void 0 : _a.baseVoltage) === null || _b === void 0 ? void 0 : _b.nominalVoltage) === null || _c === void 0 ? void 0 : _c.value;
|
|
1410
|
+
const prio = i7Data.einspprio;
|
|
1411
|
+
const usoll = i7Data.usoll;
|
|
1412
|
+
const spannungsgeregelt = utils_2.convertToBooleanI7(i7Data.spannungsgeregelt);
|
|
1413
|
+
const powerData = utils_2.getActiveReactivePower(i7Data);
|
|
1414
|
+
energySource.activePower = powerData[0];
|
|
1415
|
+
energySource.reactivePower = powerData[1];
|
|
1416
|
+
cimModel.addEnergySource(energySource);
|
|
1417
|
+
this.addIdMapping(i7Data.id, energySource.mrid, integral_sql_1.Integral7TableNames.EINSPEISUNG);
|
|
1418
|
+
}
|
|
1419
|
+
catch (err) {
|
|
1420
|
+
this.logger.error(`Err convertEinspeisungen2EnergySource ${i7Data.id} ${err}`);
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
});
|
|
1424
|
+
}
|
|
1425
|
+
convertEinspeisungen2EquivalentInjection(cimModel, result) {
|
|
1426
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1427
|
+
for (const i7Data of result) {
|
|
1428
|
+
try {
|
|
1429
|
+
const equivalentInjection = new EquivalentInjection_1.EquivalentInjection(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1430
|
+
const prio = i7Data.einspprio;
|
|
1431
|
+
const usoll = i7Data.usoll;
|
|
1432
|
+
const powerData = utils_2.getActiveReactivePower(i7Data);
|
|
1433
|
+
equivalentInjection.p = powerData[0];
|
|
1434
|
+
equivalentInjection.q = powerData[1];
|
|
1435
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, equivalentInjection, i7Data);
|
|
1436
|
+
cimModel.addEquivalentInjection(equivalentInjection);
|
|
1437
|
+
this.addIdMapping(i7Data.id, equivalentInjection.mrid, integral_sql_1.Integral7TableNames.EINSPEISUNG);
|
|
1438
|
+
}
|
|
1439
|
+
catch (err) {
|
|
1440
|
+
this.logger.error(`Err convertEinspeisungen2EquivalentInjection ${i7Data.id} ${err}`);
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
});
|
|
1444
|
+
}
|
|
1445
|
+
convertEinspeisungen2ExternalNetworkInjection(cimModel, result) {
|
|
1446
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1447
|
+
for (const i7Data of result) {
|
|
1448
|
+
try {
|
|
1449
|
+
const externalNetworkInjection = new ExternalNetworkInjection_1.ExternalNetworkInjection(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname);
|
|
1450
|
+
const prio = i7Data.einspprio;
|
|
1451
|
+
externalNetworkInjection.referencePriority = prio;
|
|
1452
|
+
const usoll = i7Data.usoll;
|
|
1453
|
+
const powerData = utils_2.getActiveReactivePower(i7Data);
|
|
1454
|
+
externalNetworkInjection.p = powerData[0];
|
|
1455
|
+
externalNetworkInjection.q = powerData[1];
|
|
1456
|
+
this.setTopologyEnergySourceConsumerObject(cimModel, externalNetworkInjection, i7Data);
|
|
1457
|
+
cimModel.addExternalNetworkInjection(externalNetworkInjection);
|
|
1458
|
+
this.addIdMapping(i7Data.id, externalNetworkInjection.mrid, integral_sql_1.I7Objects.EINSPEISUNG);
|
|
1459
|
+
}
|
|
1460
|
+
catch (err) {
|
|
1461
|
+
this.logger.error(`Err convertEinspeisungen2EquivalentInjection ${i7Data.id} ${err}`);
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
});
|
|
1465
|
+
}
|
|
1466
|
+
setTopologyEnergySourceConsumerObject(cimModel, condEquip, i7Data, regulatingControl, generatingUnit) {
|
|
1467
|
+
var _a, _b;
|
|
1468
|
+
const inBetrieb = utils_2.convertToBooleanI7(i7Data.betrieb);
|
|
1469
|
+
util_create_1.createSvStatus(cimModel, inBetrieb, condEquip);
|
|
1470
|
+
const connectivityNode = cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
1471
|
+
if (connectivityNode) {
|
|
1472
|
+
const terminal = this.createConnection(cimModel, condEquip, connectivityNode, PhaseCode_1.PhaseCode.ABC, true);
|
|
1473
|
+
if (regulatingControl)
|
|
1474
|
+
regulatingControl.terminal = terminal;
|
|
1475
|
+
const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, connectivityNode.connectivityNodeContainer);
|
|
1476
|
+
if (equipmentContainer) {
|
|
1477
|
+
condEquip.equipmentContainer = equipmentContainer;
|
|
1478
|
+
equipmentContainer.addEquipment(condEquip);
|
|
1479
|
+
const i7Schluesel = utils_2.getDescription(equipmentContainer === null || equipmentContainer === void 0 ? void 0 : equipmentContainer.getSubstation()) +
|
|
1480
|
+
integral_prefix_1.EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
|
|
1481
|
+
condEquip.description = i7Schluesel;
|
|
1482
|
+
if (generatingUnit) {
|
|
1483
|
+
const substation = this.determineEquipmentContainer('Substation', cimModel, equipmentContainer);
|
|
1484
|
+
generatingUnit.equipmentContainer = substation;
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
else {
|
|
1488
|
+
this.logger.error(`${(_a = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _a === void 0 ? void 0 : _a.name} ${i7Data.id} besitzt keinen EquipmentContainer.`);
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
else {
|
|
1492
|
+
this.logger.error(`${(_b = condEquip === null || condEquip === void 0 ? void 0 : condEquip.constructor) === null || _b === void 0 ? void 0 : _b.name} ${i7Data.id} besitzt keinen ConnectivityNode.`);
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
convertQuerkupplungen(cimModel, integral7, schaltanlagenAbschnittIDs) {
|
|
1496
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1497
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.QUERKUPPLUNG)) {
|
|
1498
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.QUERKUPPLUNG, schaltanlagenAbschnittIDs));
|
|
1499
|
+
for (const i7Data of result) {
|
|
1500
|
+
const bay = new AMPRIONBay_1.AMPRIONBay(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), 'Querkupplung');
|
|
1501
|
+
bay.number = i7Data.feldnummer;
|
|
1502
|
+
bay.locationID = i7Data.ips_folder_id;
|
|
1503
|
+
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
|
|
1504
|
+
if (voltageLevel) {
|
|
1505
|
+
bay.voltageLevel = voltageLevel;
|
|
1506
|
+
voltageLevel.addBay(bay);
|
|
1507
|
+
const i7Schluessel = voltageLevel.description +
|
|
1508
|
+
'/QK-' +
|
|
1509
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
1510
|
+
bay.description = i7Schluessel;
|
|
1511
|
+
}
|
|
1512
|
+
else {
|
|
1513
|
+
this.logger.debug(`Querkupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
1514
|
+
}
|
|
1515
|
+
integral7.querkupplungIDs.push(i7Data.id);
|
|
1516
|
+
cimModel.addBay(bay);
|
|
1517
|
+
this.addIdMapping(i7Data.id, bay.mrid, integral_sql_1.Integral7TableNames.QUERKUPPLUNG);
|
|
1518
|
+
}
|
|
1519
|
+
}
|
|
1520
|
+
else {
|
|
1521
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
|
|
1522
|
+
}
|
|
1523
|
+
});
|
|
1524
|
+
}
|
|
1525
|
+
convertLaegskupplungen(cimModel, integral7, schaltanlagenIDs) {
|
|
1526
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1527
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG)) {
|
|
1528
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.LAENGSKUPPLUNG, schaltanlagenIDs));
|
|
1529
|
+
for (const i7Data of result) {
|
|
1530
|
+
const bay = new AMPRIONBay_1.AMPRIONBay(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.kurzname, 'Laengskupplung');
|
|
1531
|
+
const voltageLevel = cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
|
|
1532
|
+
bay.number = i7Data.feldnummer;
|
|
1533
|
+
bay.locationID = i7Data.ips_folder_id;
|
|
1534
|
+
if (voltageLevel) {
|
|
1535
|
+
bay.voltageLevel = voltageLevel;
|
|
1536
|
+
voltageLevel.addBay(bay);
|
|
1537
|
+
const i7Schluessel = voltageLevel.description +
|
|
1538
|
+
'/LK-' +
|
|
1539
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
1540
|
+
bay.description = i7Schluessel;
|
|
1541
|
+
}
|
|
1542
|
+
else {
|
|
1543
|
+
this.logger.debug(`Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
|
|
1544
|
+
}
|
|
1545
|
+
integral7.laengskupplungIDs.push(i7Data.id);
|
|
1546
|
+
this.addIdMapping(i7Data.id, bay.mrid, integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG);
|
|
1547
|
+
cimModel.addBay(bay);
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
else {
|
|
1551
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
|
|
1552
|
+
}
|
|
1553
|
+
});
|
|
1554
|
+
}
|
|
1555
|
+
convertStarreVerbindungen(cimModel, containerIDs) {
|
|
1556
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1557
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.KNOTEN_STARR)) {
|
|
1558
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.KNOTEN_STARR, containerIDs));
|
|
1559
|
+
for (const i7Data of result) {
|
|
1560
|
+
const junction = new Junction_1.Junction(utils_1.getUUID(i7Data.guid), `${i7Data.bezeichner}`, 'JNCT', 'starre Verbindung');
|
|
1561
|
+
const schaltzustand = utils_2.convertToBooleanI7(i7Data.schaltzustand);
|
|
1562
|
+
const equipmentContainer = this.determineEquipmentContainer('VoltageLevel', cimModel, cimModel.getObject(this.integralID2UUID.get(i7Data.seliste)));
|
|
1563
|
+
if (equipmentContainer) {
|
|
1564
|
+
equipmentContainer.addEquipment(junction);
|
|
1565
|
+
junction.equipmentContainer = equipmentContainer;
|
|
1566
|
+
}
|
|
1567
|
+
else {
|
|
1568
|
+
this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen EquipmentContainer.`);
|
|
1569
|
+
}
|
|
1570
|
+
const cnStart = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
|
|
1571
|
+
const cnZiel = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
|
|
1572
|
+
if (cnStart) {
|
|
1573
|
+
const terminal = this.createConnection(cimModel, junction, cnStart, PhaseCode_1.PhaseCode.ABC, true, 1);
|
|
1574
|
+
if (schaltzustand === false) {
|
|
1575
|
+
terminal.connected = schaltzustand;
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
else {
|
|
1579
|
+
this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Anfangsknoten.`);
|
|
1580
|
+
}
|
|
1581
|
+
if (cnZiel) {
|
|
1582
|
+
const terminal = this.createConnection(cimModel, junction, cnZiel, PhaseCode_1.PhaseCode.ABC, true, 2);
|
|
1583
|
+
if (schaltzustand === false) {
|
|
1584
|
+
terminal.connected = schaltzustand;
|
|
1585
|
+
}
|
|
1586
|
+
}
|
|
1587
|
+
else {
|
|
1588
|
+
this.logger.debug(`Starre verbindung ${i7Data.id} besitzt keinen Zielknoten.`);
|
|
1589
|
+
}
|
|
1590
|
+
const baseVoltage = utils_2.getTerminalUn(cimModel, junction);
|
|
1591
|
+
if (baseVoltage) {
|
|
1592
|
+
junction.baseVoltage = baseVoltage;
|
|
1593
|
+
}
|
|
1594
|
+
this.addIdMapping(i7Data.id, junction.mrid, integral_sql_1.Integral7TableNames.KNOTEN_STARR);
|
|
1595
|
+
cimModel.addJunction(junction);
|
|
1596
|
+
}
|
|
1597
|
+
}
|
|
1598
|
+
else {
|
|
1599
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.KNOTEN_STARR} ist nicht vorhanden.`);
|
|
1600
|
+
}
|
|
1601
|
+
});
|
|
1602
|
+
}
|
|
1603
|
+
convertTrennerFi3f(cimModel, containerIDs) {
|
|
1604
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1605
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TRENNERFI_3P)) {
|
|
1606
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TRENNERFI_3P, containerIDs));
|
|
1607
|
+
for (const i7Data of result) {
|
|
1608
|
+
const disconnector = new Disconnector_1.Disconnector(utils_1.generateUUID(), i7Data.bezeichner);
|
|
1609
|
+
yield this.convertSwitch(disconnector, cimModel, i7Data);
|
|
1610
|
+
cimModel.addDisconnector(disconnector);
|
|
1611
|
+
this.addIdMapping(i7Data.id, disconnector.mrid, integral_sql_1.Integral7TableNames.TRENNERFI_3P);
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
else {
|
|
1615
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TRENNERFI_3P} ist nicht vorhanden.`);
|
|
1616
|
+
}
|
|
1617
|
+
});
|
|
1618
|
+
}
|
|
1619
|
+
convertTrenner3f(cimModel, containerIDs) {
|
|
1620
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1621
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TRENNER_3P)) {
|
|
1622
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TRENNER_3P, containerIDs));
|
|
1623
|
+
for (const i7Data of result) {
|
|
1624
|
+
const disconnector = new Disconnector_1.Disconnector(utils_1.getUUID(i7Data.guid), i7Data.bezeichner);
|
|
1625
|
+
yield this.convertSwitch(disconnector, cimModel, i7Data);
|
|
1626
|
+
cimModel.addDisconnector(disconnector);
|
|
1627
|
+
this.addIdMapping(i7Data.id, disconnector.mrid, integral_sql_1.Integral7TableNames.TRENNER_3P);
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
else {
|
|
1631
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TRENNER_3P} ist nicht vorhanden.`);
|
|
1632
|
+
}
|
|
1633
|
+
});
|
|
1634
|
+
}
|
|
1635
|
+
convertLeistungsschalter(cimModel, containerIDs) {
|
|
1636
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1637
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LEISTUNGSSCHALTER)) {
|
|
1638
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.LEISTUNGSSCHALTER, containerIDs));
|
|
1639
|
+
for (const i7Data of result) {
|
|
1640
|
+
const breaker = new Breaker_1.Breaker(utils_1.generateUUID(), i7Data.bezeichner);
|
|
1641
|
+
yield this.convertSwitch(breaker, cimModel, i7Data);
|
|
1642
|
+
cimModel.addBreaker(breaker);
|
|
1643
|
+
this.addIdMapping(i7Data.id, breaker.mrid, integral_sql_1.Integral7TableNames.LEISTUNGSSCHALTER);
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
else {
|
|
1647
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.LEISTUNGSSCHALTER} ist nicht vorhanden.`);
|
|
1648
|
+
}
|
|
1649
|
+
});
|
|
1650
|
+
}
|
|
1651
|
+
convertSwitch(swtch, cimModel, i7Data) {
|
|
1652
|
+
var _a;
|
|
1653
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1654
|
+
swtch.normalOpen = !utils_2.convertToBooleanI7(i7Data.schaltzustand);
|
|
1655
|
+
swtch.open = !utils_2.convertToBooleanI7(i7Data.schaltzustand);
|
|
1656
|
+
const equipmentContainer = cimModel.objects.get(this.integralID2UUID.get(i7Data.seliste));
|
|
1657
|
+
const cnStart = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
|
|
1658
|
+
const cnZiel = cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
|
|
1659
|
+
if (equipmentContainer) {
|
|
1660
|
+
equipmentContainer.addEquipment(swtch);
|
|
1661
|
+
swtch.equipmentContainer = equipmentContainer;
|
|
1662
|
+
}
|
|
1663
|
+
else {
|
|
1664
|
+
this.logger.debug(`Schalter ${i7Data.id} besitzt keinen EquipmentContainer.`);
|
|
1665
|
+
}
|
|
1666
|
+
if (cnStart) {
|
|
1667
|
+
this.createConnection(cimModel, swtch, cnStart, PhaseCode_1.PhaseCode.ABC, true, 1);
|
|
1668
|
+
}
|
|
1669
|
+
else {
|
|
1670
|
+
this.logger.debug(`Schalter ${i7Data.id} besitzt keinen Anfangsknoten.`);
|
|
1671
|
+
}
|
|
1672
|
+
if (cnZiel) {
|
|
1673
|
+
this.createConnection(cimModel, swtch, cnZiel, PhaseCode_1.PhaseCode.ABC, true, 2);
|
|
1674
|
+
}
|
|
1675
|
+
else {
|
|
1676
|
+
this.logger.debug(`Schalter ${i7Data.id} besitzt keinen Zielknoten.`);
|
|
1677
|
+
}
|
|
1678
|
+
const voltageLevel = (_a = equipmentContainer) === null || _a === void 0 ? void 0 : _a.getVoltageLevel();
|
|
1679
|
+
const baseVoltage = voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage;
|
|
1680
|
+
if (baseVoltage) {
|
|
1681
|
+
swtch.baseVoltageUUID = baseVoltage.mrid;
|
|
1682
|
+
}
|
|
1683
|
+
else {
|
|
1684
|
+
this.logger.debug(`Schalter ${i7Data.id} besitzt keine Anlage/BaseVoltage.`);
|
|
1685
|
+
}
|
|
1686
|
+
});
|
|
1687
|
+
}
|
|
1688
|
+
convertBetriebsmitteltypenKdrossel() {
|
|
1689
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1690
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TYP_KDROSSEL)) {
|
|
1691
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TYP_KDROSSEL, []));
|
|
1692
|
+
for (const i7Data of result) {
|
|
1693
|
+
this.kdrosseltypen.set(i7Data.name, i7Data);
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
else {
|
|
1697
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TYP_KDROSSEL} ist nicht vorhanden.`);
|
|
1698
|
+
}
|
|
1699
|
+
});
|
|
1700
|
+
}
|
|
1701
|
+
convertSternpunktSchienen(cimModel, integral7, standortIDs) {
|
|
1702
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1703
|
+
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1704
|
+
const stpSchieneIDs = [];
|
|
1705
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHIENE)) {
|
|
1706
|
+
const stpSchiene = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STERNPUNKT_SCHIENE, standortIDs));
|
|
1707
|
+
for (const i7DataSchiene of stpSchiene) {
|
|
1708
|
+
try {
|
|
1709
|
+
stpSchieneIDs.push(i7DataSchiene.id);
|
|
1710
|
+
const connectivityNode = new ConnectivityNode_1.ConnectivityNode(utils_1.generateUUID(), utils_2.getName(i7DataSchiene), `StpSchiene_${i7DataSchiene.id}`);
|
|
1711
|
+
const junction = new Junction_1.Junction(utils_1.generateUUID(), `StpSchiene/${i7DataSchiene.id}`, `${i7DataSchiene.bezeichner}`);
|
|
1712
|
+
const terminal = this.createConnection(cimModel, junction, connectivityNode, PhaseCode_1.PhaseCode.N, true);
|
|
1713
|
+
integral7.sternPunktImpModel.connectivityNodes.set(connectivityNode.mrid, connectivityNode);
|
|
1714
|
+
integral7.sternPunktImpModel.junctions.set(junction.mrid, junction);
|
|
1715
|
+
integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7DataSchiene.id, junction.mrid);
|
|
1716
|
+
integral7.sternPunktImpModel.stpSchieneTerminal.set(i7DataSchiene.id, terminal);
|
|
1717
|
+
this.addIdMapping(i7DataSchiene.id, connectivityNode.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_SCHIENE);
|
|
1718
|
+
}
|
|
1719
|
+
catch (e) {
|
|
1720
|
+
this.logger.debug(e);
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
else {
|
|
1725
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STERNPUNKT_SCHIENE} ist nicht vorhanden.`);
|
|
1726
|
+
}
|
|
1727
|
+
resolve(stpSchieneIDs);
|
|
1728
|
+
}));
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
convertKdrossel(cimModel, integral7, stpScheinenID) {
|
|
1732
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1733
|
+
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1734
|
+
try {
|
|
1735
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ)) {
|
|
1736
|
+
if (stpScheinenID.length) {
|
|
1737
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STERNPUNKT_IMPEDANZ, stpScheinenID));
|
|
1738
|
+
for (const i7Data of result) {
|
|
1739
|
+
const kdType = this.kdrosseltypen.get(i7Data.nametyp);
|
|
1740
|
+
const imax = utils_2.isNumericI7(i7Data.imax) ? i7Data.imax : (utils_2.isNumericI7(kdType === null || kdType === void 0 ? void 0 : kdType.imax) ? kdType === null || kdType === void 0 ? void 0 : kdType.imax : undefined);
|
|
1741
|
+
const imin = utils_2.isNumericI7(i7Data.imin) ? i7Data.imin : (utils_2.isNumericI7(kdType === null || kdType === void 0 ? void 0 : kdType.imin) ? kdType === null || kdType === void 0 ? void 0 : kdType.imin : undefined);
|
|
1742
|
+
const connectivityNode = integral7.sternPunktImpModel.connectivityNodes.get(this.integralID2UUID.get(i7Data.anschluss));
|
|
1743
|
+
const junctionUUID = integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get((i7Data.anschluss));
|
|
1744
|
+
let conductingEquip;
|
|
1745
|
+
if (imax && imin) {
|
|
1746
|
+
const petersenCoil = new PetersenCoil_1.PetersenCoil(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.id + '');
|
|
1747
|
+
integral7.sternPunktImpModel.petersenCoils.set(petersenCoil.mrid, petersenCoil);
|
|
1748
|
+
integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, petersenCoil);
|
|
1749
|
+
this.addIdMapping(i7Data.id, petersenCoil.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
|
|
1750
|
+
conductingEquip = petersenCoil;
|
|
1751
|
+
}
|
|
1752
|
+
else {
|
|
1753
|
+
const groundingImpedance = new GroundingImpedance_1.GroundingImpedance(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.id + '');
|
|
1754
|
+
groundingImpedance.r = utils_2.isNumericI7(i7Data.rne) ? i7Data.rne : (utils_2.isNumericI7(kdType === null || kdType === void 0 ? void 0 : kdType.rne) ? kdType === null || kdType === void 0 ? void 0 : kdType.rne : undefined);
|
|
1755
|
+
groundingImpedance.x = utils_2.isNumericI7(i7Data.xne) ? i7Data.xne : (utils_2.isNumericI7(kdType === null || kdType === void 0 ? void 0 : kdType.xne) ? kdType === null || kdType === void 0 ? void 0 : kdType.xne : undefined);
|
|
1756
|
+
integral7.sternPunktImpModel.groundingImpedances.set(groundingImpedance.mrid, groundingImpedance);
|
|
1757
|
+
integral7.sternPunktImpModel.junctionUUIDstpImp.set(junctionUUID, groundingImpedance);
|
|
1758
|
+
this.addIdMapping(i7Data.id, groundingImpedance.mrid, integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ);
|
|
1759
|
+
conductingEquip = groundingImpedance;
|
|
1760
|
+
}
|
|
1761
|
+
if (connectivityNode) {
|
|
1762
|
+
const terminal = this.createConnection(cimModel, conductingEquip, connectivityNode, PhaseCode_1.PhaseCode.N, true);
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
}
|
|
1766
|
+
else {
|
|
1767
|
+
this.logger.debug(`Kdrossel Keine Sternpunktschienen vorhanden.`);
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
else {
|
|
1771
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STERNPUNKT_IMPEDANZ} ist nicht vorhanden.`);
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
catch (e) {
|
|
1775
|
+
this.logger.debug(e);
|
|
1776
|
+
}
|
|
1777
|
+
finally {
|
|
1778
|
+
resolve('');
|
|
1779
|
+
}
|
|
1780
|
+
}));
|
|
1781
|
+
});
|
|
1782
|
+
}
|
|
1783
|
+
convertStpSchaltelemente(integral7, stpScheinenID) {
|
|
1784
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1785
|
+
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1786
|
+
try {
|
|
1787
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER)) {
|
|
1788
|
+
if (stpScheinenID.length) {
|
|
1789
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STERNPUNKT_SCHALTER, stpScheinenID));
|
|
1790
|
+
for (const i7Data of result) {
|
|
1791
|
+
const terminal = integral7.sternPunktImpModel.stpSchieneTerminal.get(i7Data.eknoten);
|
|
1792
|
+
if (terminal) {
|
|
1793
|
+
terminal.connected = utils_2.isBooleanI7(i7Data.schaltzustand) ? utils_2.convertToBooleanI7(i7Data.schaltzustand) : true;
|
|
1794
|
+
}
|
|
1795
|
+
integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.id, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
|
|
1796
|
+
integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.set(i7Data.aknoten, integral7.sternPunktImpModel.stpSchieneJunctionUUIDs.get(i7Data.eknoten));
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
else {
|
|
1800
|
+
this.logger.debug(`StpSchaltelemente Keine Sternpunktschienen vorhanden.`);
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
else {
|
|
1804
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.STERNPUNKT_SCHALTER} ist nicht vorhanden.`);
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
catch (e) {
|
|
1808
|
+
this.logger.debug(e);
|
|
1809
|
+
}
|
|
1810
|
+
finally {
|
|
1811
|
+
resolve('');
|
|
1812
|
+
}
|
|
1813
|
+
}));
|
|
1814
|
+
});
|
|
1815
|
+
}
|
|
1816
|
+
convertBetriebsmitteltypenLeitung() {
|
|
1817
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1818
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TYP_FREILEITUNG)) {
|
|
1819
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TYP_FREILEITUNG, []));
|
|
1820
|
+
for (const i7Data of result) {
|
|
1821
|
+
const typ = new EVWireInfo_1.EVWireInfo(utils_1.generateUUID(), i7Data.name);
|
|
1822
|
+
this.setWireInfoProperties(typ, i7Data, 'Freileitung');
|
|
1823
|
+
this.cimModelDefault.addEVWireInfo(typ);
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
else {
|
|
1827
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TYP_FREILEITUNG} ist nicht vorhanden.`);
|
|
1828
|
+
}
|
|
1829
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TYP_KABEL)) {
|
|
1830
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TYP_KABEL, []));
|
|
1831
|
+
for (const i7Data of result) {
|
|
1832
|
+
const typ = new EVWireInfo_1.EVWireInfo(utils_1.generateUUID(), i7Data.name);
|
|
1833
|
+
this.setWireInfoProperties(typ, i7Data, 'Kabel');
|
|
1834
|
+
this.cimModelDefault.addEVWireInfo(typ);
|
|
1835
|
+
}
|
|
1836
|
+
}
|
|
1837
|
+
else {
|
|
1838
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TYP_KABEL} ist nicht vorhanden.`);
|
|
1839
|
+
}
|
|
1840
|
+
});
|
|
1841
|
+
}
|
|
1842
|
+
setWireInfoProperties(object, data, type) {
|
|
1843
|
+
object.name = data.name;
|
|
1844
|
+
object.type = type;
|
|
1845
|
+
object.voltage = data.un;
|
|
1846
|
+
object.r1 = +data.r1;
|
|
1847
|
+
object.x1 = +data.x1;
|
|
1848
|
+
object.c1 = +data.c1;
|
|
1849
|
+
object.r0 = +data.r0;
|
|
1850
|
+
object.x0 = +data.x0;
|
|
1851
|
+
object.c0 = +data.c0;
|
|
1852
|
+
object.ratedCurrent = +data.ir;
|
|
1853
|
+
}
|
|
1854
|
+
convertLeitungen(cimModel, integral7, defaultValuesConfig) {
|
|
1855
|
+
var _a, _b;
|
|
1856
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1857
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LEITUNG) && integral7.leitungsAnschlussIDs.length) {
|
|
1858
|
+
const limit = 3000;
|
|
1859
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.LEITUNG, integral7.leitungsAnschlussIDs));
|
|
1860
|
+
const leitungIDs = result.map(elem => elem.id);
|
|
1861
|
+
const leitungStromkreisabschnitt = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STROMKREISABSCHNITT, leitungIDs));
|
|
1862
|
+
for (const i7Data of result) {
|
|
1863
|
+
const stromkreisabschnitte = leitungStromkreisabschnitt.filter(elem => elem.leitung === i7Data.id);
|
|
1864
|
+
if (!(stromkreisabschnitte === null || stromkreisabschnitte === void 0 ? void 0 : stromkreisabschnitte.length))
|
|
1865
|
+
continue;
|
|
1866
|
+
const leitung = new Leitung_1.LeitungImpl(i7Data);
|
|
1867
|
+
integral7.integralLeitungen.set(i7Data.id, leitung);
|
|
1868
|
+
const i7Schluessel = integral_prefix_1.LEITUNG_PRAEFIX +
|
|
1869
|
+
utils_2.ueberpruefeZeichenkette(i7Data.ukz) +
|
|
1870
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
1871
|
+
utils_2.ueberpruefeZeichenkette(i7Data.kurzname) +
|
|
1872
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
1873
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner) +
|
|
1874
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
1875
|
+
utils_2.ueberpruefeZeichenkette(i7Data.stkabname);
|
|
1876
|
+
const name = integral_prefix_1.LEITUNG_PRAEFIX +
|
|
1877
|
+
utils_2.ueberpruefeZeichenkette(i7Data.ukz) +
|
|
1878
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
1879
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner) +
|
|
1880
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
1881
|
+
utils_2.ueberpruefeZeichenkette(i7Data.stkabname);
|
|
1882
|
+
const line = new Line_1.Line(utils_1.getUUID(i7Data.guid), i7Data.name);
|
|
1883
|
+
const acLineSegments = [];
|
|
1884
|
+
for (const stk of stromkreisabschnitte) {
|
|
1885
|
+
const acLineSegment = new ACLineSegment_1.ACLineSegment(utils_1.generateUUID(), name, i7Data.stkabname, i7Schluessel);
|
|
1886
|
+
this.setACLineSegmentProperties(cimModel, acLineSegment, stk, defaultValuesConfig);
|
|
1887
|
+
acLineSegment.description = stk.nametyp;
|
|
1888
|
+
acLineSegment.equipmentContainer = line;
|
|
1889
|
+
line.addEquipment(acLineSegment);
|
|
1890
|
+
acLineSegments.push(acLineSegment);
|
|
1891
|
+
this.addIdMapping(stk.id, acLineSegment.mrid, integral_sql_1.Integral7TableNames.LEITUNG);
|
|
1892
|
+
cimModel.addACLineSegment(acLineSegment);
|
|
1893
|
+
}
|
|
1894
|
+
cimModel.addLine(line);
|
|
1895
|
+
const anzahl = acLineSegments.length;
|
|
1896
|
+
for (let i = 0; i < anzahl - 1; i++) {
|
|
1897
|
+
const cn = new ConnectivityNode_1.ConnectivityNode(utils_1.generateUUID(), 'CN_Lt');
|
|
1898
|
+
const acLineSegment1 = acLineSegments[i];
|
|
1899
|
+
const t1 = this.createConnection(cimModel, acLineSegment1, cn, PhaseCode_1.PhaseCode.ABC, true);
|
|
1900
|
+
this.setACLineSegmentCurrentLimt(cimModel, acLineSegment1, acLineSegment1.description, t1);
|
|
1901
|
+
const acLineSegment2 = acLineSegments[i + 1];
|
|
1902
|
+
const t2 = this.createConnection(cimModel, acLineSegment2, cn, PhaseCode_1.PhaseCode.ABC, true);
|
|
1903
|
+
this.setACLineSegmentCurrentLimt(cimModel, acLineSegment2, acLineSegment2.description, t2);
|
|
1904
|
+
cn.connectivityNodeContainer = acLineSegment1.equipmentContainer;
|
|
1905
|
+
cimModel.addConnectivityNode(cn);
|
|
1906
|
+
}
|
|
1907
|
+
const start = cimModel.getObject(this.integralID2UUID.get(i7Data.aknoten));
|
|
1908
|
+
const acLineSegmentStart = acLineSegments[0];
|
|
1909
|
+
if (start) {
|
|
1910
|
+
const terminal = this.createConnection(cimModel, acLineSegmentStart, start, PhaseCode_1.PhaseCode.ABC, acLineSegmentStart.terminalsUUIDs.length + 1);
|
|
1911
|
+
this.setACLineSegmentCurrentLimt(cimModel, acLineSegmentStart, acLineSegmentStart.description, terminal);
|
|
1912
|
+
if (!acLineSegmentStart.baseVoltage) {
|
|
1913
|
+
acLineSegmentStart.baseVoltage = (_a = terminal === null || terminal === void 0 ? void 0 : terminal.connectivityNode) === null || _a === void 0 ? void 0 : _a.getBaseVoltage();
|
|
1914
|
+
;
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
else {
|
|
1918
|
+
this.logger.debug(`Leitung ${i7Data.id} ${acLineSegmentStart.mrid} besitzt keinen Anfangsknoten. ${i7Data.aknoten} ${this.integralID2UUID.get(i7Data.aknoten)}`);
|
|
1919
|
+
}
|
|
1920
|
+
const target = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
|
|
1921
|
+
const acLineSegmentZiel = acLineSegments[anzahl - 1];
|
|
1922
|
+
if (target) {
|
|
1923
|
+
const terminal = this.createConnection(cimModel, acLineSegmentZiel, target, PhaseCode_1.PhaseCode.ABC, acLineSegmentStart.terminalsUUIDs.length + 2);
|
|
1924
|
+
this.setACLineSegmentCurrentLimt(cimModel, acLineSegmentZiel, acLineSegmentZiel.description, terminal);
|
|
1925
|
+
if (!acLineSegmentZiel.baseVoltage) {
|
|
1926
|
+
acLineSegmentZiel.baseVoltage = (_b = terminal === null || terminal === void 0 ? void 0 : terminal.connectivityNode) === null || _b === void 0 ? void 0 : _b.getBaseVoltage();
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
else {
|
|
1930
|
+
this.logger.debug(`Leitung ${i7Data.id} ${acLineSegmentZiel.mrid} besitzt keinen Zielknoten.`);
|
|
1931
|
+
}
|
|
1932
|
+
const stkBaseVoltage = acLineSegments.find(elem => elem.baseVoltage !== undefined);
|
|
1933
|
+
if (!stkBaseVoltage) {
|
|
1934
|
+
this.logger.error(`Leitung ${i7Data.id}: Spannung konnte nicht bestimmt werden.`);
|
|
1935
|
+
continue;
|
|
1936
|
+
}
|
|
1937
|
+
for (const acLineSegment of acLineSegments) {
|
|
1938
|
+
acLineSegment.baseVoltage = stkBaseVoltage.baseVoltage;
|
|
1939
|
+
for (const terminal of acLineSegment.terminals.values()) {
|
|
1940
|
+
}
|
|
1941
|
+
const terminals = [...acLineSegment.terminals.values()];
|
|
1942
|
+
for (let i = 0; i < terminals.length; i++) {
|
|
1943
|
+
let terminal = terminals[i];
|
|
1944
|
+
if (terminal)
|
|
1945
|
+
terminal.sequenceNumber = i + 1;
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
const region = utils_1.createIfNotExitsGeoregionByName(cimModel, defaultValuesConfig.GeographicalRegion.name);
|
|
1949
|
+
const subregion = utils_1.createIfNotExitsSubGeoregionByName(cimModel, defaultValuesConfig.SubGeographicalRegion.name, region);
|
|
1950
|
+
line.subGeographicalRegion = subregion;
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1953
|
+
else {
|
|
1954
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.LEITUNG} ist nicht vorhanden.`);
|
|
1955
|
+
}
|
|
1956
|
+
});
|
|
1957
|
+
}
|
|
1958
|
+
convertLaengskondensatoren(cimModel, integral7, defaultValuesConfig) {
|
|
1959
|
+
var _a;
|
|
1960
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1961
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKONDENSATOR) && integral7.lKondensatorAnschlussKnotenIDs) {
|
|
1962
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.LAENGSKONDENSATOR, integral7.lKondensatorAnschlussKnotenIDs));
|
|
1963
|
+
for (const i7Data of result) {
|
|
1964
|
+
const seriesCompensator = new AMPRIONSeriesCompensator_1.AMPRIONSeriesCompensator(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.id + '', i7Data.bezeichner);
|
|
1965
|
+
const start = cimModel.getObject(this.integralID2UUID.get(i7Data.aknoten));
|
|
1966
|
+
let startTerminal;
|
|
1967
|
+
if (start) {
|
|
1968
|
+
startTerminal = this.createConnection(cimModel, seriesCompensator, start, PhaseCode_1.PhaseCode.ABC, true, 1);
|
|
1969
|
+
}
|
|
1970
|
+
else {
|
|
1971
|
+
this.logger.debug(`Längskondensator ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Anfangsknoten.`);
|
|
1972
|
+
}
|
|
1973
|
+
const target = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
|
|
1974
|
+
let targetTerminal;
|
|
1975
|
+
if (target) {
|
|
1976
|
+
targetTerminal = this.createConnection(cimModel, seriesCompensator, target, PhaseCode_1.PhaseCode.ABC, true, 1);
|
|
1977
|
+
}
|
|
1978
|
+
else {
|
|
1979
|
+
this.logger.debug(`Längskondensator ${i7Data.id} ${seriesCompensator.mrid} besitzt keinen Zielknoten.`);
|
|
1980
|
+
}
|
|
1981
|
+
const ur = utils_2.getU(i7Data.ur, defaultValuesConfig.DefaultVoltage);
|
|
1982
|
+
const baseVoltage = util_create_1.createBaseVoltageIfNotExists(cimModel, ur);
|
|
1983
|
+
const i = utils_2.isNumericI7(i7Data.ir) ? utils_2.convertToNumberI7(i7Data.ir) : undefined;
|
|
1984
|
+
const ukr = utils_2.isNumericI7(i7Data.ukr) ? utils_2.convertToNumberI7(i7Data.ukr) : undefined;
|
|
1985
|
+
if (i > 0 && ukr > 0) {
|
|
1986
|
+
const voltage = baseVoltage.nominalVoltage.value * 1000;
|
|
1987
|
+
const z = (ukr / 100) * Math.pow(voltage, 2) / (voltage * i * Math.sqrt(3));
|
|
1988
|
+
seriesCompensator.x = z;
|
|
1989
|
+
}
|
|
1990
|
+
seriesCompensator.varistorRatedCurrent = i;
|
|
1991
|
+
const terminal = startTerminal;
|
|
1992
|
+
if (terminal) {
|
|
1993
|
+
this.setConductingEquipmentCurrentLimit(cimModel, 'Rating ' + seriesCompensator.name, terminal, i);
|
|
1994
|
+
}
|
|
1995
|
+
else {
|
|
1996
|
+
this.logger.debug(`Längsdrossel ${i7Data.id} ${seriesCompensator.mrid} besitzt keine Terminalinstanz.`);
|
|
1997
|
+
}
|
|
1998
|
+
const substationUUID = this.integralID2UUID.get(i7Data.standort);
|
|
1999
|
+
const voltageLevel = this.getVoltageLevelByVoltage((_a = (cimModel.getSubstation(substationUUID))) === null || _a === void 0 ? void 0 : _a.voltageLevels, ur);
|
|
2000
|
+
if (!voltageLevel) {
|
|
2001
|
+
this.logger.debug(`Längskondensator ${seriesCompensator === null || seriesCompensator === void 0 ? void 0 : seriesCompensator.mrid} hat kein EquipmentContainer`);
|
|
2002
|
+
}
|
|
2003
|
+
if (voltageLevel) {
|
|
2004
|
+
seriesCompensator.equipmentContainer = voltageLevel;
|
|
2005
|
+
seriesCompensator.baseVoltage = voltageLevel.baseVoltage;
|
|
2006
|
+
}
|
|
2007
|
+
else {
|
|
2008
|
+
this.logger.debug(`Längskondensator ${i7Data.id} besitzt kein VoltageLevel Ur ${i7Data.ur}.`);
|
|
2009
|
+
}
|
|
2010
|
+
const psrType = utils_1.createIfNotExitsPSRType(cimModel, 'Längskondensator');
|
|
2011
|
+
seriesCompensator.psrType = psrType;
|
|
2012
|
+
cimModel.addSeriesCompensator(seriesCompensator);
|
|
2013
|
+
this.addIdMapping(i7Data.id, seriesCompensator.mrid, integral_sql_1.Integral7TableNames.LAENGSKONDENSATOR);
|
|
2014
|
+
}
|
|
2015
|
+
}
|
|
2016
|
+
else {
|
|
2017
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.LAENGSKONDENSATOR} ist nicht vorhanden.`);
|
|
2018
|
+
}
|
|
2019
|
+
});
|
|
2020
|
+
}
|
|
2021
|
+
convertDCLines(cimModel, integral7, defaultValuesConfig) {
|
|
2022
|
+
var _a, _b;
|
|
2023
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2024
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_LEITUNG) && integral7.hgueAnschlussKnotenIDs.length) {
|
|
2025
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.HGUE_LEITUNG, integral7.hgueAnschlussKnotenIDs));
|
|
2026
|
+
for (const i7Data of result) {
|
|
2027
|
+
const dcLine = new DCLine_1.DCLine(utils_1.getUUID(i7Data['guid_dcline']), 'DCLine');
|
|
2028
|
+
const i7Schluessel = integral_prefix_1.LEITUNG_PRAEFIX +
|
|
2029
|
+
utils_2.ueberpruefeZeichenkette(i7Data.ukz) +
|
|
2030
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
2031
|
+
utils_2.ueberpruefeZeichenkette(i7Data.kurzname) +
|
|
2032
|
+
integral_prefix_1.MITTIGER_PUNKT +
|
|
2033
|
+
utils_2.ueberpruefeZeichenkette(i7Data.bezeichner);
|
|
2034
|
+
const dcLineSegment = new DCLineSegment_1.DCLineSegment(utils_1.getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname, i7Schluessel);
|
|
2035
|
+
dcLineSegment.resistance = i7Data.rdc;
|
|
2036
|
+
dcLineSegment.equipmentContainer = dcLine;
|
|
2037
|
+
const bipol = utils_2.convertToBooleanI7(i7Data.bipol);
|
|
2038
|
+
const acDCConverterStart = cimModel.getObject(this.integralID2UUID.get(i7Data.anetzobjekt));
|
|
2039
|
+
const acDCConverterTarget = cimModel.getObject(this.integralID2UUID.get(i7Data.enetzobjekt));
|
|
2040
|
+
const converterUnitStart = (_a = acDCConverterStart) === null || _a === void 0 ? void 0 : _a.equipmentContainer;
|
|
2041
|
+
const converterUnitTarget = (_b = acDCConverterTarget) === null || _b === void 0 ? void 0 : _b.equipmentContainer;
|
|
2042
|
+
switch (bipol) {
|
|
2043
|
+
case (true): {
|
|
2044
|
+
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
|
|
2045
|
+
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.bipolar;
|
|
2046
|
+
}
|
|
2047
|
+
default: {
|
|
2048
|
+
converterUnitStart.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
2049
|
+
converterUnitTarget.operationMode = DCConverterOperatingModeKind_1.DCConverterOperatingModeKind.monopolarGroundReturn;
|
|
2050
|
+
}
|
|
2051
|
+
}
|
|
2052
|
+
const startDCNode = getDCNodeFromConverter(acDCConverterStart);
|
|
2053
|
+
if (startDCNode) {
|
|
2054
|
+
const dcTerminal = new DCTerminal_1.DCTerminal(utils_1.generateUUID(), 'DCTerminal_HGÜ_Leitung');
|
|
2055
|
+
dcTerminal.connected = true;
|
|
2056
|
+
dcTerminal.sequenceNumber = 1;
|
|
2057
|
+
dcTerminal.dCConductingEquipment = dcLineSegment;
|
|
2058
|
+
dcTerminal.dcNode = startDCNode;
|
|
2059
|
+
cimModel.addDCTerminal(dcTerminal);
|
|
2060
|
+
}
|
|
2061
|
+
else {
|
|
2062
|
+
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Anfangsknoten. ${i7Data.anetzobjekt} ${this.integralID2UUID.get(i7Data.anetzobjekt)}`);
|
|
2063
|
+
}
|
|
2064
|
+
const tartgetDCNode = getDCNodeFromConverter(acDCConverterTarget);
|
|
2065
|
+
if (tartgetDCNode) {
|
|
2066
|
+
const dcTerminal = new DCTerminal_1.DCTerminal(utils_1.generateUUID(), 'DCTerminal_HGÜ_Leitung');
|
|
2067
|
+
dcTerminal.connected = true;
|
|
2068
|
+
dcTerminal.sequenceNumber = 2;
|
|
2069
|
+
dcTerminal.dCConductingEquipment = dcLineSegment;
|
|
2070
|
+
dcTerminal.dcNode = tartgetDCNode;
|
|
2071
|
+
cimModel.addDCTerminal(dcTerminal);
|
|
2072
|
+
}
|
|
2073
|
+
else {
|
|
2074
|
+
this.logger.debug(`HGÜ-Leitung ${i7Data.id} ${dcLineSegment.mrid} besitzt keinen Zielknoten. ${i7Data.enetzobjekt} ${this.integralID2UUID.get(i7Data.enetzobjekt)}`);
|
|
2075
|
+
}
|
|
2076
|
+
cimModel.addDCLine(dcLine);
|
|
2077
|
+
cimModel.addDCLineSegment(dcLineSegment);
|
|
2078
|
+
this.addIdMapping(i7Data.id, dcLineSegment.mrid, integral_sql_1.Integral7TableNames.HGUE_LEITUNG);
|
|
2079
|
+
}
|
|
2080
|
+
}
|
|
2081
|
+
else {
|
|
2082
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.HGUE_LEITUNG} ist nicht vorhanden.`);
|
|
2083
|
+
}
|
|
2084
|
+
});
|
|
2085
|
+
}
|
|
2086
|
+
convertBetriebsmitteltypenTrafo() {
|
|
2087
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2088
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TYP_TRAFO2W)) {
|
|
2089
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TYP_TRAFO2W, []));
|
|
2090
|
+
for (const i7Data of result) {
|
|
2091
|
+
const typTrafo = new EVPowerTransformerInfo_1.EVPowerTransformerInfo(utils_1.generateUUID(), i7Data.name);
|
|
2092
|
+
typTrafo.ukr12 = i7Data.ukr;
|
|
2093
|
+
typTrafo.pkr12 = i7Data.pkr;
|
|
2094
|
+
typTrafo.pLeer = i7Data.p_leer;
|
|
2095
|
+
typTrafo.iLeer = i7Data.i_leer;
|
|
2096
|
+
const typWicklung1 = new EVPowerTransformerEndInfo_1.EVPowerTransformerEndInfo(utils_1.generateUUID());
|
|
2097
|
+
typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
|
|
2098
|
+
this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
|
|
2099
|
+
typWicklung1.powerTransformerInfo = typTrafo;
|
|
2100
|
+
typTrafo.addTransformerEndInfo(typWicklung1);
|
|
2101
|
+
const typWicklung2 = new EVPowerTransformerEndInfo_1.EVPowerTransformerEndInfo(utils_1.generateUUID());
|
|
2102
|
+
typWicklung2.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
|
|
2103
|
+
this.setTransformerEndInfoProperties(typWicklung2, i7Data, 2);
|
|
2104
|
+
typWicklung2.powerTransformerInfo = typTrafo;
|
|
2105
|
+
typTrafo.addTransformerEndInfo(typWicklung2);
|
|
2106
|
+
this.cimModelDefault.addEvPowerTransformerInfo(typTrafo);
|
|
2107
|
+
this.cimModelDefault.addEvPowerTransformerEndInfo(typWicklung1);
|
|
2108
|
+
this.cimModelDefault.addEvPowerTransformerEndInfo(typWicklung2);
|
|
2109
|
+
}
|
|
2110
|
+
}
|
|
2111
|
+
else {
|
|
2112
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TYP_TRAFO2W} ist nicht vorhanden.`);
|
|
2113
|
+
}
|
|
2114
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TYP_TRAFO3W)) {
|
|
2115
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TYP_TRAFO3W, []));
|
|
2116
|
+
for (const i7Data of result) {
|
|
2117
|
+
const typTrafo = new EVPowerTransformerInfo_1.EVPowerTransformerInfo(utils_1.generateUUID(), i7Data.name);
|
|
2118
|
+
typTrafo.pLeer = i7Data.p_leer;
|
|
2119
|
+
typTrafo.iLeer = i7Data.i_leer;
|
|
2120
|
+
typTrafo.ukr12 = i7Data.ukr12;
|
|
2121
|
+
typTrafo.ukr13 = i7Data.ukr13;
|
|
2122
|
+
typTrafo.ukr23 = i7Data.ukr23;
|
|
2123
|
+
typTrafo.pkr12 = i7Data.pkr12;
|
|
2124
|
+
typTrafo.pkr13 = i7Data.pkr13;
|
|
2125
|
+
typTrafo.pkr23 = i7Data.pkr23;
|
|
2126
|
+
const typWicklung1 = new EVPowerTransformerEndInfo_1.EVPowerTransformerEndInfo(utils_1.generateUUID());
|
|
2127
|
+
typWicklung1.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr1, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
|
|
2128
|
+
this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
|
|
2129
|
+
typWicklung1.powerTransformerInfo = typTrafo;
|
|
2130
|
+
typTrafo.addTransformerEndInfo(typWicklung1);
|
|
2131
|
+
const typWicklung2 = new EVPowerTransformerEndInfo_1.EVPowerTransformerEndInfo(utils_1.generateUUID());
|
|
2132
|
+
typWicklung2.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr2, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
|
|
2133
|
+
this.setTransformerEndInfoProperties(typWicklung2, i7Data, 2);
|
|
2134
|
+
typWicklung2.powerTransformerInfo = typTrafo;
|
|
2135
|
+
typTrafo.addTransformerEndInfo(typWicklung2);
|
|
2136
|
+
const typWicklung3 = new EVPowerTransformerEndInfo_1.EVPowerTransformerEndInfo(utils_1.generateUUID());
|
|
2137
|
+
typWicklung3.ratedS = new ApparentPower_1.ApparentPower(i7Data.sr3, UnitMultiplier_1.UnitMultiplier.m, UnitSymbol_1.UnitSymbol.VA);
|
|
2138
|
+
this.setTransformerEndInfoProperties(typWicklung3, i7Data, 3);
|
|
2139
|
+
typWicklung3.powerTransformerInfo = typTrafo;
|
|
2140
|
+
typTrafo.addTransformerEndInfo(typWicklung3);
|
|
2141
|
+
this.cimModelDefault.addEvPowerTransformerInfo(typTrafo);
|
|
2142
|
+
this.cimModelDefault.addEvPowerTransformerEndInfo(typWicklung1);
|
|
2143
|
+
this.cimModelDefault.addEvPowerTransformerEndInfo(typWicklung2);
|
|
2144
|
+
this.cimModelDefault.addEvPowerTransformerEndInfo(typWicklung3);
|
|
2145
|
+
}
|
|
2146
|
+
}
|
|
2147
|
+
else {
|
|
2148
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TYP_TRAFO3W} ist nicht vorhanden.`);
|
|
2149
|
+
}
|
|
2150
|
+
});
|
|
2151
|
+
}
|
|
2152
|
+
convertTrafo2W(cimModel, integral7, defaultValuesConfig, standortIDs) {
|
|
2153
|
+
var _a;
|
|
2154
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2155
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TRAFO2W)) {
|
|
2156
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TRAFO2W, standortIDs));
|
|
2157
|
+
const trafoIDs = result.map(obj => obj['id']);
|
|
2158
|
+
const sternpunktKnotenMap = new Map();
|
|
2159
|
+
for (const elem of trafoIDs) {
|
|
2160
|
+
sternpunktKnotenMap.set(elem, new Map());
|
|
2161
|
+
}
|
|
2162
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_KNOTEN) && trafoIDs.length) {
|
|
2163
|
+
const sternpunktKnotenResult = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STERNPUNKT_KNOTEN, trafoIDs));
|
|
2164
|
+
for (const spKnoten of sternpunktKnotenResult) {
|
|
2165
|
+
(_a = sternpunktKnotenMap.get(spKnoten.netzobjekt)) === null || _a === void 0 ? void 0 : _a.set(spKnoten.id, spKnoten);
|
|
2166
|
+
}
|
|
2167
|
+
}
|
|
2168
|
+
for (const i7Data of result) {
|
|
2169
|
+
const powerTransformer = new PowerTransformer_1.PowerTransformer(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.id + '', i7Data.bezeichner);
|
|
2170
|
+
const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
|
|
2171
|
+
if (substation) {
|
|
2172
|
+
powerTransformer.equipmentContainer = substation;
|
|
2173
|
+
}
|
|
2174
|
+
else {
|
|
2175
|
+
this.logger.debug(`Trafo2W ${i7Data.id} besitzt keine Umspannanlage.`);
|
|
2176
|
+
}
|
|
2177
|
+
const powerTransformerInfo = this.cimModelDefault.getPowerTransformerInfoByName(i7Data.nametyp);
|
|
2178
|
+
const powerTransformerEnd1 = new PowerTransformerEnd_1.PowerTransformerEnd(utils_1.getUUID(i7Data.guid_w1), `W1${powerTransformer.name}`);
|
|
2179
|
+
powerTransformerEnd1.endNumber = 1;
|
|
2180
|
+
const pkr = utils_2.getPkrTrafo(i7Data, powerTransformerInfo, '');
|
|
2181
|
+
const ukr = utils_2.getUkrTrafo(i7Data, powerTransformerInfo, '') / 100;
|
|
2182
|
+
const sr = utils_2.getSrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
|
|
2183
|
+
const ur = utils_2.getUrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber);
|
|
2184
|
+
const ir1 = sr * 1000000 / (ur * 1000 * Math.sqrt(3));
|
|
2185
|
+
const p0 = utils_2.isNumericI7(i7Data.p_leer) ? utils_2.convertToNumberI7(i7Data.p_leer) : 0;
|
|
2186
|
+
const iLeer = utils_2.isNumericI7(i7Data.i_leer) ? utils_2.convertToNumberI7(i7Data.i_leer) : 0;
|
|
2187
|
+
powerTransformerEnd1.r = utils_2.calculateR(ur, pkr, sr);
|
|
2188
|
+
powerTransformerEnd1.x = utils_2.calculateX(ur, ukr, sr, powerTransformerEnd1.r);
|
|
2189
|
+
powerTransformerEnd1.g = utils_2.calculateG(ur, p0) * 1000000;
|
|
2190
|
+
powerTransformerEnd1.b = utils_2.calculateB(ur, sr, iLeer, p0) * 1000000;
|
|
2191
|
+
powerTransformerEnd1.ratedU = ur;
|
|
2192
|
+
powerTransformerEnd1.ratedS = sr;
|
|
2193
|
+
const start = cimModel.getObject(this.integralID2UUID.get(i7Data.aknoten));
|
|
2194
|
+
const startTerminal = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode_1.PhaseCode.ABC, true, 1) : undefined;
|
|
2195
|
+
if (!startTerminal)
|
|
2196
|
+
this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
|
|
2197
|
+
this.setPowerTransformerEndProperties(cimModel, powerTransformerEnd1, powerTransformer, startTerminal, sternpunktKnotenMap, integral7, ir1, i7Data, defaultValuesConfig);
|
|
2198
|
+
const schaltgruppe = i7Data.schaltgr;
|
|
2199
|
+
const powerTransformerEnd2 = new PowerTransformerEnd_1.PowerTransformerEnd(utils_1.getUUID(i7Data.guid_w2), `W2${powerTransformer.name}`);
|
|
2200
|
+
powerTransformerEnd2.endNumber = 2;
|
|
2201
|
+
const sr2 = utils_2.getSrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber, false);
|
|
2202
|
+
const ur2 = utils_2.getUrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber);
|
|
2203
|
+
powerTransformerEnd2.r = 0;
|
|
2204
|
+
powerTransformerEnd2.x = 0;
|
|
2205
|
+
powerTransformerEnd2.ratedS = sr2;
|
|
2206
|
+
powerTransformerEnd2.ratedU = ur2;
|
|
2207
|
+
const ir2 = (sr * Math.pow(10, 6) / ur * 1000) / Math.sqrt(3);
|
|
2208
|
+
const ziel = cimModel.getObject(this.integralID2UUID.get(i7Data.eknoten));
|
|
2209
|
+
const zielTerminal = ziel ? this.createConnection(cimModel, powerTransformer, ziel, PhaseCode_1.PhaseCode.ABC, true, 2) : undefined;
|
|
2210
|
+
if (!zielTerminal)
|
|
2211
|
+
this.logger.debug(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
|
|
2212
|
+
this.setPowerTransformerEndProperties(cimModel, powerTransformerEnd2, powerTransformer, zielTerminal, sternpunktKnotenMap, integral7, ir2, i7Data, defaultValuesConfig);
|
|
2213
|
+
powerTransformerEnd1.connectionKind = utils_2.getSchaltgruppe(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU]);
|
|
2214
|
+
powerTransformerEnd1.phaseAngleClock = utils_2.getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU]);
|
|
2215
|
+
powerTransformerEnd2.connectionKind = utils_2.getSchaltgruppe(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU]);
|
|
2216
|
+
powerTransformerEnd2.phaseAngleClock = utils_2.getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU]);
|
|
2217
|
+
powerTransformer.sortTransformerEnd('ratedU', 'desc');
|
|
2218
|
+
const powerTransformerEnds = [powerTransformerEnd1, powerTransformerEnd2];
|
|
2219
|
+
const terminals = [startTerminal, zielTerminal];
|
|
2220
|
+
const spRegKnoten = yield this.getSpannungsbandTrafo2W(i7Data);
|
|
2221
|
+
const spannungsband = integral7.targetVoltages.get(spRegKnoten.id);
|
|
2222
|
+
const cnUUID = this.integralID2UUID.get(spRegKnoten.id);
|
|
2223
|
+
const connectivityNode = cimModel.getObject(cnUUID);
|
|
2224
|
+
for (const powerTransformerEnd of powerTransformerEnds) {
|
|
2225
|
+
const winkel = utils_2.convertToNumberI7(i7Data[`uzus_winkel_s${powerTransformerEnd.endNumber}`]);
|
|
2226
|
+
switch (i7Data.trafo_spezial) {
|
|
2227
|
+
case (1): {
|
|
2228
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2229
|
+
break;
|
|
2230
|
+
}
|
|
2231
|
+
case (2): {
|
|
2232
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2233
|
+
break;
|
|
2234
|
+
}
|
|
2235
|
+
default: {
|
|
2236
|
+
if (winkel !== 0) {
|
|
2237
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2238
|
+
}
|
|
2239
|
+
else {
|
|
2240
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2241
|
+
}
|
|
2242
|
+
break;
|
|
2243
|
+
}
|
|
2244
|
+
}
|
|
2245
|
+
}
|
|
2246
|
+
for (let i = 0; i < powerTransformer.powerTransformerEnds.length; i++) {
|
|
2247
|
+
const powerTransformerEnd = powerTransformer.powerTransformerEnds[i];
|
|
2248
|
+
powerTransformerEnd.endNumber = i + 1;
|
|
2249
|
+
}
|
|
2250
|
+
cimModel.addPowerTransformerEnd(powerTransformerEnd1);
|
|
2251
|
+
cimModel.addPowerTransformerEnd(powerTransformerEnd2);
|
|
2252
|
+
cimModel.addPowerTransformer(powerTransformer);
|
|
2253
|
+
this.addIdMapping(i7Data.id, powerTransformer.mrid, integral_sql_1.Integral7TableNames.TRAFO2W);
|
|
2254
|
+
}
|
|
2255
|
+
}
|
|
2256
|
+
else {
|
|
2257
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TRAFO2W} ist nicht vorhanden.`);
|
|
2258
|
+
}
|
|
2259
|
+
});
|
|
2260
|
+
}
|
|
2261
|
+
convertTrafo3W(cimModel, integral7, defaultValuesConfig, standortIDs) {
|
|
2262
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2263
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TRAFO3W)) {
|
|
2264
|
+
const result = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TRAFO3W, standortIDs));
|
|
2265
|
+
const trafoIDs = result.map(obj => obj['id']);
|
|
2266
|
+
const trafoWicklungen = new Map();
|
|
2267
|
+
const trafoWicklungIDs = [];
|
|
2268
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.TRAFO3_WICKLUNG) && trafoIDs.length) {
|
|
2269
|
+
const wicklungenResult = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.TRAFO3_WICKLUNG, trafoIDs));
|
|
2270
|
+
for (const wicklung of wicklungenResult) {
|
|
2271
|
+
trafoWicklungen.set(wicklung.id, wicklung);
|
|
2272
|
+
trafoWicklungIDs.push(wicklung.id);
|
|
2273
|
+
}
|
|
2274
|
+
}
|
|
2275
|
+
else {
|
|
2276
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TRAFO3_WICKLUNG} ist nicht vorhanden.`);
|
|
2277
|
+
}
|
|
2278
|
+
const sternpunktKnotenMap = new Map();
|
|
2279
|
+
if (this.isTableAvailable(integral_sql_1.Integral7TableNames.STERNPUNKT_KNOTEN) && trafoWicklungIDs.length) {
|
|
2280
|
+
const sternpunktKnotenResult = yield this.mysqlController.execQuery(integral_sql_1.getI7Query(integral_sql_1.I7Objects.STERNPUNKT_KNOTEN, trafoWicklungIDs));
|
|
2281
|
+
for (const spKnoten of sternpunktKnotenResult) {
|
|
2282
|
+
sternpunktKnotenMap.set(spKnoten.netzobjekt, spKnoten);
|
|
2283
|
+
}
|
|
2284
|
+
}
|
|
2285
|
+
for (const i7Data of result) {
|
|
2286
|
+
const powerTransformer = new PowerTransformer_1.PowerTransformer(utils_1.getUUID(i7Data.guid), utils_2.getName(i7Data), i7Data.id + '', i7Data.bezeichner);
|
|
2287
|
+
const substation = cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
|
|
2288
|
+
if (substation) {
|
|
2289
|
+
powerTransformer.equipmentContainer = substation;
|
|
2290
|
+
}
|
|
2291
|
+
else {
|
|
2292
|
+
this.logger.debug(`Trafo3W ${i7Data.id} besitzt keine Umspannanlage.`);
|
|
2293
|
+
}
|
|
2294
|
+
const powerTransformerInfo = this.cimModelDefault.getPowerTransformerInfoByName(i7Data.nametyp);
|
|
2295
|
+
const pkr12 = utils_2.getPkrTrafo(i7Data, powerTransformerInfo, '12');
|
|
2296
|
+
const pkr13 = utils_2.getPkrTrafo(i7Data, powerTransformerInfo, '13');
|
|
2297
|
+
const pkr23 = utils_2.getPkrTrafo(i7Data, powerTransformerInfo, '23');
|
|
2298
|
+
const ukr12 = utils_2.getUkrTrafo(i7Data, powerTransformerInfo, '12');
|
|
2299
|
+
const ukr13 = utils_2.getUkrTrafo(i7Data, powerTransformerInfo, '13');
|
|
2300
|
+
const ukr23 = utils_2.getUkrTrafo(i7Data, powerTransformerInfo, '23');
|
|
2301
|
+
const sr1 = utils_2.getSrTrafo(i7Data, powerTransformerInfo, 1, true);
|
|
2302
|
+
const sr2 = utils_2.getSrTrafo(i7Data, powerTransformerInfo, 2, true);
|
|
2303
|
+
const sr3 = utils_2.getSrTrafo(i7Data, powerTransformerInfo, 3, true);
|
|
2304
|
+
const ur1 = utils_2.getUrTrafo(i7Data, powerTransformerInfo, 1);
|
|
2305
|
+
const ur2 = utils_2.getUrTrafo(i7Data, powerTransformerInfo, 2);
|
|
2306
|
+
const ur3 = utils_2.getUrTrafo(i7Data, powerTransformerInfo, 3);
|
|
2307
|
+
const ir1 = sr1 * 1000000 / ((ur1 * 1000) * Math.sqrt(3));
|
|
2308
|
+
const ir2 = sr2 * 1000000 / ((ur2 * 1000) * Math.sqrt(3));
|
|
2309
|
+
const ir3 = sr3 * 1000000 / ((ur3 * 1000) * Math.sqrt(3));
|
|
2310
|
+
const pLeer = utils_2.getTrafoPleer(i7Data, powerTransformerInfo);
|
|
2311
|
+
const iLeer = utils_2.getTrafoIleer(i7Data, powerTransformerInfo);
|
|
2312
|
+
const impedanzW1 = utils_trafo3w_1.calculateImpedanzenTrafo3W(1, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, pLeer, iLeer);
|
|
2313
|
+
const impedanzW2 = utils_trafo3w_1.calculateImpedanzenTrafo3W(2, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, pLeer, iLeer);
|
|
2314
|
+
const impedanzW3 = utils_trafo3w_1.calculateImpedanzenTrafo3W(3, ur1, ur2, ur3, sr1, sr2, sr3, pkr12, pkr13, pkr23, ukr12, ukr13, ukr23, pLeer, iLeer);
|
|
2315
|
+
const schaltgruppe = i7Data.schaltgr;
|
|
2316
|
+
const powerTransformerEnd1 = new PowerTransformerEnd_1.PowerTransformerEnd(utils_1.getUUID(i7Data.guid_w1), `W1 ${powerTransformer.name}`);
|
|
2317
|
+
powerTransformerEnd1.endNumber = 1;
|
|
2318
|
+
const wicklung1 = trafoWicklungen.get(i7Data.trafowicklung3w1);
|
|
2319
|
+
const knotenUUID = this.integralID2UUID.get(wicklung1.aknoten);
|
|
2320
|
+
const start = cimModel.getObject(knotenUUID);
|
|
2321
|
+
const terminal1 = start ? this.createConnection(cimModel, powerTransformer, start, PhaseCode_1.PhaseCode.ABC, true, 1) : undefined;
|
|
2322
|
+
if (!terminal1)
|
|
2323
|
+
this.logger.debug(`PowerTransformer3W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
|
|
2324
|
+
powerTransformerEnd1.r = impedanzW1.r;
|
|
2325
|
+
powerTransformerEnd1.x = impedanzW1.x;
|
|
2326
|
+
powerTransformerEnd1.g = impedanzW1.g * 1000000;
|
|
2327
|
+
powerTransformerEnd1.b = impedanzW1.b * 1000000;
|
|
2328
|
+
powerTransformerEnd1.ratedU = ur1;
|
|
2329
|
+
powerTransformerEnd1.ratedS = sr1;
|
|
2330
|
+
this.setBaseVoltagePowerTransformerEnd(cimModel, powerTransformerEnd1);
|
|
2331
|
+
powerTransformerEnd1.powerTransformer = powerTransformer;
|
|
2332
|
+
powerTransformer.addPowerTransformerEnd(powerTransformerEnd1);
|
|
2333
|
+
if (terminal1) {
|
|
2334
|
+
powerTransformerEnd1.terminal = terminal1;
|
|
2335
|
+
this.setConductingEquipmentCurrentLimit(cimModel, 'W1 ' + powerTransformer.name, terminal1, ir1);
|
|
2336
|
+
if (sternpunktKnotenMap.has(wicklung1.id)) {
|
|
2337
|
+
this.convertTrafoGrounding(cimModel, powerTransformer, powerTransformerEnd1, integral7, sternpunktKnotenMap.get(wicklung1.id), defaultValuesConfig);
|
|
2338
|
+
}
|
|
2339
|
+
}
|
|
2340
|
+
else {
|
|
2341
|
+
this.logger.debug(`Wicklung3W ${i7Data.id} ${powerTransformerEnd1.endNumber} ${powerTransformerEnd1.mrid} besitzt keine Terminalinstanz.`);
|
|
2342
|
+
}
|
|
2343
|
+
const wicklung2 = trafoWicklungen.get(i7Data.trafowicklung3w2);
|
|
2344
|
+
const start2 = cimModel.getObject(this.integralID2UUID.get(wicklung2.aknoten));
|
|
2345
|
+
const terminal2 = start ? this.createConnection(cimModel, powerTransformer, start2, PhaseCode_1.PhaseCode.ABC, true, 2) : undefined;
|
|
2346
|
+
if (!terminal2)
|
|
2347
|
+
this.logger.debug(`PowerTransformer3W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
|
|
2348
|
+
const powerTransformerEnd2 = new PowerTransformerEnd_1.PowerTransformerEnd(utils_1.getUUID(i7Data.guid_w2), `W2 ${powerTransformer.name}`);
|
|
2349
|
+
powerTransformerEnd2.endNumber = 2;
|
|
2350
|
+
powerTransformerEnd2.r = impedanzW2.r;
|
|
2351
|
+
powerTransformerEnd2.x = impedanzW2.x;
|
|
2352
|
+
powerTransformerEnd2.g = impedanzW2.g * 1000000;
|
|
2353
|
+
powerTransformerEnd2.b = impedanzW2.b * 1000000;
|
|
2354
|
+
powerTransformerEnd2.ratedS = sr2;
|
|
2355
|
+
powerTransformerEnd2.ratedU = ur2;
|
|
2356
|
+
this.setBaseVoltagePowerTransformerEnd(cimModel, powerTransformerEnd2);
|
|
2357
|
+
powerTransformerEnd2.powerTransformer = powerTransformer;
|
|
2358
|
+
powerTransformer.addPowerTransformerEnd(powerTransformerEnd2);
|
|
2359
|
+
if (terminal2) {
|
|
2360
|
+
powerTransformerEnd2.terminal = terminal2;
|
|
2361
|
+
this.setConductingEquipmentCurrentLimit(cimModel, 'W1 ' + powerTransformer.name, terminal2, ir2);
|
|
2362
|
+
if (sternpunktKnotenMap.has(wicklung2.id)) {
|
|
2363
|
+
this.convertTrafoGrounding(cimModel, powerTransformer, powerTransformerEnd2, integral7, sternpunktKnotenMap.get(wicklung2.id), defaultValuesConfig);
|
|
2364
|
+
}
|
|
2365
|
+
}
|
|
2366
|
+
else {
|
|
2367
|
+
this.logger.debug(`Wicklung3W ${i7Data.id} ${powerTransformerEnd2.endNumber} ${powerTransformerEnd2.mrid} besitzt keine Terminalinstanz.`);
|
|
2368
|
+
}
|
|
2369
|
+
const wicklung3 = trafoWicklungen.get(i7Data.trafowicklung3w3);
|
|
2370
|
+
const start3 = cimModel.getObject(this.integralID2UUID.get(wicklung2.aknoten));
|
|
2371
|
+
const terminal3 = start ? this.createConnection(cimModel, powerTransformer, start3, PhaseCode_1.PhaseCode.ABC, true, 3) : undefined;
|
|
2372
|
+
if (!terminal3)
|
|
2373
|
+
this.logger.debug(`PowerTransformer3W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
|
|
2374
|
+
const powerTransformerEnd3 = new PowerTransformerEnd_1.PowerTransformerEnd(utils_1.getUUID(i7Data.guid_w3), `Wicklung 3 ${powerTransformer.name}`);
|
|
2375
|
+
powerTransformerEnd3.endNumber = 3;
|
|
2376
|
+
powerTransformerEnd3.r = impedanzW3.r;
|
|
2377
|
+
powerTransformerEnd3.x = impedanzW3.x;
|
|
2378
|
+
powerTransformerEnd3.g = impedanzW3.g * 1000000;
|
|
2379
|
+
powerTransformerEnd3.b = impedanzW3.b * 1000000;
|
|
2380
|
+
powerTransformerEnd3.ratedS = sr3;
|
|
2381
|
+
powerTransformerEnd3.ratedU = ur3;
|
|
2382
|
+
this.setBaseVoltagePowerTransformerEnd(cimModel, powerTransformerEnd3);
|
|
2383
|
+
powerTransformerEnd3.powerTransformer = powerTransformer;
|
|
2384
|
+
powerTransformer.addPowerTransformerEnd(powerTransformerEnd3);
|
|
2385
|
+
if (terminal3) {
|
|
2386
|
+
powerTransformerEnd3.terminal = terminal3;
|
|
2387
|
+
this.setConductingEquipmentCurrentLimit(cimModel, 'W1 ' + powerTransformer.name, terminal3, ir3);
|
|
2388
|
+
if (sternpunktKnotenMap.has(wicklung3.id)) {
|
|
2389
|
+
this.convertTrafoGrounding(cimModel, powerTransformer, powerTransformerEnd3, integral7, sternpunktKnotenMap.get(wicklung3.id), defaultValuesConfig);
|
|
2390
|
+
}
|
|
2391
|
+
}
|
|
2392
|
+
else {
|
|
2393
|
+
this.logger.debug(`Wicklung3W ${i7Data.id} ${powerTransformerEnd3.endNumber} ${powerTransformerEnd3.mrid} besitzt keine Terminalinstanz.`);
|
|
2394
|
+
}
|
|
2395
|
+
powerTransformerEnd1.connectionKind = utils_2.getSchaltgruppe(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU, powerTransformerEnd3.ratedU]);
|
|
2396
|
+
powerTransformerEnd1.phaseAngleClock = utils_2.getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU, powerTransformerEnd3.ratedU]);
|
|
2397
|
+
powerTransformerEnd2.connectionKind = utils_2.getSchaltgruppe(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU, powerTransformerEnd3.ratedU]);
|
|
2398
|
+
powerTransformerEnd2.phaseAngleClock = utils_2.getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU, powerTransformerEnd3.ratedU]);
|
|
2399
|
+
powerTransformerEnd3.connectionKind = utils_2.getSchaltgruppe(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU, powerTransformerEnd3.ratedU]);
|
|
2400
|
+
powerTransformerEnd3.phaseAngleClock = utils_2.getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd1.endNumber, [powerTransformerEnd1.ratedU, powerTransformerEnd2.ratedU, powerTransformerEnd3.ratedU]);
|
|
2401
|
+
powerTransformer.sortTransformerEnd('ratedU', 'desc');
|
|
2402
|
+
const terminals = [terminal1, terminal2, terminal3];
|
|
2403
|
+
const powerTransformerEnds = [powerTransformerEnd1, powerTransformerEnd2, powerTransformerEnd3];
|
|
2404
|
+
const spRegKnoten = yield this.getSpannungsbandTrafo2W(i7Data);
|
|
2405
|
+
const spannungsband = integral7.targetVoltages.get(spRegKnoten.id);
|
|
2406
|
+
const cnUUID = this.integralID2UUID.get(spRegKnoten.id);
|
|
2407
|
+
const connectivityNode = cimModel.getObject(cnUUID);
|
|
2408
|
+
for (const powerTransformerEnd of powerTransformerEnds) {
|
|
2409
|
+
const winkel = utils_2.convertToNumberI7(i7Data[`uzus_winkel_s${powerTransformerEnd.endNumber}`]);
|
|
2410
|
+
switch (i7Data.trafo_spezial) {
|
|
2411
|
+
case (1): {
|
|
2412
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2413
|
+
break;
|
|
2414
|
+
}
|
|
2415
|
+
case (2): {
|
|
2416
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2417
|
+
break;
|
|
2418
|
+
}
|
|
2419
|
+
default: {
|
|
2420
|
+
if (winkel !== 0) {
|
|
2421
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2422
|
+
}
|
|
2423
|
+
else {
|
|
2424
|
+
this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
|
|
2425
|
+
}
|
|
2426
|
+
break;
|
|
2427
|
+
}
|
|
2428
|
+
}
|
|
2429
|
+
}
|
|
2430
|
+
for (let i = 0; i < powerTransformer.powerTransformerEnds.length; i++) {
|
|
2431
|
+
powerTransformer.powerTransformerEnds[i].endNumber = i + 1;
|
|
2432
|
+
}
|
|
2433
|
+
cimModel.addPowerTransformer(powerTransformer);
|
|
2434
|
+
cimModel.addPowerTransformerEnd(powerTransformerEnd1);
|
|
2435
|
+
cimModel.addPowerTransformerEnd(powerTransformerEnd2);
|
|
2436
|
+
cimModel.addPowerTransformerEnd(powerTransformerEnd3);
|
|
2437
|
+
this.addIdMapping(i7Data.id, powerTransformer.mrid, integral_sql_1.Integral7TableNames.TRAFO3W);
|
|
2438
|
+
}
|
|
2439
|
+
}
|
|
2440
|
+
else {
|
|
2441
|
+
this.logger.debug(`Tabelle ${integral_sql_1.Integral7TableNames.TRAFO3W} ist nicht vorhanden.`);
|
|
2442
|
+
}
|
|
2443
|
+
});
|
|
2444
|
+
}
|
|
2445
|
+
setTransformerEndInfoProperties(wicklung, data, endNumber) {
|
|
2446
|
+
const minstufe = `minstufe_s${endNumber}`;
|
|
2447
|
+
const mittelstufe = `mittelstufe_s${endNumber}`;
|
|
2448
|
+
const maxstufe = `maxstufe_s${endNumber}`;
|
|
2449
|
+
const umax = `umax_s${endNumber}`;
|
|
2450
|
+
const umin = `umin_s${endNumber}`;
|
|
2451
|
+
const gestufte_seite = `gestufte_seite_s${endNumber}`;
|
|
2452
|
+
const ur = `ur${endNumber}`;
|
|
2453
|
+
wicklung.endNumber = endNumber;
|
|
2454
|
+
wicklung.ratedU = new Voltage_1.Voltage(data[ur], UnitMultiplier_1.UnitMultiplier.k, UnitSymbol_1.UnitSymbol.V);
|
|
2455
|
+
wicklung.tapActive = utils_2.convertToBooleanI7(data[gestufte_seite]);
|
|
2456
|
+
const tapChangerInfo = new TapChangerInfo_1.TapChangerInfo(utils_1.generateUUID(), `TapChangerInfo_${data['id']}`);
|
|
2457
|
+
tapChangerInfo.highStep = data[maxstufe];
|
|
2458
|
+
tapChangerInfo.lowStep = data[minstufe];
|
|
2459
|
+
tapChangerInfo.neutralStep = data[mittelstufe];
|
|
2460
|
+
wicklung.uMax = data[umax];
|
|
2461
|
+
wicklung.uMin = data[umin];
|
|
2462
|
+
}
|
|
2463
|
+
transformBoundaryModel(cimModel, defaultValuesConfig) {
|
|
2464
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2465
|
+
const substations = Array.from(cimModel.substations.values());
|
|
2466
|
+
for (const substation of substations) {
|
|
2467
|
+
const line = new Line_1.Line(substation.mrid, substation.name, substation.shortName, substation.description);
|
|
2468
|
+
const subregion = substation.subGeographicalRegion;
|
|
2469
|
+
line.subGeographicalRegion = subregion;
|
|
2470
|
+
subregion.addLine(line);
|
|
2471
|
+
const connectivityNodes = [];
|
|
2472
|
+
const equipments = [];
|
|
2473
|
+
const index = subregion.substations.indexOf(substation);
|
|
2474
|
+
if (index > -1)
|
|
2475
|
+
subregion.substations.splice(index, 1);
|
|
2476
|
+
substation.subGeographicalRegion = undefined;
|
|
2477
|
+
connectivityNodes.push(...substation.connectivityNodes);
|
|
2478
|
+
substation.connectivityNodes.length = 0;
|
|
2479
|
+
equipments.push(...substation.equipments);
|
|
2480
|
+
substation.equipments.length = 0;
|
|
2481
|
+
for (const voltageLevel of substation.voltageLevels) {
|
|
2482
|
+
connectivityNodes.push(...voltageLevel.connectivityNodes);
|
|
2483
|
+
equipments.push(...voltageLevel.equipments);
|
|
2484
|
+
for (const bay of voltageLevel.bays) {
|
|
2485
|
+
connectivityNodes.push(...bay.connectivityNodes);
|
|
2486
|
+
equipments.push(...bay.equipments);
|
|
2487
|
+
bay.connectivityNodes.length = 0;
|
|
2488
|
+
bay.equipments.length = 0;
|
|
2489
|
+
bay.voltageLevel = undefined;
|
|
2490
|
+
cimModel.bays.delete(bay.mrid);
|
|
2491
|
+
cimModel.removeObject(bay);
|
|
2492
|
+
}
|
|
2493
|
+
voltageLevel.bays.length = 0;
|
|
2494
|
+
voltageLevel.connectivityNodes.length = 0;
|
|
2495
|
+
voltageLevel.equipments.length = 0;
|
|
2496
|
+
voltageLevel.substation = undefined;
|
|
2497
|
+
cimModel.voltageLevels.delete(voltageLevel.mrid);
|
|
2498
|
+
cimModel.removeObject(voltageLevel);
|
|
2499
|
+
}
|
|
2500
|
+
substation.voltageLevels.length = 0;
|
|
2501
|
+
for (const equipment of equipments) {
|
|
2502
|
+
this.logger.debug(`Grenz-Standort ${substation.name} I7-ID ${this.UUID2Integral7ID.get(substation.mrid)} UUID ${substation.mrid} hat Equipment ${equipment.constructor.name} I7-ID ${this.UUID2Integral7ID.get(equipment.mrid)} UUID ${equipment.mrid}`);
|
|
2503
|
+
equipment.equipmentContainer = undefined;
|
|
2504
|
+
cimModel.removeObject(equipment);
|
|
2505
|
+
}
|
|
2506
|
+
for (const connectivityNode of connectivityNodes) {
|
|
2507
|
+
connectivityNode.connectivityNodeContainer = line;
|
|
2508
|
+
line.addConnectivityNode(connectivityNode);
|
|
2509
|
+
}
|
|
2510
|
+
cimModel.substations.delete(substation.mrid);
|
|
2511
|
+
cimModel.removeObject(substation);
|
|
2512
|
+
const junction = new Junction_1.Junction(utils_1.generateUUID(), `BD_Junc/`, `Junction`, 'Junction for Geo');
|
|
2513
|
+
junction.equipmentContainer = line;
|
|
2514
|
+
line.addEquipment(junction);
|
|
2515
|
+
const location = substation.location;
|
|
2516
|
+
if (!location)
|
|
2517
|
+
continue;
|
|
2518
|
+
location.powerSystemResources.delete(substation.mrid);
|
|
2519
|
+
location.addPowerSystemResource(junction);
|
|
2520
|
+
junction.location = location;
|
|
2521
|
+
cimModel.addJunction(junction);
|
|
2522
|
+
cimModel.addLine(line);
|
|
2523
|
+
}
|
|
2524
|
+
});
|
|
2525
|
+
}
|
|
2526
|
+
setACLineSegmentProperties(cimModel, acLineSegment, data, defaultValuesConfig) {
|
|
2527
|
+
const assetType = this.cimModelDefault.getWireInfoByName(data.nametyp);
|
|
2528
|
+
let voltage = defaultValuesConfig.DefaultVoltage;
|
|
2529
|
+
if (!acLineSegment.baseVoltage) {
|
|
2530
|
+
if (data.un && data.un > 0) {
|
|
2531
|
+
voltage = data.un;
|
|
2532
|
+
}
|
|
2533
|
+
else if (assetType === null || assetType === void 0 ? void 0 : assetType.voltage) {
|
|
2534
|
+
voltage = assetType.voltage;
|
|
2535
|
+
}
|
|
2536
|
+
const baseVoltage = util_create_1.createBaseVoltageIfNotExists(cimModel, voltage);
|
|
2537
|
+
acLineSegment.baseVoltage = baseVoltage;
|
|
2538
|
+
}
|
|
2539
|
+
if (data.laenge) {
|
|
2540
|
+
acLineSegment.length = data.laenge;
|
|
2541
|
+
}
|
|
2542
|
+
if (data.r0 && data.r0 !== 0) {
|
|
2543
|
+
acLineSegment.r0 = data.laenge <= 0 ? data.r0 : data.r0;
|
|
2544
|
+
}
|
|
2545
|
+
else {
|
|
2546
|
+
if (assetType) {
|
|
2547
|
+
acLineSegment.r0 = assetType.r0 * acLineSegment.length;
|
|
2548
|
+
}
|
|
2549
|
+
}
|
|
2550
|
+
if (data.x0 && data.x0 !== 0) {
|
|
2551
|
+
acLineSegment.x0 = data.laenge <= 0 ? data.x0 : data.x0;
|
|
2552
|
+
}
|
|
2553
|
+
else {
|
|
2554
|
+
if (assetType) {
|
|
2555
|
+
acLineSegment.x0 = assetType.x0 * acLineSegment.length;
|
|
2556
|
+
}
|
|
2557
|
+
}
|
|
2558
|
+
if (data.r1 && data.r1 !== 0) {
|
|
2559
|
+
acLineSegment.r = data.laenge <= 0 ? data.r1 : data.r1;
|
|
2560
|
+
}
|
|
2561
|
+
else {
|
|
2562
|
+
if (assetType) {
|
|
2563
|
+
acLineSegment.r = assetType.r1 * data.laenge;
|
|
2564
|
+
}
|
|
2565
|
+
}
|
|
2566
|
+
if (data.x1 && data.x1 !== 0) {
|
|
2567
|
+
acLineSegment.x = data.laenge <= 0 ? data.x1 : data.x1;
|
|
2568
|
+
}
|
|
2569
|
+
else {
|
|
2570
|
+
if (assetType) {
|
|
2571
|
+
acLineSegment.x = assetType.x1 * data.laenge;
|
|
2572
|
+
}
|
|
2573
|
+
}
|
|
2574
|
+
for (const terminal of acLineSegment.terminals.values()) {
|
|
2575
|
+
if (data.ir && data.ir !== 0) {
|
|
2576
|
+
this.setConductingEquipmentCurrentLimit(cimModel, acLineSegment.name, terminal, data.ir);
|
|
2577
|
+
}
|
|
2578
|
+
else if (assetType && assetType.ratedCurrent && assetType.ratedCurrent !== 0) {
|
|
2579
|
+
this.setConductingEquipmentCurrentLimit(cimModel, acLineSegment.name, terminal, assetType.ratedCurrent);
|
|
2580
|
+
}
|
|
2581
|
+
}
|
|
2582
|
+
const psrType = utils_1.createIfNotExitsPSRType(cimModel, data.typ);
|
|
2583
|
+
acLineSegment.psrTypeUUID = psrType.mrid;
|
|
2584
|
+
}
|
|
2585
|
+
setConductingEquipmentCurrentLimit(cimModel, name, terminal, ir) {
|
|
2586
|
+
const currentLimit = new CurrentLimit_1.CurrentLimit(utils_1.generateUUID(), `${name}`);
|
|
2587
|
+
cimModel.addCurrentLimit(currentLimit);
|
|
2588
|
+
currentLimit.value = new CurrentFlow_1.CurrentFlow(ir, UnitMultiplier_1.UnitMultiplier.none, UnitSymbol_1.UnitSymbol.A);
|
|
2589
|
+
const operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(utils_1.generateUUID(), `${name}`);
|
|
2590
|
+
cimModel.addOperationalLimitSet(operationalLimitSet);
|
|
2591
|
+
operationalLimitSet.addOperationalLimit(currentLimit);
|
|
2592
|
+
currentLimit.operationalLimitSet = operationalLimitSet;
|
|
2593
|
+
const operationalLimitType = this.createIfNotExistOperationalLimitType(cimModel, 'patl', LimitTypeKind_1.LimitTypeKind.patl, OperationalLimitDirectionKind_1.OperationalLimitDirectionKind.absoluteValue);
|
|
2594
|
+
operationalLimitType.addOperationalLimit(currentLimit);
|
|
2595
|
+
currentLimit.operationalLimitType = operationalLimitType;
|
|
2596
|
+
operationalLimitSet.terminal = terminal;
|
|
2597
|
+
}
|
|
2598
|
+
setVoltageLimit(cimModel, name, terminal, voltage, type, direction) {
|
|
2599
|
+
const voltageLimit = new VoltageLimit_1.VoltageLimit(utils_1.generateUUID(), `${name}`);
|
|
2600
|
+
cimModel.addVoltageLimit(voltageLimit);
|
|
2601
|
+
voltageLimit.value = voltage;
|
|
2602
|
+
const operationalLimitSet = new OperationalLimitSet_1.OperationalLimitSet(utils_1.generateUUID(), `${name}`);
|
|
2603
|
+
cimModel.addOperationalLimitSet(operationalLimitSet);
|
|
2604
|
+
operationalLimitSet.addOperationalLimit(voltageLimit);
|
|
2605
|
+
voltageLimit.operationalLimitSet = operationalLimitSet;
|
|
2606
|
+
const operationalLimitType = this.createIfNotExistOperationalLimitType(cimModel, name, type, direction);
|
|
2607
|
+
operationalLimitType.addOperationalLimit(voltageLimit);
|
|
2608
|
+
voltageLimit.operationalLimitType = operationalLimitType;
|
|
2609
|
+
operationalLimitSet.terminal = terminal;
|
|
2610
|
+
}
|
|
2611
|
+
setACLineSegmentCurrentLimt(cimModel, acLineSegment, nametyp, terminal) {
|
|
2612
|
+
const assetType = this.cimModelDefault.getWireInfoByName(nametyp);
|
|
2613
|
+
if (assetType && assetType.ratedCurrent && assetType.ratedCurrent !== 0) {
|
|
2614
|
+
this.setConductingEquipmentCurrentLimit(cimModel, acLineSegment.name, terminal, assetType.ratedCurrent);
|
|
2615
|
+
}
|
|
2616
|
+
}
|
|
2617
|
+
createIfNotExistOperationalLimitType(cimModel, name, type, direction) {
|
|
2618
|
+
let operationalLimitType = cimModel.getOperationalLimitTypeByName(name);
|
|
2619
|
+
if (!operationalLimitType) {
|
|
2620
|
+
operationalLimitType = new OperationalLimitType_1.OperationalLimitType(utils_1.generateUUID(), name);
|
|
2621
|
+
operationalLimitType.direction = direction;
|
|
2622
|
+
operationalLimitType.limitType = type;
|
|
2623
|
+
cimModel.addOperationalLimitType(operationalLimitType);
|
|
2624
|
+
}
|
|
2625
|
+
return operationalLimitType;
|
|
2626
|
+
}
|
|
2627
|
+
createConnection(cimModel, conductingEquipment, object, phase, connected, sequenceNumber) {
|
|
2628
|
+
let terminal;
|
|
2629
|
+
if (object instanceof ConnectivityNode_1.ConnectivityNode) {
|
|
2630
|
+
const cn = object;
|
|
2631
|
+
terminal = new Terminal_1.Terminal(utils_1.generateUUID(), 'T');
|
|
2632
|
+
terminal.connectivityNode = cn;
|
|
2633
|
+
cn.addTerminal(terminal);
|
|
2634
|
+
cimModel.addTerminal(terminal);
|
|
2635
|
+
}
|
|
2636
|
+
else if (object instanceof Terminal_1.Terminal) {
|
|
2637
|
+
terminal = object;
|
|
2638
|
+
}
|
|
2639
|
+
if (terminal) {
|
|
2640
|
+
terminal.phases = phase;
|
|
2641
|
+
terminal.conductingEquipment = conductingEquipment;
|
|
2642
|
+
terminal.sequenceNumber = sequenceNumber ? sequenceNumber : 1;
|
|
2643
|
+
conductingEquipment.addTerminal(terminal);
|
|
2644
|
+
terminal.connected = connected;
|
|
2645
|
+
}
|
|
2646
|
+
return terminal;
|
|
2647
|
+
}
|
|
2648
|
+
determineEquipmentContainer(equipmentContainerType, cimModel, equipmentContainer) {
|
|
2649
|
+
switch (equipmentContainerType) {
|
|
2650
|
+
case ('Bay'): {
|
|
2651
|
+
return equipmentContainer;
|
|
2652
|
+
}
|
|
2653
|
+
case ('VoltageLevel'): {
|
|
2654
|
+
if (equipmentContainer instanceof Bay_1.Bay) {
|
|
2655
|
+
return equipmentContainer.getVoltageLevel();
|
|
2656
|
+
}
|
|
2657
|
+
return equipmentContainer;
|
|
2658
|
+
}
|
|
2659
|
+
case ('Substation'): {
|
|
2660
|
+
if (equipmentContainer instanceof Bay_1.Bay) {
|
|
2661
|
+
const voltageLevel = equipmentContainer.getVoltageLevel();
|
|
2662
|
+
return voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.substation;
|
|
2663
|
+
}
|
|
2664
|
+
else if (equipmentContainer instanceof VoltageLevel_1.VoltageLevel) {
|
|
2665
|
+
return equipmentContainer.getSubstation();
|
|
2666
|
+
}
|
|
2667
|
+
else {
|
|
2668
|
+
return equipmentContainer;
|
|
2669
|
+
}
|
|
2670
|
+
}
|
|
2671
|
+
default: {
|
|
2672
|
+
return equipmentContainer;
|
|
2673
|
+
}
|
|
2674
|
+
}
|
|
2675
|
+
if (equipmentContainer instanceof Bay_1.Bay) {
|
|
2676
|
+
return cimModel.getObject(equipmentContainer.voltageLevelUUID);
|
|
2677
|
+
}
|
|
2678
|
+
return equipmentContainer;
|
|
2679
|
+
}
|
|
2680
|
+
getSpannungsbandTrafo2W(i7Data) {
|
|
2681
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2682
|
+
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2683
|
+
let minMaxSollResult;
|
|
2684
|
+
const spgKnotenId = i7Data.spgreg_knoten;
|
|
2685
|
+
let tempKnotenId = i7Data.spgreg_anschluss === 0 ? i7Data.aknoten :
|
|
2686
|
+
(i7Data.spgreg_anschluss === 1 ? i7Data.eknoten : undefined);
|
|
2687
|
+
if (tempKnotenId !== undefined) {
|
|
2688
|
+
let queryResult = yield this.mysqlController.execQuery(`SELECT id FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.KNOTEN_SF]} WHERE id = ${tempKnotenId};`);
|
|
2689
|
+
if (queryResult.length === 1) {
|
|
2690
|
+
const tabName_NetzSSAB = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.SAMMELSCHIENE];
|
|
2691
|
+
const tabName_NetzSchaltfeld = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.SCHALTFELD];
|
|
2692
|
+
const tabName_NetzKnotenSf = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.KNOTEN_SF];
|
|
2693
|
+
const sqlStatement = `SELECT ${tabName_NetzSSAB}.id, ${tabName_NetzSSAB}.umin, ${tabName_NetzSSAB}.umax, ${tabName_NetzSSAB}.usoll
|
|
2694
|
+
FROM ${tabName_NetzSSAB}
|
|
2695
|
+
LEFT JOIN ${tabName_NetzSchaltfeld} ON ${tabName_NetzSSAB}.saabschnitt = ${tabName_NetzSchaltfeld}.saabschnitt
|
|
2696
|
+
LEFT JOIN ${tabName_NetzKnotenSf} ON ${tabName_NetzKnotenSf}.schaltfeld = ${tabName_NetzSchaltfeld}.id
|
|
2697
|
+
WHERE ${tabName_NetzKnotenSf}.id = ${tempKnotenId}`;
|
|
2698
|
+
minMaxSollResult = yield this.mysqlController.execQuery(sqlStatement);
|
|
2699
|
+
}
|
|
2700
|
+
else {
|
|
2701
|
+
queryResult = yield this.mysqlController.execQuery(`SELECT id FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.KNOTEN_ZW]} WHERE id = ${tempKnotenId};`);
|
|
2702
|
+
if (queryResult.length === 1) {
|
|
2703
|
+
const tabName_NetzSo = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.KNOTEN_SO];
|
|
2704
|
+
const tabName_NetzSchlaufe = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.SCHLAUFE];
|
|
2705
|
+
const tabName_NetzKnotenZw = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.KNOTEN_ZW];
|
|
2706
|
+
minMaxSollResult = yield this.mysqlController.execQuery(`SELECT ${tabName_NetzSo}.id, ${tabName_NetzSo}.umin, ${tabName_NetzSo}.umax, ${tabName_NetzSo}.usoll
|
|
2707
|
+
FROM ${tabName_NetzKnotenZw}
|
|
2708
|
+
LEFT JOIN ${tabName_NetzSchlaufe} ON
|
|
2709
|
+
${tabName_NetzSchlaufe}.id = ${tabName_NetzKnotenZw}.schlaufe
|
|
2710
|
+
LEFT JOIN ${tabName_NetzSo} ON
|
|
2711
|
+
${tabName_NetzSchlaufe}.eknoten = ${tabName_NetzSo}.id
|
|
2712
|
+
WHERE ${tabName_NetzKnotenZw}.id = ${tempKnotenId};`);
|
|
2713
|
+
}
|
|
2714
|
+
else {
|
|
2715
|
+
minMaxSollResult = yield this.mysqlController.execQuery(`SELECT id, umin, umax, usoll FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.KNOTEN_SO]} where id = ${tempKnotenId};`);
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
}
|
|
2719
|
+
else if (spgKnotenId !== undefined) {
|
|
2720
|
+
const tabName_NetzSo = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.KNOTEN_SO];
|
|
2721
|
+
const tabName_NetzSSAB = integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.SAMMELSCHIENE];
|
|
2722
|
+
const query = ` SELECT Voltage.id, Voltage.umin, Voltage.umax, Voltage.usoll
|
|
2723
|
+
FROM (
|
|
2724
|
+
SELECT id, umin, umax, usoll FROM ${tabName_NetzSo} WHERE ${tabName_NetzSo}.id = ${spgKnotenId}
|
|
2725
|
+
UNION
|
|
2726
|
+
SELECT id, umin, umax, usoll FROM ${tabName_NetzSSAB} WHERE ${tabName_NetzSSAB}.id = ${spgKnotenId}) as Voltage`;
|
|
2727
|
+
minMaxSollResult = yield this.mysqlController.execQuery(query);
|
|
2728
|
+
}
|
|
2729
|
+
if (minMaxSollResult && minMaxSollResult.length) {
|
|
2730
|
+
resolve(minMaxSollResult[0]);
|
|
2731
|
+
}
|
|
2732
|
+
else {
|
|
2733
|
+
resolve({ id: 0, usoll: 0, umin: 0, umax: 0 });
|
|
2734
|
+
}
|
|
2735
|
+
}));
|
|
2736
|
+
});
|
|
2737
|
+
}
|
|
2738
|
+
getAvailableTableNames(database) {
|
|
2739
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2740
|
+
try {
|
|
2741
|
+
const results = yield this.mysqlController.execQuery(`SHOW TABLES FROM ${database}`);
|
|
2742
|
+
for (const table of results) {
|
|
2743
|
+
this.availableTableNames.push(table[`Tables_in_${database}`]);
|
|
2744
|
+
}
|
|
2745
|
+
}
|
|
2746
|
+
catch (e) {
|
|
2747
|
+
this.logger.error(e);
|
|
2748
|
+
console.error("ERROR:" + e);
|
|
2749
|
+
}
|
|
2750
|
+
});
|
|
2751
|
+
}
|
|
2752
|
+
init(mySqlConfig, logger) {
|
|
2753
|
+
return new Promise((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2754
|
+
const status = { status: 'successful', message: 'Konverter I7 initialisiert' };
|
|
2755
|
+
try {
|
|
2756
|
+
this.logger = logger;
|
|
2757
|
+
this.initMySQLConnection(mySqlConfig);
|
|
2758
|
+
yield this.getAvailableTableNames(mySqlConfig.database);
|
|
2759
|
+
}
|
|
2760
|
+
catch (e) {
|
|
2761
|
+
status.status = 'error';
|
|
2762
|
+
status.message = e.toString();
|
|
2763
|
+
this.logger.error(e);
|
|
2764
|
+
console.error("ERROR:" + e);
|
|
2765
|
+
}
|
|
2766
|
+
resolve(status);
|
|
2767
|
+
}));
|
|
2768
|
+
}
|
|
2769
|
+
queryDataInChuncks(objectName, ids) {
|
|
2770
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2771
|
+
const limit = 500;
|
|
2772
|
+
const anzahl = ids.length;
|
|
2773
|
+
const restCount = anzahl < limit ? anzahl : (anzahl % limit);
|
|
2774
|
+
const intervalCount = (anzahl - restCount) / limit;
|
|
2775
|
+
const numberOfIntervals = restCount > 0 ? intervalCount + 1 : intervalCount;
|
|
2776
|
+
const result = [];
|
|
2777
|
+
for (let i = 0; i < numberOfIntervals; i++) {
|
|
2778
|
+
const offset = i * limit;
|
|
2779
|
+
const currentLimit = (i + 1 === numberOfIntervals && restCount > 0) ? restCount : limit;
|
|
2780
|
+
const partSchaltfeldIDs = ids.slice(offset, offset + currentLimit);
|
|
2781
|
+
result.push(...yield this.mysqlController.execQuery(integral_sql_1.getI7Query(objectName, partSchaltfeldIDs)));
|
|
2782
|
+
}
|
|
2783
|
+
return result;
|
|
2784
|
+
});
|
|
2785
|
+
}
|
|
2786
|
+
createColumnIndex() {
|
|
2787
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2788
|
+
yield Promise.all([
|
|
2789
|
+
this.createDropIndex('create index netz_standort_subgeoregion_index on netz_standort (subgeoregion);'),
|
|
2790
|
+
this.createDropIndex('create index netz_schaltanlage_standort_index on netz_schaltanlage (standort);'),
|
|
2791
|
+
this.createDropIndex('create index netz_saabschnitt_schaltanlage_index on netz_saabschnitt (schaltanlage);'),
|
|
2792
|
+
this.createDropIndex('create index netz_schaltfeld_saabschnitt_index on netz_schaltfeld (saabschnitt);'),
|
|
2793
|
+
this.createDropIndex('create index netz_knotenso_standort_index on netz_knotenso (standort);'),
|
|
2794
|
+
this.createDropIndex('create index netz_knotensf_schaltfeld_index on netz_knotensf (schaltfeld);'),
|
|
2795
|
+
this.createDropIndex('create index netz_ssab_saabschnitt_index on netz_ssab (saabschnitt);'),
|
|
2796
|
+
this.createDropIndex('create index netz_belastung_anschluss_index on netz_belastung (anschluss);'),
|
|
2797
|
+
this.createDropIndex('create index netz_netzeinspeisung_anschluss_index on netz_netzeinspeisung (anschluss);'),
|
|
2798
|
+
this.createDropIndex('create index netz_trenner3p_seliste_index on netz_trenner3p (seliste);'),
|
|
2799
|
+
this.createDropIndex('create index netz_leitung_aknoten_index on netz_leitung (aknoten);'),
|
|
2800
|
+
this.createDropIndex('create index netz_leitung_eknoten_index on netz_leitung (eknoten);'),
|
|
2801
|
+
this.createDropIndex('create index netz_freileitungabschnitt_leitung_index on netz_freileitungabschnitt (leitung);'),
|
|
2802
|
+
this.createDropIndex('create index netz_kabelabschnitt_leitung_index on netz_kabelabschnitt (leitung);'),
|
|
2803
|
+
]);
|
|
2804
|
+
});
|
|
2805
|
+
}
|
|
2806
|
+
dropColumnIndex() {
|
|
2807
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2808
|
+
yield Promise.all([
|
|
2809
|
+
this.createDropIndex('drop index netz_standort_subgeoregion_index on netz_standort;'),
|
|
2810
|
+
this.createDropIndex('drop index netz_schaltanlage_standort_index on netz_schaltanlage;'),
|
|
2811
|
+
this.createDropIndex('drop index netz_saabschnitt_schaltanlage_index on netz_saabschnitt;'),
|
|
2812
|
+
this.createDropIndex('drop index netz_schaltfeld_saabschnitt_index on netz_schaltfeld;'),
|
|
2813
|
+
this.createDropIndex('drop index netz_knotenso_standort_index on netz_knotenso;'),
|
|
2814
|
+
this.createDropIndex('drop index netz_knotensf_schaltfeld_index on netz_knotensf;'),
|
|
2815
|
+
this.createDropIndex('drop index netz_ssab_saabschnitt_index on netz_ssab;'),
|
|
2816
|
+
this.createDropIndex('drop index netz_belastung_anschluss_index on netz_belastung;'),
|
|
2817
|
+
this.createDropIndex('drop index netz_netzeinspeisung_anschluss_index on netz_netzeinspeisung;'),
|
|
2818
|
+
this.createDropIndex('drop index netz_trenner3p_seliste_index on netz_trenner3p;'),
|
|
2819
|
+
this.createDropIndex('drop index netz_leitung_aknoten_index on netz_leitung;'),
|
|
2820
|
+
this.createDropIndex('drop index netz_leitung_eknoten_index on netz_leitung;'),
|
|
2821
|
+
this.createDropIndex('drop index netz_freileitungabschnitt_leitung_index on netz_freileitungabschnitt;'),
|
|
2822
|
+
this.createDropIndex('drop index netz_kabelabschnitt_leitung_index on netz_kabelabschnitt;'),
|
|
2823
|
+
]);
|
|
2824
|
+
});
|
|
2825
|
+
}
|
|
2826
|
+
initMySQLConnection(mySqlConfig) {
|
|
2827
|
+
this.mysqlController = new mysql_controller_1.MysqlController(mySqlConfig);
|
|
2828
|
+
this.mysqlController.openConnection();
|
|
2829
|
+
}
|
|
2830
|
+
createDropIndex(sql) {
|
|
2831
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2832
|
+
try {
|
|
2833
|
+
yield this.mysqlController.execQuery(sql);
|
|
2834
|
+
}
|
|
2835
|
+
catch (e) {
|
|
2836
|
+
this.logger.error(e.toString());
|
|
2837
|
+
}
|
|
2838
|
+
});
|
|
2839
|
+
}
|
|
2840
|
+
addDefaultObjects(cimModel, defaultValuesConfig) {
|
|
2841
|
+
this.addDefaultObjectsRegion(cimModel, defaultValuesConfig);
|
|
2842
|
+
this.addDefaultObjectsLoadModel(cimModel, defaultValuesConfig);
|
|
2843
|
+
this.addDefaultObjectsGeo(cimModel, defaultValuesConfig);
|
|
2844
|
+
}
|
|
2845
|
+
addDefaultObjectsRegion(cimModel, defaultValuesConfig) {
|
|
2846
|
+
const region = utils_1.createIfNotExitsGeoregionByName(cimModel, defaultValuesConfig.GeographicalRegion.name);
|
|
2847
|
+
region.description = defaultValuesConfig.GeographicalRegion.description;
|
|
2848
|
+
const subregion = utils_1.createIfNotExitsSubGeoregionByName(cimModel, defaultValuesConfig.SubGeographicalRegion.name, region);
|
|
2849
|
+
subregion.shortName = defaultValuesConfig.SubGeographicalRegion.shortName;
|
|
2850
|
+
subregion.description = defaultValuesConfig.SubGeographicalRegion.description;
|
|
2851
|
+
}
|
|
2852
|
+
addDefaultObjectsLoadModel(cimModel, defaultValuesConfig) {
|
|
2853
|
+
const loadArea = new LoadArea_1.LoadArea(utils_1.generateUUID(), defaultValuesConfig.LoadArea.name);
|
|
2854
|
+
cimModel.addLoadArea(loadArea);
|
|
2855
|
+
const subLoadArea = new SubLoadArea_1.SubLoadArea(utils_1.generateUUID(), defaultValuesConfig.SubLoadArea.name);
|
|
2856
|
+
subLoadArea.loadArea = loadArea;
|
|
2857
|
+
cimModel.addSubLoadArea(subLoadArea);
|
|
2858
|
+
const conformLoadGroup = new ConformLoadGroup_1.ConformLoadGroup(utils_1.generateUUID(), defaultValuesConfig.ConformLoadGroup.name);
|
|
2859
|
+
conformLoadGroup.subLoadArea = subLoadArea;
|
|
2860
|
+
cimModel.addConformLoadGroup(conformLoadGroup);
|
|
2861
|
+
}
|
|
2862
|
+
addDefaultObjectsGeo(cimModel, defaultValuesConfig) {
|
|
2863
|
+
const crsUrn = 'urn:ogc:def:crs:EPSG::4326';
|
|
2864
|
+
const coordinateSystem = new CoordinateSystem_1.CoordinateSystem(utils_1.generateUUID(), this.coordinateSystem);
|
|
2865
|
+
coordinateSystem.crsUrn = crsUrn;
|
|
2866
|
+
cimModel.addCoordinateSystem(coordinateSystem);
|
|
2867
|
+
}
|
|
2868
|
+
setPowerTransformerEndProperties(cimModel, powerTransformerEnd, powerTransformer, terminal, sternpunktKnotenMap, integral7, ir, i7Data, defaultValuesConfig) {
|
|
2869
|
+
if (terminal) {
|
|
2870
|
+
powerTransformerEnd.terminal = terminal;
|
|
2871
|
+
this.setConductingEquipmentCurrentLimit(cimModel, 'W1 ' + powerTransformer.name, terminal, ir);
|
|
2872
|
+
if (sternpunktKnotenMap.has(i7Data.id)) {
|
|
2873
|
+
if (sternpunktKnotenMap.get(i7Data.id).has(i7Data.aknknoten1p)) {
|
|
2874
|
+
this.convertTrafoGrounding(cimModel, powerTransformer, powerTransformerEnd, integral7, sternpunktKnotenMap.get(i7Data.id).get(i7Data.aknknoten1p), defaultValuesConfig);
|
|
2875
|
+
}
|
|
2876
|
+
}
|
|
2877
|
+
}
|
|
2878
|
+
else {
|
|
2879
|
+
this.logger.debug(`Wicklung2W ${i7Data.id} ${powerTransformerEnd.endNumber} ${powerTransformerEnd.mrid} keine Terminalinstanz.`);
|
|
2880
|
+
}
|
|
2881
|
+
this.setBaseVoltagePowerTransformerEnd(cimModel, powerTransformerEnd);
|
|
2882
|
+
powerTransformerEnd.powerTransformer = powerTransformer;
|
|
2883
|
+
powerTransformer.addPowerTransformerEnd(powerTransformerEnd);
|
|
2884
|
+
}
|
|
2885
|
+
setBaseVoltagePowerTransformerEnd(cimModel, powerTransformerEnd) {
|
|
2886
|
+
if (powerTransformerEnd.ratedU) {
|
|
2887
|
+
const baseVoltage = util_create_1.createBaseVoltageIfNotExists(cimModel, powerTransformerEnd.ratedU);
|
|
2888
|
+
powerTransformerEnd.baseVoltage = baseVoltage;
|
|
2889
|
+
}
|
|
2890
|
+
else {
|
|
2891
|
+
this.logger.debug(`Wicklung ${powerTransformerEnd.mrid} Nr. ${powerTransformerEnd.endNumber} keine Spannungsangabe.`);
|
|
2892
|
+
}
|
|
2893
|
+
}
|
|
2894
|
+
createPhaseTapChanger(i7Data, transformerEnd, cimModel, neutralU, connectivityNode, spannungsband) {
|
|
2895
|
+
var _a, _b;
|
|
2896
|
+
const wicklungsnummer = transformerEnd.endNumber;
|
|
2897
|
+
const gestufteSeite = i7Data[`gestufte_seite_s${wicklungsnummer}`] === 0 ? 1 : i7Data[`gestufte_seite_s${wicklungsnummer}`];
|
|
2898
|
+
if (gestufteSeite === wicklungsnummer) {
|
|
2899
|
+
const spezialregelung = i7Data.trafo_spezial;
|
|
2900
|
+
let phaseTapChanger;
|
|
2901
|
+
switch (spezialregelung) {
|
|
2902
|
+
case (2): {
|
|
2903
|
+
const phaseTapChangerAsync = new PhaseTapChangerAsymmetrical_1.PhaseTapChangerAsymmetrical(utils_1.generateUUID(), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
|
|
2904
|
+
phaseTapChangerAsync.windingConnectionAngle = utils_2.convertToNumberI7(i7Data[`uzus_winkel_s${transformerEnd.endNumber}`]);
|
|
2905
|
+
phaseTapChanger = phaseTapChangerAsync;
|
|
2906
|
+
cimModel.addPhaseTapChangerAsymmetrical(phaseTapChangerAsync);
|
|
2907
|
+
break;
|
|
2908
|
+
}
|
|
2909
|
+
default: {
|
|
2910
|
+
const phaseTapChangerLinear = new PhaseTapChangerLinear_1.PhaseTapChangerLinear(utils_1.generateUUID(), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
|
|
2911
|
+
phaseTapChangerLinear.stepPhaseShiftIncrement = utils_2.convertToNumberI7(i7Data[`uzus_winkel_s${transformerEnd.endNumber}`]);
|
|
2912
|
+
cimModel.addPhaseTapChangerLinear(phaseTapChangerLinear);
|
|
2913
|
+
phaseTapChanger = phaseTapChangerLinear;
|
|
2914
|
+
}
|
|
2915
|
+
}
|
|
2916
|
+
phaseTapChanger.ltcFlag = false;
|
|
2917
|
+
phaseTapChanger.lowStep = i7Data[`minstufe_s${transformerEnd.endNumber}`];
|
|
2918
|
+
phaseTapChanger.highStep = i7Data[`maxstufe_s${transformerEnd.endNumber}`];
|
|
2919
|
+
phaseTapChanger.neutralStep = i7Data[`mittelstufe_s${transformerEnd.endNumber}`];
|
|
2920
|
+
phaseTapChanger.normalStep = phaseTapChanger.neutralStep;
|
|
2921
|
+
phaseTapChanger.step = i7Data[`aktstufe_s${transformerEnd.endNumber}`];
|
|
2922
|
+
phaseTapChanger.neutralU = neutralU;
|
|
2923
|
+
transformerEnd.phaseTapChanger = phaseTapChanger;
|
|
2924
|
+
phaseTapChanger.transformerEndUUID = transformerEnd.mrid;
|
|
2925
|
+
const regelung = +i7Data[`regelung_s${transformerEnd.endNumber}`];
|
|
2926
|
+
if (regelung > 0) {
|
|
2927
|
+
const tapChangerControl = new TapChangerControl_1.TapChangerControl(utils_1.generateUUID(), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
|
|
2928
|
+
tapChangerControl.discrete = true;
|
|
2929
|
+
const umax = utils_2.getSpannungsband('umax', spannungsband, neutralU);
|
|
2930
|
+
const umin = utils_2.getSpannungsband('umin', spannungsband, neutralU);
|
|
2931
|
+
const usoll = utils_2.getSpannungsband('usoll', spannungsband, (umax + umin) / 2);
|
|
2932
|
+
const pVorgabe = utils_2.isNumericI7(i7Data[`p_vorgabe`]) ? +i7Data[`p_vorgabe`] : undefined;
|
|
2933
|
+
switch (regelung) {
|
|
2934
|
+
case 1: {
|
|
2935
|
+
phaseTapChanger.controlEnabled = true;
|
|
2936
|
+
tapChangerControl.enabled = true;
|
|
2937
|
+
tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
|
|
2938
|
+
tapChangerControl.targetValue = usoll;
|
|
2939
|
+
tapChangerControl.targetDeadband = umax - usoll;
|
|
2940
|
+
tapChangerControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
|
|
2941
|
+
break;
|
|
2942
|
+
}
|
|
2943
|
+
case 2: {
|
|
2944
|
+
phaseTapChanger.controlEnabled = true;
|
|
2945
|
+
tapChangerControl.enabled = true;
|
|
2946
|
+
tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.activePower;
|
|
2947
|
+
tapChangerControl.targetValue = pVorgabe;
|
|
2948
|
+
tapChangerControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.M;
|
|
2949
|
+
break;
|
|
2950
|
+
}
|
|
2951
|
+
case 3: {
|
|
2952
|
+
phaseTapChanger.controlEnabled = true;
|
|
2953
|
+
tapChangerControl.enabled = true;
|
|
2954
|
+
tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.currentFlow;
|
|
2955
|
+
break;
|
|
2956
|
+
}
|
|
2957
|
+
case 4: {
|
|
2958
|
+
phaseTapChanger.controlEnabled = true;
|
|
2959
|
+
tapChangerControl.enabled = true;
|
|
2960
|
+
tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.reactivePower;
|
|
2961
|
+
tapChangerControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.M;
|
|
2962
|
+
break;
|
|
2963
|
+
}
|
|
2964
|
+
}
|
|
2965
|
+
phaseTapChanger.tapChangerControl = tapChangerControl;
|
|
2966
|
+
tapChangerControl.addTapChanger(phaseTapChanger);
|
|
2967
|
+
cimModel.addTapChangerControl(tapChangerControl);
|
|
2968
|
+
}
|
|
2969
|
+
else {
|
|
2970
|
+
phaseTapChanger.controlEnabled = false;
|
|
2971
|
+
}
|
|
2972
|
+
if ((_a = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.terminals) === null || _a === void 0 ? void 0 : _a.size) {
|
|
2973
|
+
const terminal = [...connectivityNode.terminals.values()].find(elem => elem.connected);
|
|
2974
|
+
if (terminal)
|
|
2975
|
+
this.setTapChangerControl(phaseTapChanger, terminal);
|
|
2976
|
+
}
|
|
2977
|
+
if (!((_b = phaseTapChanger.tapChangerControl) === null || _b === void 0 ? void 0 : _b.terminal)) {
|
|
2978
|
+
this.logger.error(`Trafo ${i7Data.id}: Kein Terminal für TapChangerControl`);
|
|
2979
|
+
if (transformerEnd.phaseTapChanger) {
|
|
2980
|
+
transformerEnd.phaseTapChanger.tapChangerControl = undefined;
|
|
2981
|
+
transformerEnd.phaseTapChanger.tapChangerControlUUID = undefined;
|
|
2982
|
+
}
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2985
|
+
}
|
|
2986
|
+
setTapChangerControl(tapChanger, terminal) {
|
|
2987
|
+
if ((tapChanger === null || tapChanger === void 0 ? void 0 : tapChanger.tapChangerControl) && terminal) {
|
|
2988
|
+
tapChanger.tapChangerControl.terminal = terminal;
|
|
2989
|
+
}
|
|
2990
|
+
}
|
|
2991
|
+
convertTrafoGrounding(cimModel, powerTransformer, powerTransformerEnd, i7Modell, stpKnoten, defaultValuesConfig) {
|
|
2992
|
+
var _a, _b;
|
|
2993
|
+
if (stpKnoten) {
|
|
2994
|
+
const junctionUUID = i7Modell.sternPunktImpModel.stpSchieneJunctionUUIDs.get(stpKnoten.schaltelement1pelem);
|
|
2995
|
+
const junction = i7Modell.sternPunktImpModel.junctions.get(junctionUUID);
|
|
2996
|
+
powerTransformerEnd.grounded = true;
|
|
2997
|
+
powerTransformerEnd.rground = defaultValuesConfig.TransformerEnd.rground;
|
|
2998
|
+
if (!junctionUUID) {
|
|
2999
|
+
}
|
|
3000
|
+
else {
|
|
3001
|
+
const terminal = this.createConnection(cimModel, junction, (_a = powerTransformerEnd.terminal) === null || _a === void 0 ? void 0 : _a.connectivityNode, PhaseCode_1.PhaseCode.ABC, true, 1);
|
|
3002
|
+
terminal.name = 't_stp_trafo';
|
|
3003
|
+
if (junction)
|
|
3004
|
+
junction.name = (junction === null || junction === void 0 ? void 0 : junction.name) + '/Trafo';
|
|
3005
|
+
const pSpuleGroundImpedance = i7Modell.sternPunktImpModel.junctionUUIDstpImp.get(junctionUUID);
|
|
3006
|
+
const voltageLevel = this.getVoltageLevelByVoltage((_b = powerTransformer.equipmentContainer) === null || _b === void 0 ? void 0 : _b.voltageLevels, powerTransformerEnd.ratedU);
|
|
3007
|
+
if (!voltageLevel) {
|
|
3008
|
+
this.logger.debug(`Trafo ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat kein EquipmentContainer`);
|
|
3009
|
+
}
|
|
3010
|
+
if (junction && voltageLevel) {
|
|
3011
|
+
junction.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
|
|
3012
|
+
junction.equipmentContainer = voltageLevel;
|
|
3013
|
+
}
|
|
3014
|
+
else {
|
|
3015
|
+
this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine Junction ${junctionUUID} oder VoltageLevel`);
|
|
3016
|
+
}
|
|
3017
|
+
if (pSpuleGroundImpedance) {
|
|
3018
|
+
pSpuleGroundImpedance.baseVoltage = (voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage) ? voltageLevel === null || voltageLevel === void 0 ? void 0 : voltageLevel.baseVoltage : powerTransformerEnd.baseVoltage;
|
|
3019
|
+
pSpuleGroundImpedance.equipmentContainer = voltageLevel;
|
|
3020
|
+
}
|
|
3021
|
+
else {
|
|
3022
|
+
this.logger.debug(`TrafoObjektID ${powerTransformer === null || powerTransformer === void 0 ? void 0 : powerTransformer.mrid} hat keine pSpuleGroundImpedance`);
|
|
3023
|
+
}
|
|
3024
|
+
}
|
|
3025
|
+
}
|
|
3026
|
+
}
|
|
3027
|
+
queryLeitungsAnschlussIDs() {
|
|
3028
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3029
|
+
let results = this.isTableAvailable(integral_sql_1.Integral7TableNames.LEITUNG) ? yield this.mysqlController.execQuery(`SELECT DISTINCT aknoten, eknoten FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.LEITUNG]}`) : [];
|
|
3030
|
+
for (const result of results) {
|
|
3031
|
+
this.leitungAnschlussKnotenIDs.add(result[`aknoten`]);
|
|
3032
|
+
this.leitungAnschlussKnotenIDs.add(result[`eknoten`]);
|
|
3033
|
+
}
|
|
3034
|
+
});
|
|
3035
|
+
}
|
|
3036
|
+
queryTrafosAnschlussIDs() {
|
|
3037
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3038
|
+
let results = this.isTableAvailable(integral_sql_1.Integral7TableNames.TRAFO2W) ? yield this.mysqlController.execQuery(`SELECT DISTINCT aknoten, eknoten
|
|
3039
|
+
FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.TRAFO2W]}`) : [];
|
|
3040
|
+
for (const result of results) {
|
|
3041
|
+
this.trafo2wAnschlussKnotenIDs.add(result[`aknoten`]);
|
|
3042
|
+
this.trafo2wAnschlussKnotenIDs.add(result[`eknoten`]);
|
|
3043
|
+
}
|
|
3044
|
+
results = this.isTableAvailable(integral_sql_1.Integral7TableNames.TRAFO3_WICKLUNG) ? yield this.mysqlController.execQuery(`SELECT DISTINCT aknoten, eknoten
|
|
3045
|
+
FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.TRAFO3_WICKLUNG]}`) : [];
|
|
3046
|
+
for (const result of results) {
|
|
3047
|
+
this.trafo3wAnschlussKnotenIDs.add(result[`aknoten`]);
|
|
3048
|
+
this.trafo3wAnschlussKnotenIDs.add(result[`eknoten`]);
|
|
3049
|
+
}
|
|
3050
|
+
});
|
|
3051
|
+
}
|
|
3052
|
+
queryHgueAnschlussIDs() {
|
|
3053
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3054
|
+
let results = this.isTableAvailable(integral_sql_1.Integral7TableNames.HGUE_LEITUNG) ? yield this.mysqlController.execQuery(`SELECT DISTINCT anetzobjekt, enetzobjekt FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.HGUE_LEITUNG]}`) : [];
|
|
3055
|
+
for (const result of results) {
|
|
3056
|
+
this.hgueAnschlussKnotenIDs.add(result[`anetzobjekt`]);
|
|
3057
|
+
this.hgueAnschlussKnotenIDs.add(result[`enetzobjekt`]);
|
|
3058
|
+
}
|
|
3059
|
+
});
|
|
3060
|
+
}
|
|
3061
|
+
queryLDroselAnschlussIDs() {
|
|
3062
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3063
|
+
let results = this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSDROSSEL) ? yield this.mysqlController.execQuery(`SELECT DISTINCT aknoten, eknoten FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.LAENGSDROSSEL]}`) : [];
|
|
3064
|
+
for (const result of results) {
|
|
3065
|
+
this.lDrosselAnschlussKnotenIDs.add(result[`aknoten`]);
|
|
3066
|
+
this.lDrosselAnschlussKnotenIDs.add(result[`eknoten`]);
|
|
3067
|
+
}
|
|
3068
|
+
});
|
|
3069
|
+
}
|
|
3070
|
+
queryErsatzLaengsAnschlussIDs() {
|
|
3071
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3072
|
+
let results = this.isTableAvailable(integral_sql_1.Integral7TableNames.ERSATZLAENGSZWEIG) ? yield this.mysqlController.execQuery(`SELECT DISTINCT aknoten, eknoten FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.ERSATZLAENGSZWEIG]}`) : [];
|
|
3073
|
+
for (const result of results) {
|
|
3074
|
+
this.ersatzZweigAnschlussKnotenIDs.add(result[`aknoten`]);
|
|
3075
|
+
this.ersatzZweigAnschlussKnotenIDs.add(result[`eknoten`]);
|
|
3076
|
+
}
|
|
3077
|
+
});
|
|
3078
|
+
}
|
|
3079
|
+
queryLkondensatorAnschlussIDs() {
|
|
3080
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
3081
|
+
let results = this.isTableAvailable(integral_sql_1.Integral7TableNames.LAENGSKONDENSATOR) ? yield this.mysqlController.execQuery(`SELECT DISTINCT aknoten, eknoten FROM ${integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.LAENGSKONDENSATOR]}`) : [];
|
|
3082
|
+
for (const result of results) {
|
|
3083
|
+
this.lKondensatorAnschlussKnotenIDs.add(result[`aknoten`]);
|
|
3084
|
+
this.lKondensatorAnschlussKnotenIDs.add(result[`eknoten`]);
|
|
3085
|
+
}
|
|
3086
|
+
});
|
|
3087
|
+
}
|
|
3088
|
+
getVoltageLevelByVoltage(voltageLevels, ur) {
|
|
3089
|
+
if (voltageLevels === null || voltageLevels === void 0 ? void 0 : voltageLevels.length) {
|
|
3090
|
+
const vlNumbers = voltageLevels.map(elem => elem.getBaseVoltageAsNumber());
|
|
3091
|
+
const vlDiff = vlNumbers.map(elem => Math.abs(elem - ur));
|
|
3092
|
+
const vlIndex = vlDiff.indexOf(Math.min(...vlDiff));
|
|
3093
|
+
return voltageLevels[vlIndex];
|
|
3094
|
+
}
|
|
3095
|
+
else {
|
|
3096
|
+
return;
|
|
3097
|
+
}
|
|
3098
|
+
}
|
|
3099
|
+
checkAnschlussIDs(i7ID, integral7) {
|
|
3100
|
+
this.checkLeitungsID(i7ID, integral7);
|
|
3101
|
+
this.checkTrafo2WID(i7ID, integral7);
|
|
3102
|
+
this.checkTrafo3WID(i7ID, integral7);
|
|
3103
|
+
this.checkHgueID(i7ID, integral7);
|
|
3104
|
+
this.checkLDrosselID(i7ID, integral7);
|
|
3105
|
+
this.checkErsatzZweigID(i7ID, integral7);
|
|
3106
|
+
this.checkLKondensatorID(i7ID, integral7);
|
|
3107
|
+
}
|
|
3108
|
+
checkLeitungsID(i7ID, integral7) {
|
|
3109
|
+
if (this.leitungAnschlussKnotenIDs.has(i7ID)) {
|
|
3110
|
+
integral7.leitungsAnschlussIDs.push(i7ID);
|
|
3111
|
+
}
|
|
3112
|
+
}
|
|
3113
|
+
checkTrafo2WID(i7ID, integral7) {
|
|
3114
|
+
if (this.trafo2wAnschlussKnotenIDs.has(i7ID)) {
|
|
3115
|
+
integral7.trafo2wAnschlussKnotenIDs.push(i7ID);
|
|
3116
|
+
}
|
|
3117
|
+
}
|
|
3118
|
+
checkTrafo3WID(i7ID, integral7) {
|
|
3119
|
+
if (this.trafo3wAnschlussKnotenIDs.has(i7ID)) {
|
|
3120
|
+
integral7.trafo3wAnschlussKnotenIDs.push(i7ID);
|
|
3121
|
+
}
|
|
3122
|
+
}
|
|
3123
|
+
checkHgueID(i7ID, integral7) {
|
|
3124
|
+
if (this.hgueAnschlussKnotenIDs.has(i7ID)) {
|
|
3125
|
+
integral7.hgueAnschlussKnotenIDs.push(i7ID);
|
|
3126
|
+
}
|
|
3127
|
+
}
|
|
3128
|
+
checkLDrosselID(i7ID, integral7) {
|
|
3129
|
+
if (this.lDrosselAnschlussKnotenIDs.has(i7ID)) {
|
|
3130
|
+
integral7.lDrosselAnschlussKnotenIDs.push(i7ID);
|
|
3131
|
+
}
|
|
3132
|
+
}
|
|
3133
|
+
checkErsatzZweigID(i7ID, integral7) {
|
|
3134
|
+
if (this.ersatzZweigAnschlussKnotenIDs.has(i7ID)) {
|
|
3135
|
+
integral7.ersatzZweigAnschlussKnotenIDs.push(i7ID);
|
|
3136
|
+
}
|
|
3137
|
+
}
|
|
3138
|
+
checkLKondensatorID(i7ID, integral7) {
|
|
3139
|
+
if (this.lKondensatorAnschlussKnotenIDs.has(i7ID)) {
|
|
3140
|
+
integral7.lKondensatorAnschlussKnotenIDs.push(i7ID);
|
|
3141
|
+
}
|
|
3142
|
+
}
|
|
3143
|
+
isTableAvailable(tableName) {
|
|
3144
|
+
return this.availableTableNames.indexOf(tableName) > -1 ? true : false;
|
|
3145
|
+
}
|
|
3146
|
+
addIdMapping(i7ID, uuid, type) {
|
|
3147
|
+
if (this.integralID2UUID.has(i7ID)) {
|
|
3148
|
+
console.log(`ID ${i7ID} existiert bereits. Typ ${this.integralID2Type.get(i7ID)} neuer Typ ${type}`);
|
|
3149
|
+
}
|
|
3150
|
+
else {
|
|
3151
|
+
this.integralID2UUID.set(i7ID, uuid);
|
|
3152
|
+
this.integralID2Type.set(i7ID, type);
|
|
3153
|
+
}
|
|
3154
|
+
if (this.UUID2Integral7ID.has(uuid)) {
|
|
3155
|
+
this.UUID2Integral7ID.get(uuid).push(i7ID);
|
|
3156
|
+
}
|
|
3157
|
+
else {
|
|
3158
|
+
this.UUID2Integral7ID.set(uuid, [i7ID]);
|
|
3159
|
+
}
|
|
3160
|
+
}
|
|
3161
|
+
}
|
|
3162
|
+
exports.ConverterI7 = ConverterI7;
|
|
3163
|
+
function getDCNodeFromConverter(acDcConverter) {
|
|
3164
|
+
var _a;
|
|
3165
|
+
for (const terminal of (_a = acDcConverter === null || acDcConverter === void 0 ? void 0 : acDcConverter.dCTerminals) === null || _a === void 0 ? void 0 : _a.values()) {
|
|
3166
|
+
if (terminal.dcNode)
|
|
3167
|
+
return terminal.dcNode;
|
|
3168
|
+
}
|
|
3169
|
+
return;
|
|
3170
|
+
}
|
|
3171
|
+
function logExecutionTime(logger, startTime, text) {
|
|
3172
|
+
logger.debug(`${text} ${(perf_hooks_1.performance.now() - startTime) / 1000} seconds`);
|
|
3173
|
+
console.log(`${text} ${(perf_hooks_1.performance.now() - startTime) / 1000} seconds`);
|
|
3174
|
+
}
|
|
3175
|
+
//# sourceMappingURL=converter-i7.js.map
|