# energetic_time

### Funkce:

Zajištění synchronizace času pro skupinu energetických přítstrojů s vnějšími synchronizačními impulsy a synchronizace ostatních energetických přístrojů. Na výstupech poskytuje hodnoty energetického času, data, čas v právě probíhající čtvrthodiné a hodině a čtvrthodinový a hodinový synchronizační signál. Další přístroje je vhodné napojit na tyto synchronizační signály, protože jsou nastavovány i při nezachycení vnějšího synchronizačního signálu. Po spuštění se přístroj inicializuje časem a datem z počítače. Při zachycení náběžné hrany vnějšího synchronizačního signálu se nastaví na nejbližší čtvrthodinu. Po změně času v systému Control Web se po zachycení náběžné hrany vnějšího synchronizačního signálu se nastaví na nejbližší čtvrthodinu nového času.

### Syntax:

      energetic_time energetic_time_name;
        timer = timer_name;
        owner = owner_name;
        position = integer, integer, integer, integer;
        win_disable = win_disable_list;
        win_title = string;
        access = integer;
        tab_select = integer;
        ext_sync_15m = boolean_expression;
        time_out = cardinal;
        output_section
          sync_15m = output_name;
          sync_1h = output_name;
          hour = output_name;
          minute = output_name;
          second = output_name;
          year = output_name;
          month = output_name;
          day = output_name;
          day_in_week = output_name;
          time_15m = output_name;
          time_1h = output_name;
        end_output_section;
        height_of_frame = integer;
        sync_list = name_list;
        receivers = name_list;
      end_energetic_time;

### Specifické parametry přístroje:

- ext_sync_15m
  obsahuje logický výraz, který odpovídá vnějšímu čtvrthodinovému synchronizačnímu signálu. Přístroj reaguje na náběžnou hranu synchronizačního signálu.
- time_out
  numerická hodnota, která udává v sekundách čas, o který může být překročena doba trvání čtvrthodinového maxima. Pokud není zachycen vnějši synchronizační signál, po uplynutí této doby přístroj jej vyšle sám.
- output_section a end_output_section
  jsou klíčová slova uzavírající výstupní parametry přístroje.
- sync_15m
  obsahuje jméno logické proměnné nebo kanálu, kam je zapisována hodnota čtvrthodinového sychronizačního signáĺu. Slouží pro připojení ostatních energetických přístrojů, ktreré pracují se čtvrthodinovým maximem (supply_meter, maximum_graph, sections, hour_table, diagram).
- sync_1h
  obsahuje jméno logické proměnné nebo kanálu, kam je zapisována hodnota hodinového sychronizačního signáĺu. Slouží pro připojení ostatních energetických přístrojů, které pracují s hodinovým maximem (supply_meter, maximum_graph).
- hour
  obsahuje jméno proměnné nebo kanálu, kam je zapisována hodina energetického času.
- minute
  obsahuje jméno proměnné nebo kanálu, kam je zapisována minuta energetického času.
- second
  obsahuje jméno proměnné nebo kanálu, kam je zapisována sekunda energetického času.
- year
  obsahuje jméno proměnné nebo kanálu, kam je zapisován rok energetického data.
- month
  obsahuje jméno proměnné nebo kanálu, kam je zapisován měsíc energetického data.
- day
  obsahuje jméno proměnné nebo kanálu, kam je zapisován den energetického data.
- day_in_week
  obsahuje jméno proměnné nebo kanálu, kam je zapisován den v týdnu energetického data.
- time_15m
  obsahuje jméno poměnné nebo kanálu, kam je zapisován čas v aktuální čtvrthodině. Tento čas běží od nastavení čtvrthodinového synchronizačního signálu.
- time_1h
  obsahuje jméno poměnné nebo kanálu, kam je zapisován čas v aktuální hodině. Tento čas běží od nastavení hodinového synchronizačního signálu.
- frame
  určuje v kladných hodnotách hloubku a v záporných výšku okraje. Pokud frame není zadán, zobrazí se přístroj bez okraje.
