P1.2 Bloky (funkce) jazyka PSI
Dynamické spojité |
|
|
|||||
Dynamické diskrétní |
|
|
|||||
Logické |
|
|
|
|
|||
Nelineární |
|||||||
Pomocné |
OBECNÉ SCHÉMA BLOKU:
|
(počáteční podmínky a řídicí veličiny tvoří tzv. parametry bloku) |
funkce |
identifikátor označující typ bloku a tím jeho funkci |
(viz seznam funkcí jazyka) | |
proměnná |
identifikátor volený uživatelem |
označuje výstup z bloku (v matematickém popisu funkce bloků je označována jako y ) | |
vstupy |
značeny i1, i2, ... |
jsou to proměnné nebo aritmetické výrazy | |
parametry |
značeny p1, p2, ... |
mohou jimi být pouze konstanty nebo jednoduché proměnné, nemohou jimi být aritmetické výrazy | |
a) |
počáteční podmínky: určují počáteční stav modelu; mohou jimi být hodnoty konstant nebo jednoduché |
proměnné (výstupy bloku PAR) | |
b) |
řídicí veličiny: řídí chování bloku, mohou jimi být konstanty (p1, p2,...) i proměnné (i1, i2,...) |
ZÁPIS PŘÍKAZU:
proměnná = funkce ( i1, i2 ,... PAR: p1, p2 , ... ) ;
(oddělovačem je čárka, před PAR je mezera, na konci příkazu musí být středník)
VYBRANÉ BLOKY (FUNKCE)
Z funkcí jazyka PSI jsou zde popsány jen ty, které jsou univerzálně použitelné v úlohách, kterými se budeme zabývat. Jsou uvedeny v abecedním pořádku. Všechny existující bloky jazyka PSI jsou popsány v nápovědě, která je součástí programu.
BNG | přepínač "bang-bang" (změna hodnoty konstanty podle řídicí proměnné) |
|
y = BNG (i1 PAR: p1, p2, p3); |
y = p1 | pro i1 < p3 | |
y = p2 | pro i1 ł p3 |
CON | konstanta |
y = CON ( PAR: p1) ; |
y = p1 |
Poznámka: V
aritmetických výrazech je možné používat zápisu číselné
konstanty přímo, tohoto bloku se používá pouze tehdy, když
je třeba téže konstanty buď používat na více místech,
nebo jako optimalizačního parametru a nebo když má být
viditelně oddělena od ostatních příkazů modelu. Je možný
i zápis
y = konstanta; |
COUNT | čítač (slouží k počítání pulsů) |
y = COUNT (i1, i2 PAR: p1, p2) ; i1 ... vstup pulsů, které mají být počítány i2 ... řídicí vstup: je-li i2 > 0, je čítač vynulován a y = 0 p1 ... předvolba ( p1 ł 1) p2 ... řídicí parametr: |
p2 = 0: |
výstup y = 1, 0, 0, ..., 1, 0, 0, ... tj. výstup y je stále 0, pouze když počet pulsů je právě roven p1, tak je y =1 |
|
p2 = 1: |
výstup y = p1, 0, 1, 2, ..., p1, 0, 1, 2, ... tj. výstup y je na počátku roven předvolbě p1, ale je ihned vynulován, pak se každým pulsem zvětšuje o 1 a po dosažení předvolby p1 je opět vynulován, atd. |
|
![]() |
DIF | numerická derivace |
y = DIF(i1 PAR: p1) ; |
![]() |
|
p1 = i1(-T) T ... výpočetní krok nezávisle proměnné ("integration interval"), t ... okamžitá hodnota nezávisle proměnné (TIME) |
FFL | RS klopný obvod ("flip flop") |
y = FFL(i1, i2, i3 PAR: p1, p2); |
i1 ... řídicí vstup: |
i1 Ł 0 ... RS obvod funguje podle předpisu i1 > 0 ... obvod vyřazen, yk = yk-1 |
|
i2 ... nulovací vstup (R) : | i2 > 0 => yk = 0 | |
i3 ... nastavovací vstup (S) : | i3 > 0 => yk = 1 | |
i2 Ł 0 a zároveň i3 Ł 0 => yk = yk-1 (pro nestandardní případ: i2 > 0 a zároveň i3 > 0 |
=> yk = p2 | |
p1 = y(0) (počáteční hodnota výstupu) , | 0 Ł p1 Ł 1 | |
p2... hodnota výstupu pro R=1 a zároveň S=1, | 0 Ł p2 Ł 1 |
FNG | generátor funkce jedné proměnné dané tabulkou |
y = FNG (i1 PAR: p1, p2 , p3, p4); |
y = f (i1) | |
tabulka musí být v nezávisle proměnné dělena ekvidistantně, p1 ... hodnota nezávisle proměnné odpovídající prvnímu bodu tabulky, p2 ... hodnota nezávisle proměnné odpovídající poslednímu bodu tabulky, p1 Ł i1 Ł p2 p3 ... řídicí parametr interpolace: p3 = 1 ... lineární, p3 = 2 ... kvadratická p4 ... jméno (identifikátor) tabulky, které jí uživatel přidělí při jejím vytváření |
FNG2 | generátor funkce dvou proměnných dané tabulkou |
y = FNG2 (i1, i2 PAR: p1, p2 , p3, p4, p5); |
y = f (i1, i2) | |
tabulka musí být v obou nezávisle proměnných dělena ekvidistantně, interpolace se provádí pouze lineární p1, p2 ... dolní a horní mez první nezávisle proměnné v tabulce, p1 Ł i1 Ł p2 p3, p4 ... dolní a horní mez druhé nezávisle proměnné v tabulce, p3 Ł i2 Ł p4 p5 ... jméno (identifikátor) tabulky, které jí uživatel přidělí při jejím vytváření |
GAIN | násobení konstantou |
y = GAIN (i1, PAR: p1); |
|
|
Poznámka: V aritmetických výrazech je možné používat zápisu číselné konstanty přímo.
GEN | generátor šesti standardních signálů |
y = GEN (PAR: p1, p2 , p3, p4, p5, p6); p1 = y(0) |
|
|
HYS | hystereze signálu |
y = HYS ( i1 PAR: p1, p2 , p3, p4, p5, p6) ; |
p1 = y(0) p2 > 0 směrnice přechodu z p5 na p6 a zpět p5 Ł p1 Ł p6 p3 < p4 |
![]() |
INF | soustava 1.řádu (soustava se zpožděním 1.řádu) |
y = INF ( i1 PAR: p1, p2 , p3) |
výstup je řešením diferenciální rovnice |
|
|
p1 = y(0), p2 = K (zesílení) , p3 = t ą 0 (časová konstanta) |
INT | integrace (numerická) |
y = INT ( i1 PAR: p1) ; |
![]() |
|
p1 = y(0) t ... okamžitá hodnota nezávisle proměnné simulace (času) |
LIM | omezovač signálu (limiter) |
y = LIM ( i1 PAR: p1, p2 , p3); |
y = max ( min ( p3 . i1 , p2) , p1) p1 Ł p2 p3 > 0 směrnice (zesílení limiteru) |
![]() |
MON | Monodova rovnice (resp. rovnice Michaelis - Mentenové) |
y = MON ( i1 PAR: p1, p2); |
![]() |
|
p1 ... 1.parametr (max.rychlost apod.) p2 ... 2.parametr (Michaelisova konstanta apod.) |
NOI | generátor šumu (náhodného signálu) |
y = NOI ( PAR: p1, p2 , p3); |
p1, p2 určují rozsah výstupu p3 určuje vlastnosti šumu: p3 = 1: rovnoměrné rozdělení amplitudy mezi p1 a p2 p1 Ł p2 p3 = 2 : Gaussovo normální rozdělení amplitudy se střední hodnotou p1 a směrodat. odchylkou p2 p2 > 0 |
|
PAR | výpočet hodnoty konstanty ze vstupu i1 v čase TIME = 0, identifikátor odpovídající y pak lze použít jako parametr bloků |
y = PAR ( i1); |
Poznámka: Tohoto bloku se doporučuje používat při optimalizaci pro definování optimalizačních parametrů.
PIC | spojitý regulátor PI |
y = PIC ( i1 PAR: p1, p2, p3); |
![]() |
|
i1... regulační odchylka, t ... okamžitá hodnota nezávisle proměnné |
p1 = y(0) - r0 . i1(0) | (výstup pro TIME = 0 ), | |
p2 = r0 | (zesílení), | |
p3 = Ti > 0 | (časová integrační konstanta) |
PIZ | číslicový regulátor |
y = PIZ ( i1 PAR: p1, p2 , p3 , p4); |
yk = yk-1 + KP [(i1)k - (i1)k-1] + KI (i1)k | |
i1 ... regulační odchylka p1 ... počáteční výstup: p1 = y(0) - (KP + KI) . i1(0) p2 ... číslo řídicího časovače (dává impulsy s periodou TS) p3 ... konstanta KP (proporcionální) p4 ... konstanta KI (integrační) |
PWM | generátor pravidelných pulsů, jejichž šířka je určována vstupním signálem |
y = PWM ( i1 PAR: p1, p2 , p3); |
i1 ... řídicí (modulační) signál p1 ... číslo časovače určujícího periodu pulsů p2 ... maximální šířka pulsu p3 ... maximální amplituda pulsu |
![]() |
|
Šířka pulsu se počítá z řídicího signálu podle vztahu Tt ... perioda pulsů |
QUANT | kvantovač |
y = QUANT (i1 PAR: p1, p2, p3); |
y = INTEGER (( p1.i1 + p2 ) / p3) |
|
p3 nesmí být nulové |
RELAY | přepínač signálů (relé) |
y = RELAY ( i1, i2 , i3); |
i1... řídicí vstup: | y = i2 | pro i1 Ł 0 | |
y = i3 | pro i1 > 0 |
SPL | vzorkovač |
y = SPL( i1, i2 PAR: p1); |
p1 = y(0) | ||
i1... řídicí vstup | y(k+1)
= y(k) pro i1(k+1)
Ł 0 y(k+1) = i2(k+1) pro i1(k+1) > 0 (k ... index odpovídající čas.kroku řešení) |
TDE | mrtvá doba (dopravní zpoždění) |
y = TDE( i1 PAR: p1, p2 , p3); |
y(t) = i1(t - p3) pro t ł p3, t ... čas (TIME) y(t) = p1 pro t < p3 |
|
|
p1 = y(0) p2 ... číslo časovače s periodou Ttim, Ttimł T (T...výpočetní krok simulace) p3 ... velikost dopravního zpoždění |
TIM | časovač |
y = TIM( i1 PAR: p1); |
p1 ... číslo časovače (1 Ł p1 Ł max.počet časovačů v dané verzi PSI) |
|
y ... sekvence impulsů o amplitudě 1 a s periodou danou časovačem číslo p1 ; výstup je aktivní pouze je-li i1 > 0 , jinak je trvale y = 0 |
VAR | určení okamžité hodnoty spojité proměnné z okamžité hodnoty vstupu i1 |
y = VAR ( i1) ; |
Poznámka: Možný (a vzhledem ke zvyklostem z matematiky příjemnější) zápis proměnné je
y = výraz ;
VRZ | určení hodnoty diskrétní (nespojité) proměnné z okamžité hodnoty vstupu i1 |
y = VRZ ( i1 PAR: p1) ; |
p1 ... číslo časovače (1 Ł p1 Ł max.počet časovačů v dané verzi PSI) |
i1... spojitý vstup |
y(t) = i1(j) (j ... čas odpovídající okamžiku posledního pulsu časovače) |
ZZZ | dynamická paměť pro nespojité modely; zpoždění vstupu o jednu periodu danou časovačem |
y = ZZZ ( i1 PAR: p1, p2) ; |
p1 = y(0) počáteční hodnota výstupu p2 ... číslo časovače určujícího periodu T (1 Ł p1 Ł max.počet časovačů v dané verzi PSI) |
i1... vstup |
y(t) = i1(t - T)
|