Versions Compared

Key

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

...

Code Block
languagejs
titlepivot_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
languagejs
{
   "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
bordertrue
diagramNameiec104_to_pf_conv_process
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth881931
revision57

NB: The conversion process shall produce as many pivot format objects as information objects in the source ASDU.

...

Code Block
languagejs
{
   "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
languagejs
{
   "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
languagejs
{
   "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
bordertrue
diagramNamepf_to_iec104_conv_process
simpleViewerfalse
width
links
draw.io Diagram
bordertrue
diagramNamepf_to_iec104_conv_process
simpleViewerfalse
widthlinksauto
tbstyletop
lboxtrue
diagramWidth881912
revision34

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
languagejs
{
   "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
languagejs
{
   "protocol_translation_layer":{
      "namedoi_cov_class":"tase2_to_pivotCOVClass",
            "versiondoi_cov_counter":"1.0COVCounter",
         }
   "mapping":{
   }
   }
}

Pivot format resulting object

Code Block
languagejs
{
   "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