Load Areva Dynamic Line Ratings (DLR) (*.csv) as Weather Dependent LImits

Ability to load these files was adding starting in the September 15, 2023 patch of Version 23

On the Tools Ribbon Tab in Simulator under the Other Tools, Weather drop-down there is an option to Load Areva Dynamic Line Rating (DLR) (*.csv). Choose this option to read a CSV file containing DYNELE, SEG, SEGWST, RATING, and WST objects from the CSV. This help topic explains how these objects will create XYCurve, XYCurvePoint, XYCurveX and WeatherStation objects and how the DYNELE object will describe the mapping to PowerWorld Branch objects.

 

As of September 2023, the Areva patten file needed to export a CSV file using hdbexport from the Dynamic Line Ratings database in Areva was as follows.

DYNELE,%SUBSCRIPT,LN,ZBR,XF,NAME1,NAME2,FRST,TOST,ACTRTGI1,ACTRTGI2,ACTRTGI3

SEG,%SUBSCRIPT,P__DYNELE,ENTMP

RATING,%SUBSCRIPT,P__SEG,ID,RTG1,RTG2,RTG3,I__TEMPPT

SEGWST,%SUBSCRIPT,P__SEG,I__WST

WST,%SUBSCRIPT,ID,TELTEMP,MANUAL,MANTEMP

RATING and WST records have fields that specify a temperature (RATING.ID and WST.ID) . There is a global setting that must be set before reading the CSV to specify whether these values are in Fahrenheit or Celsius. This can be set in the Simulator Options under File Management\hdbexport Files on the File Management Options. The option can also be set using the following AUX file using either SCRIPT or DATA section as follows.

SCRIPT

{

SetData(Sim_Environment_Options_Value, [Option,Value], [HDBExportTempUnits, Fahrenheit]);

}

 

Sim_Environment_Options_Value (Option,Value)

{

"HDBExportTempUnits" "Fahrenheit"

}

The relationship of DLR records to PowerWorld Simulator object data structures is depicted in the image below and a detailed description of each object follows. In general the objects in the EMS DLR Database represent objects in Simulator as follows.

 

DYNELE Records provide mapping to PowerWorld Branch Objects

DYNELE objects provide a mapping to the Branch objects (or the LN, XF, and ZBR records in the EMS NETMOM database). The mapping of DYNELE objects is done differently depending on the Booleans LN, ZB, and XF.

If LN=T then Simulator will find the PowerWorld Branch that was read as a LN record (EMSType = 'LN') and find the branch for which EMSLineID =NAME1 and EMSID=NAME2

If ZB=T then Simulator will find the PowerWorld Branch that was read as a ZBR record (EMSType = 'ZBR') and find the branch for which EMSLineID=NAME1 and EMSID=NAME2

If XF=T then Simulator will find the PowerWorld Branch that was read as a XF record (EMSType = 'XF') and find the branch for which SubNameFrom=FRST and EMSID=NAME1

When reading the file, PowerWorld will keep track of SEG records that actually have some RATING records which refer to the SEG record. We will then keep track of DYNELE records that have at least one SEG object with RATING records. If the DYNELE doesn’t have any viable SEG records then no error message is written to the message log when loading the CSV file (because we weren’t getting any XYCurve to associated with a Branch anyway). If however we can not find the object associated above then a warning is written to the message log.

The fields which PowerWorld recognizes in the DLR database for the DYNELE record are as follows.

Field Header

Field Type

Description of Field

%SUBSCRIPT

Integer

Integer used to lookup DYNELE from the SEG object

LN

T or F

T if it represents a LN record, else F

ZB

T or F

T if it represents a ZBR record, else F

XF

T or F

T if it represents a XF record, else F

NAME1

String

If LN=T OR ZB=T, then this represents the LINE record ID field. This is stored in PowerWorld’s Branch object as the EMSLINEID field

If XF=T, this is the XF record ID field which is stored in PowerWorld’s Branch object as the EMSID field

NAME2

String

If LN=T OR ZB=T, then this represents the LN or ZBR record ID field. This is stored in PowerWorld’s Branch object as the EMSID field

If XF=T we do not used this field for mapping, but it stores the XFMR record ID field which would also be stored in PowerWorld’s Branch object as the EMSLINEID field.

FRST

String

This is the From side substation of the object. This will be used for mapping XF records.

TOST

String

This is the To side substation of the object. This is not used for anything in PowerWorld but just included for convenience.

ACTRTGI1

Float

When reading this DYNELE, if we successfully map to a Branch in Simulator as described above we will set the LimitMVAA value to this

ACTRTGI2

Float

When reading this DYNELE, if we successfully map to a Branch in Simulator as described above we will set the LimitMVAB value to this

ACTRTGI3

Float

When reading this DYNELE, if we successfully map to a Branch in Simulator as described above we will set the LimitMVAC value to this

 

SEG Records provide mapping to PowerWorld XYCurve

When reading the file, PowerWorld will keep track of SEG records that actually have some RATING records which refer to the SEG record. If a SEG record does not have any RATING records then the SEG record is ignored and a count of the number of SEG records skipped because of this is written to the message log. If the SEG record does have RATING records, but the SEG record P__DYNELE integer references the %SUBSRIPT of DYDNELE for which the associated Branch object could not be found, then we skip the SEG records and do not write a warning to the log (the DYNELE would have already written a warning message).

If all these things are good however, then for each SEG record, PowerWorld Simulator will create 2 XYCurve objects whose name will depend on the the XF, ZB, and LN booleans.

If LN=T, names will be “LN NAME1 NAME2 NORMAL” and “LN NAME1 NAME2 CTG”

