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-255 : Create a new Control Block linked to a DataSet - 3. Report Control Block #42

Closed
jeanetiennelemaire opened this issue Nov 15, 2021 · 0 comments

Comments

@jeanetiennelemaire
Copy link

jeanetiennelemaire commented Nov 15, 2021

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

 

As integrator, I would like to create a new Report control block with its attributes, its trigger options (TrgOps element), its options (OptFields element) and data destinations (ClientLN element) within a previous existing SCD file (mandatory) for a given IED/LD/LN.

 

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
LN.lnClass/LN.prefix/LN.inst
the attributes of Report Control Block:
name : Required. Name of the report control block. This name is relative to the LN hosting the RCB, and shall be unique within the LN.
desc : Optional. The description text.
datSet : Required. The name of the data set to be sent by the report control block. The referenced data set must be in the same LN as the control block. 
intgPd : Integer, optional, default: 0. Integrity period in milliseconds. Only relevant if trigger option period is set to true.
rptID : String, required. Identifier for the report control block, optional; this ID shall be unique in the whole SCD.
confRev : Integer, required. The configuration revision number of this report control block. The value 0 is only allowed for a control block without data set reference else the value is set to 1 for a newly created control block.
buffered : Boolean, optional, default: false. Specifies if reports are buffered or not.
bufTime : Integer, optional, default: 0. Buffer time; default: 0
indexed : Boolean, optional, default: true. If true, the report control block instance names are built from the supplied name, followed by an index number from 01 up to maximum 99. Default: true. The value false is not allowed for SCT created instances.
the TrgOps element :
dchg : Boolean, optional, default: false. Data-change: The change of the value of the associated data attribute can trigger the generation of a report
qchg : Boolean, optional, default: false. Quality-change: The change of the value of the quality data attribute can trigger the generation of a report
dupd : Boolean, optional, default: false. Data-update: The update of the value of the associated data attribute can trigger the generation of a report
period : Boolean, optional, default: false. Periodic: Indicates if the generation is periodic or not
gi : Boolean, optional, default: true. General-interrogation: If true, the Report Control Block in the server shall generate general interrogation report entries on user request. A general interrogation report is the equivalent of an on-demand integrity report.
If an attribute is not provided as input, its value (the corresponding trigger option) is false, meaning that the trigger option shall not be used. The only exception is the gi trigger option, which per default is true due to backwards compatibility reasons.
The values of the trigger options should be herited from the DAs of the DataTypeTemplate of the DataSet linked to the control block.
the OptFields element :
seqNum : Boolean, optional, default: false. Sequence-number: If true, SqNum shall be included in the report.
timeStamp : Boolean, optional, default: false. Report-time-stamp: If true, TimeOfEntry shall be included in the report.
dataSet : Boolean, optional, default: false. Data-set-name: If true, DatSet shall be included in the report.
reasonCode : Boolean, optional, default: false. Reason-for-inclusion: If true, ReasonCode shall be included in the report.
dataRef : Boolean, optional, default: false. Data-reference: If true, DatRef shall be included in the report.
entryID : Boolean, optional, default: false. EntryID: If true, EntryID shall be included in the report.
configRef : Boolean, optional, default: false. Conf-revision: If true, ConfRev shall be included in the report.
bufOvfl : Boolean, optional, default: true. Buffer-overflow: If true, BufOvfl shall be included in the report.
Setting one of the attributes to true means that the corresponding data shall be included in the report. The default value of attribute bufOvfl is true, i.e. it has only to be set if it shall be false. The attribute segmentation is deprecated, because it has no meaning, and is removed from this version. It shall however be accepted as input for backward compatibility and should not be used, i.e. ignored at input.
the RptEnabled element :
desc : Optional. The description text.
max : Integer, optional. Defines the maximum number of report control blocks of this type, which are instantiated at configuration time in the LN (and then used online). The default value is 1. A missing RptEnabled element within an ICD file indicates that this value shall be set by the system configurator within the limits defined by the ConfReportControl and DynAssociation element’s max attributes.
An optional list of data destinations (ClientLN element) :
iedName : Required. The name of the IED where the LN resides
apRef : Optional. The name of the access point via which the IED shall be accessed. Optional, not needed if the IED has only one access point.
ldInst : Required. The instance identification of the LD where the LN resides
prefix : Optional. The LN prefix
lnClass : Required. The LN class according to IEC 61850-7-4 or domain specific standards
lnInst : Required. The instance id of this LN instance of below LN class in the IED
desc : Optional descriptive text, e.g. about purpose of the client.
 

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
datSet
rptID
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 ReportControl
 /SCL/IED/Services/ReportSettings/@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"
 

