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ů.
Vstup | Typ | Význam | Výchozí hodnota |
---|---|---|---|
IN | DINT | Vstupní data | 0 |
LOW | ARRAY[0..3] OF LIB.CORE.V1_0.BIT32 | první bit z rozsahu, pole o velikost [0..3] s hodnotami 1 až 32 | [1] |
HIGH | ARRAY[0..3] OF LIB.CORE.V1_0.BIT32 | poslední bit z rozsahu, pole o velikost [0..3] s hodnotami 1 až 32 | [1] |
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.