@enervance/insight-cim-model 0.0.34 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/config/westnetz-neplan/callbacks/cb-psr.js +17 -5
  2. package/dist/config/westnetz-neplan/callbacks/cb-psr.js.map +1 -1
  3. package/dist/config/westnetz-neplan/property-handler-westenergy.config.d.ts +19 -19
  4. package/dist/converter/integral7/converter-i7.d.ts +1 -0
  5. package/dist/converter/integral7/converter-i7.js +150 -39
  6. package/dist/converter/integral7/converter-i7.js.map +1 -1
  7. package/dist/converter/integral7/interface-i7/export-frame-i7.js +3 -3
  8. package/dist/converter/integral7/interface-i7/export-frame-i7.js.map +1 -1
  9. package/dist/converter/integral7/model/interfaces.d.ts +2 -0
  10. package/dist/converter/integral7/sql/integral.sql.js +1 -0
  11. package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
  12. package/dist/converter/integral7/utils.js.map +1 -1
  13. package/dist/index.d.ts +2 -1
  14. package/dist/index.js +3 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/interfaces/persistence-interfaces.d.ts +16 -0
  17. package/dist/interfaces/persistence-interfaces.js +7 -0
  18. package/dist/interfaces/persistence-interfaces.js.map +1 -1
  19. package/dist/model/assets/Asset.js +2 -1
  20. package/dist/model/assets/Asset.js.map +1 -1
  21. package/dist/model/assets/AssetDeployment.js +1 -1
  22. package/dist/model/assets/AssetDeployment.js.map +1 -1
  23. package/dist/model/assets/DeploymentDate.js +1 -1
  24. package/dist/model/assets/DeploymentDate.js.map +1 -1
  25. package/dist/model/common/Location.js +22 -22
  26. package/dist/model/core/PowerSystemResource.js +2 -0
  27. package/dist/model/core/PowerSystemResource.js.map +1 -1
  28. package/dist/model/core/Terminal.js +31 -31
  29. package/dist/model/wires/PhaseTapChangerSymmetrical.js +1 -1
  30. package/dist/model/wires/PhaseTapChangerSymmetrical.js.map +1 -1
  31. package/dist/model/wires/PowerTransformer.js +27 -27
  32. package/dist/util/sparql/sparql-utils.d.ts +7 -0
  33. package/dist/util/sparql/sparql-utils.js +63 -1
  34. package/dist/util/sparql/sparql-utils.js.map +1 -1
  35. package/package.json +1 -1
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PsrCallbacks = void 0;
4
4
  const util_search_1 = require("../../../util/util-search");
