P1.2  Bloky (funkce) jazyka PSI

Dynamické spojité 

DIF

INF

INT

PIC

TDE

   

  

Dynamické diskrétní 

TIM

SPL

PIZ

 VRZ

ZZZ

   

  

Logické

COUNT

FFL

PWM

    

   

  

  

Nelineární

BNG

FNG

FNG2

HYS

 LIM

MON

QUANT

Pomocné 

CON

GEN

GAIN

NOI

PAR

RELAY

VAR

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) ;

 

  yp1 

  
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 ( p ł 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) ;

 

 
 

pi1(-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 Ł  p Ł

               


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, 

p ...  hodnota nezávisle proměnné odpovídající poslednímu bodu tabulky, 

p1 Ł  i Ł  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, iPAR: 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);

 

y = p1 . i1

        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 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ů 

p ... 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) Ł
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)