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

ASHR

Deslocamento Aritmético à Direita

Previous pageReturn to chapter overviewNext page

Bloque que ejecuta una operación de desplazamiento aritmético a la derecha en un valor pasado por Value, almacenando el resultado en Result.

 

Representación Ladder

 

ASHR_block

 

Estructura del Bloque

 

Tipo de Variable

Nombre

Tipo de Dato

Descripción

VAR_INPUT

EN

BOOL

Habilitación del bloque

Value

SINT INT DINT

Variable a sufrir desplazamiento

Shift

BYTE USINT

Indice de desplazamiento

VAR_OUTPUT

ENO

BOOL

Fin de operación

Result

SINT INT 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 aritméticos a la derecha, de acuerdo con el valor de Shift.

 

wpshelp_common_fig_note

¡NOTA!

Todos los desplazamientos aritméticos implementados mantienen la señal de la variable.

 

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

 

ASHR_flowchart

 

Ejemplo en Ladder

 

ASHR_example01

 

El ejemplo de arriba realiza un desplazamiento aritmético a la derecha de tres posiciones en la variable VALUE, cuyo valor inicial es 52 (0011 0100 en binario). Los bits a la derecha van siendo descartados, y son insertados nuevos ceros a la izquierda. El resultado final (0000 0110 en binario) es almacenado en RESULT.

 

ASHR_example02

 

El ejemplo de arriba realiza un desplazamiento aritmético a la derecha de dos posiciones en la variable VALUE, cuyo valor inicial es -79 (1011 0001 en binario). Los bits a la derecha van siendo descartados, y a la izquierda son insertados nuevos unos, visto que los desplazamientos aritméticos a la derecha preservan la señal de la variable. El resultado final (1111 0110 en binario) es almacenado en RESULT.

 

ASHR_example03

 

El ejemplo de arriba realiza un desplazamiento aritmético a la derecha de trece posiciones en la variable VALUE, cuyo valor inicial es -128 (1000 0000 en binario). Los bits a la derecha van siendo descartados, y a la izquierda son insertados nuevos unos. El resultado final (1111 1111 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 : SINT := -79;

   SHIFT : BYTE := 2;

   RESULT : INT;

END_VAR

 

RESULT := FB_ASHR(

   EN:=DI1,

   Value:=VALUE,

   Shift:=SHIFT,

   ENO=>DO1);