====== Integer Composition ====== {{:en:mervis-ide:35-help:bd55.png}} ===== Block name ===== BD55_INT_COMPOSITION ===== ST call ===== 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 ===== Library ===== LIB\CORE ===== Version ===== V1.0 ===== Description ===== The block composes the output value from up to 4 binary input vectors with defined positioning within the output vector. ===== Inputs ===== |Input|Type |Description |Default value| |IN |DINT |Input data, up to 4 inputs possible |[0] | |BS |BOOL |Sign of the output value |False | |LOW |ARRAY[0..3] OF LIB.CORE.V1_0.[[en:mervis-ide:35-help:035-software_basic:060-libraries:015-proto|BIT32]]|first bits of the range, array [0..3] with values 1 to 32|[1] | |HIGH |ARRAY[0..3] OF LIB.CORE.V1_0.[[en:mervis-ide:35-help:035-software_basic:060-libraries:015-proto|BIT32]]|last bits of the range, array [0..3] with values 1 to 32 |[1] | ===== Outputs ===== |Output|Type|Description | |=> |lint|Output value| ===== Function ===== The block composes the output integer value from up to 4 parts according to given parameters //in//,//low,// and //high//. The output value sign is given by the //bs// variable. E.g. the input value will have 4 bits and shall be inserted as 5th to 8th bit of the output value: //low// = [5,0,0,0], //high// = [8,0,0,0]. The input value itself is e.g. 6: //in// = [6,0,0,0]. Note that if the ranges overlapĀ  there may be undefined behaviour of the output value.\\ ===== Application example ===== {{:en:mervis-ide:35-help:bd55_example.png}} Input value composition, in0 occupies bits 1 to 4, in2 occupies bits 5 to 8 etc. The parameters are then set as //low// = [1,5,9,13] and //high// = [4,8,12,16].