com-pas / compas-sct

System Configuration Tool (SCT) components
Apache License 2.0
9 stars 9 forks source link

EPIC RSR-91 / RSR-15 : S25 : Configure ldNames values (functional naming and product related naming) #12

Open jeanetiennelemaire opened 3 years ago

jeanetiennelemaire commented 3 years ago

This US (user story) purpose is to configure LD.ldName of a given list of IED.name (multiple) accordingly to Product-related or Functional-related naming. This service is typically called independently of by the service "S21 : configure (edit) IED names".

As service user, I would like to configure LD.ldName accordingly to Product-related or Functional-related naming for a given IED.name.

Prerequisites : an existing SCD file with at least one IED.name which contain at least one LDevice.inst

The following inputs are required :

A previous existing SCD file defined by Header.id, Header.version and Header.revision (required) Parameter value: "Product-related naming" or "Functional-related naming" (required) In the case of "Functional-related naming", The list of (LDevice.inst, new LDevice.ldName) is provided If the list of (LDevice.inst, LDevice.ldName) is missing, the SCL/IED/AccessPoint/Server/LDevice.ldName attribute is missing and  the uniqueness of LDevice.ldName is not verified. If the list is provided (LDevice.inst, LDevice.ldName), it must be unique within the subnetwork (IEC61850-6 p47).  In case of "Product-related naming" List of IED.name (required) Respect the concatenation of IED.nameLDevice.inst to define LDevice.ldName This pattern will apply to all LDevice.ldName to current importing ICD file. Service process : the service will:

If Product-related naming is set,  according to IEC61850 standard with LDevice.ldName equals the concatenation of IED.nameLD.inst. For each /SCL/IED.name = input IED.name, select /SCL/IED/LDevice.inst Rename /SCL/IED/AccessPoint/Server/LDevice.ldName = IED.nameLD.inst Do it for all LDevice.inst of all defined IED.name in input list If Functional-related naming is set, rename all /SCL/IED/AccessPoint/Server/LDevice.ldName according to the list of (IED.name, LD.inst; new LDevice.ldName(s)). Before committing the change in SCD file, check that for all /SCL/IED/AccessPoint/Server/LDevice.ldName belonging to the same Subnetwork.name (/SCL/Communication/SubNetwork/ConnectedAP/ConnectedAP.apName=/SCL/IED/AccessPoint/AccessPoint.name) to which belongs the LDevice.ldName are unique within the SCD else an error message is displayed and the whole process is aborted (IEC61850-6 p47). If there is not LDevice.ldName attribute for a given IED.name, LD.inst, the attribute is filled with new LDevice.ldName If there is already a LDevice.ldName for a given IED.name, LDevice.inst, the attribute value is replaced with new LDevice.ldName Whatever the "Product-related naming" or "Functional-related naming",

Check that each new LDevice.ldName is unique within its subnetwork (IEC61850-6 p47) else an error message is displayed and the whole process is aborded Select the SCL/IED.name and SCL/AccessPoint.name where the LDevice.ldName resides Select the SCL/Communication/Subnetwork/ConnectedAP.iedName = SCL/IED.name AND SCL/Communication/Subnetwork/ConnectedAP.apName = SCL/AccessPoint.name If exist verify that the LDevice.ldName is unique within the SCL/Subnetwork.name If not exist, do not run the check. If Communication is already binded that means that values have been defined for /SCL/IED/AccessPoint/Server/LDevice/LN0 or LN/DOI/DAI.name=setSrcRef/Val, replace inside each following Val String the previous LDevice.ldName with new LDevice.ldName DOI.name=InRef/DAI.name = setSrcRef/Val DOI.name=InRef/DAI.name = setSrcCB/Val. The output is

In case of success an updated SCD file (Header.id, version and revision) with new LDevice.ldName for each IED.name An error message "LDevice.ldName is not unique within the Subnetwork.name= value of the subnetwork.name"

Sander3003 commented 3 years ago

It looks good to me, however, I currently don't have deep knowledge about 61850 SCL as noted here.