Bloque que ejecuta una operación de desplazamiento lógico binario a la izquierda en un valor pasado por Value, almacenando el resultado en Result.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
Value |
BYTE USINT SINT WORD UINT INT DWORD UDINT DINT |
Variable a sufrir desplazamiento |
|
Shift |
BYTE USINT |
Indice de desplazamiento |
|
VAR_OUTPUT |
ENO |
BOOL |
Fin de operación |
Result |
BYTE USINT SINT WORD UINT INT DWORD UDINT DINT |
Variable que almacena el resultado de la operación |
Operación
Este bloque, cuando tiene un valor TRUE en EN, envía a la salida Result el valor de la variable Value luego de realizar un determinado número de desplazamientos lógicos a la izquierda, de acuerdo con el valor de Shift.
Cuando EN tiene valor FALSE, Result permanece inalterado.
El valor de ENO pasa al próximo bloque Ladder el valor de EN luego de finalizada la operación.
Diagrama de Flujo del Bloque

Ejemplo en Ladder

El ejemplo de arriba realiza un desplazamiento lógico a la izquierda de cuatro posiciones en la variable VALUE, cuyo valor inicial es 56 (0011_1000 en binario). Los bits a la izquierda van siendo descartados, y a la derecha son insertados nuevos ceros. El resultado final (0011_1000_0000 en binario) es almacenado en RESULT.

El ejemplo de arriba realiza un desplazamiento lógico a la izquierda de cuatro posiciones en la variable VALUE, cuyo valor inicial es -56 (1100_1000 en binario). Los bits a la izquierda van siendo descartados, y a la derecha son insertados nuevos ceros. El resultado final (1100_1000_0000 en binario) es almacenado en RESULT. Como RESULT es del tipo SINT, sólo acepta los primeros ocho bits (1000_0000).
Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR VALUE : SINT := -56; SHIFT : USINT := 4; RESULT : SINT; END_VAR
RESULT := FB_SHL( EN:=DI1, Value:=VALUE, Shift:=SHIFT, ENO=>DO1);
|
|---|