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í.