# Příklad jednoduché aplikace

Příklad aplikace obsahuje velmi jednoduché zapojení energetických přístrojů. Aplikace měří jeden činný a jeden jalový odběr. Přístroj supply_meter počítá z těchto vstupů činný a jalový výkon, účiník a odběry ve čtvrthodině a v hodině. Dva přístroje maximum_graph zobrazují průběh čtvrthodinového a hodinového maxima. Přístroj hour_table poskytuje hodnoty čtvrthodinových a hodinových odběrů a přístroj diagram umožňuje zadávání odběrového diagramu a poskytuje hodnoty čtvrthodinového a technického maxima. Synchronizaci zajišťuje přístroj energetic_time, který poskytuje energetický čas a zajišťuje obsluhu synchronizačních impulsů. Pro maximální zjednodušení není do aplikace zařazen přístroj pro odpojovaní sekcí sections. Simulaci průběhu hodnot činného a jalového odběru a synchronizačního signálu zajištuje přístroj program.

### Příklad:

    const
    end_const;

    var
      Count = real, 0;            (* počítadlo pro simulaci sync. impulsu *)
      ExtSync15m = boolean, true; (* vnější synchronizační impuls *)
      Sync15m = boolean, false;   (* čtvrthodinový synchronizační impuls *)
      Sync1h = boolean, false;    (* hodinový synchronizační impuls *)
      Time15m = real, 0;          (* čas v probíhající čtvrthodině *)
      Time1h = real, 0;           (* čas v probíhající hodině *)
      Hour = real, 0;             (* energetický čas - hodina *)
      Minute = real, 0;           (* energetický čas - minuta *)
      Second = real, 0;           (* energetický čas - sekunda *)
      Year = real, 0;             (* energetické datum - rok *)
      Month = real, 0;            (* energetické datum - měsíc *)
      Day = real, 0;              (* energetické datum - den *)
      DayInWeek = real, 0;        (* energetické datum - den v týdnu *)
      ExtkWh = real, 0;           (* simulovaný činný odběr *)
      ExtkVAh = real, 0;          (* simulovaný jalový odběr *)
      kWh = real, 0;              (* činný odběr *)
      kW = real, 0;               (* činný výkon *)
      kVAh = real, 0;             (* jalový odběr *)
      kVA = real, 0;              (* jalový výkon *)
      kWh15m = real, 0;           (* činný odběr ve čtvrthodině *)
      kWh1h = real, 0;            (* činný odběr v hodině *)
      kVAh15m = real, 0;          (* jalový odběr ve čtvrthodině *)
      kVAh1h = real, 0;           (* jalový odběr v hodině *)
      Maximum = real, 0;          (* čtvrthodinové maximum v kW *)
      TMaximum = real, 0;         (* technické maximum v kW *)
    end_var;

    driver
    end_driver;

    channel
    end_channel;

    timer

      sequencer Sequencer;
        timer = 1;
      end_sequencer;

    end_timer;

    instrument

      window maximum_graph MaximunGraph1Hour;
        timer = Sequencer, 6;
        owner = background;
        position = 5, 43, 240, 257;
        win_title = 'Maximum Graph 1 hour';
        input_section
          kWh = kWh1h;
          kW = kW;
          maximum_kW = Maximum;
          t_maximum_kW = TMaximum;
          sync = Sync1h;
          time = Time1h;
        end_input_section;
        duration = 3600;
        look = h_ruler, v_ruler, display;
        colors
          t_maximum_graph = white;
        end_colors;
      end_maximum_graph;

      window maximum_graph MaximumGraph;
        timer = Sequencer, 5;
        owner = background;
        position = 255, 43, 240, 257;
        win_title = 'Maximum Graph';
        input_section
          kWh = kWh15m;
          kW = kW;
          maximum_kW = Maximum;
          t_maximum_kW = TMaximum;
          sync = Sync15m;
          time = Time15m;
        end_input_section;
        look = h_ruler, v_ruler, display;
        colors
          t_maximum_graph = white;
        end_colors;
      end_maximum_graph;

      window hour_table HourTable;
        timer = Sequencer, 4;
        owner = background;
        position = 359, 326, 378, 161;
        win_disable = zoom, maximize;
        win_title = 'Hour Table';
        input_section
          kWh = kWh15m;
          kVArh = kVAh15m;
          sync_15m = Sync15m;
          hour = Hour;
          minute = Minute;
          second = Second;
        end_input_section;
      end_hour_table;

      window diagram Diagram;
        timer = Sequencer, 3;
        owner = background;
        position = 504, 21, 233, 280;
        win_disable = zoom, maximize;
        win_title = 'Diagram';
        input_section
          sync = Sync15m;
          hour = Hour;
          minute = Minute;
          day = Day;
          month = Month;
          day_in_week = DayInWeek;
        end_input_section;
        output_section
          maximum_kW = Maximum;
          t_maximum_kW = TMaximum;
        end_output_section;
        look = power, rate;
      end_diagram;

      window supply_meter SupplyMeter;
        timer = Sequencer, 2;
        owner = background;
        position = 4, 326, 346, 105;
        win_disable = zoom, maximize;
        win_title = 'Supply Meter';
        input_section
          kWh_input = ExtkWh;
          kWh_p_Impuls = 1;
          maximum = 0;
          kVArh_input = ExtkVAh;
          kVArh_p_impuls = 1;
          wattless_maximum = 0;
          sync_15m = Sync15m;
          sync_1h = Sync1h;
        end_input_section;
        output_section
          kWh_output = kWh;
          kVArh_output = kVAh;
          kW_output = kW;
          kVA_output = kVA;
          kWh_15m = kWh15m;
          kVAh_15m = kVAh15m;
          kWh_1h = kWh1h;
          kVAh_1h = kVAh1h;
        end_output_section;
      end_supply_meter;

      window energetic_time EnergeticTime;
        timer = Sequencer, 1;
        owner = background;
        position = 5, 456, 188, 78;
        win_disable = zoom, maximize;
        win_title = 'Energetic Time';
        ext_sync_15m = ExtSync15m;
        time_out = 60;
        output_section
          sync_15m = Sync15m;
          sync_1h = Sync1h;
          hour = Hour;
          minute = Minute;
          second = Second;
          year = Year;
          month = Month;
          day = Day;
          day_in_week = DayInWeek;
          time_15m = Time15m;
          time_1h = Time1h;
        end_output_section;
        sync_list = SupplyMeter, Diagram, HourTable, MaximumGraph, MaximunGraph1Hour;
      end_energetic_time;

      program Program;
        timer = Sequencer;
        begin
          if Count = 1 then
            ExtSync15m = false;
          end;
          Count = Count + 1;
          if Count = 901 then
            ExtSync15m = true;
            Count = 0;
          end;
          ExtkWh = ExtkWh + 0.3;
          ExtkVAh = kVAh + 0.03;
        end;
      end_program;

    end_instrument;