# supply_meter

### Funkce:

Přístroj pro obsluhu elektroměrů zobrazí odběr činné i jalové složky elektrické energie, účiník a činný i jalový okamžitý výkon, které (pokud nejsou měřeny) vypočte z odběru. Na výstupech jsou k dispozici také hodnoty činného i jalového odběru v probíhající čtvrthodině a hodině, které jsou určeny příslušnými synchronizačními impulsy.

### Syntax:

      supply_meter supply_meter_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;
        input_section
          kWh_input = expression;
          kWh_p_impuls = real;
          maximum = real;
          filter = boolean_expression;
          kVArh_input = expression;
          kVArh_p_impuls = real;
          wattless_maximum = real;
          wattless_filter = boolean_expression;
          kW_input = expression;
          kVA_input = expression;
          sync_15m = boolean_expressin;
          sync_1h = boolean_expression;
        end_input_section;
        output_section
          kWh_output = output_name;
          kVArh_output = output_name;
          kW_output = output_name;
          kVA_output = output_name;
          kWh_15m = output_name;
          kVAh_15m = output_name;
          kWh_1h = output_name;
          kVAh_1h = output_name;
          power_factor = output_name;
        end_output_section;
        history = cardinal;
        frame = integer;
      end_supply_meter;

### Specifické parametry přístroje:

- input_section a end_input_section
  jsou klíčová slova uzavírající vstupní parametry přístroje.
- kWh_input
  obsahuje numerický výraz, který udává činný odběr v kWh nebo v impulsech. V případě impulsů lze pro přepočet na kWh použít konstanty kWh_p_impuls.
- kWh_p_impuls ( od verse 1.01 )
  obsahuje reálnou konstantu, která udává počet kWh na impuls. Používá se v případě, že výraz kWh_input je uváděn v impulsech.
- maximum ( od verse 1.01 )
  obsahuje reálnou konstantu, která udává maximum výrazu kWh_input. Tato hodnota je používána pro ošetření přetečení vstupu kWh_input. Pokud hodnota na tomto vstupu klesne, předpokládá se, že dosáhla maxima a počítá opět od začátku, proto je k ní přičtena konstanta maximum. Toto ošetření se projevuje jen na výstupech kWh_15m a kWh_1h. Na ostatních výstupech bude hodnota přímo odpovídající aktuálním vstupním hodnotám.
  Uvedeme příklad, že na vstup kWh_input je připojen čtyřbitový čítač impulsů. Pokud tento čítač dosáhl hodnoty 15, potom další impuls tento čítač vynuluje. Při uvedení konstanty maximum = 16 bude hodnota 16 přičtena k hodnotě 0 na čítači a měření pokračuje bez chyby.
- filter ( od verse 1.01 )
  obsahuje logický výraz , který zapíná nebo vypíná filtraci vstupního výrazu kWh_input. Používá se v případech, kdy impulsy od skutečného elektroměru mají mezi sebou velkou časovou prodlevu. Potom je při zapnutí filtrace změřena doba mezi předchozími dvěma impulsy a odběr je extrapolován, jako kdyby pokračoval stejně. Pokud následující impuls přijde dříve, je hodnota extrapolovaného odběru skokově zvýšena na hodnotu odpovídající novému impulsu. Pokud následující impuls přijde později, extrapolace skončí na hodnotě odpovídající následujícímu impulsu a čeká na skutečný příchod impulsu. Pro správnou funkci filtrace je třeba zajistit, aby časový krok přístroje byl několikanásobně nenší než předpokládaná doba mezi impulsy.
  Filtraci není vhodné bezdůvodně vypínat a opět zapínat, protože může začít znovu pracovat až při příchodu následujícího impulsu a původní přesnosti dosáhne až za určitou dobu. Naopak filtraci je vhodné vypínat, při poklesu odběru na nulu, například při odpojení příslušné sekce a po připojení sekce opět filtraci zapnout. V ideálním případě je vhodné nastavovat logický výraz filter podle stavu příslušné sekce. V tomto případě se filtrace po odpojení sekce zastaví a po jejím připojení pokračuje dále s původní přesností.
- kVArh_input
  obsahuje numerický výraz, který udává jalový odběr v kVAh nebo v impulsech. V případě impulsů lze pro přepočet na kVAh použít konstanty kVArh_p_impuls. Pokud není tento výraz uveden, změní se vzhled přístroje tak, že zobrazuje jen činnou složku.
- kVArh_p_impuls ( od verse 1.01 )
  obsahuje reálnou konstantu, která udává počet kVAh na impuls. Používá se v případě, že výraz kVArh_input je uváděn v impulsech.
