Bloque lógico utilizado para realizar set de un bit específico en un campo.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_IN_OUT |
Data |
BYTE USINT SINT WORD UINT INT DWORD UDINT DINT |
Variable cuyo bit será alterado |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
Position |
BYTE USINT |
Posición del bit que será alterado |
|
VAR_OUTPUT |
DONE |
BOOL |
Operación exitosa |
Operación
Este bloque, cuando tiene un valor TRUE en EN, ajusta el bit indicado en Position en la variable Data, que es pasada a la salida con su valor actualizado.
Cuando EN tiene valor FALSE, Data permanece inalterada.
La variable DONE recibe el mismo valor de EN, excepto cuando hay error en el set del bit, recibiendo entonces un valor FALSE.
|
¡NOTA! Es importante verificar que Position esté dentro del rango de valores de bits correspondiente al tipo de variable en Fecha. Por ejemplo: si Data es un BYTE, logo posee 8 bits, y Position debe comprender un valor entre 0 y 7. |
Diagrama de Flujo del Bloque

Ejemplo en Ladder

El ejemplo de arriba ajusta el bit de la posición cero de AUX, cuyo valor inicial es 153 (1001 1001, en binario). Como este bit ya tenía valor TRUE, nada es alterado.

El ejemplo de arriba ajusta el bit de la posición dos de AUX, alterando su valor binario y, consecuentemente, su representación decimal.

El ejemplo de arriba ajusta el bit de la posición quince de AUX. Como AUX es una variable del tipo BYTE, tiene solamente ocho bits. Siendo así, el ejemplo de arriba genera un error de ejecución en el bloque y, por eso, la salida no es habilitada.
Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR AUX : BYTE := 2#1001_1001; POS : BYTE := 2; END_VAR
DO1 := FB_SETBIT( EN:=DI1, Data:=AUX, Position:=POS);
|
|---|