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
![]()
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 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.
|
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

Exemplo em Ladder

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.

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);
|
|---|