Camino:  Equipo (Dispositivos) > LDW900 > Ladder > Logic > Logic Rotate >

ROL

Rotação Lógica à Esquerda

Previous pageReturn to chapter overviewNext page

Bloque que ejecuta una operación de rotación lógica a la izquierda en un valor pasado por Value, almacenando el resultado en Result.

 

Representación Ladder

 

ROL_block

 

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 rotación

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. Los bits más significativos que vayan siendo descartados serán reenviados a los bits menos significativos, caracterizando la rotación.

 

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

 

ROL_flowchart

 

Ejemplo en Ladder

 

ROL_example01

 

El ejemplo de arriba realiza una rotación lógica a la izquierda de una posición en la variable VALUE, cuyo valor inicial es -100 (1001 1100 en binario). Los bits descartados a la izquierda son reinsertados a la derecha. El resultado final (0011 1001 en binario) es almacenado en RESULT.

 

ROL_example02

 

El ejemplo de arriba realiza una rotación lógica a la izquierda de cinco posiciones en la variable VALUE, cuyo valor inicial es 21 (0001 0101 en binario). Los bits descartados a la izquierda son reinsertados a la derecha. El resultado final (1010 0010 en binario) es almacenado en RESULT.

 

Ejemplo en ST

 

 El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.

 

 

VAR

   VALUE : USINT := 2#0001_0101;

   SHIFT : BYTE := 5;

   RESULT : USINT;

END_VAR

 

RESULT := FB_ROL(

   EN:=DI1,

   Value:=VALUE,

   Shift:=SHIFT,

   ENO=>DO1);