Bloco lógico utilizado para realizar set de um bit específico em um campo.
Representação Ladder

Estrutura do Bloco
Tipo de Variável |
Nome |
Tipo de Dado |
Descrição |
VAR_IN_OUT |
Data |
BYTE USINT SINT WORD UINT INT DWORD UDINT DINT |
Variável cujo bit será alterado |
VAR_INPUT |
EN |
BOOL |
Habilitação do bloco |
Position |
BYTE USINT |
Posição do bit que será alterado |
|
VAR_OUTPUT |
Done |
BOOL |
Sucesso da operação |
Funcionamento
Este bloco, quando tem um valor TRUE em EN, seta o bit indicado em Position na variável Data, que é repassada para a saída já com o seu valor atualizado.
Quando EN possui valor FALSE, Data permanece inalterado.
A variável DONE recebe o mesmo valor de EN, exceto quando há erro no set do bit, recebendo então um valor FALSE.
|
NOTA! É importante atentar para que Position esteja dentro da faixa de valores de bits correspondente ao tipo de variável em Data. Por exemplo: se Data é um BYTE, logo possui 8 bits, e Position deve compreender um valor entre 0 e 7. |
Fluxograma do Bloco

Exemplo em Ladder

O exemplo acima seta o bit da posição zero de AUX, cujo valor inicial é 153 (1001 1001, em binário). Como este bit já possuía valor TRUE, nada foi alterado.

O exemplo acima seta o bit da posição dois de AUX, alterando seu valor binário e, consequentemente, sua representação decimal.

O exemplo acima seta o bit da posição quinze de AUX. Como AUX é uma variável do tipo BYTE, ela possui apenas oito bits. Sendo assim, o exemplo acima gera um erro de execução no bloco e, por isso, a saída não é habilitada.
Exemplo em ST
O exemplo abaixo, exibe as instruções para aplicação do exemplo acima na linguagem ST.
VAR AUX : BYTE := 2#1001_1001; POS : BYTE := 2; END_VAR
DO1 := FB_SETBIT( EN:=DI1, Data:=AUX, Position:=POS);
|
|---|