...
The content under <Root> will convert the IEC 104 data objet to a pivot object as follow:
Tele-Informations
Key
Type
Default Value
HNZ.data_object.<...>
Note
Mandatory
(of do field)<Root>.<type>
{CDC}
do_type
SpcTyp (TC) | IncTyp (TVC)
YES
<Root>.ComingFrom
String
hnzip
do_comingfrom
NO
<Root>.SpcTyp.stVal
Boolean
do_value
[0..1]
YES (if TC)
<Root>.IncTyp.stVal
Int
do_value
Int 32
YES (if TVC)
<Root>.Identifier
String
do_id
exchanged_data.datapoints.pivot_id
YES
<Root>.<type>.q.Validity
String
good
do_valid
good (0) | invalid (1)
Key | Type | Default Value | HNZ.data_object.<...> | Note | Mandatory (of do field) | |
---|---|---|---|---|---|---|
<Root>.<type> | {CDC} | do_type | exchanged_data.datapoints.pivot_type (see <type> conversion table above) | YES | ||
<Root>.Cause.stVal | Integer | do_cg | 3 (TS on CE) | 20 (TS on CG) | 1 (TM cyclic) | YES | ||
<Root>.ComingFrom | String | "hnzip" | do_comingfrom | NO | ||
<Root>.SpsTyp.stVal | Boolean | do_value | [0..1] TS | YES | ||
<Root>.MvTyp.mag.i | Integer | do_value | Int 32 (TM) | YES | ||
<Root>.Identifier | String | do_id | exchanged_data.datapoints.pivot_id | YES | ||
<Root>.<type>.q.Validity | String | "good" | do_valid, do_ts_c, do_outdated | By order of priority: do_valid = 1 => "invalid" do_outdated = 1 => "questionable" do_ts_c = 1 => "questionable" else "good"good (0) | invalid (1) | NO | |
<Root>.<type>.t.SecondSinceEpoch <Root>.<type>.t.FractionOfSecond | Integer Integer | do_ts | SecondSinceEpoch is the time in seconds since 1970- 01-01 00:00:00 UTC FractionOfSecond is the fraction of second (Computation method described in 61850 protocol documentation). | YES | ||
<Root>.TmValidity.stVal | String | "good" | do_ts_iv | good (0) | invalid (1) | NO | <Root>.<type>.q.Validity|
<Root>.<type>.q.DetailQuality.oldDataString | BooleanValidity = "good" | oldData = <undefined> | do_ts_c | 0 => Validity = "good", oldData = <undefined> 1 => Validity = "questionable", oldData = "true" | NO |
TC ACK and TVC ACK
, do_outdated | By order of priority: do_outdated = 1 => true do_ts_c = 1 => true else <undefined> |
NO |
Filter rules
STATION => (ASDU) HNZ SOUTH => (IEC104 DP) HNZTOPIVOT =>(PIVOT DP) PIVOTTOIEC104 => (IEC104 DP) IEC104 NORTH => (ASDU) CENTER
...
The content under <Root> will convert the IEC 104 data objet to a pivot object as follow:
TC and TVC
Key | Type | Default Value | HNZ.data_object.<...> | Note | Mandatory (of co field) |
---|---|---|---|---|---|
<Root>.ComingFrom | String | "hnzip" | NO | ||
<Root>.Identifier | String | exchanged_data.datapoints.pivot_id | YES | ||
<Root>.<type> | {CDC} | co_type | SpcTyp (TC) | IncTyp (TVC) | YES | |
<Root>.SpcTyp.ctlVal | Boolean | do_value | [0..1] | YES (if TC) | |
<Root>.SpcTyp.stVal | Boolean |
do_value | [0..1] (ACK) | YES (if TC ACK) | |||
<Root>.IncTyp.ctlVal | Int | do_value | Int 32 | YES (if TVC) | |
<Root>.IncTyp.stVal | Int |
do_value | Int 32 (ACK) | YES (if TVC ACK) | |
<Root>.<type>.q. |
Validity | String | "good" |
co_id
exchanged_data.datapoints.pivot_id
do_valid | "good" (0) | "invalid" (1) (ACK) | NO |
Filter rules
CENTER => (ASDU) IEC104 NORTH => (IEC104 DP) IEC104TOPIVOT =>(PIVOT DP) PIVOTTOHNZ => (IEC104 DP) HNZ SOUTH=> (ASDU) STATION
Rule 1: if the incoming HNZ 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.