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;