Caminho:  Equipamentos (Dispositivos) > RUW100 > Ladder > Data Transfer >

SWAP

Permutador de Bytes

Previous pageReturn to chapter overviewNext page

Bloco que realiza uma permuta entre os bytes ímpares e os bytes pares consecutivos em Value e envia o valor para Result.

 

Representação Ladder

 

SWAP_block

 

Estrutura do Bloco

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_INPUT

EN

BOOL

Habilitação do bloco

Value

WORD UINT INT

DWORD UDINT DINT

Variável de entrada a ser permutada

VAR_OUTPUT

ENO

BOOL

Fim de operação

Result

WORD UINT INT
DWORD UDINT DINT

REAL(*)

Valor de saída

 

Funcionamento

 

Este bloco, quando tem um valor TRUE em EN, troca os valores entre os bytes ímpares (1, 3, 5 e 7) e os bytes pares consecutivos (2, 4, 6 e 8, respectivamente) da variável Value, armazenando o resultado em Result.

 

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.

 

wpshelp_common_fig_note

NOTA!

Atenção ao utilizar em Result uma variável do tipo REAL pois o bloco não realiza conversão de tipo, ou seja, faz apenas a inversão dos bytes na memória.

 

Fluxograma do Bloco

 

SWAP_flowchart

 

Exemplo em Ladder

 

SWAP_example01

 

O exemplo troca a posição do valor do byte 1 de VALUE (0x44) com o byte 2 de VALUE (0x3D), armazenando o resultado final (0x44_3D) em RESULT. O bloco finaliza com sucesso e a saída ENO é ativada.

 

SWAP_example02

 

O exemplo troca a posição do valor do byte 1 de VALUE (0x96) com o byte 2 de VALUE (0xA8) e do byte 3 de VALUE (0x0D) com o byte 4 de VALUE (0x00), armazenando o resultado final (0x0D_00_96_A8) em RESULT. O bloco finaliza com sucesso e a saída ENO é ativada.

 

Exemplo em ST

 

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

 

 

VAR

  VALUE : DWORD := 16#3d44;

   RESULT : DINT;

END_VAR

 

RESULT := FB_SWAP(EN:=DI1, Value:=VALUE, ENO=>DO1);