Camino:  Equipo (Dispositivos) > LDW900 > Ladder > Data Transfer >

SWAP

Permutador de Bytes

Previous pageReturn to chapter overviewNext page

Bloque que realiza una permuta entre los bytes impares y los bytes pares consecutivos en Value y envía el valor a Result.

 

Representación Ladder

 

SWAP_block

 

Estructura del Bloque

 

Tipo de Variable

Nombre

Tipo de Dato

Descripción

VAR_INPUT

EN

BOOL

Habilitación del bloque

Value

WORD

DWORD

Variable de entrada a ser permutada

VAR_OUTPUT

ENO

BOOL

Fin de operación

Result

BYTE USINT SINT WORD UINT INT DWORD UDINT DINT

REAL(*)

Valor de salida

 

Operación

 

Este bloque, cuando tiene un valor TRUE en EN, intercambia los valores entre los bytes impares (1, 3, 5 y 7) y los bytes pares consecutivos (2, 4, 6 y 8, respectivamente) de la variable Value, almacenando el resultado en Result.

 

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.

 

wpshelp_common_fig_note

NOTA!

Atención al utilizar en Result una variable del tipo REAL, pues el bloque no realiza conversión de tipo, es decir, hace sólo la inversión de los bytes en la memoria.

 

Diagrama de Flujo del Bloque

 

SWAP_flowchart

 

Ejemplo en Ladder

 

SWAP_example01

 

El ejemplo cambia la posición del valor del byte 1 de VALUE (0x44) con el byte 2 de VALUE (0x3D), almacenando el resultado final (0x44_3D) en RESULT. El bloque finaliza exitosamente y la salida ENO es activada.

 

SWAP_example02

 

El ejemplo cambia la posición del valor del byte 1 de VALUE (0x96) con el byte 2 de VALUE (0xA8) y del byte 3 de VALUE (0x0D) con el byte 4 de VALUE (0x00), almacenando el resultado final (0x0D_00_96_A8) en RESULT. El bloque finaliza exitosamente y la salida ENO es activada.

 

Ejemplo en ST

 

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

 

 

VAR

  VALUE : DWORD := 16#3d44;

   RESULT : DINT;

END_VAR

 

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