Příklad
Ukázka aplikace v Control Webu, monitorující základní parametry stanice Promos RT
pomocí standardního AT-modemu (s použitím ovladače CWDRTMOD).
Soubor RTMODEM.PAR
[COM]
DRIVER SYSTEM 2
IRQ 3
BASE $02F8
BAUD 19200
BITS 8
PARITY NONE
STOP 1
OPTIONS 32
BUFFER_SIZE 1024
END
[MODEM]
{ prikazy pro volajici modem }
{ -------------------------- }
INIT ATE0V1X3&C1&R1&D0H0S0=0#~ { inicializacni prikaz modemu }
INIT_OK #@OK#@ { spravna odpoved na inicializaci }
INIT_TIME 5.0 { maximalni cas pro odpoved }
CONNECT ATDT { prikaz pro navazani spojeni:
ATDP ..... dial pulse (pulsni volba)
ATDT ..... dial tone (tonova volba)
cely prikaz bude proveden najednou slozenim
promennych
CONNECT + CUNNECT_NUMBER + CONNECT_ENDCHAR }
CONNECT_ENDCHAR # { ukoncovaci znak pro prikaz navazani spojeni }
CONNECT_OK CONNECT { spravna odpoved - spojeni bylo provedeno }
CONNECT_TIME 90.0 { maximalni cas pro provedeni spojeni modemu }
LINEOFF ~~+++~~ATH0#~~ { prikaz pro uzavreni spojeni modemu - zaveseni linky }
LINEOFF_OK #@OK#@ { spravna odpoved na zaveseni linky }
LINEOFF_TIME 3.0 { maximalni cas pro prikaz zaveseni linky }
{ prikazy pro ovladani volaneho modemu }
{ ------------------------------------ }
CONNECT_ANSWER ATA# { prikaz pro provedeni spojeni modemu }
ANSWER_TIME 30.0 { maximalni cas pro prikaz spojeni }
CONNECT_RING #@RING#@ { zprava rikajici: NEKDO ZVONI !!! }
RING_COUNT 3 { pocet zvoneni, po kterych je proveden prikaz
CONNECT_ANSWER }
RING_TIME 10.0 { maximalni cas mezi jednotlivymi zpravami RING,
pri prekroceni casu je snulovano pocitadlo
zvoneni }
END
[GLOBAL]
PREFIX $E1 $5C
SUFFIX NONE
PRESUFFIX NONE
ADDRESS $00
ANSWER_TIME 5.0
SILENCE_WAIT 500
RTS_TIME_ON 300
RTS_TIME_OFF 200
DEF_ANALOG_IN_ADDR $D61A
NUM_VARDIS_ERR 3
STOP_SELF_READING ON
IDLE_TIME 10
SLEEP_TIME 0
SLEEP_COUNT 100
END
[STATION]
ADDRESS 01
RETRANSLATION 01
NAME "PROMOS" ""
PHONE 0321,722701
NUM_BINAR_IN 40
NUM_BINAR_OUT 8
NUM_ANALOG_IN 16
NUM_COUNTER_IN 0
NUM_MEMORY_IN 4
NUM_MEMORY_OUT 0
BINAR_IN_XOR NONE
BINAR_OUT_XOR NONE
DEF_ANALOG_IN_ADDR FROM_GLOBAL
DEF_MEMORY_IN
1 $0001 { $0001-$0040 = AD }
2 $0002
3 $0003
4 $0004
DEF_MEMORY_END
DEF_MEMORY_OUT NONE
DEF_COUNTER_IN NONE
ORIGINAL_CHANNELS
END
Soubor RTMODEM.DMF
begin 1 - 96 boolean input 97 - 192 boolean output 193 - 256 real input 257 - 304 real input 305 - 404 real bidirectional 405 - 434 real input 450 - 459 real input 460 - 463 boolean output 464 - 465 boolean input 466 - 470 boolean bidirectional 471 boolean output 472 boolean output 473 boolean output 474 boolean output 475 boolean output 476 boolean output 477 - 478 boolean input 479 - 499 real input 60000 shortcard output 60001 shortcard output 60002 cardinal output 60003 boolean output 60004 - 60009 shortcard input 60010 - 60017 real input 65533 - 65534 real output 65535 boolean output end.
Soubor RTMODEM.CW
directories
'*.dbf' = '.\DBF';
end_directories;
settings
operation_mode = real_time;
independent_procedure_execution = true;
end_settings;
const
crok = 0;
cmes = 1;
cden = 2;
chod = 3;
cmin = 4;
csec = 5;
end_const;
var
stoppp = boolean, false;
make_read_ai = boolean, false;
make_read_mi = boolean, false;
make_read_bi = boolean, false;
make_write = boolean, false;
make_restart = boolean, false;
nul_new_bi = boolean, false;
nul_new_ai = boolean, false;
nul_new_chyba_rizeni = boolean, false;
nul_new_mi = boolean, false;
time_ai = array[ crok..csec ] of cardinal, 0;
time_bi = array[ crok..csec ] of cardinal, 0;
end_var;
driver
v = 'cwdrtmod.DLL', 'RTMODEM.DMF', 'RTMODEM.PAR';
end_driver;
channel
ai1 = real, 193, v, input;
ai1a = real, 201, v, input;
ai2 = real, 194, v, input;
ai2a = real, 202, v, input;
ai3 = real, 195, v, input;
ai3a = real, 203, v, input;
ai4 = real, 196, v, input;
ai4a = real, 204, v, input;
ai5 = real, 197, v, input;
ai5a = real, 205, v, input;
ai6 = real, 198, v, input;
ai6a = real, 206, v, input;
ai7 = real, 199, v, input;
ai7a = real, 207, v, input;
ai8 = real, 200, v, input;
ai8a = real, 208, v, input;
bi1 = boolean, 1, v, input;
bi2 = boolean, 2, v, input;
bi3 = boolean, 3, v, input;
bi4 = boolean, 4, v, input;
bi5 = boolean, 5, v, input;
bi6 = boolean, 6, v, input;
bi7 = boolean, 7, v, input;
bi8 = boolean, 8, v, input;
biX = array[ 9..40 ] of boolean, v, input;
bo1 = boolean, 97, v, output, false;
bo2 = boolean, 98, v, output, false;
bo3 = boolean, 99, v, output, false;
bo4 = boolean, 100, v, output, false;
bo5 = boolean, 101, v, output, false;
bo6 = boolean, 102, v, output, false;
bo7 = boolean, 103, v, output, false;
bo8 = boolean, 104, v, output, false;
errors_counter = real, 454, v, input;
errors_no_answer = real, 450, v, input;
komunikace = boolean, 464, v, input;
last_com_error = boolean, 465, v, input;
mi1 = real, 405, v, input;
mi2 = real, 406, v, input;
mi3 = real, 407, v, input;
mi4 = real, 408, v, input;
modem_connect = boolean, 476, v, output, false;
modem_connected = boolean, 478, v, input;
modem_connecting = boolean, 477, v, input;
new_ai = boolean, 467, v, bidirectional, false;
new_bi = boolean, 466, v, bidirectional, false;
new_chyba_rizeni = boolean, 470, v, bidirectional, false;
new_mi = boolean, 469, v, bidirectional, false;
read_ai = boolean, 475, v, output, false;
read_bi = boolean, 472, v, output, false;
read_mi = boolean, 473, v, output, false;
silencetime = real, 452, v, input;
stav_linky = real, 495, v, input;
transmit_messages = real, 490, v, input;
transmit_messages_prior = real, 497, v, input;
write_bo = boolean, 462, v, output, false;
write_restart = boolean, 471, v, output, false;
end_channel;
timer
end_timer;
instrument
window panel panel_1;
owner = background;
position = 17, 42, 766, 517;
win_disable = zoom, maximize;
win_title = 'PROMOS RT - AT-MODEM test';
end_panel;
label id_2;
owner = panel_1;
position = 283, 403;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'write read';
end_label;
meter id_1;
timer = 1;
owner = panel_1;
position = 338, 258, 80, 141;
expression = transmit_messages;
mode = vertical_bar;
content = med;
range_to = 20;
low_limit = 10;
high_limit = 15;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
switch id_3;
owner = panel_1;
position = 619, 13, 137, 25;
output = make_read_mi;
mode = text_button;
true_text = 'MI';
false_text = 'MI';
receivers = prg_make_read_mi;
mono = 0.1, true;
colors
false_paper = green;
end_colors;
end_switch;
switch id_3;
owner = panel_1;
position = 505, 19, 34, 25;
output = nul_new_mi;
mode = text_button;
true_text = 'NUL';
false_text = 'NUL';
receivers = prg_nul_mi;
mono = 0.1, true;
end_switch;
indicator id_1;
timer = 0.1;
owner = panel_1;
position = 540, 5;
expression = new_mi;
end_indicator;
label id_2;
owner = panel_1;
position = 404, 6;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'see .PAR New Data';
end_label;
meter id_1;
timer = 1;
owner = panel_1;
position = 330, 9, 71, 16;
expression = mi4;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 255, 9, 71, 16;
expression = mi3;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 180, 9, 71, 16;
expression = mi2;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 105, 9, 71, 16;
expression = mi1;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
label id_2;
owner = panel_1;
position = 8, 9;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'memory inputs';
end_label;
meter id_1;
timer = 1;
owner = panel_1;
position = 9, 67, 71, 16;
expression = ai1a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 84, 67, 71, 16;
expression = ai2a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 159, 67, 71, 16;
expression = ai3a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 234, 67, 71, 16;
expression = ai4a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 309, 67, 71, 16;
expression = ai5a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 384, 67, 71, 16;
expression = ai6a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 459, 67, 71, 16;
expression = ai7a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 534, 67, 71, 16;
expression = ai8a;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
label id_2;
owner = panel_1;
position = 273, 428;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'Connecting...';
text = '(spojuje se)';
end_label;
label id_2;
owner = panel_1;
position = 204, 428;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'ON LINE';
text = '(spojeno)';
end_label;
indicator id_1;
timer = 1;
owner = panel_1;
position = 289, 461;
expression = modem_connecting;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 214, 461;
expression = modem_connected;
end_indicator;
label id_2;
owner = panel_1;
position = 135, 437;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'connect';
end_label;
switch id_3;
owner = panel_1;
position = 136, 453, 48, 48;
output = modem_connect;
true_text = 'WRITE DATA';
false_text = 'WRITE DATA';
colors
false_paper = lred;
end_colors;
end_switch;
multi_label id_1;
timer = 0.05;
owner = panel_1;
position = 8, 423;
frame = 1;
item
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'free';
expression = stav_linky = 0;
paper = lgray;
ink = black;
blink_paper = white;
blink_ink = red;
end_item;
item
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'transmit';
expression = stav_linky = 1;
paper = lgray;
ink = black;
blink_paper = white;
blink_ink = red;
end_item;
item
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'receive';
expression = stav_linky = 2;
paper = lgray;
ink = black;
blink_paper = white;
blink_ink = red;
end_item;
item
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'silence';
expression = stav_linky = 3;
paper = lgray;
ink = black;
blink_paper = white;
blink_ink = red;
end_item;
item
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'answer AH';
expression = stav_linky = 5;
paper = lgray;
ink = black;
blink_paper = white;
blink_ink = red;
end_item;
item
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'error';
expression = stav_linky = 255;
paper = lgray;
ink = black;
blink_paper = white;
blink_ink = red;
end_item;
end_multi_label;
label id_2;
owner = panel_1;
position = 8, 407;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'line state';
end_label;
switch id_3;
owner = panel_1;
position = 13, 474, 61, 28;
output = stoppp;
mode = text_button;
true_text = 'STOP';
false_text = 'STOP';
receivers = prg_stop;
mono = 0.1, true;
colors
false_paper = red;
false_ink = lyellow;
end_colors;
end_switch;
indicator id_1;
timer = 0.5;
owner = panel_1;
position = 1, 484;
expression = hsec > 50;
font = 'Arial (Central European)', 18, bolditalic;
true_text = '.';
font = 'Arial (Central European)', 18, bolditalic;
false_text = '.';
colors
true_tshadow = lgray;
true_bshadow = lgray;
false_ink = white;
false_tshadow = lgray;
false_bshadow = lgray;
end_colors;
end_indicator;
chart graf;
owner = panel_1;
position = 457, 407, 300, 101;
mode = flow_graph;
range_from = -50;
range_to = 150;
low_limit = -20;
history = 75;
item
expression = ai1;
color = white;
end_item;
item
expression = ai2;
color = lyellow;
end_item;
item
expression = ai3;
color = lmagenta;
end_item;
item
expression = ai4;
color = lred;
end_item;
item
expression = ai5;
color = lcyan;
end_item;
item
expression = ai6;
color = lgreen;
end_item;
item
expression = ai7;
color = lblue;
end_item;
item
expression = ai8;
color = lgray;
end_item;
end_chart;
archiver analogy;
owner = panel_1;
position = 639, 369, 119, 28;
win_title = 'Archiv analogu';
file_name = 'AI_';
file_length = month;
item
name = 'AD1';
type = numeric;
length = 5;
dec_places = 1;
expression = ai1;
end_item;
item
name = 'AD2';
type = numeric;
length = 5;
dec_places = 1;
expression = ai2;
end_item;
item
name = 'AD3';
type = numeric;
length = 5;
dec_places = 1;
expression = ai3;
end_item;
item
name = 'AD4';
type = numeric;
length = 5;
dec_places = 1;
expression = ai4;
end_item;
item
name = 'AD5';
type = numeric;
length = 5;
dec_places = 1;
expression = ai5;
end_item;
item
name = 'AD6';
type = numeric;
length = 5;
dec_places = 1;
expression = ai6;
end_item;
item
name = 'AD7';
type = numeric;
length = 5;
dec_places = 1;
expression = ai7;
end_item;
item
name = 'AD8';
type = numeric;
length = 5;
dec_places = 1;
expression = ai8;
end_item;
end_archiver;
meter id_1;
timer = 1;
owner = panel_1;
position = 737, 274, 27, 27;
expression = time_bi[ csec ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 709, 274, 27, 27;
expression = time_bi[ cmin ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 681, 274, 27, 27;
expression = time_bi[ chod ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 627, 274, 48, 27;
expression = time_bi[ crok ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 599, 274, 27, 27;
expression = time_bi[ cmes ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 571, 274, 27, 27;
expression = time_bi[ cden ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
switch id_3;
owner = panel_1;
position = 620, 103, 136, 48;
output = make_read_bi;
mode = text_button;
true_text = 'READ BINARS';
false_text = 'READ BINARS';
receivers = prg_make_read_bi;
mono = 0.1, true;
colors
false_paper = green;
end_colors;
end_switch;
meter id_1;
timer = 1;
owner = panel_1;
position = 737, 315, 27, 27;
expression = time_ai[ csec ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 709, 315, 27, 27;
expression = time_ai[ cmin ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 681, 315, 27, 27;
expression = time_ai[ chod ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 627, 315, 48, 27;
expression = time_ai[ crok ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 599, 315, 27, 27;
expression = time_ai[ cmes ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 571, 315, 27, 27;
expression = time_ai[ cden ];
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
switch id_3;
owner = panel_1;
position = 433, 361, 34, 25;
output = nul_new_chyba_rizeni;
mode = text_button;
true_text = 'NUL';
false_text = 'NUL';
receivers = prg_nul_chyba_rizeni;
mono = 0.1, true;
end_switch;
switch id_3;
owner = panel_1;
position = 433, 317, 34, 25;
output = nul_new_ai;
mode = text_button;
true_text = 'NUL';
false_text = 'NUL';
receivers = prg_nul_ai;
mono = 0.1, true;
end_switch;
switch id_3;
owner = panel_1;
position = 433, 274, 34, 25;
output = nul_new_bi;
mode = text_button;
true_text = 'NUL';
false_text = 'NUL';
receivers = prg_nul_bi;
mono = 0.1, true;
end_switch;
label id_2;
owner = panel_1;
position = 510, 359;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'Error of control';
text = '(voltage startup)';
end_label;
indicator id_1;
timer = 0.1;
owner = panel_1;
position = 471, 352;
expression = new_chyba_rizeni;
end_indicator;
label id_2;
owner = panel_1;
position = 510, 320;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'Analog In';
end_label;
label id_2;
owner = panel_1;
position = 473, 244;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'New Data';
end_label;
label id_2;
owner = panel_1;
position = 510, 280;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'Binary In';
end_label;
indicator id_1;
timer = 0.1;
owner = panel_1;
position = 471, 264;
expression = new_bi;
end_indicator;
indicator id_1;
timer = 0.1;
owner = panel_1;
position = 471, 308;
expression = new_ai;
end_indicator;
switch id_3;
owner = panel_1;
position = 620, 217, 136, 48;
output = make_restart;
mode = text_button;
true_text = 'WRITE RESTART';
false_text = 'WRITE RESTART';
receivers = prg_make_restart;
mono = 0.1, true;
colors
false_paper = lred;
end_colors;
end_switch;
meter id_1;
timer = 1;
owner = panel_1;
position = 253, 258, 80, 141;
expression = transmit_messages_prior;
mode = vertical_bar;
content = med;
range_to = 20;
low_limit = 10;
high_limit = 15;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
label id_2;
owner = panel_1;
position = 283, 243;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'messages in buffer';
end_label;
meter id_1;
timer = 1;
owner = panel_1;
position = 146, 275, 62, 27;
expression = silencetime;
mode = text_display;
range_from = -9999;
range_to = 999999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
mask = '@@@@@';
colors
ink = black;
end_colors;
end_meter;
label id_2;
owner = panel_1;
position = 118, 243;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'time from last mess';
text = ' (silence time)';
end_label;
meter id_1;
timer = 1;
owner = panel_1;
position = 188, 371, 57, 27;
expression = errors_no_answer;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
mask = '@@@@@';
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 188, 340, 57, 27;
expression = errors_counter;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 0;
font = 'Courier New (Central European)', 12, bold;
mask = '@@@@@';
colors
ink = black;
end_colors;
end_meter;
label id_2;
owner = panel_1;
position = 98, 318;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'error counter';
text = ' ';
text = ' - in mess';
text = ' ';
text = ' - no answer';
end_label;
label id_2;
owner = panel_1;
position = 8, 318;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'error in last';
text = 'communication';
end_label;
indicator id_1;
timer = 1;
owner = panel_1;
position = 32, 350;
expression = last_com_error;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 32, 260;
expression = komunikace;
end_indicator;
label id_2;
owner = panel_1;
position = 8, 242;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'wait for answer';
end_label;
switch id_3;
owner = panel_1;
position = 620, 43, 136, 48;
output = make_read_ai;
mode = text_button;
true_text = 'READ ANALOGS';
false_text = 'READ ANALOGS';
receivers = prg_make_read_ai;
mono = 0.1, true;
colors
false_paper = green;
end_colors;
end_switch;
switch id_3;
owner = panel_1;
position = 620, 160, 136, 48;
output = make_write;
mode = text_button;
true_text = 'WRITE DATA';
false_text = 'WRITE DATA';
receivers = prg_make_write;
mono = 0.1, true;
colors
false_paper = lred;
end_colors;
end_switch;
switch id_2;
owner = panel_1;
position = 546, 160, 48, 48;
output = bo8;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
switch id_2;
owner = panel_1;
position = 471, 160, 48, 48;
output = bo7;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
switch id_2;
owner = panel_1;
position = 396, 160, 48, 48;
output = bo6;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
switch id_2;
owner = panel_1;
position = 321, 160, 48, 48;
output = bo5;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
switch id_2;
owner = panel_1;
position = 246, 160, 48, 48;
output = bo4;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
switch id_2;
owner = panel_1;
position = 171, 160, 48, 48;
output = bo3;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
switch id_2;
owner = panel_1;
position = 96, 160, 48, 48;
output = bo2;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
switch id_2;
owner = panel_1;
position = 21, 160, 48, 48;
output = bo1;
true_icon = 'JEDNA.ICO';
false_icon = 'NULA.ICO';
end_switch;
label id_2;
owner = panel_1;
position = 8, 140;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'binary outputs';
end_label;
label id_2;
owner = panel_1;
position = 8, 82;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'binary inputs';
end_label;
indicator id_1;
timer = 1;
owner = panel_1;
position = 551, 100;
expression = bi8;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 476, 100;
expression = bi7;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 401, 100;
expression = bi6;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 326, 100;
expression = bi5;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 251, 100;
expression = bi4;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 176, 100;
expression = bi3;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 101, 100;
expression = bi2;
end_indicator;
indicator id_1;
timer = 1;
owner = panel_1;
position = 26, 100;
expression = bi1;
end_indicator;
label id_2;
owner = panel_1;
position = 8, 31;
font = 'MS Sans Serif (Central European)', 8, bold;
text = 'analog inputs';
end_label;
meter id_1;
timer = 1;
owner = panel_1;
position = 534, 49, 71, 16;
expression = ai8;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 459, 49, 71, 16;
expression = ai7;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 384, 49, 71, 16;
expression = ai6;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 309, 49, 71, 16;
expression = ai5;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 234, 49, 71, 16;
expression = ai4;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 159, 49, 71, 16;
expression = ai3;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 84, 49, 71, 16;
expression = ai2;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
meter id_1;
timer = 1;
owner = panel_1;
position = 9, 49, 71, 16;
expression = ai1;
mode = text_display;
range_from = -9999;
range_to = 9999;
dec_places = 1;
font = 'Courier New (Central European)', 12, bold;
colors
ink = black;
end_colors;
end_meter;
window monitor id_2;
owner = background;
position = 9, 163, 445, 275;
watch
channel = biX[ 9 ];
end_watch;
end_monitor;
window panel panel_2;
timer = 1;
owner = background;
position = 9, 27, 356, 83;
end_panel;
indicator id_1;
timer = 1;
owner = panel_2;
position = 12, 11;
expression = biX[ 9 ];
end_indicator;
indicator id_1;
timer = 1;
owner = panel_2;
position = 52, 11;
expression = biX[ 10 ];
end_indicator;
indicator id_1;
timer = 1;
owner = panel_2;
position = 92, 11;
expression = biX[ 11 ];
end_indicator;
indicator id_1;
timer = 1;
owner = panel_2;
position = 132, 11;
expression = biX[ 12 ];
end_indicator;
indicator id_1;
timer = 1;
owner = panel_2;
position = 172, 11;
expression = biX[ 13 ];
end_indicator;
indicator id_1;
timer = 1;
owner = panel_2;
position = 212, 11;
expression = biX[ 14 ];
end_indicator;
indicator id_1;
timer = 1;
owner = panel_2;
position = 252, 11;
expression = biX[ 15 ];
end_indicator;
indicator id_1;
timer = 1;
owner = panel_2;
position = 292, 11;
expression = biX[ 16 ];
end_indicator;
program prg_make_read_ai;
procedure OnActivate();
begin
if make_read_ai then
read_ai = not read_ai; (* nastartuje prenos *)
repeat
pause 0;
until komunikace; (* pocka, az zacne komunikace *)
repeat
pause 0;
until not komunikace; (* pocka, az dokonci komunikaci *)
if new_ai then (* prisly nova data ? *)
time_ai[crok] = year;
time_ai[cmes] = month;
time_ai[cden] = day;
time_ai[chod] = hour;
time_ai[cmin] = minute;
time_ai[csec] = second; (* ano -> zmeni posledni cas nacteni *)
pause 1; (* pocka, aby uz data byly prekodovany do kanalu *)
analogy.DoArchive(); (* a provede zapis na disk *)
send graf; (* a pohne rolujicim grafem *)
new_ai = false; (* na konec shodi "flag" novych dat *)
end;
end;
end_procedure;
end_program;
program prg_make_read_bi;
procedure OnActivate();
begin
if make_read_bi then
read_bi = not read_bi;
repeat
pause 0;
until komunikace;
repeat
pause 0;
until not komunikace;
if new_bi then
time_bi[crok] = year;
time_bi[cmes] = month;
time_bi[cden] = day;
time_bi[chod] = hour;
time_bi[cmin] = minute;
time_bi[csec] = second;
end;
end;
end_procedure;
end_program;
program prg_make_write;
procedure OnActivate();
begin
if make_write then
write_bo = not write_bo;
end;
end_procedure;
end_program;
program prg_make_restart;
procedure OnActivate();
begin
if make_restart then
write_restart = not write_restart;
end;
end_procedure;
end_program;
program prg_nul_ai;
procedure OnActivate();
begin
if nul_new_ai then
new_ai = false;
end;
end_procedure;
end_program;
program prg_nul_chyba_rizeni;
procedure OnActivate();
begin
if nul_new_chyba_rizeni then
new_chyba_rizeni = false;
end;
end_procedure;
end_program;
program prg_stop;
procedure OnActivate();
begin
if stoppp then
system.StopApplication();
end;
end_procedure;
end_program;
program prg_nul_bi;
procedure OnActivate();
begin
if nul_new_bi then
new_bi = false;
end;
end_procedure;
end_program;
program prg_nul_mi;
procedure OnActivate();
begin
if nul_new_mi then
new_mi = false;
end;
end_procedure;
end_program;
program prg_make_read_mi;
procedure OnActivate();
begin
if make_read_mi then
read_mi = not read_mi;
end;
end_procedure;
end_program;
end_instrument;