step_regulator
Funkce
Krokový regulátor, který podle dvou vstupních numerických výrazů — žádaná
a regulovaná hodnota — vypočítá akční zásah — přičítací a odečítací výstup.
Syntax
step_regulator step_regulator_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;
condition = boolean_expression;
wish_value = real_expression;
expression = real_expression;
output_minus = real_dataelement;
output_plus = real_dataelement;
receivers = [ identifier, . . . ];
inverse;
divergence_minus = real;
divergence_plus = real;
inactive_hit = integer;
show_description;
wish_value_section
BLOCK_SECTION
end_wish_value_section;
value_section
BLOCK_SECTION
end_value_section;
output_section
BLOCK_SECTION
end_output_section;
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;
end_step_regulator;
BLOCK_SECTION
ratio = integer;
view_position = integer;
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;
font = font_identifier, integer, style_identifier;
mask = string;
Specifické parametry přístroje
- condition
Obsahuje podmínku spuštění regulace. Dokud není výraz condition = true,
regulátor nevysílá žádnou logickou hodnotu.
- wish_value
Číselný výraz určující žádanou hodnotu, které se regulátor bude snažit dosáhnout.
- expression
Číselný výraz s hodnotou aktuálního stavu regulované veličiny, tuto veličinu
regulátor reguluje.
- output_minus a output_plus
jsou tzv. akční zásahy. Jde o dva výstupy, které jsou realizovány logickou
hodnotou. Parametr udává název proměnné nebo výstupního kanálu, kam se bude hodnota
nastavená přístrojem step_regulator posílat. Je-li žádaná hodnota větší než
skutečná, regulátor nastaví na výstup output_plus stav sepnuto a na výstup
output_minus stav vypnuto a naopak.
- receivers
Seznam přístrojů, kterým se budou posílat zprávy o akcích regulátoru.
Podle nastavení parametru send_same_data se regulátor chová dvěma způsoby -
buď volá přístroje uvedené v receivers jen při změně akční hodnoty
(parametr send_same_data není nastaven), nebo (send_same_data nastaven je)
v každém časovém kroku bez ohledu na stav nebo změnu stavu akční veličiny.
- inverse
Je-li tento parametr zadán, pak regulátor bude generovat negované akční zásahy,
neboli výstup bude aktivní ve stavu sepnuto nastavenou logickou hodnotou false
a neaktivní ve stavu vypnuto nastavenou logickou hodnotou true.
- divergence_minus a divergence_plus
jsou hodnoty velikosti hystereze regulátoru. Je-li žádaná hodnota větší než
skutečná, regulátor sepne až když tato odchylka překročí divergence_plus.
Naopak, je-li žádaná hodnota menší než skutečná, regulátor vypne až když rozdíl
těchto veličin překročí divergence_plus.
- inactive_hit
Počet časových kroků regulace, během kterých se nebude vysílat následující akční
zásah. Parametr má význam u rychle reagujících soustav, vhodnou volbou tohoto
parametru je možné ovlivňovat překmity či rozkmitání regulátoru. Konkrétní hodnotu
je nutné vždy určit na dané soustavě experimentálně.
- show_description
je klíčové slovo, které určuje, zda se má zobrazit popis jednotlivých sekcí
regulátoru.
- section a end_section
jsou klíčová slova, mezi kterými jsou umístěny parametry ovlivňující vzhled
vykreslování výstupní a dvou vstupních hodnot.
- ratio
Vyjadřuje poměrnou část šířky plochy, která bude nastavena této sekci vzhledem
k celkové šířce regulátoru.
- view_position
Má hodnotu 1, 2, nebo 3, která udává pořadí sekce v regulátoru při zobrazování.
- mode
Určuje grafickou podobu přístroje uvedením jednoho z názvů módu:
- pointer - ručkový přístroj
- digital - digitální přístroj s celistvými číslicemi
- dot_digital - digitální přístroj s bodovými číslicemi
- vertical_bar - poměrná svislá barevná plocha
- horizontal_bar - poměrná vodorovná barevná plocha
- flow_graph - posunující se graf
- sweep_graph - stojící graf
- text_display - textový displej
- double_graph - kombinace žádané a vstupní hodnoty
- content
Má rovněž vliv na grafickou podobu přístroje. Může nabývat tří hodnot : max,
med a min. Pro všechny módy znamená nastavení content = max
zobrazení kompletní podoby přístroje. Některé módy navíc umožňují schovat jednu
ze svých částí, a to nastavením parametru content = med , popř. content = min.
- range_from a range_to
jsou parametry udávající rozsah přístroje. Bude-li hodnota vstupního výrazu
přístroje menší, než je hodnota range_from, přístroj se nastaví právě na
hodnotu uvedenou v range_from, stejně tak bude-li hodnota vstupního výrazu
přesahovat range_to, přístroj se nastaví právě na hodnotu uvedenou
v range_to.
- low_limit a high_limit
jsou parametry ovlivňující barevné zobrazení vykreslované hodnoty. Je–li hodnota
menší než low_limit, vykresluje se barva uvedená v parametru
colors–low_limit, přesáhne–li hodnota high_limit, pak je aktuální
barva parametru colors–high_limit. V rozsahu mezi limitami se hodnota
vykresluje barvou colors–value. Podle zvoleného módu se bude měnit např.
barva pozadí přístroje , popř. se danými barvami vykreslí hodnoty obou limit
v grafu.
- history
Udává počet zobrazených hodnot v grafu. U jiných módů nemá význam.
- dec_places
je počet zobrazovaných desetinných míst pro módy s číselným vykreslováním hodnoty.
- real_step
je parametr důležitý pro nastavování limitů přístroje pomocí numerického řádku.
Jeho numerická velikost udává přírůstek hodnoty při použití přičítacích a odečítacích
šipek numerického řádku.
- h_grid a v_grid
jsou parametry určující zobrazení vodorovných a svislých čar do grafu jako jeho
pomocné síťování. Velikost parametrů h_grih a v_grid udává počet
zobrazených vodorovných a svislých čar.
- font
je parametr určující font při vykreslování hodnoty módem text_display. Má vždy tři
části. První z nich font_identifier určuje typ písma (např. TIMES, SYSTEM,
aj.), druhý určuje jeho velikost v tiskových bodech a třetí parametr styl_identifier
rozhoduje o tom, zda bude písmo normální (normal), tučné (bold) nebo skloněné (italic).
- mask
je šablona pro vypisování libovolného textu současně s numerické hodnotou přístroje.
Parametr má význam při mode = text_display;. v textovém režimu se zadává
v uvozovkách, v inspektoru přístroje bez uvozovek. Může mít např. tvar mask =
'rychlost = ##.## m/s'; , kde znak '#' udává umístění a velikost zobrazované numerické
hodnoty.
Poznámky
- Více informací o použitých regulačních mechanismech a regulátorech samotných je
možné nalézt v kapitole Regulátory a regulace manuálu.
- Podoba módů je popsána u přístroje meter.
- Implicitně jsou nastaveny parametry:
- position = 0, 0, 100, 80;
- access = 4294967295;
- tab_select = 4294967295;
- divergence_minus = 0;
- divergence_plus = 0;
- active_hit = 5;
Příklad
Příklad nastavení parametrů přístroje step_regulator:
window step_regulator reg;
timer = 1;
owner = background;
position = 217, 34, 345, 108;
wish_value = w;
expression = vystup_ze_soustavy;
output_minus = minus;
output_plus = plus;
condition = start;
active_hit = 2;
output_section
view_position = 3;
mode = flow_graph;
range_from = -1;
range_to = 1;
low_limit = -1;
high_limit = 1;
history = 50;
end_output_section;
wish_value_section
mode = flow_graph;
history = 50;
end_wish_value_section;
value_section
view_position = 1;
mode = flow_graph;
history = 50;
end_value_section;
colors
paper = white;
low_limit = dgray;
high_limit = dgray;
end_colors;
end_step_regulator;
Nativní procedury přístroje
Podrobnější informace k nativním procedurám je možné nalézt
v kapitole Regulátory a regulace.
SetDivergenceMinus( div_minus : real );
SetDivergencePlus( div_plus : real );
SetInactiveHit( active_hit : real );
GetDivergenceMinus( VAR div_minus : real );
GetDivergencePlus( VAR div_plus : real );
GetInactiveHit( VAR inactive_hit : real );
Metody slouží ke změně parametrů krokového regulátoru. Parametry div_minus, div_plus
a inactive_hit odpovídají parametrům regulátoru divergence_plus, divergence_minus
a inactive_hit nastavovatelným v popisu přístroje. Více informací je možné získat
v referenční příručce krokového regulátoru a v kapitole
Regulátory a regulace.
Událostní procedury přístroje
Přístroj může volat standardní událostní procedury:
OnActivate()
OnShow()
OnHide()
OnNewPosition( RectX, RectY, RectW, RectD : integer )
OnWindowMinimize()
OnWindowMaximize()
OnWindowRestore( WasMinimized, WasMaximized : boolean )
OnWindowClose()
Podrobnější informace k těmto procedurám lze nalézt v kapitole
Programování a procedury.
Specifické událostní procedury přístroje
OnOutput( &PlusActive, &MinusActive : boolean )
Proceduru přístroj volá vždy při nastavení výstupu, ať již je jeho hodnota jakákoli. Procedura
je proto volána v každém časovém kroku přístroje. Parametry PlusActive a MinusActive obsahují
aktuální hodnoty výstupu regulátoru, přičemž tyto hodnoty v okamžiku volání procedury ještě nejsou zapsány
do výstupních datových elementů. Procedura proto může výstup regulátoru ovlivnit upravením
parametrů PlusActive a MinusActive na libovolnou hodnotu. Teprve takto upravené
(případně nezměněné) hodnoty budou zapsány na výstup regulátoru.
OnOutputChange( &PlusActive, &MinusActive : boolean )
Proceduru přístroj volá vždy při nastavení výstupu, je-li jeho aktuální hodnota odlišná
od hodnoty předchozí. Procedura proto nemusí být volána v každém časovém kroku přístroje.
Parametry PlusActive a MinusActive obsahují
aktuální hodnoty výstupu regulátoru, přičemž tyto hodnoty v okamžiku volání procedury ještě nejsou zapsány
do výstupních datových elementů. Procedura proto může výstup regulátoru ovlivnit upravením
parametrů PlusActive a MinusActive na libovolnou hodnotu. Teprve takto upravené
(případně nezměněné) hodnoty budou zapsány na výstup regulátoru.