Obsah

Bitová rotace

Název bloku

T14_BIT_ROTATION

Volání v ST

PROGRAM TEST14
 VAR 
        INT1,INT2,INT3,INT4: INT;
       BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6,BOOL7,BOOL8: BOOL;
      FB: LIB.HVAC.V1_0.T14_BIT_ROTATION;
 END_VAR
 FB.INI[1]:=BOOL3;
   FB.INI[2]:=BOOL4;
   FB.INI[3]:=BOOL5;
   FB.LISTOFENABLED[1]:=INT2;
  FB.LISTOFENABLED[2]:=INT3;
  FB.LISTOFENABLED[3]:=INT4;
  FB(BX:= BOOL1, BXF:= BOOL2, NUMOFENABLEDOUTPUTS:= INT1);
    BOOL6:=FB.OUT[1];
   BOOL7:=FB.OUT[2];
   BOOL8:=FB.OUT[3];
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Bitová rotace je funkční blok, který slouží k posunu bitů v definovaném vektoru na základě náběžné nebo sestupné hrany na vstupech.

Vstupy

Vstup Typ Význam Výchozí hodnota
BX BOOL Vstup, reagující na náběžnou hranu: vektor při ní rotuje o jednu pozici dopředu False
BXF BOOL Vstup, reagující na sestupnou hranu: vektor při ní rotuje o jednu pozici dopředuFalse
INI MULTIIOBOOLPočáteční bitový vzor výstupů [True, False,…,False]
LIST OF ENABLED MULTIIOINT Pole čísel výstupů, které se účastní rotace [1,0,…,0]
NUM OF ENABLED OUTPUTSINT Počet položek, které se zúčastní rotace 1

Výstupy

VýstupTyp Význam
OUT MULTIIOBOOLVýstupní rotovaný vektor
SHIFT INT Indikuje, o kolik pozic je vektor rotován

Funkce

Pozor: Funkční blok používá vlastní typy knihovny multiiobool a multiioint, což jsou pole (array [1…16]) boolovských a integerových hodnot. Pro převod na jednotlivé binární a integerové hodnoty používejte funkce helper_multiinbool a helper_multioutbool, které rozkládají pole na řadu binárních nebo integerových hodnot.

Proměnná INI musí obsahovat počáteční vzor, nejčastěji to je “1 z n”, “2 z n” atd., tedy např. [1, 1, 0, 0, 0, 0, 0, 0]. Při posunu vzor rotuje směrem “dopředu”, takže po prvním impulsu má výstupní vektor tvar [0, 1, 1, 0, 0, 0, 0, 0] a proměnná shift má hodnotu 1, po druhém pak [0, 0, 1, 1, 0, 0, 0, 0] a shift = 2 atd. Po počtu impulsů rovném NUM OF ENABLED OUTPUTS se vektor vrací do původního stavu a SHIFT = 0.

V proměnné NUM OF ENABLED OUTPUTS se zadá počet výstupů, které se zúčastní rotace; maximum je 16.

Proměnná ListOfEnabled je pole s čísly výstupů, které se zúčastní rotace. Tedy například pro prvních 8 výstupů bude vektor mít tvar [1, 2, 3, 4, 5, 6, 7, 8]. (Obvyklé použití bude právě n výstupů následujících za sebou. Pokud by se rotace zúčastnilo 5 výstupů, a to 1, 3, 4, 5 a 7, vektor bude mít tvar [1, 3, 4, 5, 7] a NUM OF ENABLED OUTPUTS bude rovno 5.

Výše uvedené proměnné mají význam v případě, že některé výstupy chceme z rotace vyřadit, např. pro poruchu agregátu.

Příklad použití

Blok se používá jako zdroj signálu pro střídání pořadí kotlů, cyklické prohazování pořadí čerpadel, vícestupňových el. ohřevů apod. kvůli jejich rovnoměrnému opotřebení.