Skip to content

Model Conversion from CGMES 2.4.15 to 3.0

The core profiles (EQ, SSH, TP, SV) in CGMES 3.0 are primarily backward compatible with CGMES 2.4.15. This makes it possible to convert a CGMES 2.4.15 compliant model to an equivalent model conforming to CGMES 3.0. The transformation is however complicated, involving 7 steps. While multi–steps model transformation process is supported to facilitate debugging, the Tool provides one-step process to support model transformation from CGMES 2.4.15→3.0.

About CGMES 3.0

CGMES 3.0 is primarily backward-compatible with CGMES 2.4.15. However, there are some major differences between CGMES 3.0 FDIS and CGMES 2.4.15, including:

  • Boundary TP is no longer used. Boundary ConnectivityNodes are marked using new objects BoundaryPoints in Boundary EQ.
  • ConnectivityNodes are mandatorily included in EQ Core, even for Bus/Branch models. Unlike in CGMES 2.4.15, EQ Core is now used for both bus/branch and node/breaker modeling in CGMES 3.0.
  • Sub-profile Operation and Short Circuit are separated from EQ Core and govern by separate profiles. Operation sub-profile is now primarily for exchanging measurements. It has no implication of node/breaker.
  • New classes are added, including PowerPlant, AuxiliaryEquipment , PowerElectronics, Cuts and Jumpers, etc.
  • Some new attributes are added to existing classes, such as CurrentLimit.normalVaue, Equipment.inService.
  • Tie-line, boundary ConnectivityNodes and EquivalentInjections must be contained by the same Line from Boundary EQ.

To adapt to some of the above changes, the Tool

  • Require all model parts, including Boundary Set, to be loaded into the same workspace and converted together. This is because conversion from CGMES 2.4.15 to 3.0 requires information from different model parts. Also when all model parts are converted together, the Tool is able to set the model dependency among the converted model parts.
  • Support Assembled EQ: An Assembled EQ is an assembled model combing EQ Core, Operation or/and Short Circuit. It is a complete data set that represents a physical network model. See Section 5.5.4 in IEC FDIS 61970-600-1. An Assembled EQ is treated as a traditional EQ in the Tool. An assembled model can be partitioned as either “All Model Parts” with Core, Operation, and Short Circuit as individual model parts Or “All Model Parts with EQ Assembled”.
  • Handle model assembling specially. Since Boundary TP is no longer used in CGMES 3.0, Boundary TopologicalNodes are now contained in IGMs. Thus each boundary point corresponds to two Boundary TopologicalNodes contained in two neighboring IGMs. When assembling a CGM from IGMs and BS, the two Boundary TopologicalNodes are combined. Only one set of Boundary TopologicalNodes are retained.
  • Log model changes as CIM difference models during the model conversion. This allows users to track model changes and facilitate debugging.

Automated Model Conversion

Model transformation from CGMES 2.4.15 to 3.0 is a complicated process involving 7 steps, as described in the next section. To facilitate the process, the Tool provides one-step process to combing 7 steps into 1 step. Simply load Individual Grid Model (IGM) and Boundary Set (BS) of CGMES 2.4.15 and invoke the conversion process from the model context menu or command icon as illustrated below. After the process is completed, the loaded IGM and BS will be converted to CGMES 3.0, with all model changes logged as CIM difference models. Note: this function is only available when the loaded models are a valid IGM with model dependencies properly set.

Model Conversion from CGMES 2.4.15 to 3.0 – figure 1

The above automation process can be configured. The related configurations can be found in \config\StandardConfig.xml and described below. Users can overwrite the corresponding configurations in \config\CustomConfig.xml.

Model Conversion from CGMES 2.4.15 to 3.0 – figure 2

  • transformationConfig: configuration of model transformation from CGMES 2.4.15 to CGMES 3.0.
  • exportFolder: folder where the partitioned models are stored
  • assembleEq: if ‘true”, the EQ model will be converted as Assembled EQ.
  • boundarySetAsEq: if “true”, the boundary EQ will be converted as EQ. In CGMES 3.0, boundary EQ is depreciated.
  • cleanWorkspace: if “true”, the workspace will be cleaned with input models and intermediate models unloaded.

Step-by-Step Model Conversion

As an alternative, users can also convert CGMES 2.4.15 model to CGMES 3.0 step by step. This allows users to debug issues during model conversion process.

  1. From CGMES 3.0 workspace, load IGM of CGMES 2.4.15 into the workspace. Model Conversion from CGMES 2.4.15 to 3.0 – figure 3
  2. From summary display of the EQ model part, assemble IGM. Model Conversion from CGMES 2.4.15 to 3.0 – figure 4
  3. Load BS of CGMES 2.4.15 into the same workspace. Note: BS must be loaded after IGM is assembled. Model Conversion from CGMES 2.4.15 to 3.0 – figure 5
  4. Transform the assembled IGM from 2.4.15 to 3.0. Model Conversion from CGMES 2.4.15 to 3.0 – figure 6
  5. Transform BD_EQ from 2.4.15 to 3.0. Model Conversion from CGMES 2.4.15 to 3.0 – figure 7
  6. Partition the transformed assembled IGM to “All Model Parts” or “All Parts with EQ Assembled”. Model Conversion from CGMES 2.4.15 to 3.0 – figure 8
  7. Post-model transformation processes, including:
  8. Set model dependency between EQ and BD_EQ.
  9. Rename transformed model parts
  10. Clean workspace Model Conversion from CGMES 2.4.15 to 3.0 – figure 9

