Zobrazení časových průběhů více číselných hodnot v jednom čárovém grafu. Každou vypočtenou a zobrazenou veličinu lze rovněž zapsat do výstupního datového elementu.
chart chart_name;
rem = string;
bubble = string;
timer = timer_name;
owner = owner_name;
position = integer, integer, integer, integer;
win_disable = [ identifier, . . . ];
win_title = string;
access = integer;
tab_select = integer;
send_same_data;
blink = boolean_expression;
blink_rate = identifier;
mode = identifier;
content = identifier;
range_from = real;
range_to = real;
low_limit = real;
high_limit = real;
history = integer;
dec_places = integer;
real_step = real;
h_grid = integer;
v_grid = integer;
clear = boolean_expression;
activity = boolean_expression;
driver_exception = driver_name;
item
expression = real_expression;
color = color;
static;
end_item;
item
. . .
end_item;
colors
border_ink = color;
border_paper = color;
top_shadow = color;
bottom_shadow = color;
ink = color;
paper = color;
value = color;
low_limit = color;
high_limit = color;
h_grid = color;
v_grid = color;
end_colors;
blink_colors
border_ink = color;
border_paper = color;
top_shadow = color;
bottom_shadow = color;
ink = color;
paper = color;
value = color;
low_limit = color;
high_limit = color;
h_grid = color;
v_grid = color;
end_blink_colors;
end_chart;
Je–li přístroj chart v okně, lze pomocí menu měnit mód přístroje za běhu programu.
Přístroj má kromě módů flow_graph a sweep_graph k dispozici ještě mód line_animation_graph, který se podobá módu flow_graph. V tomto módu ale není využíváno grafického posuvu části grafu, který je u moderních grafických karet velmi rychlý. Graf je po částech překreslován přímkami. To přináší možnost stojícího gridu při posunujícím se grafu. Nevýhodou tohoto módu je nutnost vykreslování vysokého počtu čar v každém časovém kroku a tím značná spotřeba času na překreslování.
Implicitně jsou nastaveny parametry:
position = 0, 0, 100, 80; access = 4294967295; tab_select = 4294967295; mode = flow_graph; content = min; range_from = 0; range_to = 100; low_limit = 25; high_limit = 75; history = 2; dec_places = 2; real_step = 1; h_grid = 0; v_grid = 0;
Příklad nastavení parametrů přístroje chart:
window chart id_3;
timer = 0.5;
owner = background;
position = 122, 82, 205, 175;
win_title = 'CHART';
mode = flow_graph;
content = max;
history = 50;
item
expression = ( 50 * sinus ) / ( second + 40 );
color = lblue;
end_item;
item
expression = ( šum / 10 ) + 45;
color = lred;
end_item;
colors
border_paper = black;
bottom_shadow = black;
ink = black;
paper = white;
value = black;
low_limit = lgray;
high_limit = lgray;
end_colors;
end_chart;
SetLowLimit( LowLimit : real ) SetHighLimit( HighLimit : real )Nastavení horní a dolní meze zobrazovaných hodnot.
SetRange( RangeFrom, RangeTo : real )Nastavení rozsahu přístroje. Historické hodnoty uložené ve vyrovnávacích pamětech jednotlivých průběhů případně přesahující nový rozsah budou ořezány. Stejně tak budou případně upraveny i limity. V rámci této procedury bude přístroj v nové podobě i překreslen.
SetMode( Mode : real )Pomocí této procedury je možné za běhu přístroje nastavovat způsob překresování grafů. Čísla módů a jejich stručný popis uvádí tabulka: 0 - flow_graph - posunující se graf, případný grid se rovněž posunuje
MoveTo( x, y : real )Posunutí přístroje na pozici x, y. Velikosti hodnot x a y jsou v bodech obrazovky.
NewRect( x, y, width, depth : real )Zavoláním procedury je možné přístroji změnit současně jeho pozici a velikost. Velikosti hodnot x, y, width, a depth jsou v bodech obrazovky.
Hide()Skrytí viditelného přístroje.
Show()Zobrazení skrytého přístroje.
SetLineValue( LineIndex : real, Value : real )Zápis nové poslední hodnoty Value do jedné křivky určené hodnotou LineIndex (první má LineIndex 0). Vybraná křivka se tedy posune o jeden krok vzhledem k ostatním.
SetLineValuePaint( LineIndex : real, Value : real )Totéž co předchozí metoda a navíc bude přístroj překreslen v nové podobě.
SetLineIndexValue( LineIndex : real, PositionIndex : real, Value : real )Zápis hodnoty value do křivky dané LineIndex na pozici dané PositionIndex. Vybraná křivka se přitom neposune.
SetLineIndexValuePaint( LineIndex : real, PositionIndex : real, Value : real )Totéž co předchozí metoda a navíc bude přístroj překreslen v nové podobě.
DisableLine( LineIndex : real )Vypnutí zobrazování vybrané křivky.
EnableLine( LineIndex : real )Zapnutí zobrazování vybrané křivky
Paint()Překreslení přístroje.
Clear()Inicializace přístroje včetně obsahu vyrovnávacích pamětí všech křivek a aktuální pozice. Index se nastaví na 1.
SetIndex( Index : real )Má smysl pouze pro mód sweep_graph. Parametr Index zde reprezentuje pozici kurzorové mezery (tj. místo, kde se graf přepisuje novými hodnotami) na obrazovce a nikoliv pozici ve vyrovnávací paměti křivek.
SetGrid( HorizontalLines, VerticalLines : number )Nastavení počtu horizontálních a vertikálních čar rastru. Zobrazování rastru se vypne nastavením nulových hodnot.
Blink( BlinkingActive : boolean )Zapnutí a vypnutí blikání. Voláním procedury Blink s parametrem BlinkingActive nastaveným na true začne přístroj blikat (tj. střídavě se překreslovat s použitím barevných sad colors a blink_colors). Blikání je možno zastavit voláním procedury Blink s parametrem BlinkingActive nastaveném na hodnotu false. Frekvence blikání je dána parametrem přístroje blink_rate.
ToggleBlink()Přepnutí vzhledu přístroje do alternativní sady barev, tedy z colors do blink_colors nebo naopak podle okamžitého stavu. Po zastavení blikání se přístroj vždy vrátí do standardní barevné sady bez ohledu na předchozí volání procedury ToggleBlink.
Přístroj může volat standardní událostní procedury:
OnActivate() OnMouseDown( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) OnMouseDoubleClick( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) OnMouseUp( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) OnMouseMove( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) OnKeyDown( Character : cardinal ) OnKeyRepeat( Character : cardinal ) OnKeyUp( Character : cardinal ) OnSelect() OnDeselect() OnShow() OnHide() OnNewPosition( RectX, RectY, RectW, RectD : integer ) OnWindowMinimize() OnWindowMaximize() OnWindowRestore( WasMinimized, WasMaximized : boolean ) OnWindowClose()
OnIndexOutput( Index : real; Output: real )Procedura je zavolána pro každou položku, která je identifikována hodnotou parametru Index (počínaje číslem 1). Má-li tedy graf např. 10 položek (deset čar), bude procedura zavolána v každém časovém kroku desetkrát. V proměnné Output je hodnota, která bude bude po dokončení procedury zobrazena a případně zapsána do výstupního datového elementu. Tuto hodnotu je možno v proceduře změnit.
OnIndexBelowLowLimit( Index : real; Output: real )Procedura je zavolána pro každou položku, jejíž hodnota v daném časovém kroku podkročila dolní limit. Číslo položky je identifikováno hodnotou parametru Index (počínaje číslem 1). V proměnné Output je hodnota, která bude bude po dokončení procedury zobrazena a případně zapsána do výstupního datového elementu. Tuto hodnotu je možno v proceduře změnit.
OnIndexAboveHighLimit( Index : real; Output: real )Procedura je zavolána pro každou položku, jejíž hodnota v daném časovém kroku překročila horní limit. Číslo položky je identifikováno hodnotou parametru Index (počínaje číslem 1). V proměnné Output je hodnota, která bude bude po dokončení procedury zobrazena a případně zapsána do výstupního datového elementu. Tuto hodnotu je možno v proceduře změnit.
OnIndexBelowRange( Index : real; Output: real )Procedura je zavolána pro každou položku, jejíž hodnota v daném časovém kroku podkročila dolní hodnotu rozsahu přístroje a která bude proto ořezána. Číslo položky je identifikováno hodnotou parametru Index (počínaje číslem 1). V proměnné Output je hodnota před ořezáním. Tuto hodnotu je možno v proceduře změnit.
OnIndexAboveRange( Index : real; Output: real )Procedura je zavolána pro každou položku, jejíž hodnota v daném časovém kroku překročila horní hodnotu rozsahu přístroje a která bude proto ořezána. Číslo položky je identifikováno hodnotou parametru Index (počínaje číslem 1). V proměnné Output je hodnota před ořezáním. Tuto hodnotu je možno v proceduře změnit.