Page tree
Skip to end of metadata
Go to start of metadata

Dáta XML súboru je tá časť v štruktúre XML súboru, ktorá obsahuje konfiguráciu objektov systému D2000 alebo jej časti.


Rezervované sekcie XML dát

  1. REFERENCES - obsahuje štruktúry reprezentujúce objektové a stĺpcové referencie objektu
  2. CFGRECORDS - obsahuje štruktúry reprezentujúce dáta objektu
  3. MEMBEROFLOGGROUP - obsahuje za sebou uvedené member elementy, ktoré určujú, do akej logickej skupiny daný objekt patrí
  4. MEMBEROFRESGROUP - obsahuje za sebou uvedené member elementy, ktoré určujú, do akej skupiny objektov daný objekt patrí
  5. CRC - obsahuje MD5 hash dát
  6. OBJLIFELOGS - obsahuje za sebou uvedené logy "života objektu"

Na získanie podrobných informácií o tom, ktorými štruktúrami sú definované objekty systému D2000, aké atribúty tieto štruktúry obsahujú, aké sú typy hodnôt týchto atribútov a aké hodnoty môžu tieto atribúty nadobúdať je možné použiť program pre výpis aktuálnej štruktúry. Súčasne tento výpis obsahuje nepodporované objekty a vymenované typy.

Rezervovaná sekcia REFERENCES


Obsah sekcie z príkladu XML súboru:

<HOBJ_REF>
  <uid>A25DED0E4DA94B4895A119370E3AF4FB</uid>
  <name>SV.Limits</name>
  <objType>D2RECORD</objType>
  <valType>Rec</valType>
</HOBJ_REF>
<COL_REF>
  <col_idx>1</col_idx>
  <col_name>VHL</col_name>
  <col_valType>Int</col_valType>
</COL_REF>
<HOBJ_REF>
  <uid>USER_VAR</uid>
  <name>USER_VAR</name>
  <objType>SYSTEM</objType>
  <valType>NAN</valType>
</HOBJ_REF>

Obsahuje štruktúry:

  • HOBJ_REF reprezentujúce objektové referencie objektu
  • COL_REF reprezentujúce stĺpcové referencie objektu (objekt ich obsahuje, ak je objekt definícia štruktúry alebo na ňu odkazuje)

Popis vlastností objektových referencií:

  •  každá objektová referencia musí mať nastavený minimálne atribút name
  •  atribúty uid, objType a valType v objektovej referencii sú nepovinné
  •  ak je atribút uid v objektovej referencii nastavený, pri párovaní objektových referencií má prioritu pred atribútom name

Popis vlastností stĺpcových referencií:

  •  stĺpcové referencie musia nasledovať za príslušnou objektovou referenciou
  •  každá stĺpcová referencia musí mať nastavený minimálne atribút col_name
  •  atribúty col_idx a col_valType v stĺpcovej referencii sú nepovinné
  •  ak je atribút col_idx v stĺpcovej referencii nastavený, ma párovaní stĺpcových referencií prioritu pred atribútom col_name

Rezervovaná sekcia CFGRECORDS


Obsah sekcie z príkladu XML súboru:

<TObjItemData>
  <Id>0</Id>
  <Name>U.TimeSlice</Name>
  <Descript>Time Slice</Descript>
  <Typ>USER_VAR</Typ>
  <ParentId>USER_VAR</ParentId>
  <Value_Type>TmR</Value_Type>
  <CreateTime>08.10.2009 08:10:31.366</CreateTime>
  <ModifyTime>08.10.2009 08:18:02.938</ModifyTime>
  ...
  <uuid>5CB809E9342B7A46BD790A8C7D14C69E</uuid>
</TObjItemData>
<tUserVarData_Full>
  <tUserVarData>
    <MANUAL>True</MANUAL>
    <MANUAL_VAL/>
    <FLAGS/>
    <VALUE_TIME>08.10.2009 08:10:31.379</VALUE_TIME>
    <MONITOR>False</MONITOR>
    <SAVE_VALUE>True</SAVE_VALUE>
  </tUserVarData>
  <startVal/>
</tUserVarData_Full>

