Rozklad Integer

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

VstupTyp Význam Výchozí hodnota
IN DINT Vstupní data 0
LOW ARRAY[0..3] OF LIB.CORE.V1_0.BIT32první bit z rozsahu, pole o velikost [0..3] s hodnotami 1 až 32 [1]
HIGH ARRAY[0..3] OF LIB.CORE.V1_0.BIT32poslední bit z rozsahu, pole o velikost [0..3] s hodnotami 1 až 32[1]
VýstupTyp Význam
OUT ARRAY_DINTVýstupní hodnota, pole o velikost [0..3]
DY ARRAY_REALVý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.

  • © Energocentrum Plus, s.r.o. 2017 - 2024