- wattless_maximum ( od verse 1.01 )
  obsahuje reálnou konstantu, která udává maximum výrazu kVArh_input. Tato hodnota je používána pro ošetření přetečení vstupu kVArh_input. Pokud hodnota na tomto vstupu klesne, předpokládá se, že dosáhla maxima a počítá opět od začátku, proto je k ní přičtena konstanta maximum. Toto ošetření se projevuje jen na výstupech kVArh_15m a kVArh_1h. Na ostatních výstupech bude hodnota přímo odpovídající aktuálním vstupním hodnotám.
  Uvedeme příklad, že na vstup kVArh_input je připojen čtyřbitový čítač impulsů. Pokud tento čítač dosáhl hodnoty 15, potom další impuls tento čítač vynuluje. Při uvedení konstanty wattless_maximum = 16 bude hodnota 16 přičtena k hodnotě 0 na čítači a měření pokračuje bez chyby.
- wattless_filter ( od verse 1.01 )
  obsahuje logický výraz , který zapíná nebo vypíná filtraci vstupního výrazu kVArh_input. Používá se v případech, kdy impulsy od skutečného elektroměru mají mezi sebou velkou časovou prodlevu. Potom je při zapnutí filtrace změřena doba mezi předchozími dvěma impulsy a odběr je extrapolován, jako kdyby pokračoval stejně. Pokud následující impuls přijde dříve, je hodnota extrapolovaného odběru skokově zvýšena na hodnotu odpovídající novému impulsu. Pokud následující impuls přijde později, extrapolace skončí na hodnotě odpovídající následujícímu impulsu a čeká na skutečný příchod impulsu. Pro správnou funkci filtrace je třeba zajistit, aby časový krok přístroje byl několikanásobně nenší než předpokládaná doba mezi impulsy.
  Filtraci není vhodné bezdůvodně vypínat a opět zapínat, protože může začít znovu pracovat až při příchodu následujícího impulsu a původní přesnosti dosáhne až za určitou dobu. Naopak filtraci je vhodné vypínat, při poklesu odběru na nulu, například při odpojení příslušné sekce a po připojení sekce opět filtraci zapnout. V ideálním případě je vhodné nastavovat logický výraz wattless_filter podle stavu příslušné sekce. V tomto případě se filtrace po odpojení sekce zastaví a po jejím připojení pokračuje dále s původní přesností.
- kW_input
  obsahuje numerický výraz, který udává činný okamžitý výkon v kW. Pokud není tento výraz uveden, je činný výkon počítán z posledních hodnot činného odběru, jejichž počet je určen parametrem history.
- kVA_input
  obsahuje numerický výraz, který udává jalový okamžitý výkon v kVA. Pokud není tento výraz uveden, je jalový výkon počítán z posledních hodnot činného odběru, jejichž počet je určen parametrem history.
- sync_15m
  obsahuje logický výraz, který odpovídá čtvrthodinovému synchronizačnímu impulsu. Přístroj reaguje na náběžnou hranu signálu. Tímto signálem jsou řízeny výstupy kWh_15m a kVAh_15m, které udávají činný a jalový odběr v probíhající čtvrthodině, (Tento údaj poskytuje přístroj energetic_time na výstupu sync_15m.)
- sync_1h
  obsahuje logický výraz, který odpovídá hodinovému synchronizačnímu impulsu. Přístroj reaguje na náběžnou hranu signálu. Tímto signálem jsou řízeny výstupy kWh_1h a kVAh_1h, které udávají činný a jalový odběr v probíhající hodině (Tento údaj poskytuje přístroj energetic_time na výstupu sync_1h).
- output_section a end_output_section
  jsou klíčová slova uzavírající výstupní parametry přístroje.