Step 2:

 Check that the place IED.name/LDevice.inst/LN.prefix - lnClass - lnInst 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/LN.prefix - lnClass - lnInst where the new control block has to be created doesn't exist in current SCD file".
Step 3:

  As Dataset name is provided as input, check that this Dataset name exists and resides in the same LN as the Report control block (i.e IED.name/LDevice.inst/LN.prefix - lnClass - lnInst) else an error message is returned: "The specified DataSet name datSet doesn't exist in IED.name/LDevice.inst/LN.prefix - lnClass - lnInst".
Step 4:

Check that Control Block name is already existing or not:
If already existing in the same IED.name/LDevice.inst/LN.prefix-lnClass-lnInst", then overwrite the existing ControlBlock and keep in memory the ConfRev value and increment it by one.
Else create the new ControlBlock with ConfRev = 1 because datSet is specified
Step 5:

 Check that control block ID (rptID) is unique within the whole station (whole SCD file) where the control block resides else an error message is returned: "The specified control block ID rptID already exists within the whole station".
Step 6:

Check that each data destination (ClientLN element) iedName/(apRef)/ldInst/LN.prefix-lnClass-lnInst exists into SCD file else an error message is returned: "The following data destination iedName/(apRef)/ldInst/LN.prefix-lnClass-lnInst doesn't exist in current SCD file".
Step 7:

If all previous steps have been completed successfully, then create the /SCL/IED/AccessPoint/Server/LDevice/LN/ReportControl XML block with 
ReportControl/@intgPd is set to '0' if no input specified else set the value as input
ReportControl/@Buffered is set to 'false' if no input specified else set the value as input
ReportControl/@bufTime is set to '0' if no input is specified else set the value as input
ReportControl/@indexed is set to 'true' if no input is specified else set the value as input
Step 8:

If at least one input of TrgOpts element is defined, then add TrgOpts XML block into ReportControl XML block with:
ReportControl/TrgOpts@dchg is set to 'false' if no input is specified else set the value as input
ReportControl/TrgOpts@qchg is set to 'false' if no input is specified else set the value as input
ReportControl/TrgOpts@dupd is set to 'false' if no input is specified else set the value as input
ReportControl/TrgOpts@period is set to 'false' if no input is specified else set the value as input
ReportControl/TrgOpts@gi is set to 'true' if no input is specified else set the value as input
Step 9: 

If at least one input of OptFields element is defined, then add OptFields XML block into ReportControl XML block with:
ReportControl/OptFields@seqNum is set to 'false' if no input is specified else set the value as input
ReportControl/OptFields@timeStamp is set to 'false' if no input is specified else set the value as input
ReportControl/OptFields@dataSet is set to 'false' if no input is specified else set the value as input
ReportControl/OptFields@reasonCode is set to 'false' if no input is specified else set the value as input
ReportControl/OptFields@dataRef is set to 'false' if no input is specified else set the value as input
ReportControl/OptFields@entryID is set to 'false' if no input is specified else set the value as input
ReportControl/OptFields@configRef is set to 'false' if no input is specified else set the value as input
ReportControl/OptFields@bufOvfl is set to 'true' if no input is specified else set the value as input
Step 10:

If at least one input of RptEnabled element is defined, then add RptEnabled XML block into ReportControl XML block with:
ReportControl/RptEnabled@max is set to '1' if no input is specified else set the value as input
ReportControl/RptEnabled@desc if specified
Step 11:

As all defined data destination have been validated, then add a ClientLN XML block into ReportControl XML block for each defined data destination
 

Output

 The specified Report Control Block with its Trigger Options (TrgOps element), its OptFields element, its RptEnabled element and all its optional data destinations (ClientLN element(s)) are written into SCD file at the specified place.

 

Error messages

 Those encountered all along the steps 1 to 6.

 

-----  Example of Report control block  --------

  

                                                 

 

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