V tejto sekcii sa musí vždy vyskytovať štruktúra TObjItemData (len jedenkrát) a to hneď na jej začiatku. Jednoznačne identifikuje objekt, ktorého konfigurácia je uložená v XML súbore. Za touto štruktúrou nasledujú štruktúry, ktorých počet a pomenovanie je závislé od konkrétneho typu objektu. Napríklad vyššie uvedený objekt je typu USER_VAR obsahuje ešte štruktúru s názvom tUserVarData_Full.

Popis vlastností identifikačnej šturktúry:

  • atribút Id reprezentuje Id objektu (údaj, ktorý ma význam pri operácii XML Import)
  • atribút Name musí byť vždy zadaný
  • atribút uuid, ak je zadaný, má pri párovaní objektov prioritu pred atribútom Name

Rezervovaná sekcia MEMBEROFLOGGROUP


Obsah sekcie z príkladu XML súboru:

<member>SELT\CD8FD25EF8A690341B111F5274CDB5AB</member>

Popis vlastností hodnoty memeber:

  • reprezentuje zaradenie objektov do logických skupín
  • musí obsahovať názov logickej skupiny (pred znakom '\')
  • môže obsahovať aj uid logickej skupiny (za znakom '\')

Poznámka: Pri operácii XML Import vplýva táto hodnota na členstvo objektu v jednotlivých logických skupinách.

Rezervovaná sekcia MEMBEROFRESGROUP


Obsah sekcie z príkladu XML súboru:

<member>Home_s\04CB44144B2CD8E46955D846D30B0F72</member>

Popis vlastností hodnoty memeber:

  • reprezentuje zaradenie objektov do skupín objektov
  • musí obsahovať názov skupiny objektov (pred znakom '\')
  • môže obsahovať aj uid skupiny objektov (za znakom '\')
  • ak je názov skupiny objektov uzavretý v '[' a ']', objekt bol pridaný do skupiny s potomkami

Rezervovaná sekcia CRC


Obsah sekcie z príkladu XML súboru:

a7a8bda021932a3547e6553cb8980273

Hodnota CRC predstavuje MD5 hash vytvorený z obsahu XML súboru. Zahŕňa dáta od <ROOT> elementu (včítane <ROOT> elementu) až po riadok pred CRC sekciou (vrátane znakov CR, LF alebo oboch). Vyhodnotenie CRC hodnoty má význam pre XML Import a XML Repository.

Vyhodnotenie CRC hodnoty:

  • sekcia sa v dátach nachádza
    • MD5 hash zodpovedá tejto hodnote - dáta neboli modifikované
    • MD5 hash nezodpovedá tejto hodnote - dáta boli modifikované
  • sekcia sa v dátach nenachádza - nedá sa určiť, či boli dáta modifikované

Vyhodnotenie tejto CRC hodnoty má zásadný vplyv na platnosť atribútu ModifyTime štruktúry TObjItemData v rezervovanej sekcii <CRGRECORDS>, čo sa prejaví pri operácii XML Import nasledovne:

  • ak je CRC hodnota platná, potom je čas modifikácie objektu nastavený na hodnotu atribútu ModifyTime z XML súboru
  • ak je CRC hodnota neplatná, potom je čas modifikácie objektu nastavený na čas XML súboru alebo na aktuálny čas, ak bol čas XML súboru nedefinovaný
  • ak bola CRC hodnota neplatná, alebo sa nenachádzala v XML súbore a pred operáciou XML Import je čas určený na zmenu rovný pôvodnému času modifikácie objektu, zmení import tento čas modifikácie na aktuálny čas

Rezervovaná sekcia OBJLIFELOGS


Obsah sekcie z príkladu XML súboru:

<tObjLifeLogData>
  <name>U.TimeSlice</name>
  <state>OLA_CREATED</state>
  <modify_time>08.10.2009 08:16:23.761</modify_time>
  <user_name>s</user_name>
  <process_name>WS1JSTF2.CNF</process_name>
  <computer_name>WS1JSTF2</computer_name>
  <log_type>OLT_CONFIG</log_type>
  <comment_text/>
</tObjLifeLogData>

Za sebou uvedené štruktúry tObjLifeLogData reprezentujú logy "života objektu"

Popis vlastností log štruktúry:

  • name v logu sa môže odlišovať od name objektu (nakoľko objekt mohol byť premenovaný)
  • uid a id sa v logu nenachádza, nakoľko je obsiahnuté priamo v objekte
  • do cieľovej konfigurácie sa importujú len tie logy objektu, ktoré tam ešte pre daný objekt nie sú

Podporované typy hodnôt atribútov štruktúr


Medzi podporované typy hodnôt atribútov štruktúr patria:

Vymenovaný typ Stručný popis hodnoty atribútu Príklad elementu v XML súbore
T_RECORD_NAME Interné meno štruktúry. meno tagu štruktúry
T_RECORD Hodnota typu štruktúra. vnorená štruktúra <tCalcData> v <tCalcData_Full>
T_ARRAY Hodnota typu pole štruktúr rovnakého typu. vnorené pole štruktúr <Tprvok_pola_?> v <STRIP_DATA>
T_HOBJ Meno objektu. <ParentId>DIAGRAMS</ParentId>
T_HOBJ_KEY Meno objektu, ktoré je zároveň kľúčovou položkou. <ID_RESOURCE>Home_Pjanko</ID_RESOURCE>
T_VOBJ Meno objektu, riadok a stĺpec. <CtrlObject>P.IF500_RS_WatchDog</CtrlObject>
T_BOOLEAN Vymenovaný typ (hodnota True alebo False). <Read_Only>False</Read_Only>
T_BITSET Pole vymenovaných typov (vymenované hodnoty). <IsValueDelay>Off</IsValueDelay>
T_ENUM Vymenovaný typ (vymenované hodnoty). <Typ>POINT</Typ>
T_SIGNED_INT Celočíselná hodnota <-2147483647 .. 2147483648>. <TransPalIdx>0</TransPalIdx>
T_UNSIGNED_INT Celočíselná hodnota <0 .. 4294967295>. <Id>200449</Id>
T_SIGNED_INT_KEY Celočíselná kľúčová hodnota <-2147483647 .. 2147483648>. <grObjectNr>1163</grObjectNr>
T_UNSIGNED_INT_KEY Celočíselná kľúčová hodnota <0 .. 4294967295>. <Row>0</Row>
T_FLOAT Neceločíselná hodnota. Hodnoty väčšie ako 1.0E+38 budú interpretované ako hodnota 1.0E+38 a hodnoty menšie ako -1.0E+38 budú interpretované ako hodnota -1.0E+38. <BaseValue>1.00000000000000E+00</BaseValue>
T_D2TIME Hodnota určujúca čas a dátum. <ModifyTime>18.07.2003 11:52:09.674</ModifyTime>
T_STRING Textová hodnota s presne definovanou dĺžkou. <PassCode>ROOT_CFGRECORDS_TUserData_PassCode</PassCode>
T_BOUNDED_STRING Textová hodnota s definovanou maximálnou dĺžkou. <Name>D.PIPA_CHSO2_Mh</Name>
T_UNBOUNDED_STRING Textová hodnota s neobmedzenou dĺžkou. <statement>TextTextTextTextText</statement>

Typy hodnôt sa delia na:

  • štruktúrované - T_RECORD a T_ARRAY
  • jednoduché - všetky ostatné

Reťazové hodnoty T_STRING, T_BOUNDED_STRING alebo T_UNBOUNDED_STRING sa ďalej členia na:

  • SDT_NORMAL - klasický reťazec
  • SDT_EXPRESSION - reťazec typu výraz
  • SDT_RAW_DATA - reťazec označujúci binárne dáta

Vlastnosti typu SDT_RAW_DATA:

  • atribút typu SDT_RAW_DATA poukazuje na skutočnosť, že k danému XML súboru existuje binárny súbor
  • dáta binárneho súboru predstavujú skutočnú hodnotu atribútu typu SDT_RAW_DATA
  • hodnota atribútu typu SDT_RAW_DATA uvedená v XML súbore obsahuje vnorenie atribútu (je ignorovaná)
  • XML Export ukladá binárny súbor pod názvom <meno_objektu>_<vnorenie_atribútu>.bin
  • XML Import hľadá binárny súbor pod názvom <meno_xml_súboru>_<vnorenie_atribútu>.bin
  • pokiaľ nie je názov objektu v XML súbore premenovaný (element <Name>), potom XML Export aj XML Import pracuje s rovnakým názvom binárneho súboru (napríklad U.UserVar_ROOT_CFGRECORDS_TUserData_PassCode.bin), ktorý je uložený pri XML súbore (je jeho nevyhnutnou súčasťou)

Vlastnosti typu T_ARRAY:

  • názov položiek má tvar NazovPolozky_[X] (namiesto [X] je buď rozsah hodnôt 0..N alebo hodnoty vymenovaného typu)
  • samotné položky môžu byť typu T_RECORD, alebo niektorého jednoduchého typu

Príklad XML súboru reprezentujúceho objekt systému D2000


Nasledujúci príklad zobrazuje uloženie konfigurácie objektu typu USER_VAR s názvom U.TimeSlice do XML súboru:

<?xml version="1.0" encoding="windows-1250"?>
<!--$Date: 2012/10/19 05:30:58 $ $Revision: 1.7 $ $Author: pbrezina $ $ExpSubDir: Common\Planner $-->
<ROOT>
  <REFERENCES>
    <HOBJ_REF>
      <uid>A25DED0E4DA94B4895A119370E3AF4FB</uid>
      <name>SV.Limits</name>
      <objType>D2RECORD</objType>
      <valType>Rec</valType>
    </HOBJ_REF>
    <COL_REF>
      <col_idx>1</col_idx>
      <col_name>VHL</col_name>
      <col_valType>Int</col_valType>
    </COL_REF>
    <HOBJ_REF>
      <uid>USER_VAR</uid>
      <name>USER_VAR</name>
      <objType>SYSTEM</objType>
      <valType>NAN</valType>
    </HOBJ_REF>
  </REFERENCES>
  <CFGRECORDS>
    <TObjItemData>
      <Id>0</Id>
      <Name>U.TimeSlice</Name>
      <Descript>Time Slice</Descript>
      <Typ>USER_VAR</Typ>
      <ParentId>USER_VAR</ParentId>
      <Value_Type>TmR</Value_Type>
      <CreateTime>08.10.2009 08:10:31.366</CreateTime>
      <ModifyTime>08.10.2009 08:18:02.938</ModifyTime>
      <Text_Palette/>
      <Read_Only>False</Read_Only>
      <TECH_UNIT/>
      <UseLimits>False</UseLimits>
      <VHL>1.00000000000000E+38</VHL>
      <HL>1.00000000000000E+38</HL>
      <LL>-1.00000000000000E+38</LL>
      <VLL>-1.00000000000000E+38</VLL>
      <VHL_ID>SV.Limits[1]^VHL</VHL_ID>
      <HL_ID/>
      <LL_ID/>
      <VLL_ID/>
      <Hysterezia>0.00000000000000E+00</Hysterezia>
      <TransPalIdx>0</TransPalIdx>
      <Hidden>False</Hidden>
      <uuid>5CB809E9342B7A46BD790A8C7D14C69E</uuid>
    </TObjItemData>
    <tUserVarData_Full>
      <tUserVarData>
        <MANUAL>True</MANUAL>
        <MANUAL_VAL/>
        <FLAGS/>
        <VALUE_TIME>08.10.2009 08:10:31.379</VALUE_TIME>
        <MONITOR>False</MONITOR>
        <SAVE_VALUE>True</SAVE_VALUE>
      </tUserVarData>
      <startVal/>
    </tUserVarData_Full>
  </CFGRECORDS>
  <MEMBEROFLOGGROUP>
    <member>SELT\CD8FD25EF8A690341B111F5274CDB5AB</member>
  </MEMBEROFLOGGROUP>
  <MEMBEROFRESGROUP>
    <member>Home_s\04CB44144B2CD8E46955D846D30B0F72</member>
  </MEMBEROFRESGROUP>
  <CRC>a7a8bda021932a3547e6553cb8980273</CRC>
  <OBJLIFELOGS>
    <tObjLifeLogData>
      <name>U.TimeSlice</name>
      <state>OLA_CREATED</state>
      <modify_time>08.10.2009 08:16:23.761</modify_time>
      <user_name>s</user_name>
      <process_name>WS1JSTF2.CNF</process_name>
      <computer_name>WS1JSTF2</computer_name>
      <log_type>OLT_CONFIG</log_type>
      <comment_text/>
    </tObjLifeLogData>
  </OBJLIFELOGS>
</ROOT>
Write a comment…