Caminho:  Equipamentos (Dispositivos) > RUW100 > Ladder > Logic > Logic Shift >

ASHR

Deslocamento Aritmético à Direita

Previous pageReturn to chapter overviewNext page

Bloco que executa uma operação de deslocamento aritmético à direita em um valor passado por Value, armazenando o resultado em Result.

 

Representação Ladder

 

ASHR_block

 

Estrutura do Bloco

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_INPUT

EN

BOOL

Habilitação do bloco

Value

SINT INT DINT

Variável a sofrer deslocamento

Shift

BYTE USINT

Indice de deslocamento

VAR_OUTPUT

ENO

BOOL

Fim de operação

Result

SINT INT DINT

Variável que armazena o resultado da operação

 

Funcionamento

 

Este bloco, quando tem um valor TRUE em EN, envia para a saída Result o valor da variável Value após realizar um determinado número de deslocamentos aritméticos à direita, de acordo com o valor de Shift.

 

wpshelp_common_fig_note

NOTA!

Todos os deslocamentos aritméticos implementados mantém o sinal da variável

 

Quando EN possui valor FALSE, Result permanece inalterado.

 

O valor de ENO repassa para o próximo bloco Ladder o valor de EN após finalizada a operação.

 

Fluxograma do Bloco

 

ASHR_flowchart

 

Exemplo em Ladder

 

ASHR_example01

 

O exemplo acima realiza um deslocamento aritmético à direita de três posições na variável VALUE, cujo valor inicial é 52 (0011 0100 em binário). Os bits à direita vão sendo descartados, e à esquerda são inseridos novos zeros. O resultado final (0000 0110 em binário) é armazenado em RESULT.

 

ASHR_example02

 

O exemplo acima realiza um deslocamento aritmético à direita de duas posições na variável VALUE, cujo valor inicial é -79 (1011 0001 em binário). Os bits à direita vão sendo descartados, e à esquerda são inseridos novos uns, visto que os deslocamentos aritméticos à direita preservam o sinal da variável. O resultado final (1111 0110 em binário) é armazenado em RESULT.

 

ASHR_example03

 

O exemplo acima realiza um deslocamento aritmético à direita de treze posições na variável VALUE, cujo valor inicial é -128 (1000 0000 em binário). Os bits à direita vão sendo descartados, e à esquerda são inseridos novos uns. O resultado final (1111 1111 em binário) é armazenado em RESULT.

 

Exemplo em ST

 

 O exemplo abaixo, exibe as instruções para aplicação do exemplo acima na linguagem ST.

 

 

VAR

   VALUE : SINT := -79;

   SHIFT : BYTE := 2;

   RESULT : INT;

END_VAR

 

RESULT := FB_ASHR(

   EN:=DI1,

   Value:=VALUE,

   Shift:=SHIFT,

   ENO=>DO1);