Versions Compared

Key

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

...

AttributeDescriptionExpected valuesMandatory
PIVOT.GTIM.Beh.stVal?

PIVOT.GTIM.Cause.stValCause of transmission COT Cause of Transmission - FledgePower - LF EnergyYes
PIVOT.GTIM.ChgValCnt.stVal?

PIVOT.GTIM.ComingFromSource protocol nameIEC103, IEC104, TASE.2, OPCUA, 61850, etc...Yes
PIVOT.GTIM.Confirmation.stValIndicates positive or negative confirmation of activationtrue, false, DEFAULT=false?
PIVOT.GTIM.IdentifierUnique identifier of the pivot objectAny non-empty stringYes
PIVOT.GTIM.{CDC}Common Data Class representing the information object

MVTyp

Common Data Classes - FledgePower - LF Energy

Yes
PIVOT.GTIM.NormalSrc.stVal?

PIVOT.GTIM.NormalVal.stVal?

PIVOT.GTIM.TmOrg.stValTimestamp origin, genuine = source otherwise substitutedgenuine, substituted, DEFAULT = genuineYes
PIVOT.GTIM.TmValidity.stValTimestamp validityvalid, invalid, DEFAULT = validYes

...

AttributeDescriptionExpected valuesMandatory
PIVOT.GTIS.Beh.stVal?

PIVOT.GTIS.Cause.stValCause of transmission COT Cause of Transmission - FledgePower - LF EnergyYes
PIVOT.GTIS.ChgValCnt.stVal?

PIVOT.GTIS.ComingFromSource protocol nameIEC103, IEC104, TASE.2, OPCUA, 61850, etc...Yes
PIVOT.GTIS.Confirmation.stValIndicates positive or negative confirmation of activationtrue, false, DEFAULT=false?
PIVOT.GTIS.IdentifierUnique identifier of the pivot objectAny non-empty stringYes
PIVOT.GTIS.{CDC}Common Data Class representing the information object

SPSTyp, DPSTyp, BSCTyp

Common Data Classes - FledgePower - LF Energy

Yes
PIVOT.GTIS.NormalSrc.stVal?

PIVOT.GTIS.NormalVal.stVal?

PIVOT.GTIS.TmOrg.stValTimestamp origin, genuine = source otherwise substitutedgenuine, substituted, DEFAULT = genuineYes
PIVOT.GTIS.TmValidity.stValTimestamp validityvalid, invalid, DEFAULT = validYes

...

AttributeDescriptionExpected valuesMandatory
PIVOT.GTIC.Beh.stVal

defines different behaviours of a control object:

- Direct control with normal security: dct-ctl-wns
- Direct control with enhanced security: dct-ctl-wes
- SBO (Select Before Operate) control with normal security: sbo-ctl-wns
- SBO (Select Before Operate) control with enhanced security: sbo-ctl-wes 

enum: dct-ctl-wns, dct-ctl-wes, sbo-ctl-wns, sbo-ctl-wes, DEFAULT = dct-ctl-wesNo?
PIVOT.GTIC.Cause.stValCause of transmission COT Cause of Transmission - FledgePower - LF EnergyYesNo
PIVOT.GTIC.ComingFromSource protocol nameIEC103, IEC104, TASE.2, OPCUA, 61850, etc...Yes
PIVOT.GTIC.DevId.name?
No
PIVOT.GTIC.{CDC}Common Data Class representing the information object

SPCTyp, DPCTyp, INCTyp, APCTyp, BSCTyp

Common Data Classes - FledgePower - LF Energy

Yes
PIVOT.GTIC.IdentifierUnique identifier of the pivot objectAny non-empty stringYes
PIVOT.GTIC.Qu.stVal?
No
PIVOT.GTIC.ServiceType.stVal?
No
PIVOT.GTIC.Tag.stVal?
No
PIVOT.GTIC.TagClass?
No
PIVOT.GTIC.TaggedReason?
No
PIVOT.GTIC.TmOrgTimestamp origin, genuine = source otherwise substitutedgenuine, substituted, DEFAULT = genuineYesNo
PIVOT.GTIC.TmStampTimestamp
YesNo

Example of a pivot model instance representing a Tele Command:

Code Block
languagejs
{
	"@xmlns:xs": "http://www.w3.org/2001/XMLSchema",
	"PIVOT": {
		"GTIC": {
			"Beh": {
				"stVal": "ondct-ctl-wes"
			},
			"Cause": {
				"stVal": 1
			},
			"ComingFrom": "String",
			"DevId": {
				"name": "String"
			},
			"DevSt": {
				"q": {
					"DetailQuality": {
						"badReference": true,
						"failure": true,
						"inconsistent": true,
						"innacurate": true,
						"oldData": true,
						"oscillatory": true,
						"outOfRange": true,
						"overflow": true
					},
					"Source": "process",
					"Validity": "good",
					"operatorBlocked": true,
					"test": true
				},
				"stVal": true,
				"t": {
					"FractionOfSecond": 1,
					"SecondSinceEpoch": 1,
					"TimeQuality": {
						"clockFailure": true,
						"clockNotSynchronized": true,
						"leapSecondKnown": true,
						"timeAccuracy": 1
					}
				}
			},
			"DpcTyp": {
				"ctlVal": true,
				"q": {
					"DetailQuality": {
						"badReference": true,
						"failure": true,
						"inconsistent": true,
						"innacurate": true,
						"oldData": true,
						"oscillatory": true,
						"outOfRange": true,
						"overflow": true
					},
					"Source": "process",
					"Validity": "good",
					"operatorBlocked": true,
					"test": true
				},
				"stVal": "intermediate-state",
				"t": {
					"FractionOfSecond": 1,
					"SecondSinceEpoch": 1,
					"TimeQuality": {
						"clockFailure": true,
						"clockNotSynchronized": true,
						"leapSecondKnown": true,
						"timeAccuracy": 1
					}
				}
			},
			"Identifier": "String",
			"Qu": {
				"stVal": 1
			},
			"ServiceType": {
				"stVal": "select"
			},
			"SpcTyp": {
				"ctlVal": true,
				"q": {
					"DetailQuality": {
						"badReference": true,
						"failure": true,
						"inconsistent": true,
						"innacurate": true,
						"oldData": true,
						"oscillatory": true,
						"outOfRange": true,
						"overflow": true
					},
					"Source": "process",
					"Validity": "good",
					"operatorBlocked": true,
					"test": true
				},
				"stVal": true,
				"t": {
					"FractionOfSecond": 1,
					"SecondSinceEpoch": 1,
					"TimeQuality": {
						"clockFailure": true,
						"clockNotSynchronized": true,
						"leapSecondKnown": true,
						"timeAccuracy": 1
					}
				}
			},
			"Tag": {
				"stVal": "NO-TAG"
			},
			"TagClass": {
				"q": {
					"DetailQuality": {
						"badReference": true,
						"failure": true,
						"inconsistent": true,
						"innacurate": true,
						"oldData": true,
						"oscillatory": true,
						"outOfRange": true,
						"overflow": true
					},
					"Source": "process",
					"Validity": "good",
					"operatorBlocked": true,
					"test": true
				},
				"stVal": true,
				"t": {
					"FractionOfSecond": 1,
					"SecondSinceEpoch": 1,
					"TimeQuality": {
						"clockFailure": true,
						"clockNotSynchronized": true,
						"leapSecondKnown": true,
						"timeAccuracy": 1
					}
				}
			},
			"TaggedReason": "String",
			"TmOrg": {
				"stVal": "genuine"
			},
			"TmStamp": {
				"q": {
					"DetailQuality": {
						"badReference": true,
						"failure": true,
						"inconsistent": true,
						"innacurate": true,
						"oldData": true,
						"oscillatory": true,
						"outOfRange": true,
						"overflow": true
					},
					"Source": "process",
					"Validity": "good",
					"operatorBlocked": true,
					"test": true
				},
				"stVal": {
					"FractionOfSecond": 1,
					"SecondSinceEpoch": 1,
					"TimeQuality": {
						"clockFailure": true,
						"clockNotSynchronized": true,
						"leapSecondKnown": true,
						"timeAccuracy": 1
					}
				},
				"t": {
					"FractionOfSecond": 1,
					"SecondSinceEpoch": 1,
					"TimeQuality": {
						"clockFailure": true,
						"clockNotSynchronized": true,
						"leapSecondKnown": true,
						"timeAccuracy": 1
					}
				}
			}
		}
	}
}

...

In this chapter we will describe the configuration of the exchanged data. This configuration allow to specify a list of supported data objects. The protocol plugin is expected to make some controls against each entry of the configuration to check:

  • if CA of ASDU is known otherwise throw an error message.if IOA protocol message address or reference is known otherwise throw an error message.
  • if protocol type of ASDU message is known otherwise throw an error message.
  • The label attribute shall be used to populate the Fledge's DataPoint Asset Name attribute.

...

AttributeDescriptionExpected valuesMandatory
namethis identifies the exchanged data configuration
Yes
versionthis is the version number of the configurationx.y where x represents a major version and y a minor changeYes
datapointsarray of datapoints that needs to be managed by the instance of the gateway
Yes
datapoints.labellabel of the datapointany non empty stringYes
datapoints.pivot_idunique identifier of the datapoint, this is used to create a pivot objectany non empty stringYes
datapoints.pivot_typetype of Common Data Class (CDC), this is used to create a pivot objectenum SpsTyp | DpsTyp | MvTyp | SpcTyp | DpcTyp | ...Yes
datapoints.pivot_subtypesarray of additional types of the pivot object[transient, ...]No
datapoints.tfididentifies the math function to transform the input valueenum "normal" | "square_root"  |  "quadratic"  |  "transparent"No
datapoints.paramsarray of parameters for the math functionarray of float 32 [a, b, c, ...]No
datapoints.deadbandband of input values where the output is zeroarray of 2 float 32 [min, max]No
datapoints.protocolsarray of protocols that needs to be managed for a datapoint
Yes
datapoints.protocols.namename of the protocolenum "iec104" | "iec103" | "tase2" | "hnz" | "61850" | "opcua" | ...Yes
datapoints.protocols.addressaddress of the datapoint in the given protocolany non empty stringYes
datapoints.protocols.typeidtype id of the datapoint in the given protocolany non empty string representing a valid protocol type idYes
datapoints.protocols.gi_groups

GI request status for north plugins, if "station" then datapoint is send

for south plugins, it determines whether a datapoint is

send 

expected in the GI response

enum station | 1 | 2 | ...No
datapoints.protocols.alternate_mapping_ruleAlternate mapping rule to convert datapoint from protocol model to pivot or pivot to protocol model, if not specified then default conversion rule is appliedany non empty string representing a function nameNo

...

Code Block
languagejs
{
   "exchanged_data":{
      "name":"SAMPLE",
      "version":"1.0",
      "datapoints":[
         {
            "label":"TS1",
            "pivot_id":"ID114562",
            "pivot_type":"SpsTyp",
            "pivot_subtypes":[
               "transient"
            ],
            "protocols":[
               {
                  "name":"iec104",
                  "address":"45-672",
                  "typeid":"M_SP_TB_1",
                  "gi_groups":"station",
                  "alternate_mapping_rule":"func_name_1"
               },
               {
                  "name":"tase2",
                  "address":"S_114562",
                  "typeid":"Data_StateQTimeTagExtended"
               },
               {
                  "name":"opcua",
                  "address":"ID114562",
                  "typeid":"opcua_sps"
               },
               {
                  "name":"iec61850",
                  "address":"simpleIOGenericIO/GGIO1.Ind1",
                  "typeid":"SPS"
               }
            ]
         },
         {
            "label":"TM1",
            "pivot_id":"ID99876",
            "pivot_type":"MVTyp",
            "tfid":"square_root",
            "params":[
               2.0,
               49.5
            ],
            "deadband":[
               -0.02,
               0.02
            ],
            "protocols":[
               {
                  "name":"iec104",
                  "address":"45-984",
                  "typeid":"M_ME_NA_1"
               },
               {
                  "name":"tase2",
                  "address":"S_114562",
                  "typeid":"Data_RealQ"
               },
               {
                  "name":"opcua",
                  "address":"ID99876",
                  "typeid":"opcua_mvf"
               },
               {
                  "name":"iec61850",
                  "address":"simpleIOGenericIO/GGIO1.AnIn1",
                  "typeid":"MV"
               }
            ]
         }
      ]
   }
}


Warning

Do not use the name "IEC104Command" as a datapoint name in the exchanged data configuration. Doing so could potentially lead to conflicts when trying to read readings from both the South and Dispatcher components.