BD54_INT_DECOMPOSITION
PROGRAM BD54 VAR ARRAY1: ARRAY [0..3] OF DINT; ARRAY2: ARRAY [0..3] OF REAL; DINT1: DINT := 23139; FB: LIB.CORE.V1_0.BD54_INT_DECOMPOSITION := (LOW := [1, 5, 1, 13] ,HIGH := [4, 8, 8, 16]); END_VAR FB(IN:= DINT1, OUT=>ARRAY1, DY=>ARRAY2); END_PROGRAM
LIB\CORE
V1.0
Blok rozloží vstupní data na hodnoty z určeného rozsahu bitů.
Výstup | Typ | Význam |
OUT | ARRAY_DINT | Výstupní hodnota, pole o velikost [0..3] |
DY | ARRAY_REAL | Výstupní hodnota, pole o velikost [0..3] |
bs | bool | Znaménko vstupní hodnoty |
Blok rozloží vstupní data v rozsahu podle zadání daného parametry low a high. Low a high jsou vektory, kde každá položka určuje, kde začíná a končí pozice příslušného výsledku. Je možné rozkládat až do 4 výstupů, bitové rozsahy se mohou navzájem překrývat. Příklad: Pro zobrazení hodnoty prvních 4 bitů se vyplní low [1,0,0,0] a high [4,0,0,0] - tedy u prvního výstupu je první (dolní) bit 1, poslední (horní) bit 4. Výsledná hodnota bude na prvním výstupu, resp. v prvním prvku výstupního pole. Obdobně by místo nul ve vektorech výše mohly být vyplněny počáteční a koncové bity u dalších tří výstupů. bs určuje znaménko vstupních dat. Požadovaný zobrazený rozsah může být od 2 bitů až po 32 bitů.
Rozklad vstupní hodnoty podle zadaných požadavků low = [1,5,1,13] a high = [4,8,8,16]. Vstup, 23139, je binárně 0101 1010 0110 0011. První výstup bere bity 1…4, tedy „0011“, což představuje dekadicky číslo 3. Druhý výstup bere bity 5 až 8, tedy „0110“, dekadicky 6. Třetí výstup bere bity 1 až 8, tedy „0110 0011“, dekadicky 99. Čtvrtý výstup bere poslední čtveřici bitů 13…16, tedy „0101“, dekadicky 5. Informace, které byly na bitech mimo určený rozsah, se neberou v úvahu.