...
Code Block |
---|
language | js |
---|
title | pivot_format_data_model |
---|
|
{
"data_object_header":{
"doh_type":"some_value",
"doh_name":"some_value",
"doh_ca":"some_value",
"doh_oa":"some_value",
"doh_cot":"some_value",
"doh_flag_1test":"some_value",
"doh_flag_2negative":"some_value",
"doh_version":"some_value",
"doh_src_prot":"some_value"
},
"data_object_item":{
"doi_ioa":"some_value",
"doi_value":"some_value",
"doi_qual_class":"some_value",
"doi_quality":"some_value",
"doi_tscurrent_src":"some_value",
"doi_tsnormal_flag1src":"some_value",
"doi_tsnormal_flag2value":"some_value",
"doi_ts_flag3class":"some_value",
}
} |
The pivot format uses JSON with a header and item structure.
The header object holds the common attributes of a telecontrol message.
Each item object holds the specific attributes of an information point whether it is a measurement, a state, a command, etc...
IEC 104 to pivot format translation
"doi_ts":"some_value",
"doi_ts_qual":"some_value",
"doi_ts_sum_time":"some_value",
"doi_ts_subs":"some_value",
"doi_cov_class":"some_value",
"doi_cov_counter":"some_value"
}
} |
The pivot format uses JSON with a header and item structure.
The header object holds the common attributes of a telecontrol message.
Each item object holds the specific attributes of an information point whether it is a measurement, a state, a command, etc...
IEC 104 to pivot format translation
IEC 104 IEC 104 ASDU data model
Reference: NF EN 60870-5-101 § 7.3.1.22
...
Code Block |
---|
|
{
"protocol_translation_layer":{
"name":"iec104_to_pivot",
"version":"1.0",
"mapping":{
"data_object_header":{
"doh_type":"type_id",
"doh_ca":"ca",
"doh_oa":"oa",
"doh_cot":"cot",
"doh_flag_1test":"istest",
"doh_flag_2"negative":"isnegative"
},
"data_object_item":{
"doi_ioa":"ioa",
"doi_value":"value",
"doi_quality":"quality_desc",
"doi_ts":"time_marker",
"doi_ts_flag1":"isinvalid",
"doi_ts_flag2":"isSummerTime",
"doi_ts_flag3":"isSubstituted"
}
}
}
} |
...
draw.io Diagram |
---|
border | true |
---|
| |
---|
diagramName | iec104_to_pf_conv_process |
---|
simpleViewer | false |
---|
width | |
---|
links | auto |
---|
tbstyle | top |
---|
lbox | true |
---|
diagramWidth | 881931 |
---|
revision | 57 |
---|
|
NB: The conversion process shall produce as many pivot format objects as information objects in the source ASDU.
...
Code Block |
---|
|
{
"data_object_header":{
"doh_type":"some_value",
"doh_name":"not_populated",
"doh_ca":"some_value",
"doh_oa":"some_value",
"doh_cot":"some_value",
"doh_flag_1test":"some_value",
"doh_flag_2negative":"some_value",
"doh_version":"1.0some_value",
"doh_src_prot":"iec104some_value"
},
"data_object_item":{
"doi_ioa":"some_value",
"doi_value":"some_value",
"doi_qual_qualityclass":"somenot_valuepopulated",
"doi_tsquality":"some_value",
"doi_tscurrent_flag1src":"somenot_valuepopulated",
"doi_tsnormal_flag2src":"somenot_valuepopulated",
"doi_tsnormal_flag3value":"somenot_valuepopulated",
}
} |
Pivot format to IEC 104 translation
Pivot format to IEC 104 conversion configuration model
Code Block |
---|
|
{
"protocoldoi_translationts_layerclass":{"not_populated",
"namedoi_ts":"pivotsome_to_iec104value",
"versiondoi_ts_qual":"1.0some_value",
"mappingdoi_ts_sum_time":{"some_value",
"datadoi_objectts_headersubs":{"some_value",
"type_id"doi_cov_class":"dohnot_typepopulated",
"ca"doi_cov_counter":"dohnot_capopulated",
}
} |
Pivot format to IEC 104 translation
Pivot format to IEC 104 conversion configuration model
Code Block |
---|
|
{
"protocol_translation_layer":{
"oaname":"dohpivot_to_oaiec104",
"version":"1.0",
"cotmapping":"doh_cot",{
"data_object_header":{
"istesttype_id":"doh_flag_1type",
"isnegativeca":"doh_flag_2ca",
} "oa":"doh_oa",
"data_object_item":{ "cot":"doh_cot",
"ioaistest":"doidoh_ioatest",
"valueisnegative":"doidoh_valuenegative",
},
"quality_desc":"doi_quality", "data_object_item":{
"time_markerioa":"doi_tsioa",
"isinvalidvalue":"doi_ts_flag1value",
"isSummerTimequality_desc":"doi_ts_flag2quality",
"isSubstitutedtime_marker":"doi_ts_flag3",
}"isinvalid":"doi_ts_qual",
}
}
} |
Conversion process
"isSummerTime":"doi_ts_sum_time",
"isSubstituted":"doi_ts_subs"
}
}
}
} |
Conversion process
draw.io Diagram |
---|
border | true |
---|
| |
---|
diagramName | pf_to_iec104_conv_process |
---|
simpleViewer | false |
---|
width | |
---|
links |
---|
|
draw.io Diagram |
---|
border | true |
---|
diagramName | pf_to_iec104_conv_process |
---|
simpleViewer | false |
---|
width | links | auto |
---|
tbstyle | top |
---|
lbox | true |
---|
diagramWidth | 881912 |
---|
revision | 34 |
---|
|
IEC 104 ASDU resulting object
...
ICCP TASE.2 to pivot format translation
...
Pivot format to ICCP TASE.2 translation
DataValue Indication Point data model
PointName
PointType
PointRealValue
PointStateValue
PointDiscreteValue
QualityClass
Validity
CurrentSource
NormalSource
NormalValue
TimeStampClass
TimeStamp
TimeStamp Quality
COVClass
COVCounter
ICCP TASE.2 to pivot format conversion configuration model
NormalSource
NormalValue
TimeStampClass
TimeStamp
TimeStamp Quality
COVClass
COVCounter
ICCP TASE.2 to pivot format conversion configuration model
Code Block |
---|
|
{
"protocol_translation_layer":{
"name":"tase2_to_pivot",
"version":"1.0",
"mapping":{
"data_object_header":{
"doh_type":"PointType",
"doh_name":"PointName"
},
"data_object_item":{
"doi_value":"PointRealValue", //PointStateValue or PointDiscreteValue
"doi_qual_class":"QualityClass",
"doi_quality":"Validity",
"doi_current_src":"CurrentSource",
"doi_normal_src":"NormalSource",
"doi_normal_value":"NormalValue",
"doi_ts_class":"TimeStampClass",
"doi_ts":"TimeStamp",
"doi_ts_qual":"TimeStamp Quality",
|
Code Block |
---|
|
{
"protocol_translation_layer":{
"namedoi_cov_class":"tase2_to_pivotCOVClass",
"versiondoi_cov_counter":"1.0COVCounter",
}
"mapping":{
}
}
} |
Pivot format resulting object
Code Block |
---|
|
{
"data_object_header":{
"doh_type":"PointTypesome_value",
"doh_name":"PointNamesome_value",
"doh_ca":"canot_populated",
"doh_oa":"oanot_populated",
"doh_cot":"cotnot_populated",
"doh_test":"not_populated",
"doh_flag_1negative":"istestnot_populated",
"doh_version":"some_value",
"doh_flagsrc_2prot":"isnegativesome_value"
},
"data_object_item":{
"doi_ioa":"ioanot_populated",
"doi_value":"PointRealValuesome_value", //PointStateValue or PointDiscreteValue
"doi_qual_class":"QualityClasssome_value",
"doi_quality":"Validitysome_value",
"doi_current_src":"CurrentSourcesome_value",
"doi_normal_src":"NormalSourcesome_value",
"doi_normal_value":"NormalValuesome_value",
"doi_ts_class":"TimeStampClasssome_value",
"doi_ts":"TimeStampsome_value",
"doi_ts_qual":"TimeStamp Qualitysome_value",
"doi_ts_flag1sum_time":"isSummerTimenot_populated",
"doi_ts_flag2subs":"isSubstitutednot_populated",
"doi_cov_class":"COVClasssome_value",
"doi_cov_counter":"COVCountersome_value"
}
}
}
}} |
Pivot format to ICCP TASE.2 translation