- sync_list
  seznam přístrojů, které jsou synchronizovány voláním nativních procedur. Při použití energetických přístrojů záleží na přesném pořadí akcí jednotlivých přístrojů, zvláště při inicializaci a při zachycení synchronizačního impulsu.
  (Nejprve zachytí vnější synchronizační impuls přístroj energetic_time, který nastaví synchronizační signály pro ostatní přístroje, nastaví čas ve čtvrthodině a hodině. Potom musí být zavolány všechny přístroje supply_meter, které nastaví odběry ve čtvrthodině a hodině. Následuje zavolání přístroje diagram, který nastaví hodnotu maxima a technického maxima. Poté musí být zavolány ostatní energetické přístroje, které se již vzájemně neovlivňují.)
  Při standardním zapojení zajišťuje tuto synchronizaci přístroj energetic_time voláním nativních procedur `Init()` a `Sync()` ostatním energetickým přístrojům. Volání těchto metod je uživateli skryto. Je pouze nutné zapsat do seznamu přístrojů sync_list ostatní energetické přístroje v přesném pořadí. Pro standardní zapojení je doporučeno následující pořadí:
    - všechny přístroje supply_meter použité v aplikaci;
    - všechny přístroje diagram použité v aplikaci;
    - všechny přístroje hour_table použité v aplikaci;
    - všechny přístroje sections použité v aplikaci;
    - všechny přístroje maximum_graph použité v aplikaci;
  Zadáním tohoto seznamu je zajištěno, že bude po inicializaci přístroje energetic_time bude všem energetickým přístrojům zavolána nativní procedura `Init()`, která zajistí inicializaci přístrojů a při zachycení vnějšího synchronizačního impulsu přístroj energetic_time a po nastavení jeho výstupů bude zavolána všem energetickým přístrojům nativní procedura `Sync()`. Tím je zajištěna správná funkce všech energetických přístrojů.
  Od verse 1.01 lze do tohoto seznamu zařadit také přístroj program, který lze použít pro řešení netypických problémů. Při inicializaci, kdy je energetickým přístrojům v tomto seznamu volána nativní procedura `Init()`, je přístroji program volána nativní procedura `Run()`. Tato metoda je volána také při synchronizaci, kdy je energetickým přístrojům volána nativní procedura `Sync()`. Přístroj program může tato volání rozlišit voláním nativních procedur přístroje energetic_time. Pokud je metoda `Run()` volána při inicializaci, vrací nativní procedura `IsInit( boolean )` příslušného přístroje energetic_time hodnotu TRUE, ve všech ostatních případech tato metoda vrací hodnotu FALSE. Pokud je metoda `Run()` volána při synchronizaci, vrací nativní procedura `IsSync( boolean )` příslušného přístroje energetic_time hodnotu TRUE, ve všech ostatních případech tato metoda vrací hodnotu FALSE.
- receivers
  seznam přístrojů, které dostanou zprávu při změně hodnoty synchronizačního signálu.

### Poznámky:

- Vzhled přístroje:
- Implicitně jsou nastaveny parametry:
    frame = 0;

### Příklad:

Příklad nastavení parametrů přístroje energetic_time:

      energetic_time EnergTime;
        timer = 1;
        owner = background;
        position = 10, 10, 166, 78;
        ext_sync_15m = ExtSync;
        time_out = 60;
        output_section
          sync_15m = Sync;
          sync_1h = Sync1h;
          hour = Hour;
          minute = Minute;
          second = Sec;
          year = Year;
          month = Month;
          day = Day;
          day_in_week = DayInWeek;
          time_15m = Time15m;
          time_1h = Time1h;
        end_output_section;
        height_of_frame = 0;
        sync_list = Sec1SupplyMeter, Sec2SupplyMeter, TechSupplyMeter, Diagram,
                    HourTableSec1, HourTableSec2, HourTableTech, Sections,MaxGraph;
      end_energetic_time;

### Nativní procedury přístroje

    IsInit( BOOLEAN )
    IsSync( BOOLEAN )

tyto procedury jsou zařazeny od verse 1.01 a slouží přístroji program, který je zařazen do seznamu sync_list k určení, jestli byl volán z tohoto seznamu. Bližší vysvětlení použití těchto procedur naleznete v popisu parametru sync_list tohoto přístroje (viz výše).

### Událostní procedury přístroje

Přístroj může volat standardní událostní procedury:

    OnActivate()
    OnShow()
    OnHide()
    OnNewPosition( RectX, RectY, RectW, RectD : integer )
    OnWindowMinimize()
    OnWindowMaximize()
    OnWindowRestore( WasMinimized, WasMaximized : boolean )
    OnWindowClose()

Podrobnější informace k těmto procedurám lze nalézt v kapitole Programování a procedury.