If ZB=T, names will be “ZBR NAME1 NAME2 NORMAL” and “ZBR NAME1 NAME2 CTG”

If XF=T, names will be “XF FRST NAME1 NORMAL” and “ZBR FRST NAME1 CTG”

When reading the file, PowerWorld will keep track of SEG records that actually have some RATING records which refer to the SEG record. We will then keep track of DYNELE records that have at least one SEG object with RATING records. If the DYNELE doesn’t have any viable SEG records then no error message is written to the message log when loading the CSV file (because we weren’t getting any XYCurve to associated with a Branch anyway). If however we can not find the object associated above then a warning is written to the message log.

The fields which PowerWorld recognizes in the DLR database for the SEG record are as follows.

Field Header

Field Type

Description of Field

%SUBSCRIPT

Integer

Integer used to lookup SEG record from RATING and SEGWST records

P__DYNELE

Integer

Integer that points at the DYNELE record %SUBSCRIPT

ENTMP

T or F

Set the PowerWorld XYCurve.Enabled field Boolean

The other fields of the XYCurve are always set as follows

XYCurve.IntermediateType = Interpolate

XYCurve.PointTol = 0.05

XYCurve.XType = Max for XYCurves. This means that if the SEG record has multiple SEGWST records associated with it representing multiple WeatherStation temperatures associated with the same SEG we will take the maximum temperature of those available.

 

RATING Records provide mapping to PowerWorld XYCurvePoint

Each RATING record points at the SEG record to which it belongs using the P__SEG integer (references the %SUBSCRIPT of the SEG object).

The fields which PowerWorld recognizes in the DLR database for the RATING record are as follows.

Field Header

Field Type

Description of Field

%SUBSCRIPT

Integer

Integer ID for the RATING record

P__SEG

Integer

Integer that points at the SEG record %SUBSCRIPT

ID

Float

This is the temperature of this point. There is a global option in PowerWorld Simulator which we use to designate if this temperature is in Fahrenheit or Celsius in File Management Options of the Simulator Options.

PowerWorld requires that temperature-dependent Branch LimitMVA curves are in Celsius always. If this global setting specifies Fahrenheit, we will convert this floating point value as (ID-32)*5/9 (to convert to Celsius)

RTG1

Float

This is the Normal rating in MVA. An XYCurvePoint will be created with X based on the ID and Y=RTG1. This point will be assigned to the XYCurve with a name that ends in “NORMAL”

RTG2

Float

This is the Emergency rating in MVA. An XYCurvePoint will be created with X based on the ID and Y=RTG2. This point will be assigned to the XYCurve with a name that ends in “CTG”

RTG3

Float

This is the Load-Shed rating in MVA and PowerWorld Simulator ignores this.

I__TEMPPT

Integer

The RATING records in the DLR database have 2 uses: temperature-dependents limits and also seasonal limits. This is handled by 2 fields with the RATING object called I__TEMPPT and I__COSESN. If I__TEMPPT > 0 then this means it represents a temperature-dependent limit. If I__COSESN > 0 then it means it represents a company’s seasonal limit. We are only trying to read the temperature dependent limit, so we have written PowerWorld’s CSV reader so we read the I__TEMPPT field. If it is not given at all then we assume it’s a temperature-dependent limit. If I__TEMPPT is provided and the value is <= 0 then we ignore the RATING record.

 

WST Records provide mapping to PowerWorld WeatherStation

WST records represent a WeatherStation which contains the telemetered or manual temperature values.

The fields which PowerWorld recognizes in the DLR database for the WST record are as follows.

Field Header

Field Type

Description of Field

%SUBSCRIPT

Integer

Integer ID for the WST record

ID

String

This is used to as the name of the WeatherStation that is created from the WST records.

TELTEMP

Float

If is a number, then we will set PowerWorld’s WeatherStation field TempF or TempC depending on the global setting indicating what units the Temperatures in the CSV file are in.

MANUAL

T or F

If T, then we will consider using the MANTEMP

MANTEMP

Float

If MANUAL=T and MANTEMP is a number, then we will set PowerWorld’s WeatherStation field TempF or TempC depending on the global setting indicating what units the Temperatures in the CSV file are in.

 

SEGWST Records provide mapping to PowerWorld XYCurveX

SETWST Records represent the specification of which temperature (or multiple temperatures) the SEG should use. In PowerWorld Simulator we had assumed that a Branch would normally obtain a temperature from the terminal substations. This provides another location to specify the temperature at. In PowerWorld Simulator the SEGWST become an XYCurveX object. This means that it provide the X coordinate to the XYCurve lookup. We allow multiply XYCurveX objects to be assigned to the same XYCurve to support the multiple SEGWST records assigned to a single SEG record. When reading SEGWST records, an XYCurveX object will be created which points at the appropriate XYCurve (based on P__SEG) and then points at the appropriate WeatherStation (based on I__WST).

The fields which PowerWorld recognizes in the DLR database for the WST record are as follows.

Field Header

Field Type

Description of Field

%SUBSCRIPT

Integer

Integer ID for the SEGWST record

P__SEG

Integer

Integer that points at the SEG record %SUBSCRIPT. The XYCurveX.Name will point to the XYCurve created for the respective SEG record

I__WST

Integer

Integer that points at the WST record %SUBSCRIPT. The XYCurveX.Object will point to the WeatherStation created for the respective WST record.

Also, the XYCurveX.ObjectField will always be set to TempC to indicate the lookup is done with Celsius. Not that the global option can be specified that values on RATING and WST are given in Fahrenheit in which case the RATING and WST values are converted to Celsisus for PowerWorld’s use. Thus PowerWorld will always set this ObjectField to TempC.