5
+ const persistence_interfaces_1 = require("../../../interfaces/persistence-interfaces");
6
+ const sparql_utils_1 = require("../../../util/sparql/sparql-utils");
5
7
  exports.PsrCallbacks = {
6
8
  psrType: (cimModel, psr, data) => {
7
9
  const tripleData = { oldTriple: '', newTriple: '' };
@@ -23,19 +25,29 @@ exports.PsrCallbacks = {
23
25
  return tripleData;
24
26
  },
25
27
  lifeCycle: (cimModel, psr, data) => {
26
- const tripleData = { oldTriple: '', newTriple: '' };
28
+ var _a;
29
+ const tripleData = sparql_utils_1.createTripleDataObject(persistence_interfaces_1.TripleDataKind.compound);
27
30
  for (const asset of psr.assets.values()) {
28
31
  const propName = data.propName.toLowerCase();
29
32
  const propValue = data.propValue;
33
+ const assetDeploymentUUID = (_a = asset === null || asset === void 0 ? void 0 : asset.assetDeployment) === null || _a === void 0 ? void 0 : _a.mrid;
34
+ if (!assetDeploymentUUID)
35
+ continue;
36
+ tripleData.iri = asset.baseIRI;
37
+ tripleData.subject = `<${asset.baseIRI}${assetDeploymentUUID}>`;
38
+ tripleData.predicate = `cim:AssetDeployment.deploymentDate`;
39
+ tripleData.object = undefined;
40
+ tripleData.objectCompound = propValue;
30
41
  switch (propName) {
31
42
  case 'inservicedate': {
32
- tripleData.oldTriple = asset.setInServiceDate(asset.getInServiceDate());
33
- tripleData.newTriple = asset.setInServiceDate(propValue);
43
+ ;
44
+ asset.setInServiceDate(propValue);
45
+ tripleData.predicateCompound = `cim:DeploymentDate.inServiceDate`;
34
46
  break;
35
47
  }
36
48
  case 'installeddate': {
37
- tripleData.oldTriple = asset.setInstalledDate(asset.getInstalledDate());
38
- tripleData.newTriple = asset.setInstalledDate(propValue);
49
+ asset.setInstalledDate(propValue);
50
+ tripleData.predicateCompound = `cim:DeploymentDate.installedDate`;
39
51
  break;
40
52
  }
41
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cb-psr.js","sourceRoot":"","sources":["../../../../src/config/westnetz-neplan/callbacks/cb-psr.ts"],"names":[],"mappings":";;;AAIA,2DAA8D;AAKjD,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,CAAC,QAAe,EAAE,GAAwB,EAAE,IAAS,EAAc,EAAE;QAC5E,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;QAEnD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;QACnC,MAAM,cAAc,GAAG,iCAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtF,IAAG,cAAc,EAAE;YACjB,IAAI;gBACF,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;aAC7I;YAAC,OAAO,CAAC,EAAE,GAAG;SAChB;QACD,IAAG,cAAc,EAAE;YACjB,IAAI;gBACF,MAAM,UAAU,GAAI,cAAqC,CAAC;gBAC1D,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;aAEnD;YAAC,OAAO,CAAC,EAAE,GAAG;SAChB;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,SAAS,EAAE,CAAC,QAAe,EAAE,GAAwB,EAAE,IAAS,EAAc,EAAE;QAC9E,MAAM,UAAU,GAAG,EAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,QAAQ,QAAQ,EAAE;gBAChB,KAAK,eAAe,CAAC,CAAC;oBACpB,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;oBACxE,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBACzD,MAAM;iBACP;gBACD,KAAK,eAAe,CAAC,CAAC;oBACpB,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;oBACxE,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBACzD,MAAM;iBACP;aACF;SACF;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACO,CAAC"}
1
+ {"version":3,"file":"cb-psr.js","sourceRoot":"","sources":["../../../../src/config/westnetz-neplan/callbacks/cb-psr.ts"],"names":[],"mappings":";;;AAIA,2DAA8D;AAC9D,uFAAwF;AAExF,oEAA2E;AAI9D,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,CAAC,QAAe,EAAE,GAAwB,EAAE,IAAS,EAAc,EAAE;QAC5E,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;QAEnD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;QACnC,MAAM,cAAc,GAAG,iCAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtF,IAAG,cAAc,EAAE;YACjB,IAAI;gBACF,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;aAC7I;YAAC,OAAO,CAAC,EAAE,GAAG;SAChB;QACD,IAAG,cAAc,EAAE;YACjB,IAAI;gBACF,MAAM,UAAU,GAAI,cAAqC,CAAC;gBAC1D,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;aAEnD;YAAC,OAAO,CAAC,EAAE,GAAG;SAChB;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,SAAS,EAAE,CAAC,QAAe,EAAE,GAAwB,EAAE,IAAS,EAAc,EAAE;;QAC9E,MAAM,UAAU,GAAG,qCAAsB,CAAC,uCAAc,CAAC,QAAQ,CAAC,CAAC;QACnE,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,mBAAmB,SAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,0CAAE,IAAI,CAAC;YACzD,IAAI,CAAC,mBAAmB;gBAAE,SAAS;YAEnC,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,UAAU,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,GAAG,mBAAmB,GAAG,CAAC;YAChE,UAAU,CAAC,SAAS,GAAG,oCAAoC,CAAC;YAC5D,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;YAC9B,UAAU,CAAC,cAAc,GAAG,SAAS,CAAC;YAEtC,QAAQ,QAAQ,EAAE;gBAChB,KAAK,eAAe,CAAC,CAAC;oBAAC,CAAC;oBACtB,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBAClC,UAAU,CAAC,iBAAiB,GAAG,kCAAkC,CAAC;oBAElE,MAAM;iBACP;gBACD,KAAK,eAAe,CAAC,CAAC;oBACpB,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBAClC,UAAU,CAAC,iBAAiB,GAAG,kCAAkC,CAAC;oBAClE,MAAM;iBACP;aACF;SACF;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACO,CAAC"}
@@ -1,59 +1,59 @@
1
1
  export declare const PROPERTY_HANDLER_WESTNETZNEPLAN_CONFIG: {
2
2
  wn_connectivity_node_s4: {
3
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
3
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
4
4
  };
5
5
  wn_connectivity_node_s6: {
6
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
6
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
7
7
  };
8
8
  wn_connectivity_node_health_score: {
9
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
9
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
10
10
  };
11
11
  wn_connectivity_node_importance_score: {
12
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
12
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
13
13
  };
14
14
  wn_connectivity_node_zuwo_analytics: {
15
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode) => import("../../interfaces/persistence-interfaces").TripleData;
15
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode) => import("../..").TripleData;
16
16
  };
17
17
  wn_connectivity_node_kind: {
18
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
18
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
19
19
  };
20
20
  wn_connectivity_node_type: {
21
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
21
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
22
22
  };
23
23
  wn_connectivity_node_assetowner: {
24
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
24
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
25
25
  };
26
26
  wn_connectivity_node_assetuser: {
27
- cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
27
+ cb: (cimModel: import("../..").Model, icn: import("../..").ConnectivityNode, data: any) => import("../..").TripleData;
28
28
  };
29
29
  psrType: {
30
- cb: (cimModel: import("../..").Model, psr: import("../..").PowerSystemResource, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
30
+ cb: (cimModel: import("../..").Model, psr: import("../..").PowerSystemResource, data: any) => import("../..").TripleData;
31
31
  };
32
32
  inServiceDate: {
33
- cb: (cimModel: import("../..").Model, psr: import("../..").PowerSystemResource, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
33
+ cb: (cimModel: import("../..").Model, psr: import("../..").PowerSystemResource, data: any) => import("../..").TripleData;
34
34
  };
35
35
  intalledDate: {
36
- cb: (cimModel: import("../..").Model, psr: import("../..").PowerSystemResource, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
36
+ cb: (cimModel: import("../..").Model, psr: import("../..").PowerSystemResource, data: any) => import("../..").TripleData;
37
37
  };
38
38
  wn_energyconsumer_installed: {
39
- cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
39
+ cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../..").TripleData;
40
40
  };
41
41
  wn_energyconsumer_measured: {
42
- cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
42
+ cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../..").TripleData;
43
43
  };
44
44
  wn_energyconsumer_contractual: {
45
- cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
45
+ cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../..").TripleData;
46
46
  };
47
47
  wn_energyconsumer_sub_measured: {
48
- cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
48
+ cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../..").TripleData;
49
49
  };
50
50
  wn_energyconsumer_sub_contractual: {
51
- cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
51
+ cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../..").TripleData;
52
52
  };
53
53
  wn_energyconsumer_trafo1: {
54
- cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
54
+ cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../..").TripleData;
55
55
  };
56
56
  wn_energyconsumer_trafo2: {
57
- cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../../interfaces/persistence-interfaces").TripleData;
57
+ cb: (cimModel: import("../..").Model, ec: import("../..").EnergyConsumer, data: any) => import("../..").TripleData;
58
58
  };
59
59
  };
@@ -119,6 +119,7 @@ export declare class ConverterI7 {
119
119
  private addDefaultObjectsLoadModel;
120
120
  private addDefaultObjectsGeo;
121
121
  private setPowerTransformerEndProperties;
122
+ private createRatioTapChanger;
122
123
  private createPhaseTapChanger;
123
124
  private setTapChangerControl;
124
125
  private convertTrafoGrounding;
@@ -112,6 +112,10 @@ const AsynchronousMachine_1 = require("../../model/wires/AsynchronousMachine");
112
112
  const EquivalentBranch_1 = require("../../model/equivalents/EquivalentBranch");
113
113
  const AMPRIONLine_1 = require("../../model/extensions/amprion/core/AMPRIONLine");
114
114
  const ControlArea_1 = require("../../model/operations/ControlArea");
115
+ const PhaseTapChangerSymmetrical_1 = require("../../model/wires/PhaseTapChangerSymmetrical");
116
+ const RatioTapChangerTable_1 = require("../../model/wires/RatioTapChangerTable");
117
+ const RatioTapChanger_1 = require("../../model/wires/RatioTapChanger");
118
+ const TransformerControlMode_1 = require("../../model/wires/TransformerControlMode");
115
119
  class ConverterI7 {
116
120
  constructor() {
117
121
  this.exportFrames = new Map();
@@ -2555,24 +2559,11 @@ class ConverterI7 {
2555
2559
  const connectivityNode = cimModel.getObject(cnUUID);
2556
2560
  for (const powerTransformerEnd of powerTransformerEnds) {
2557
2561
  const winkel = utils_2.convertToNumberI7(i7Data[`uzus_winkel_s${powerTransformerEnd.endNumber}`]);
2558
- switch (i7Data.trafo_spezial) {
2559
- case (1): {
2560
- this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
2561
- break;
2562
- }
2563
- case (2): {
2564
- this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
2565
- break;
2566
- }
2567
- default: {
2568
- if (winkel !== 0) {
2569
- this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
2570
- }
2571
- else {
2572
- this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
2573
- }
2574
- break;
2575
- }
2562
+ if (winkel > 0) {
2563
+ this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband, false);
2564
+ }
2565
+ else {
2566
+ this.createRatioTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
2576
2567
  }
2577
2568
  }
2578
2569
  cimModel.addPowerTransformerEnd(powerTransformerEnd1);
@@ -2730,6 +2721,21 @@ class ConverterI7 {
2730
2721
  powerTransformerEnd3.connectionKind = utils_2.getSchaltgruppe(schaltgruppe, powerTransformerEnd3.endNumber, powerTransformerEnd3.grounded);
2731
2722
  powerTransformerEnd3.phaseAngleClock = utils_2.getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd3.endNumber);
2732
2723
  this.sortTransformerEnd(powerTransformer, 'ratedU', 'desc');
2724
+ const terminals = [terminal1, terminal2, terminal3];
2725
+ const powerTransformerEnds = [powerTransformerEnd1, powerTransformerEnd2, powerTransformerEnd3];
2726
+ const spRegKnoten = yield this.getSpannungsbandTrafo2W(i7Data);
2727
+ const spannungsband = integral7.targetVoltages.get(spRegKnoten.id);
2728
+ const cnUUID = this.integralID2UUID.get(spRegKnoten.id);
2729
+ const connectivityNode = cimModel.getObject(cnUUID);
2730
+ for (const powerTransformerEnd of powerTransformerEnds) {
2731
+ const winkel = utils_2.convertToNumberI7(i7Data[`uzus_winkel_s${powerTransformerEnd.endNumber}`]);
2732
+ if (winkel > 0) {
2733
+ this.createPhaseTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband, true);
2734
+ }
2735
+ else {
2736
+ this.createRatioTapChanger(i7Data, powerTransformerEnd, cimModel, powerTransformerEnd.ratedU, connectivityNode, spannungsband);
2737
+ }
2738
+ }
2733
2739
  cimModel.addPowerTransformer(powerTransformer);
2734
2740
  cimModel.addPowerTransformerEnd(powerTransformerEnd1);
2735
2741
  cimModel.addPowerTransformerEnd(powerTransformerEnd2);
@@ -2764,9 +2770,10 @@ class ConverterI7 {
2764
2770
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
2765
2771
  const bdModelUUID = frame.getModelUUID(rdf_xml_1.RDF_XML.PROFILE_EQ_BD);
2766
2772
  const relevantMasFrames = masFrames.filter(elem => {
2767
- const modelUUIDs = elem.dependentModels.get(rdf_xml_1.RDF_XML.PROFILE_EQ_BD);
2768
- if ((modelUUIDs === null || modelUUIDs === void 0 ? void 0 : modelUUIDs.indexOf(bdModelUUID)) > -1)
2769
- return elem;
2773
+ for (const modelUUIDs of elem.dependentModels.values()) {
2774
+ if ((modelUUIDs === null || modelUUIDs === void 0 ? void 0 : modelUUIDs.indexOf(bdModelUUID)) > -1)
2775
+ return elem;
2776
+ }
2770
2777
  });
2771
2778
  const cimModel = frame.cimModel;
2772
2779
  const substations = Array.from(cimModel.substations.values());
@@ -2811,8 +2818,8 @@ class ConverterI7 {
2811
2818
  cimModel.removeObject(equipment);
2812
2819
  }
2813
2820
  const location = substation.location;
2814
- let cnt = 1;
2815
- for (const connectivityNode of connectivityNodes) {
2821
+ for (let i = 0; i < connectivityNodes.length; i++) {
2822
+ const connectivityNode = connectivityNodes[i];
2816
2823
  connectivityNode.connectivityNodeContainer = line;
2817
2824
  line.addConnectivityNode(connectivityNode);
2818
2825
  const junction = new Junction_1.Junction(utils_1.generateUUID(), `${line.name}_BD-J`, `Junction`, 'Junction for Geo');
@@ -2821,23 +2828,19 @@ class ConverterI7 {
2821
2828
  junction.terminals.set(terminal.getUUID(), terminal);
2822
2829
  terminal.conductingEquipment = junction;
2823
2830
  line.addEquipment(junction);
2824
- if (location && location.positionPoints.length > 0) {
2825
- for (const masFrame of relevantMasFrames) {
2826
- const clonedLocation = new Location_1.Location(utils_1.generateUUID(), `Location ${cnt}`);
2827
- clonedLocation.addPowerSystemResource(junction);
2828
- clonedLocation.coordinateSystem = location.coordinateSystem;
2829
- const clonedPositionPoint = new PositionPoint_1.PositionPoint(utils_1.generateUUID(), `PositionPoint ${cnt}`);
2830
- clonedPositionPoint.xPosition = location.positionPoints[0].xPosition;
2831
- clonedPositionPoint.yPosition = location.positionPoints[0].yPosition;
2832
- clonedPositionPoint.location = clonedLocation;
2833
- clonedLocation.addPositionPoint(clonedPositionPoint);
2834
- masFrame.cimModel.addLocation(clonedLocation);
2835
- masFrame.addDependentModel(rdf_xml_1.RDF_XML.PROFILE_GL, frame.getModelUUID(rdf_xml_1.RDF_XML.PROFILE_EQ_BD));
2836
- }
2831
+ if (location && location.positionPoints.length) {
2832
+ const clonedLocation = new Location_1.Location(utils_1.generateUUID(), `Location_${i + 1}`);
2833
+ clonedLocation.addPowerSystemResource(junction);
2834
+ clonedLocation.coordinateSystem = location.coordinateSystem;
2835
+ const clonedPositionPoint = new PositionPoint_1.PositionPoint(utils_1.generateUUID(), `PositionPoint ${i + 1}`);
2836
+ clonedPositionPoint.xPosition = location.positionPoints[0].xPosition;
2837
+ clonedPositionPoint.yPosition = location.positionPoints[0].yPosition;
2838
+ clonedPositionPoint.location = clonedLocation;
2839
+ clonedLocation.addPositionPoint(clonedPositionPoint);
2840
+ cimModel.addLocation(clonedLocation);
2837
2841
  }
2838
2842
  cimModel.addTerminal(terminal);
2839
2843
  cimModel.addJunction(junction);
2840
- cnt++;
2841
2844
  }
2842
2845
  if (location && location.powerSystemResources.size && location.powerSystemResources.get(substation.mrid) !== undefined) {
2843
2846
  location.powerSystemResources.delete(substation.mrid);
@@ -3477,14 +3480,122 @@ class ConverterI7 {
3477
3480
  powerTransformerEnd.powerTransformer = powerTransformer;
3478
3481
  powerTransformer.addPowerTransformerEnd(powerTransformerEnd);
3479
3482
  }
3480
- createPhaseTapChanger(i7Data, transformerEnd, cimModel, neutralU, connectivityNode, spannungsband) {
3483
+ createRatioTapChanger(i7Data, transformerEnd, cimModel, neutralU, connectivityNode, spannungsband) {
3484
+ var _a, _b;
3485
+ const wicklungsnummer = transformerEnd.endNumber;
3486
+ const gestufteSeite = i7Data[`gestufte_seite_s${wicklungsnummer}`] === 0 ? 1 : i7Data[`gestufte_seite_s${wicklungsnummer}`];
3487
+ if (gestufteSeite === wicklungsnummer) {
3488
+ const lowStep = i7Data[`minstufe_s${transformerEnd.endNumber}`];
3489
+ const highStep = i7Data[`maxstufe_s${transformerEnd.endNumber}`];
3490
+ const neutralStep = i7Data[`mittelstufe_s${transformerEnd.endNumber}`];
3491
+ const currentStep = i7Data[`aktstufe_s${transformerEnd.endNumber}`];
3492
+ const i7TapArray = utils_2.getTapChangerStepArray(lowStep, highStep);
3493
+ const mappedCurrentStep = i7TapArray.indexOf(currentStep) + 1;
3494
+ const lowerVoltageStepCount = utils_2.getTapChangerStepCount(lowStep, neutralStep);
3495
+ const increaseVoltageStepCount = utils_2.getTapChangerStepCount(neutralStep, highStep);
3496
+ const lowerVoltageStepIncrement = Math.abs(i7Data[`umin_s${transformerEnd.endNumber}`]) / lowerVoltageStepCount * -1;
3497
+ let increaseVoltageStepIncrement = Math.abs(i7Data[`umax_s${transformerEnd.endNumber}`]) / lowerVoltageStepCount;
3498
+ increaseVoltageStepIncrement = isNaN(increaseVoltageStepIncrement) ? 1 : increaseVoltageStepIncrement;
3499
+ const ratioTapChangerTable = new RatioTapChangerTable_1.RatioTapChangerTable(utils_1.generateUUID(), `${transformerEnd.name} W${transformerEnd.endNumber}`);
3500
+ for (let i = 0; i < lowerVoltageStepCount; i++) {
3501
+ util_create_1.createRatioTapChangerTablePoint(ratioTapChangerTable, i + 1, 1 + (lowerVoltageStepIncrement * (lowerVoltageStepCount - i)));
3502
+ }
3503
+ util_create_1.createRatioTapChangerTablePoint(ratioTapChangerTable, lowerVoltageStepCount + 1, 1);
3504
+ for (let i = 0; i < increaseVoltageStepCount; i++) {
3505
+ const step = (lowerVoltageStepCount + 1) + (i + 1);
3506
+ util_create_1.createRatioTapChangerTablePoint(ratioTapChangerTable, step, 1 + (increaseVoltageStepIncrement * (i + 1)));
3507
+ }
3508
+ const ratioTapChanger = new RatioTapChanger_1.RatioTapChanger(utils_1.generateUUID(), `${transformerEnd.name} W${transformerEnd.endNumber}`);
3509
+ ratioTapChanger.stepVoltageIncrement = increaseVoltageStepIncrement;
3510
+ ratioTapChanger.tculControlMode = TransformerControlMode_1.TransformerControlMode.volt;
3511
+ ratioTapChanger.ltcFlag = false;
3512
+ ratioTapChanger.lowStep = 1;
3513
+ ratioTapChanger.highStep = ratioTapChangerTable.ratioTapChangerTablePoints.length;
3514
+ ratioTapChanger.neutralStep = i7TapArray.indexOf(neutralStep) + 1;
3515
+ ratioTapChanger.normalStep = ratioTapChanger.neutralStep;
3516
+ ratioTapChanger.step = mappedCurrentStep;
3517
+ ratioTapChanger.transformerEnd = transformerEnd;
3518
+ transformerEnd.ratioTapChanger = ratioTapChanger;
3519
+ ratioTapChanger.neutralU = neutralU;
3520
+ ratioTapChanger.ratioTapChangerTableUUID = ratioTapChangerTable.mrid;
3521
+ ratioTapChangerTable.ratioTapChanger = ratioTapChanger;
3522
+ const regelung = +i7Data[`regelung_s${transformerEnd.endNumber}`];
3523
+ if (regelung > 0) {
3524
+ const tapChangerControl = new TapChangerControl_1.TapChangerControl(utils_1.generateUUID(), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
3525
+ tapChangerControl.discrete = true;
3526
+ const umax = utils_2.getSpannungsband('umax', spannungsband, neutralU);
3527
+ const umin = utils_2.getSpannungsband('umin', spannungsband, neutralU);
3528
+ const usoll = utils_2.getSpannungsband('usoll', spannungsband, (umax + umin) / 2);
3529
+ const pVorgabe = utils_2.isNumericI7(i7Data[`p_vorgabe`]) ? +i7Data[`p_vorgabe`] : undefined;
3530
+ switch (regelung) {
3531
+ case 1: {
3532
+ ratioTapChanger.controlEnabled = true;
3533
+ tapChangerControl.enabled = true;
3534
+ tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.voltage;
3535
+ tapChangerControl.targetValue = usoll;
3536
+ tapChangerControl.targetDeadband = umax - usoll;
3537
+ tapChangerControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.k;
3538
+ break;
3539
+ }
3540
+ case 2: {
3541
+ ratioTapChanger.controlEnabled = true;
3542
+ tapChangerControl.enabled = true;
3543
+ tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.activePower;
3544
+ tapChangerControl.targetValue = pVorgabe;
3545
+ tapChangerControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.M;
3546
+ break;
3547
+ }
3548
+ case 3: {
3549
+ ratioTapChanger.controlEnabled = true;
3550
+ tapChangerControl.enabled = true;
3551
+ tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.currentFlow;
3552
+ break;
3553
+ }
3554
+ case 4: {
3555
+ ratioTapChanger.controlEnabled = true;
3556
+ tapChangerControl.enabled = true;
3557
+ tapChangerControl.mode = RegulatingControlModeKind_1.RegulatingControlModeKind.reactivePower;
3558
+ tapChangerControl.targetValueUnitMultiplier = UnitMultiplier_1.UnitMultiplier.M;
3559
+ break;
3560
+ }
3561
+ }
3562
+ ratioTapChanger.tapChangerControl = tapChangerControl;
3563
+ tapChangerControl.addTapChanger(ratioTapChanger);
3564
+ cimModel.addTapChangerControl(tapChangerControl);
3565
+ }
3566
+ else {
3567
+ ratioTapChanger.controlEnabled = false;
3568
+ }
3569
+ if ((_a = connectivityNode === null || connectivityNode === void 0 ? void 0 : connectivityNode.terminals) === null || _a === void 0 ? void 0 : _a.size) {
3570
+ const terminal = [...connectivityNode.terminals.values()].find(elem => elem.connected);
3571
+ if (terminal)
3572
+ this.setTapChangerControl(ratioTapChanger, terminal);
3573
+ }
3574
+ if (!((_b = ratioTapChanger.tapChangerControl) === null || _b === void 0 ? void 0 : _b.terminal)) {
3575
+ this.logger.error(`Trafo ${i7Data.trafo3w}: Kein Terminal für TapChangerControl`);
3576
+ if (transformerEnd.phaseTapChanger) {
3577
+ transformerEnd.phaseTapChanger.tapChangerControl = undefined;
3578
+ transformerEnd.phaseTapChanger.tapChangerControlUUID = undefined;
3579
+ }
3580
+ }
3581
+ cimModel.addRatioTapChanger(ratioTapChanger);
3582
+ cimModel.addRatioTapChangerTable(ratioTapChangerTable);
3583
+ }
3584
+ }
3585
+ createPhaseTapChanger(i7Data, transformerEnd, cimModel, neutralU, connectivityNode, spannungsband, is3WTransformer) {
3481
3586
  var _a, _b;
3482
3587
  const wicklungsnummer = transformerEnd.endNumber;
3483
3588
  const gestufteSeite = i7Data[`gestufte_seite_s${wicklungsnummer}`] === 0 ? 1 : i7Data[`gestufte_seite_s${wicklungsnummer}`];
3484
3589
  if (gestufteSeite === wicklungsnummer) {
3485
- const spezialregelung = i7Data.trafo_spezial;
3486
3590
  let phaseTapChanger;
3591
+ const spezialregelung = i7Data.trafo_spezial ? i7Data.trafo_spezial : (is3WTransformer ? 2 : undefined);
3487
3592
  switch (spezialregelung) {
3593
+ case (1): {
3594
+ const phaseTapChangerSync = new PhaseTapChangerSymmetrical_1.PhaseTapChangerSymmetrical(utils_1.generateUUID(), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
3595
+ phaseTapChanger = phaseTapChangerSync;
3596
+ cimModel.addPhaseTapChangerSymmetrical(phaseTapChangerSync);
3597
+ break;
3598
+ }
3488
3599
  case (2): {
3489
3600
  const phaseTapChangerAsync = new PhaseTapChangerAsymmetrical_1.PhaseTapChangerAsymmetrical(utils_1.generateUUID(), `${transformerEnd.name} W_${transformerEnd.endNumber}`);
3490
3601
  phaseTapChangerAsync.windingConnectionAngle = utils_2.convertToNumberI7(i7Data[`uzus_winkel_s${transformerEnd.endNumber}`]);