Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RSR-245 Create a new Control Block linked to a DataSet - 1. GOOSE Control Block #37

Closed
jeanetiennelemaire opened this issue Jul 19, 2021 · 0 comments

Comments

@jeanetiennelemaire
Copy link

jeanetiennelemaire commented Jul 19, 2021

As a COMPAS service user, this US purpose is to create a service which generates a new GOOSE type Control Block into a specified IED/LDevice/LN0 in current SCD file.

 

As integrator, I would like to create a new Goose control block with its properties and data destinations (IEDName element) within a previous existing SCD file (mandatory) for a given IED/LD/LN0.

 

Prerequisites 

None

 

The inputs of this service are:

A previous existing SCD file (Mandatory) defined by Header.id, Header.version and Header.revision. It contains at least one IED.name which contains at least one LDevice.inst
The place where the new control block has to be created within the SCD file. This place is defined by these attributes:
IED.name
LDevice.inst (the GOOSE control block is only allowed in the logical node LLN0 so the LN.lnClass/LN.prefix/LN.inst are not needed for GOOSE ControlBlock)
The attributes of GOOSE Control Block:
name : Required. The name identifying this GOOSE control block. The GSE control block name shall be unique within the LLN0, i.e. the logical device
desc : Optional. A description text
datSet : Optional. The name of the data set to be sent by the GSE control block. It resides in LLN0 like the control block.
appID : String, required. Unique identifier of GOOSE CB at SCD level.
fixedOffs : Boolean, optional, if not specified, default value "false" applies. If set to true it shows all receivers, that the values within the GOOSE message have fixed offset in the GOOSE message until a reconfiguration. This might mean for an MMS mapping that e.g. for integer values always the maximum size is used, although ASN.1 would allow a shorter coding.
An optional list of data destinations (IEDName element) :
IEDname : Required if the optional list of data destinations has to be populated. IED name that have to subscribe to the Sampled Value data.
apRef : The reference to the access point on the IED, via which the data shall flow. Optional, only needed if the IED has more than one access point.
ldInst : Optional but required if lnClass is populated. Identifies the destination LD in the IED.
prefix : Optional. Destination LN prefix.
lnClass : Optional. Destination LN class. If missing, no destination LN at all
lnInst : Optional. Destination LN instance number, optional. If missing, either no destination LN, or lnClass = LLN0.
An optional Protocol definition supported by GSEControl
Protocol : R-GOOSE (optional) ; if missing the Protocol node is not present
Protocol.mustUnderstand: Boolean, optional default value is 'true' if missing and if Protocol is defined to 'R-GOOSE'
securityEnabled : Optional, if not specified, default value "None" applies. Allows to configure the message security options per control block instance: 'Signature' or 'SignatureAndEncryption'. Only those indicated by the McSecurity element of the GSESetting are allowed.
 

This US is covering the following functional service as described in the 61850-6:

S32 : Create control block types / instances, if IED capabilities allow so, for all types of data flow and log related control blocks.

 

Expected process 

Step 1:

Check that if a required field such as:
name
appID
is missing then an error message is returned: "A required field is missing: name_of_the_missing_field"
 

Check data type for each populated input; if a bad data type is provided then an error message is returned: "Bad data type: you have to entered a data_type for the entry_name"
 

Check that IED supports the configuration of GSEControl
 /SCL/IED/Services/GSESettings/@cbName has to be equal to 'Conf' or 'Dyn'
else an error message is returned: "The IED capabilities don't support ControlBlock name modification or creation"
 

Check that securityEnabled value is included in this set of values:
'None' is possible whatever the /SCL/IED/Services/GSESettings/McSecurity/@Signature and  /SCL/IED/Services/GSESettings/McSecurity/@encryption values
or 'Signature' only if /SCL/IED/Services/GSESettings/McSecurity/@Signature = true whatever the  /SCL/IED/Services/GSESettings/McSecurity/@encryption values
or 'SignatureAndEncryption' only if 
/SCL/IED/Services/GSESettings/McSecurity/@Signature = true
AND /SCL/IED/Services/GSESettings/McSecurity/@encryption = true
else an error message is returned: "securityEnabled can only take one of these values: 'None' or 'Signature' or 'SignatureAndEncryption'".
Step 2:

Check that the place IED.name/LDevice.inst/LLN0 where the new control block has to be created exists in current SCD file else an error message is returned: "The specified place IED.name/LDevice.inst/LLN0 where the new control block has to be created doesn't exist in current SCD file".
Step 3:

If Dataset name is provided as input, check that this Dataset name exists and resides in the same LN0 as the Goose control block (i.e IED.name/LDevice.inst/LLN0) else an error message is returned: "The specified DataSet name GSEControl/@datSet doesn't exist in IED.name/LDevice.inst/LLN0".
Step 4:

 Check that control block ID (appID) is unique within the whole Substation where the control block resides else an error message is returned: "The specified control block ID appID already exists in the Substation".
Step 5:

Check that each specified data destinations IEDname/apRef/ldInst/LN.prefix-lnClass-lnInst exists in current SCD file else an error message is returned: "Data destination IEDname/apRef/ldInst/prefix-lnClass-lnInst doesn't exist in current SCD file".
Step 6: 

Check that Control Block name is already existing or not:
If already existing in the same IED.name/LDevice.inst/LLN0", then overwrite the existing ControlBlock and keep in memory the ConfRev value and increment it by one.
Else create the new ControlBlock with
ConfRev = 0 if datSet is not specified
ConfRev = 10000 if datSet is specified
Step 7:

If all previous steps have been completed successfully, then create the /SCL/IED/AccessPoint/Server/LDevice/LN0/GSEControl XML block with 

GSEControl/@fixedOffs is set to false if no input specified else set the value as input
GSEControl/@type is fixed to GOOSE
GSEControl/@securityEnable is set to 'None' if no input is specified else set the value as input
Protocol equals to R-GOOSE then add a element
If Protocol = R-GOOSE as input,
define GSEControl/Protocol = R-GOOSE else the node is not put in the ControlBlock
If Protocol/@mustUnderstand = value defined as input if defined else Protocol/@mustUnderstand = true if not defined as input
 Step 8:

As all defined data destination have been validated, an IEDName XML block is added into GSEControl XML block for each defined data destination.

 

Output

 The specified Goose Control Block and all its optional data destinations are written into SCD file at the specified place.

 

Error messages

 Those encountered all along the steps 1 to 6.

 

-----  Example of Goose control block  --------

  

       BCU_4CBO_1        BCU_4CBO_1             R-GOOSE

 

syllamoh added a commit that referenced this issue Feb 2, 2022
Signed-off-by: Mohamed Sylla <mohamed.sylla@rte-france.com>
@syllamoh syllamoh mentioned this issue Feb 2, 2022
SaintierFr pushed a commit that referenced this issue Feb 17, 2022
Signed-off-by: Mohamed Sylla <mohamed.sylla@rte-france.com>
@syllamoh syllamoh reopened this Feb 18, 2022
AliouDIAITE pushed a commit that referenced this issue Jun 3, 2022
Signed-off-by: Mohamed Sylla <mohamed.sylla@rte-france.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants