You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

This plugin can be used to convert IEC 104 ASDU objects to FledgePower pivot model objects.

The filter implements the Fledge Filter plugin interface (see filter_plugins).

Filter configuration

See Plugins configuration design for examples and details.

The "config" parameter of  "plugin_init" call shall include :

  • A "exchanged_data" category with the same content as provided to the IEC104 south plugin. This section is mandatory so that the filter plugin can convert the PIVOT type from IEC 104 type.

Notes :

  • All types not listed in this table are not supported in current version.
  • The current implementation provides a default mapping rule for each known type, but some new rules might be added in the future and configured using the "alternate_mapping_rule" option in its parameters.

Filter interface

The "plugin_ingest" call will convert each "reading" of "reading_set" as follow:

  • The Reading fields "id", "TimeStamp" and "userTimestamp" are unchanged.
  • The "asset_name" field shall be mapped with "exchanged_data.datapoints.label"
  • The Reading field "reading" is updated with a JSON object {'<Root> key' : {...}} . The content of object under '<Root> key' is given below.

The <Root> key of PIVOT object is:

Reading key

Content

PIVOTTS.GTISTele Signal
PIVOTTM.GTIMTele Measurement
PIVOTTC.GTICNot supported yet

<type> conversion table:

CDC ClassIEC 104 Type IDType ID with timetagAlternative format type id
SpsTypM_SP_NA_1M_SP_TA_1,M_SP_TB_1M_PS_NA_1
DpsTypM_DP_NA_1M_DP_TA_1,M_DP_TB_1M_EP_TA_1,M_EP_TD_1
MvTypM_ME_NA_1M_ME_TA_1,M_ME_TD_1M_ME_ND_1
MvTypM_ME_NB_1M_ME_TB_1,M_ME_TE_1
MvTypM_ME_NC_1M_ME_TC_1,M_ME_TF_1

The content under <Root> will convert the IEC 104 data objet to a pivot object as follow:

Key

Type

Default Value

iec104.data_object.<...>

Note

<Root>.Cause.stValInteger
do_cotSee Cause of Transmission
<Root>.Confirmation.stValBooleanfalsedo_negative
<Root>.ComingFromString"iec104"do_comingfromiec104
<Root>.IdentifierString

do_id


exchanged_data.datapoints.pivot_id


<Root>.<type>{CDC}
do_type

exchanged_data.datapoints.pivot_type

(see <type> conversion table above)

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

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

Boolean

falsedo_quality_ov = true


<Root>.<type>.q.testBooleanfalsedo_test
<Root>.<type>.q.operatorBlockedBooleanfalsedo_quality_bl
<Root>.<type>.q.Source = "substituted"String"process"do_quality_sb = true"process" | "substituted"
<Root>.<type>.q.Validity = "invalid"String"good"do_quality_iv = true"good" | "invalid" | "reserved" | "questionable"
<Root>.<type>.t.SecondSinceEpochInteger
do_ts
<Root>.TmOrg.stValString
do_ts_org"genuine" |  "substituted"
<Root>.TmValidity.stVal = "invalid"String"good"do_ts_iv = true"good" | "invalid" | "reserved" | "questionable"

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

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

String"good"do_quality_nt = true"good" | "invalid" | "reserved" | "questionable"
<Root>.SpsTyp.stValBoolean
do_value
<Root>.DpsTyp.stValString
do_valueintermediate-state | off | on | bad-state
<Root>.MvTyp.mag.fFloat
do_valueFloat 32
<Root>.MvTyp.mag.iInteger
do_valueInt 32

Filter rules

STATION => (ASDU) IEC104 SOUTH => (IEC104 DP) IEC104TOPIVOT =>(PIVOT DP) PIVOTTOIEC104 => (IEC104 DP) IEC104 NORTH => (ASDU) CENTER

Rule 1: if the incoming IEC104 data object has not the attribute or has the default value then we don't have to create the corresponding attribute in the pivot object.

Rule 2: If the received pivot object has not an expected attribute then we create the attribute of the protocol specific datapoint with default value.

Rule 3: Case when ASDU timestamp is not received:

A the IEC104TOPIVOT step:
If the received ASDU is without timestamp Then
    We create a pivot object With timestamp = current system time
    And <>.TmOrg.stVal = substituted

On the PIVOTTOIEC104 step:
We create an IEC104 datapoint with timestamp and do_ts_sub = true

IEC104 NORTH step:
If the Datapoint configured in the exchanged data has not IEC104 timestamp typeid
Then we create an ASDU with a typeid with no timestamp
If the Datapoint configured in the exchanged data has IEC104 timestamp typeid
Then we create an ASDU with a timestamp typeid, ASDU timestamp = do_ts And subtituted = do_ts_sub

  • No labels