Obsah

Složení Integer

Název bloku

BD55_INT_COMPOSITION

Volání v ST

PROGRAM BD55
    VAR
     LINT1:LINT;
     ARRAY1 : ARRAY [0..3] OF DINT := [3, 6, 10, 5];
     LOW : ARRAY[0..3] OF LIB.CORE.V1_0.BIT32:= [1, 5, 9, 13];
   HIGH : ARRAY[0..3] OF LIB.CORE.V1_0.BIT32:= [4, 8, 12, 16];
     END_VAR
  LINT1:= LIB.CORE.V1_0.BD55_INT_COMPOSITION(LOW := LOW ,HIGH := HIGH ,BS:=TRUE,IN:=ARRAY1);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok složí ze vstupních dat výstupní hodnotu Integer podle zadaného umístění vstupů.

Vstupy

VstupTyp Význam Výchozí hodnota
IN ARRAY[0..3] OF DINT Vstupní data [0]
BS BOOL Znaménko výstupní hodnoty False
LOW ARRAY[0..3] OF LIB.CORE.V1_0.BIT32první bit z rozsahu, pole o velikost [1..4] s hodnotami 1 až 32 [1]
HIGH ARRAY[0..3] OF LIB.CORE.V1_0.BIT32poslední bit z rozsahu, pole o velikost [1..4] s hodnotami 1 až 32[1]

Výstupy

VýstupTyp Význam
lintVýstupní hodnota

Funkce

Blok složí vstupní data v rozsahu podle zadaných parametrů in, low a high. Výstupní hodnotu lze složit z až čtyř částí. Znaménko výstupu se určí pomocí proměnné bs. Příklad: bity 5 až 8 představují hodnotu 0110, tedy dekadicky 6. Tuto hodnotu chceme interpretovat jako součást čísla integer. Použijeme první pozice vektorů low, high a in, tedy nastavení pro uložení hodnoty 0110 do pátého až osmého bitu bude vypadat takto: low = [5,0,0,0], high = [8,0,0,0] a samotná hodnota in = [6,0,0,0]. POZOR: v případě, kdy se budou rozsahy překrývat, může dojít k chybě.

Příklad použití

Složení výstupní hodnoty podle zadaných požadavků low = [1,5,9,13] a high = [4,8,12,16]. Jednotlivé čtveřice bitů (1…4, 5…8, 9…12 a 13…16, jak určují vektory low a high) obsahují čísla 3, 6, 10 a 5 (viz vstupy dint1…dint3); seřazeno od nejvyššího bitu k nejnižšímu a binárně má číslo tvar 0101 1010 0110 0011, což je dekadicky 23139 - výsledek operace na výstupu bloku.