Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

IEC 61850 Protocol stack configuration

...

Attributes

Definition

Example

Required

polling_interval

defines the polling interval in ms (0 = no polling)

100

Yes

datasets

Array of datasets


No

datasets.dataset_ref

Dataset reference


Yes

datasets.entries

Array of dataset entries,

each entry is build using this pattern:

iedName+ldInst/prefix+lnClass+lnInst+doName

NB: prefix is optional

"entries": [
         "simpleIOGenericIO/GGIO1.AnIn1[MX]",
         "simpleIOGenericIO/GGIO1.AnIn2[MX]",
         "simpleIOGenericIO/GGIO1.AnIn3[MX]"
]

This entry in the CID file:

<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn1" daName="mag.f" />

should be translated to:

simpleIOGenericIO/GGIO1.AnIn1[MX]

Yes

datasets.dynamic

If dataset is set to dynamic = true then the client would try to create the dataset on the server, default is false (Static)


No

report_subscriptions

Array of report subscriptions


No

report_subscriptions.rcb_ref

Report Control Block Reference


Yes

report_subscriptions.dataset_ref

RCB dataset reference


NoYes

report_subscription.trgops

RCB trigger options

"dchg": data_changed

"qchg": quality_changed 

"dupd": data updated

"period": data sent periodically

"gi": general interrogation

:  No

report_subscription.buftm

RCB buffer time in ms, time to wait before sending value after event occured


No

report_subscription.intgpd

RCB integrity period in ms, report is periodically send for the period defined (this requires the trgops to be set to "integrity")


No

report_subscription.gi

Force GI (General Interrogation) when the RCB is enabled


No

...

<Root>.<type>

{CDC}



<Root>.<type>.q.operatorBlocked

Boolean

false


<Root>.<type>.q.Source = "substituted"

String

"process"

"process" | "substituted"

<Root>.<type>.q.test

Boolean

false


<Root>.<type>.q.Validity = "invalid"

String

"good"

"good" | "invalid" | "reserved" | "questionable"

<Root>.<type>.q.Validity = "questionable"

<Root>.<type>.q.DetailQuality.oldData = true

String

"good"

"good" | "invalid" | "reserved" | "questionable"

<Root>.<type>.q.Validity = "questionable"

<Root>.<type>.q.DetailQuality.overflow = true

Boolean

false


<Root>.<type>.t.SecondSinceEpoch

Integer



<Root>.BscTyp.valWTr.posVal

Integer


Int 8

<Root>.BscTyp.valWTr.transInd

Boolean


Boolean

<Root>.Cause.stVal

Integer


See Cause of Transmission

<Root>.ComingFrom

String



<Root>.Confirmation.stVal

Boolean

false


<Root>.DpsTyp.stVal

String


intermediate-state | off | on | bad-state

<Root>.Identifier

String


exchanged_data.datapoints.pivot_id


<Root>.MvTyp.mag.f

Float


Float 32

<Root>.MvTyp.mag.i

Integer


Int 32

<Root>.SpsTyp.stVal

Boolean



<Root>.TmOrg.stVal

String


"genuine" |  "substituted"

<Root>.TmValidity.stVal = "invalid"

String

"good"

"good" | "invalid" | "reserved" | "questionable"

...

Key

Type

Default Value

Notes

<Root>.Cause.stVal

Integer


See Cause of Transmission

<Root>.ComingFrom

String


This plugin should always use the value "iec104" when converting to pivot

<Root>.Identifier

String


exchanged_data.datapoints.pivot_id


<Root>.Select.stVal

Boolean

false

  • 0 is mapped with false, for Execute

  • 1 is mapped with true, for Select before Execute

<Root>.<type>

{CDC}


exchanged_data.datapoints.pivot_type

(see <type> conversion table above)

<Root>.<type>.q.test

Boolean

false


<Root>.<type>.t.SecondSinceEpoch

Integer



<Root>.SpcTyp.ctlVal

Boolean


0 or 1

<Root>.DpcTyp.ctlVal

String


intermediate-state | off | on | bad-state

<Root>.IncTyp.ctlVal

Integer


Int 32

<Root>.ApcTyp.ctlVal

Float


Float 32

<Root>.BscTyp.ctlVal

String


stop | lower | higher | reserved

...