Change Log

The Tool logs model changes during the model transformation. The logged changes can be found in the log file as illustrated below.

Model Conversion from CGMES 2.4.15 to 3.0 – figure 10

Model Conversion from CGMES 2.4.15 to 3.0 – figure 11

The following table summarizes all of the possible model changes during model transformation from CGMES 2.4.15 to CGMES 3.0.

Class

Description

ACLineSegment

Add a Line if association Equipment.EquipmentContainer is missing.

ActivePowerLimit

Set ActivePowerLimit.normalValue to ActivePowerLimit.value.

Move ActivePowerLimit.value from EQ to SSH.

ApparentPowerLimit

Set ApparentPowerLimit.normalValue to ApparentPowerLimit.value.

Move ApparentPowerLimit.value from EQ to SSH.

BoundaryPoint

Create an eu:BoundaryPoint for each boundary ConnectivityNode and set its boundary-related attributes to the corresponding attributes of the boundary ConnectivityNode.

ConnectivityNode

Remove attributes of the boundary ConnectivityNode. They are moved to eu:BoundaryPoint.

For bus/branch EQ, add a ConnectivityNode for each TopologicalNode.

Set association ConnectivityNode.TopologicalNode if missing.

ControlArea

Create a ControlArea of type ControlAreaTypeKind.Interchange if not available.

CsConverter

Set Equipment.inService to 'true'.

CurrentLimit

Set CurrentLimit.normalValue to CurrentLimit.value.

Move CurrentLimit.value from EQ to SSH.

DCLineSegment

Remove association DCLineSegment.PerLengthParameter. Class PerLengthDCLineParameter is removed in CGMES 3.0.

DCSeriesDevice

Change property name DCSeriesDevice.ratedUdc to DCConductingEquipment.ratedUdc.

DCShunt

Change property name DCShunt.ratedUdc to DCConductingEquipment.ratedUdc.

EnergyConsumer and its sub-classes

Set Equipment.inService based on EnergyConsumer.p and EnergyConsumer.q.

Set negative EnergyConsumer.q to 0.

EnergySchedulingType

Change class name entsoe:EnergySchedulingType to cim:EnergySchedulingType.

EnergySource

Remove EnergySource.voltageMagnitude and EnergySource.voltageAngle if available.

Rename entsoe:EnergySource.EnergySchedulingType to cim:EnergySource.EnergySchedulingType.

Set Equipment.inService based on EnergySource.activePower and EnergySource.reactivePower.

EquivalentBranch

Set association Equipment.EquipmentContainer if missing.

EquivalentInjection

Set Equipment.inService based on EquivalentInjection.p and EquivalentInjection.q.

ExternalNetworkInjection

Set Equipment.inService based on ExternalNetworkInjection.p and ExternalNetworkInjection.q.

FullModel

Translate Model.profile to the corresponding CGMES 3.0 profile.

GeneratingUnit and its sub-classes

Remove GeneratingUnit.initialP if available.

Set Equipment.inService based on RotatingMachine.p and RotatingMachine.q.

LinearShuntCompensator

NonlinearShuntCompensator

Remove ShuntCompensator.switchOnCount and ShuntCompensator.switchOnDate if available.

Set Equipment.inService based on ShuntCompensator.sections.

OperationalLimitSet

Set association OperationalLimitSet.Terminal if missing.

OperationalLimitType

Convert entsoe:OperationalLimitType.limitType to eu:OperationalLimitType.kind and set new attribute OperationalLimitType.isInfiniteDuration based on OperationalLimitType.acceptableDuration.

Set OperationalLimitType.direction if missing.

PerLengthDCLineParameter

Delete all objects. This class is removed in CGMES 3.0.

SerireCompensator

Set association Equipment.EquipmentContainer if missing.

StaticVarCompensator

Set Equipment.inService based on StaticVarCompensator.q.

Sub-classes of ConductingEquipment

Add an object SvStatus for each ConductingEquipment and set SvStatus.inService the same value as Equipment.inService.

Sub-classes of Equipment

Add attribute Equipment.inService if not available and set its value to 'true'.

Sub-classes of IdentifiedObject

Set default IdentifiedObject.name if not available.

Set IdentifiedObject.mRID the same value of rdf:ID.

Switch and its sub-classes

Add a SvSwitch for each Breaker and set SvSwitch.open to Switch.open.

Set Equipment.inService to 'true' and Switch.locked to 'false'.

SynchronousMachine

AsynchronousMachine

Set Equipment.inService based on RotatingMachine.p and RotatingMachine.q.

Terminal

Set IdentifiedObject.name if not available.

Set Terminal.sequenceNumber if not available.

TieFlow

Set IdentifiedObject.name (reguired for CGMES 3.0) to the name of the associated ConductingEquipment.

Create a TieFlow for each boundary node if not available.

TopologicalNode

Remove boundary TopologicalNodes. Boundary TP model part is no longer in CGMES 3.0.

Add boundary TopologicalNiode in IGM and set all of the related associations, since boundary TopologicalNiode is now located in IGM.

VoltageLimit

Set VoltageLimit.normalValue to VoltageLimit.value.

Move VoltageLimit.value from EQ to SSH.

VsConverter

Set Equipment.inService to 'true'.

Rename VsConverter.uf to VsConverter.uv.