A integrator, I would like that disturbances and faults are recorded few seconds before they occur with their physical parameters such as impedance.
The main purpose is to prepare each IED and each active LDevice@inst presents in SCD file AND referenced into setting file:
by binding all signals (ExtRef) which be monitored
by setting all associated RADR and RBDR Logical Nodes with the source object
in order to allow, in further steps, the creation of source DataSets and Control Blocks of these ExtRef and the binding of "InRef" present in "LDEPF" LDevice
Input
A SCD file
A setting file
Output
For all active LDevice@inst="LDEPF":
All signals (ExtRef) which have to be monitored are bound with the help of a setting file. These ExtRef have their attributes ExtRef.iedName, ExtRef.ldInst, ExtRef.prefix (if exists), ExtRef.lnClass, ExtRef.inst (if exists) and ExtRef.doName populated with the source IED.
Each associated LDevice@inst="LDEPF"/LN="RADRy" and "aRBDRy" for analog channel OR "RBDRy" and "bRBDRy" for digital channel/DOI@name="Mod"/DAI@name="stVal"/Val is set to "on" and all the unused others are set to "off"
Each associated LDevice@inst="LDEPF"/LN="RADRy" and "aRBDRy" for analog channel OR "RBDRy" and "bRBDRy" for digital channel/DOI@name="ChNum1"/DAI@name="dU"/Val is populated with the setting file Channel.ShortLabel column value
Each associated LDevice@inst="LDEPF"/LN="RADRy" for analog channel OR "RBDRy" for digital channel/DOI@name="LevMod"/DAI@name="setVal"/Val is populated with the setting file Channel.LevMod column value
Each associated LDevice@inst="LDEPF"/LN="aRBDRy" for analog channel OR ""bRBDRy" for digital channel/DOI@name="LevMod"/DAI@name="setVal"/Val is populated with the setting file Channel.LevMod.q column value
Each associated LDevice@inst="LDEPF"/LN="RADRy" and "aRBDRy" for analog channel OR "RBDRy" and "bRBDRy" for digital channel Logical Nodes are set by populating their DOI@name="SrcRef"/DAI@name="setSrcRef"/Val with the source object
Functional Rules
Description:
Step 1 : In SCD file, find all LDevice@inst="LDEPF" which are active. Then find each IED@name and Bay UUID where these LDEPF LDevice reside. Exclude the IED@name="IEDTEST" and its LDEPF LDevice. If there is no DOI@name="Mod"/DAI@name="stVal"/Val then an error message is returned ERR_01
Step 2 : For each of these IED@name:
for each line of the setting file:
Find the ExtRef signal associated with the current line of the setting file into current IED@name/LDevice@name="LDEPF"/LN0
If NO ExtRef is found then compute the next setting file line
Step 3 : For this ExtRef, find the unique IED@name which can bind this ExtRef.
This source IED :
must be in the same Bay UUID where the current LDEPF LDevice resides. If an IED has no Private Bay then an error message is returned ERR_02
AND must have the IEDType, IEDRedundancy, IEDInstance specified in the current setting file line. If an IED has no Private compas:ICDHeader then an error message is returned ERR_03
AND must contain the active LDevice@inst AND the active LN@prefix @lnClass @inst AND the DO@name AND the DA@name specified in the current setting file line
If no source IED is found then compute the next setting file line
If more than one source IED is found then a functional message INFO_1 is returned (it is not a blocking error) and compute the next setting file line
Step 4 : Bind the current ExtRef by adding and populating iedName, ldInst, prefix, lnClass, lnInst and doName attributes. Note: The ExtRef@daName is not bound.
Step 5 : Into the LDevice@inst="LDEPF" where resides the current ExtRef,
if the signal is digital, update into associated RBDR and bRBDR Logical Nodes, DAI attributes values
if the signal is analog, update into associated RADR and aRBDR Logical Nodes, DAI attributes values
Step 6 : Go to the next setting file line until the end of the setting file
Step 7 : Go to the next LDEPF of another IED of the same Bay
Step 8 : Go to the next Bay
Rules:
To find the unique ExtRef signal associated with the current line of the setting file into current IED@name/LDevice@name="LDEPF"/LN0:
We must deduce the ExtRef@desc by concatenating several strings. For this:
Identify if the ExtRef signal must be digital or analog: in current line of the setting file, if the Channel.Analog.num column is populated then it is an analog signal OR if the Channel.Digital.num column is populated then it is an digital signal
Identify the Channel number by reading the value into the Channel.Analog.num OR Channel.Digital.num column
Identify the source DA@name of the ExtRef by reading the DA.name column of the current line of the setting file
Do the concatenation of these strings to get what the ExtRef@desc must contain:
if the ExtRef signal is digital, the ExtRef@desc begins with "DYN_LDEPF_DIGITAL CHANNEL X_1_BOOLEEN_" and substitute the X with the Channel number value. X = 1 to 64
else if ExtRef signal is analog, the ExtRef@desc begins with "DYN_LDEPF_ANALOG CHANNEL X_1_AnalogueValue_" and substitute the X with the Channel number value. X = 1 to 16
An unknown number
The source DA@name of the ExtRef as followed: "_" + DA.name + "_1"
Example: "DYN_LDEPF_DIGITAL CHANNEL 1_1_BOOLEEN_Y_general_1" where Y is an unkown number
Now the associated ExtRef signal must verify :
ExtRef@pLN = LN.name column of the current setting file line only if ExtRef@pLN is populated
AND ExtRef@pDO = DO.name column of the current setting file line. Don't use DO.inst column.
AND ExtRef@desc contains the previously concatenated strings
Don't use the ExtRef@pDA
If no ExtRef is found then compute the next setting file line
The unique source IED of this ExtRef must:
be in the same bay as the IED which contains the current ExtRef signal
AND have
IEDType = RTE-IEDType column value of the current setting file line
AND IEDRedundancy = IED.redundancy column value of the current setting file line
AND IEDInstance = IED.instance column value of the current setting file line
AND contain
LDevice@inst = LD.inst column value of the current setting file line
AND LN@prefix = LN.prefix column value of the current setting file line if not null
AND LN@lnClass = LN.name column value of the current setting file line
AND LN@inst = LN.inst column value of the current setting file line if not null
AND DO@name = DO.name column value concatenated with DO.inst column value if different from 0 of the current setting file line
AND DA@name = DA.name column value of the current setting file line
AND have its LDevice@inst active
AND have its LN@prefix @lnClass @inst active. If there is no DOI@name="Mod"/DAI@name="stVal" for this LN then it is active by default.
Thus, we have the source IED@name, LDevice@inst, LN@prefix @lnClass @inst, DO@name to bind current ExtRef.
Edition of associated RADR OR RBDR logical Nodes contained into the current LDevice@inst="LDEPF" where resides the current ExtRef:
If the signal is digital, update Logical Nodes attributes:
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="ChNum1"/DAI@name="dU"/Val with the setting file Channel.ShortLabel column value
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="LevMod"/DAI@name="setVal"/Val with the setting file Channel.LevMod column value
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="Mod"/DAI@name="stVal"/Val with "on"
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="SrcRef"/DAI@name="setSrcRef"/Val with this concatenated string ExtRef@iedNameExtRef@ldInst/ExtRef@prefixExtRef@lnClassExtRef@lnInst[.]ExtRef@doName[.]ExtRef@daName where ExtRef@daName=DA.name column value of the current setting file line
LDevice@inst="LDEPF"/LN@prefix="b" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="ChNum1"/DAI@name="dU"/Val with the setting file Channel.ShortLabel column value
LDevice@inst="LDEPF"/LN@prefix="b" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="LevMod"/DAI@name="setVal"/Val with the setting file Channel.LevMod.q column value
LDevice@inst="LDEPF"/LN@prefix="b" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="Mod"/DAI@name="stVal"/Val with "on"
LDevice@inst="LDEPF"/LN@prefix="b" LN@lnClass="RBDR" LN@inst=current Channel.Digital.num column value/DOI@name="SrcRef"/DAI@name="setSrcRef"/Val with this concatenated string ExtRef@iedNameExtRef@ldInst/ExtRef@prefixExtRef@lnClassExtRef@lnInst[.]ExtRef@doName[.]q
If the signal is analog, update Logical Nodes attributes:
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RADR" LN@inst=current Channel.Analog.num column value/DOI@name="ChNum1"/DAI@name="dU"/Val with the setting file Channel.ShortLabel column value
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RADR" LN@inst=current Channel.Analog.num column value/DOI@name="LevMod"/DAI@name="setVal"/Val with the setting file Channel.LevMod column value
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RADR" LN@inst=current Channel.Analog.num column value/DOI@name="Mod"/DAI@name="stVal"/Val with "on"
LDevice@inst="LDEPF"/LN@prefix="" LN@lnClass="RADR" LN@inst=current Channel.Analog.num column value/DOI@name="SrcRef"/DAI@name="setSrcRef"/Val with this concatenated string ExtRef@iedNameExtRef@ldInst/ExtRef@prefixExtRef@lnClassExtRef@lnInst[.]ExtRef@doName[.]ExtRef@daName where ExtRef@daName=DA.name column value of the current setting file line
LDevice@inst="LDEPF"/LN@prefix="a" LN@lnClass="RBDR" LN@inst=current Channel.Analog.num column value/DOI@name="ChNum1"/DAI@name="dU"/Val with the setting file Channel.ShortLabel column value
LDevice@inst="LDEPF"/LN@prefix="a" LN@lnClass="RBDR" LN@inst=current Channel.Analog.num column value/DOI@name="LevMod"/DAI@name="setVal"/Val with the setting file Channel.LevMod.q column value
LDevice@inst="LDEPF"/LN@prefix="a" LN@lnClass="RBDR" LN@inst=current Channel.Analog.num column value/DOI@name="Mod"/DAI@name="stVal"/Val with "on"
LDevice@inst="LDEPF"/LN@prefix="a" LN@lnClass="RBDR" LN@inst=current Channel.Analog.num column value/DOI@name="SrcRef"/DAI@name="setSrcRef"/Val with this concatenated string ExtRef@iedNameExtRef@ldInst/ExtRef@prefixExtRef@lnClassExtRef@lnInst[.]ExtRef@doName[.]q
Details:
The Bay UUID where an IED resides is given by Private /IED/Private/compas:Bay@UUID
A LDevice@inst is active when /IED@name/LDevice@inst/LN0/DOI@name="Mod"/DAI@name="stVal"/Val is set to "on"
A LN@prefix @lnClass @inst is active when /IED@name/LDevice@inst/LN@prefix @lnClass @inst/DOI@name="Mod"/DAI@name="stVal"/Val is set to "on". If DOI@name="Mod"/DAI@name="stVal"/Val is NOT specified then the LN is active by default.
Information or Error Messages
INFO_01 : "There is more than one IED source to bind the signal /IED@name=IED@name/LDevice@inst="LDEPF"/LN0/ExtRef@desc=ExtRef@desc"
ERR_01 : "There is no DOI@name="Mod"/DAI@name="stVal"/Val for the IED@name=name/LDevice@inst="LDEPF""
ERR_02 : "The IED@name=name has no Private Bay"
ERR_03 : "The IED@name=name has no Private compas:ICDHeader"
Description
A integrator, I would like that disturbances and faults are recorded few seconds before they occur with their physical parameters such as impedance.
The main purpose is to prepare each IED and each active LDevice@inst presents in SCD file AND referenced into setting file:
in order to allow, in further steps, the creation of source DataSets and Control Blocks of these ExtRef and the binding of "InRef" present in "LDEPF" LDevice
Input
Output
Functional Rules
Description:
Rules:
Details:
Information or Error Messages
Prerequisites
None
Schema
None