Bloque que reorganiza los bytes de una variable.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
Value |
WORD UINT INT DWORD UDINT DINT |
Variable de entrada a ser reorganizada |
|
Type |
BYTE |
Variable que define lo tipo de conversión conforme la Tabla 2 |
|
VAR_OUTPUT |
ENO |
BOOL |
Fin de operación |
Result |
WORD UINT INT DWORD UDINT DINT REAL(*) |
Valor de salida |
Tabla 1. Variables del bloque.
Type |
WORD UINT INT |
ENO |
DWORD UDINT DINT |
ENO |
0 |
AB->AB* |
TRUE |
ABCD->ABCD |
TRUE |
1 |
AB->BA |
TRUE |
ABCD->DCBA |
TRUE |
2 |
- |
FALSE |
ABCD->CDAB |
TRUE |
3 |
- |
FALSE |
ABCD->BADC |
TRUE |
4 ... |
- |
FALSE |
- |
FALSE |
Tabla 2. Tipo de conversión (*las letras A, B, C e D representan BYTES).
Operación
Este bloque, cuando tiene un valor TRUE en EN, reorganiza los bytes de la variable Value, almacenando el resultado en Result.
Type define la forma en que se reorganizarán los bytes según Tabla 2.
Observe que para variables de 16 bits, sólo las opciones 0 y 1 son válidas.
Para variables de 32 bits, las opciones 0, 1, 2 y 3 son válidas.
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, si Type es válido.
Las opciones no válidas de Type asignan FALSE a ENO y no cambian el valor de Result.
|
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

Ejemplo en Ladder

El ejemplo organiza la posición del valor VALUE_IN de acuerdo con el tipo TYPE_IN = 1 (AB-> BA), almacenando el resultado final en RESULT. El bloque finaliza con éxito y la salida ENO está activada.
Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR VALUE_IN : INT := 16#2501; TYPE_IN : BYTE := 1; RES_OUT : INT; END_VAR
RES_OUT := FB_SWAP2( EN:=DI1, Value:=VALUE_IN, Type:=TYPE_IN, ENO=>DO1);
|
|---|