====== Složení Integer ====== {{:cs:mervis-ide:35-help:bd55.png}} ===== 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 ===== |Vstup|Typ |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.[[cs:mervis-ide:35-help:035-software_basic:060-libraries:015-proto|BIT32]]|první bit z rozsahu, pole o velikost [1..4] s hodnotami 1 až 32 |[1] | |HIGH |ARRAY[0..3] OF LIB.CORE.V1_0.[[cs:mervis-ide:35-help:035-software_basic:060-libraries:015-proto|BIT32]]|poslední bit z rozsahu, pole o velikost [1..4] s hodnotami 1 až 32|[1] | ===== Výstupy ===== |Výstup|Typ |Význam | |=> |lint|Vý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í ===== {{:cs:mervis-ide:35-help:bd55_example.png}} 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.\\