Dokumentace

Bit Rotation (T14)

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ředu False
INI MULTIIOBOOL Počá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 OUTPUTS INT Počet položek, které se zúčastní rotace 1

Výstupy

Výstup Typ Význam
OUT MULTIIOBOOL Vý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í.