Příklad


Ukázka aplikace v Control Webu, monitorující základní parametry stanice Promos PL2 s aplikací pro sušení dřeva.


Soubor DREVOPL2.PAR

{ do parametrickeho souboru lze psat poznamky ohranicene slozenymi
  zavorkami. Tyto zavorky ale musi byt jako samostatne slovo, tj.
  zleva i zprava s oddelovaci - mezera, tabulator, CR+LF }

[COM]
  SYSTEM             2          { cislo COM portu }
  BAUD               38400      { 2400,4800,9600,19200,38400,57600 Bd }
  BITS               8          { pocet bitu }
  PARITY             EVEN       { NONE=neni, EVEN=suda, ODD=licha, MARK=1, SPACE=0 }
  STOPS              2          { 1 nebo 2 }
  OPTIONS            0          { 0=RS232, 32=RS485 (RTS flow control) }
  BUFFER_SIZE        1024       { delka vyrovnavaciho bafru pro rec/trans }
                                { vhodne uvest minimalne 2 x max.delku zpravy, }
                                { tj. 2 x 256 = 512 }
END

[GLOBAL]
  ADDRESS            0          { sitova adresa ovladace - co nejnizsi }
  TIMEOUT            3          { max.doba odpovedi na jednu vyzvu [sec] }
  SILENCE_WAIT       10.0       { pauza mezi relacemi, cas klidu na lince [ms] }
                                { z Profibusu: minimalne 3x delka znaku = 11 bitu / rychlost }
  SLEEP_TIME         5.0        { Delka sleep-modu [sec] }
                                { Pokud s nekterou stanici nevyjde relace }
                                { SLEEP_COUNT - pokusu za sebou, nebude po dobu }
                                { SLEEP_TIME s touto stanici probihat zadna relace, }
                                { aby tato stanice zbytecne nebrzdila komunikaci }
                                { s jinymi stanicemi. Po uplynuti teto doby }
                                { nasleduje normalni komunikace, tj. pokud komm. }
                                { nebyla obnovena, stanice opet spadle do sleep-modu }
                                { a toto se opakuje tak dlouho, dokud nedojde k }
                                { obnoveni spojeni. }
                                { Pokud spadnou do sleep-modu vsechny stanice, }
                                { bude po dobu jednoho SLEEP_TIME provedeno }
                                { totalni zastaveni komunikace. }
  SLEEP_COUNT        5.0       { kolikrat musi nevyjit relace, aby stanice spadla do sleep modu }
  PREFIX             NONE       { prefixova zprava pred kazdym vysilanim }
  SUFFIX             NONE       { tato zprava bude vyslana po odvysilani zpravy }
                                { znak  _ mezera }
                                {       ~ pauza 1 sec behem vysilani }
                                {       # kod 0Dh = CR }
  INIT               ATX3V1&R1&C1S0=0| { modemove prikazy }
  CONNECT            ATDP       { | = CR, @ = LF, < = RTS OFF, > = RTS ON }
  CONNECT_END        |
  DISCONNECT         ~<~>~+++~~ATH0|
  REINSTAL_TIMEOUT   30.0       { pokud nedostane zadnou zpravu do zadaneho casu [sec] }
                                { provede inicializaci portu }
  CONNECT_TIMEOUT    60.0
END

[STATION]                       { alespon jedna }
  ADDRESS            1          { adresa stanice }
  ADDRESS_CHANNEL    1000       { kanal pro zmenu kom.adresy (od verze 2.05) }
  CONNECT            NONE       { pripoji se k CONNECT/Global + na konec CONNECT_END/Global }
                                { obsahuje telefonni cislo pro volani modemem }
                                { zatim nevyuzito, zadejte zde slovo NONE }
  IDENT              1001       { identifikacni retezec }
  VERSION_IMP        1002       { verze implementace }
  VERSION_USER       1003       { verze uzivatelskeho SW }
  VERSION_BUS        1004       { typ implementace Profibusu }
                                { tyto promenne jsou vycteny pomoci zpravy typu ident a jsou }
                                { rozlozeny do zadanych ctyr kanalu typu string } 
  CONTROL_WORD       1005
  SET_CONTROL_WORD   1006
  STATUS_WORD        1007
  GET_STATUS_WORD    1008
  COMM_TIME          1009       { cislo kanalu typu real, obsahuje cas [sec] od posledni vyhodnocene }
                                { komunikacni zpravy }
  DATETIME_INPUT     1010       { posledni precteny stav RTC ze stanice }
                                { zadava se cislo kanalu pro ROK, automaticky budou obsazeny nasleduji- }
                                { ci kanaly stejneho typu pro MESIC, DEN, DEN v TYDNU, HODINU, MINUTU }
                                { a SEKUNDU v tomto poradi }
  DATETIME_OUTPUT    1017       { zapis hodnoty TRUE do kanalu zpusobi vyslani zpravy typu GETTIDA }
                                { prectene hodnoty budou aplikaci vraceny do kanalu DATETIME_INPUT }
  DATETIME_SET       1024       { zapis hodnoty TRUE do kanalu zpusobi vyslani zpravy typu SETTIDA }
                                { s parametry podle DATETIME_OUTPUT }
  DATETIME_GET       1025       { zapis hodnoty TRUE do kanalu zpusobi vyslani zpravy typu GETTIDA }
                                { prectene hodnoty budou aplikaci vraceny do kanalu DATETIME_INPUT }

  TIME_BLOCK 1 OFFSET 0 LEN 32  { zacatek sProcData }
   LONGINT INPUT 1101
   LONGINT INPUT 1102
   LONGINT INPUT 1103
   LONGINT INPUT 1104
   LONGINT INPUT 1105
   LONGINT INPUT 1106
   LONGINT INPUT 1107
   LONGINT INPUT 1108
  END

END


Soubor DREVOPL2.DMF

begin
    1 -    2 integer in
    3        longint in
    4        integer in
    5        real in
    6 -    8 boolean out
 1009        shortreal in
 1101 - 1108 real in
end.

Soubor WOODTEST.CW

directories
end_directories;

settings
  operation_mode = real_time;
end_settings;

const
end_const;

var
end_var;

driver
  pb = 'profibus.dll', 'drevopl2.dmf', 'drevopl2.par';
end_driver;

channel
  komunikace = shortreal, 1009, pb, input;
  proms =  array[ 1101..1108 ] of real, pb, input;
end_channel;

timer
end_timer;

instrument

  window panel panel_1;
    owner = background;
    position = 62, 81, 212, 438;
  end_panel;

  label label_2;
    owner = panel_1;
    position = 36, 325;
    font = 'Tahoma (Central European)', 8, bold;
    text = 'comm time';
  end_label;

  meter meter_1;
    timer = 0.1;
    owner = panel_1;
    position = 14, 343, 188, 85;
    expression = komunikace;
    mode = horizontal_bar;
    content = med;
    range_to = 10;
    low_limit = 3;
    high_limit = 7;
    dec_places = 1;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 280, 129, 22;
    expression = proms[ 1108 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 248, 129, 22;
    expression = proms[ 1107 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 216, 129, 22;
    expression = proms[ 1106 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 184, 129, 22;
    expression = proms[ 1105 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 152, 129, 22;
    expression = proms[ 1104 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 120, 129, 22;
    expression = proms[ 1103 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 88, 129, 22;
    expression = proms[ 1102 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  meter meter_3;
    timer = 5;
    owner = panel_1;
    position = 42, 56, 129, 22;
    expression = proms[ 1101 ] / 1000;
    mode = text_display;
    range_from = -99999999;
    range_to = 99999999;
    low_limit = 0;
    high_limit = 99999999;
    dec_places = 3;
    font = 'Courier (Central European)', 12, bold;
    colors
      ink = black;
    end_colors;
  end_meter;

  label label_2;
    owner = panel_1;
    position = 21, 18;
    font = 'MS Sans Serif (Central European)', 8, bold;
    text = 'Profibus tester,  Wood Dryer';
  end_label;

end_instrument;