Shift bits to the right
SHR shifts a bit value by a defined number of positions (N) to the right and fills the vacant positions with zeros.
Input
1st input: input value
2nd input: number of bits by which the input value is shifted to the right
Output
Output as input: result
If the second input variable N (the number of bits to be shifted) is of the data type DWORD, then only the lower 16 bits are taken into account.
All input and output variables used for programming this function have been declared in the POU header. The same POU header is used for all programming languages.
VAR
source_register: WORD:=0;
target_register: WORD:=0;
END_VAR
This example uses variables. You can also use a constant for the input variable.
The last N bits (here 4) of source_register are right-shifted. The vacant positions on the left are filled with zeros. The result is written into target_register.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,SHR!,Instance,9,1,14,5,,?DIN?DN?C);
B(B_VARIN,,source_register,7,2,9,4,);
B(B_VARIN,,4,7,3,9,5,);
B(B_VAROUT,,target_register,14,2,16,4,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY