Camino:  Equipo (Dispositivos) > RUW100 > Ladder > Logic > Logic Bit >

SETBIT

Previous pageReturn to chapter overviewNext page

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

 

Representación Ladder

 

SETBIT_block

 

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.

 

wpshelp_common_fig_note

¡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

 

SETBIT_flowchart

 

Ejemplo en Ladder

 

SETBIT_example01

 

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.

 

SETBIT_example02

 

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

 

SETBIT_example03

 

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