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 "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"]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 | ||
<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 | ||
<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 |
|
<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 |
Example
...
of Datapoint:
Code Block | ||
---|---|---|
| ||
{ "GTIC":{ "ComingFrom":"iec61850", "SpcTyp":{ "q":{ "test":0 }, "t":{ |
...
"SecondSinceEpoch":1700566837, "FractionOfSecond":15921577 }, "ctlVal":1 }, "Identifier":"TS1", "Select":{ "stVal":0 } } } |
TLS configuration
The IEC61850 standard can also be used with TLS to realize secure and authenticated connections.
...
Fledge's certificate store allows certificates to be stored and used by the south plugins.
Code Block | ||
---|---|---|
| ||
{
"private_key":"iec104_client.key",
"own_cert":"iec104_client.cer",
"ca_certs":[
{
"cert_file":"iec104_ca.cer"
},
{
"cert_file":"iec104_ca2.cer"
}
],
"remote_certs":[
{
"cert_file":"iec104_server.cer"
}
]
} |
Certificates and keys:
The certificates should be a .cert, .cer, .crt, .pem, .p12, .der file.
...