- kWh_output
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota činného odběru v kWh. Tato hodnota odpovídá vstupnímu výrazu kWh_input.
- kVArh_output
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota jalového odběru v kVAh. Tato hodnota odpovídá vstupnímu výrazu kVAh_input.
- kW_output
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota činného okamžitého výkonu v kW. Tato hodnota odpovídá vstupnímu výrazu kW_input. Pokud vstupní výraz kW_input není uveden, potom je činný výkon počítán z posledních hodnot činného odběru, jejichž počet je určen parametrem history.
- kVA_output
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota jalového okamžitého výkonu v kVA. Tato hodnota odpovídá vstupnímu výrazu kVA_input. Pokud vstupní výraz kVA_input není uveden, potom je činný výkon počítán z posledních hodnot jalového odběru, jejichž počet je určen parametrem history.
- kWh_15m
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota činného odběru v probíhající čtvrthodině. Tento výstup je řízen náběžnou hranou čtvrthodinového synchronizačního impulsu přivedeného na vstup sync_15m. Při zachycení náběžné hrany synchronizačního impulsu je na tomto výstupu hodnota odběru v celé uplynulé čtvrthodině (tuto hodnotu využije například přístroj hour_table, který na náběźnou hranu synchronizačniho impulsu reaguje zapsáním odběru v uplynulé čtvrthodině, zatímco ostatní přístroje, které jsou připojeny na tento výstup, např. maximum_graph a sections, se při zachycení náběžné hrany synchronizačního signálu nulují bez ohledu na hodnotu čtvrthodinového odběru v tomto okamžiku) a v následujících nastaveních je na výstup zapisována odpovídajíci hodnota odběru.
- kVAh_15m
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota jalového odběru v probíhající čtvrthodině. Tento výstup je řízen náběžnou hranou čtvrthodinového synchronizačního impulsu přivedeného na vstup sync_15m. Při zachycení náběžné hrany synchronizačního impulsu je na tomto výstupu hodnota jalového odběru v celé uplynulé čtvrthodině (tuto hodnotu využije například přístroj hour_table, který na náběžnou hranu synchronizačniho impulsu reaguje zapsáním odběru v uplynulé čtvrthodině) a v následujících nastaveních je na výstup zapisována odpovídajíci hodnota jalového odběru.
- kWh_1h
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota činného odběru v probíhající hodině. Tento výstup je řízen náběžnou hranou hodinového synchronizačního impulsu přivedeného na vstup sync_1h. Při zachycení náběžné hrany synchronizačního impulsu je na tomto výstupu hodnota odběru v celé uplynulé čtvrthodině a v následujících nastaveních je na výstup zapisována odpovídajíci hodnota odběru.
- kVAh_1h
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota jalového odběru v probíhající hodině. Tento výstup je řízen náběžnou hranou hodinového synchronizačního impulsu přivedeného na vstup sync_1h. Při zachycení náběžné hrany synchronizačního impulsu je na tomto výstupu hodnota jalového odběru v celé uplynulé čtvrthodině a v následujících nastaveních je na výstup zapisována odpovídajíci hodnota jalového odběru.
- power_factor
  obsahuje jméno proměnné nebo kanálu, kam se bude zapisovat hodnota účiníku. Tato hodnota je vypočtena z hodnot kW_input a kVA_input. Pokud vstupní výraz kW_input nebo kVA_input není uveden, potom je účiník počítán z posledních hodnot odběru, jejichž počet je určen parametrem history.
- history
  počet posledních hodnot, ze kterých budou počítány hodnoty činného a jalového výkonu a účiníku, pokud nejsou uvedeny vstupní výrazy kW_input a kVA_input.
- 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.

### Poznámky:

- Vzhled přístroje:
- Odkazy na parametry jiných přístrojů uvedené v závorkách platí pro standardní zapojení energetických přístrojů. Při jiném zapojení je nutné dbát na zajištění správných hodnot parametrů a správnou synchronizaci energetických přístrojů.
- Implicitně jsou nastaveny parametry:
    history = 1;
    frame = 0;

### Příklad:

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

      supply_meter SupplyMeter;
        timer = 1;
        owner = background;
        position = 10, 10, 293, 105;
        input_section
          kWh_input = kWh1;
          kVArh_input = kVAh1;
          sync_15m = Sync;
          sync_1h = Sync1h;
        end_input_section;
        output_section
          kW_output = kW1;
          kVA_output = kVA1;
          kWh_15m = kWh15m;
          kVAh_15m = kVAh15m1;
          kWh_1h = kWh1h1;
          kVAh_1h = kVAh1h1;
        end_output_section;
        history = 4;
      end_supply_meter;

### Nativní procedury přístroje

    Init()

Pro zajištění inicializace přístroje v přesně určeném pořadí mezi ostatními energetickými přístroji. Před inicializací přístroje musí být nastavena potřebná vstupní data přístroje (přístroje, které tato data nastavují, musí být inicializovány dříve). Ve standardním zapojení je volána pro všechny energetické přístroje přístrojem energetic_time podle pořadí uvedeného v seznamu sync_list. Pořadí přístrojů v seznamu sync_list je blíže vysvětleno v popisu přístroje energetic_time.

    Sync()

Pro zajištění reakce přístroje na synchronizační impuls v přesně určeném pořadí mezi ostatními energetickými přístroji. Před zavoláním nativní procedury `Sync()` musí být nastaven synchronizační impuls (Metoda `Sync()` synchronizační impuls nenastavuje ! ). Před reakcí přístroje na synchronizační impuls musí být nastavena potřebná vstupní data přístroje (přístroje, které tato data nastavují, musí být zavolány dříve). Ve standardním zapojení je volána pro všechny energetické přístroje podle pořadí uvedeného v seznamu sync_list, přístrojem energetic_time, který také předtím nastaví příslušný synchronizační impuls. Pořadí přístrojů v seznamu sync_list je blíže vysvětleno v popisu přístroje energetic_time.

### 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.