Versions Compared

Key

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

...

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

Common rules

Filter configuration

See Plugins configuration design for examples and details.

...

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
SPCTypC_SC_NA_1C_SC_TA_1
DPCTypC_DC_NA_1C_DC_TA_1
INCTypC_SE_NB_1C_SE_TB_1
APCTypC_SE_NC_1C_SE_TC_1

Converting monitoring data types

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_comingfrom
iec104
<Root>.IdentifierStringdo_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

...

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

Converting commands data types

...

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

Key

Type

Default Value

iec104.data_object.<...>

Note

<Root>.Cause.stValInteger
co_cotSee Cause of Transmission
<Root>.Confirmation.stValBooleanfalseco_negative
<Root>.ComingFromString"iec104"
iec104
<Root>.IdentifierString


exchanged_data.datapoints.pivot_id


<Root>.<type>{CDC}
co_type

exchanged_data.datapoints.pivot_type

(see <type> conversion table above)

<Root>.<type>.q.testBooleanfalseco_test
<Root>.<type>.t.SecondSinceEpochInteger
co_ts
<Root>.SpcTyp.ctlValBoolean
do_value0 or 1
<Root>.SpcTyp.stValBoolean
do_value0 or 1
<Root>.DpcTyp.ctlValString
do_valueintermediate-state | off | on | bad-state
<Root>.DpcTyp.stValBoolean
do_value0 or 1
<Root>.IncTyp.ctlValInteger
do_valueInt 32
<Root>.IncTyp.stValInteger
do_valueInt 32
<Root>.ApcTyp.ctlValFloat
do_valueFloat 32
<Root>.ApcTyp.mxValFloat
do_valueFloat 32