Instrucciones de TIA Portal

Operaciones lógicas con bits
Contactos, Bobinas y Detección de flancos

El corazón de la programación de PLCs. Las instrucciones de lógica de bits manejan cada operación booleana — desde simples contactos y bobinas hasta flip-flops y detección de flancos. Domine estas instrucciones y podrá construir cualquier lógica de automatización.

¿Qué son las operaciones lógicas con bits?

Las operaciones lógicas con bits son las instrucciones más fundamentales en la programación de PLCs. Trabajan con señales booleanas (TRUE/FALSE, 1/0) — leyendo estados de entrada, combinando condiciones con lógica AND/OR y controlando salidas. En el esquema de contactos (LAD), estas aparecen como contactos y bobinas en los segmentos. En el diagrama de bloques de funciones (FUP), aparecen como cajas de puertas lógicas AND/OR/NOT.

Cada programa de PLC utiliza extensamente las instrucciones de lógica de bits. Un circuito de arranque/parada de motor, una condición de alarma, un enclavamiento de válvula — todos comienzan con contactos que leen estados de sensores y terminan con bobinas que accionan actuadores.

Contactos — Lectura de estados de entrada

Los contactos leen el estado booleano de un tag y lo pasan a lo largo de la cadena lógica

Contacto normalmente abierto

—| |—
F9

Qué hace

Lee un tag booleano (BOOL). Si el tag es TRUE (1), el contacto se cierra y pasa la señal (Resultado lógico = TRUE) al siguiente elemento. Si el tag es FALSE (0), el contacto está abierto y bloquea el flujo de la señal. Esta es la instrucción más utilizada en la programación LAD.

Cuándo usarlo

Cada vez que necesite verificar si una condición es TRUE: ¿está presionado un botón? ¿está activo un sensor? ¿está activada una marca? Coloque un contacto normalmente abierto y asígnele su tag.

Consejos profesionales

El nombre 'normalmente abierto' proviene de la lógica de relés — el contacto está abierto (no pasa corriente) en su estado normal/de reposo. Se cierra cuando se activa.

Múltiples contactos NO en serie crean una lógica AND. Múltiples contactos NO en ramas paralelas crean una lógica OR.

En FUP, el equivalente es simplemente conectar una variable BOOL a una entrada de caja AND/OR — no se necesita un símbolo de contacto explícito.

Contacto normalmente cerrado

—|/|—
F10

Qué hace

El inverso de un contacto normalmente abierto. Si el tag es FALSE (0), el contacto está cerrado y pasa la señal. Si el tag es TRUE (1), el contacto se abre y bloquea la señal. Actúa como una operación NOT sobre el valor del tag.

Cuándo usarlo

Cuando necesite verificar que una condición NO sea verdadera: parada de emergencia no presionada, ningún fallo activo, interruptor de límite no alcanzado. Muy común para enclavamientos de seguridad y condiciones de alarma.

Consejos profesionales

Use contactos NC para paradas de emergencia y circuitos de seguridad — fallan de forma segura. Si el cable se rompe, el contacto NC se abre y detiene la máquina.

En FUP, el equivalente es una entrada negada (pequeño círculo en el pin de entrada de una caja AND/OR).

No confunda la instrucción de contacto NC con un pulsador físicamente NC. Son conceptos independientes.

Invertir RLO

—|NOT|—

Qué hace

Invierte (niega) el resultado lógico (Resultado lógico) actual. Si la cadena lógica hasta este punto se evalúa como TRUE, NOT la hace FALSE, y viceversa. Opera sobre el resultado lógico acumulado, no sobre un tag específico.

Cuándo usarlo

Cuando necesite invertir una expresión lógica compleja en lugar de un solo tag. En lugar de reescribir toda la condición con contactos invertidos, coloque NOT al final para voltear el resultado.

Consejos profesionales

NOT invierte todo el RLO en ese punto de la cadena — es diferente de un contacto NC que invierte solo un tag.

En FUP, use la caja NOT o niegue la salida de una puerta lógica.

Use con moderación — el uso excesivo de NOT hace que la lógica sea difícil de leer. A menudo, reestructurar la lógica es más claro.

Bobinas — Control de salidas

Las bobinas escriben el resultado de la cadena lógica en un tag de salida

Asignación

—( )—
Shift + F7

Qué hace

Escribe el resultado lógico (Resultado lógico) actual en un tag booleano. Si la cadena lógica es TRUE, el tag se vuelve TRUE. Si es FALSE, el tag se vuelve FALSE. Esta es la bobina de salida estándar — refleja directamente la lógica de entrada en cada ciclo de scan.

Cuándo usarlo

Para cualquier salida que deba seguir directamente sus condiciones de entrada. Una lámpara piloto que está ON cuando un motor funciona, una válvula que se abre cuando se cumplen las condiciones. La salida sigue a la entrada — cuando las condiciones pasan a FALSE, la salida también pasa a FALSE.

Consejos profesionales

La bobina de asignación es 'no remanente' dentro del ciclo — escribe en cada scan. Si la lógica pasa a FALSE, la salida pasa inmediatamente a FALSE.

Un tag solo debe asignarse en UN segmento. Múltiples asignaciones al mismo tag hacen que la última gane, lo que provoca un comportamiento impredecible.

En FUP, la asignación es simplemente conectar la salida de una puerta lógica a un tag BOOL.

Asignación negada

—(/)—

Qué hace

Escribe el RLO invertido en un tag booleano. Si la cadena lógica es TRUE, el tag se vuelve FALSE. Si la cadena lógica es FALSE, el tag se vuelve TRUE. Combina Asignación + NOT en una sola instrucción.

Cuándo usarlo

Cuando una salida deba estar activa en la condición opuesta. Por ejemplo, una lámpara de 'sistema OK' que se apaga cuando se detecta un fallo. En lugar de invertir toda la cadena lógica, use la bobina negada.

Consejos profesionales

Equivalente a colocar un NOT antes de una bobina de asignación regular, pero más compacto.

Use con precaución — las bobinas negadas pueden ser confusas de leer. A veces es más claro reestructurar la lógica.

En FUP, esto es una conexión de salida negada.

Desactivar salida (Reset)

—(R)—

Qué hace

Cuando el RLO es TRUE, el tag se establece en FALSE (0). Cuando el RLO es FALSE, el tag no cambia (mantiene su valor actual). Esta es una operación unidireccional — solo puede apagar cosas, nunca encenderlas.

Cuándo usarlo

En circuitos Set/Reset: un segmento activa la salida (Set), otro la desactiva (Reset). Use Reset para condiciones de parada, borrado de fallos y reconocimiento de alarmas. El Reset suele tener prioridad en la lógica de seguridad.

Consejos profesionales

Reset solo actúa cuando su RLO es TRUE. Cuando el RLO es FALSE, la salida permanece sin cambios — NO la establece en TRUE.

En un par S/R, la instrucción que aparece ÚLTIMA en el programa tiene prioridad (si ambas condiciones son TRUE simultáneamente).

El Reset es remanente — después de un Reset, la salida permanece en FALSE hasta que se active explícitamente de nuevo (Set).

Activar salida (Set)

—(S)—

Qué hace

Cuando el RLO es TRUE, el tag se establece en TRUE (1). Cuando el RLO es FALSE, el tag no cambia (mantiene su valor actual). Esta es una operación unidireccional — solo puede encender cosas, nunca apagarlas.

Cuándo usarlo

En circuitos Set/Reset: use Set para condiciones de arranque, señales de enclavamiento y marcas de primer ciclo. Una vez activada (Set), la salida permanece en TRUE hasta que se desactiva explícitamente (Reset) — lo que la hace 'autoenclavada' sin necesidad de un contacto de realimentación.

Consejos profesionales

Set solo actúa cuando su RLO es TRUE. Cuando el RLO es FALSE, la salida permanece sin cambios — NO la desactiva.

Control de motor clásico: Segmento 1 = Botón de arranque → Set Motor. Segmento 2 = Botón de parada O Fallo → Reset Motor.

Tenga cuidado con los tags remanentes en circuitos de seguridad — después de un ciclo de apagado y encendido, las salidas Set pueden mantener su último estado dependiendo de la configuración del DB.

Operaciones con campos de bits

Activar o desactivar un rango de bits en una sola operación

SET_BF — Activar campo de bits

Qué hace

Establece a TRUE un grupo contiguo de bits a partir de una dirección especificada. Usted define el bit inicial y el número de bits a activar. Cuando el RLO es TRUE, todos los bits especificados se establecen en 1.

Cuándo usarlo

Cuando necesite activar múltiples salidas relacionadas simultáneamente — por ejemplo, activar todos los bits de una palabra de estado, inicializar un grupo de marcas o activar un banco de salidas a la vez.

Consejos profesionales

Útil para operaciones por lotes en lugar de escribir instrucciones Set individuales para cada bit.

El parámetro de número de bits determina cuántos bits consecutivos se ven afectados.

Al igual que Set, esto solo actúa cuando el RLO es TRUE — los bits no cambian cuando el RLO es FALSE.

RESET_BF — Desactivar campo de bits

Qué hace

Establece a FALSE un grupo contiguo de bits a partir de una dirección especificada. Usted define el bit inicial y el número de bits a desactivar. Cuando el RLO es TRUE, todos los bits especificados se borran a 0.

Cuándo usarlo

Cuando necesite borrar múltiples marcas o salidas a la vez — por ejemplo, borrar todos los bits de alarma en una palabra de estado, desactivar un grupo de salidas durante una parada o inicializar un área de datos.

Consejos profesionales

La contraparte de SET_BF — úselos juntos para operaciones de Set/Reset a nivel de grupo.

Especialmente útil para borrar palabras de alarma o registros de estado en una sola operación.

Al igual que Reset, esto solo actúa cuando el RLO es TRUE — los bits no cambian cuando el RLO es FALSE.

Flip-Flops — Circuitos de memoria

Elementos biestables que recuerdan su estado hasta que se cambian explícitamente

SR — Flip-Flop Set/Reset

Qué hace

Un flip-flop biestable con prioridad de activación (Set). Tiene dos entradas: S (Set) y R (Reset), y una salida Q. Cuando S=TRUE, Q se vuelve TRUE. Cuando R=TRUE, Q se vuelve FALSE. Cuando tanto S como R son TRUE simultáneamente, Q es TRUE (Set domina).

Cuándo usarlo

Para circuitos de enclavamiento donde la condición de activación deba tener prioridad. En un flip-flop SR, si se presionan arranque y parada al mismo tiempo, la salida permanece ON. Use esto cuando la 'prioridad de arranque' sea aceptable.

Consejos profesionales

SR = Prioridad de Set. Si S=1 y R=1 → Q=1. Úselo cuando arrancar sea más importante que parar.

En aplicaciones críticas para la seguridad, prefiera RS (prioridad de Reset) — es más seguro si ambas condiciones se activan simultáneamente.

El flip-flop es una sola caja tanto en LAD como en FUP con entradas S, R y salida Q.

RS — Flip-Flop Reset/Set

Qué hace

Un flip-flop biestable con prioridad de desactivación (Reset). Tiene dos entradas: R (Reset) y S (Set), y una salida Q. Cuando S=TRUE, Q se vuelve TRUE. Cuando R=TRUE, Q se vuelve FALSE. Cuando tanto R como S son TRUE simultáneamente, Q es FALSE (Reset domina).

Cuándo usarlo

Para circuitos de enclavamiento donde la seguridad es primordial. La condición de Reset (parada) tiene prioridad — si tanto el arranque como la parada están activos, la salida es OFF. Esta es la elección estándar para control de motores y enclavamientos de seguridad.

Consejos profesionales

RS = Prioridad de Reset. Si S=1 y R=1 → Q=0. La elección más segura para la mayoría de las aplicaciones industriales.

Patrón de control de motor clásico: S = Botón_Arranque AND NOT Fallo, R = Botón_Parada OR Parada_Emergencia OR Fallo.

La salida Q es remanente dentro del ciclo de scan — mantiene su valor hasta que el flip-flop se evalúa de nuevo.

Detección de flancos — Detección de cambios de señal

Detectar cuando una señal transiciona de FALSE→TRUE o de TRUE→FALSE

Consultar operando ante flanco positivo

—|P|—

Qué hace

Detecta un flanco ascendente (transición de FALSE a TRUE) en un operando específico. La instrucción compara el valor actual con el valor del ciclo anterior. Si el valor cambió de 0 a 1, el RLO es TRUE durante exactamente un ciclo de scan. Requiere un bit de memoria de flanco (bit M) para almacenar el estado anterior.

Cuándo usarlo

Cuando necesite un pulso único de una señal sostenida: contar pulsaciones de botones, disparar una sola acción en un cambio de nivel, incrementar un contador en cada activación. Sin detección de flancos, un botón mantenido dispararía en cada ciclo de scan.

Consejos profesionales

DEBE asignar un bit de memoria de flanco único — NO reutilice el mismo bit M para múltiples detecciones de flancos, o interferirán entre sí.

La salida es TRUE durante exactamente un ciclo de scan del PLC (típicamente 1-50ms). Si necesita un pulso más largo, use un temporizador.

En LAD, esto aparece como un contacto con la marca 'P'. El tag del bit M se muestra arriba/abajo del contacto.

Consultar operando ante flanco negativo

—|N|—

Qué hace

Detecta un flanco descendente (transición de TRUE a FALSE) en un operando específico. La instrucción compara el valor actual con el valor del ciclo anterior. Si el valor cambió de 1 a 0, el RLO es TRUE durante exactamente un ciclo de scan. Requiere un bit de memoria de flanco.

Cuándo usarlo

Cuando necesite reaccionar a una señal que se apaga: detectar cuando se suelta un botón, disparar al desactivar un sensor o capturar el momento en que se completa un paso del proceso.

Consejos profesionales

Mismas reglas que para el flanco positivo — cada detección de flanco negativo necesita su propio bit M único.

Útil para acciones al 'soltar el botón': iniciar un temporizador cuando se suelta un botón, no cuando se presiona.

En una secuencia de parada, use flancos negativos para detectar cuándo se completa cada paso (la salida pasa de ON a OFF).

Activar operando ante flanco positivo

—(P)—

Qué hace

Activa (escribe TRUE en) un operando especificado durante un ciclo de scan cuando se detecta un flanco positivo (FALSE→TRUE) en el RLO. Combina la detección de flancos y la asignación de salida en una sola instrucción.

Cuándo usarlo

Cuando desee activar una marca o salida durante exactamente un ciclo en un flanco ascendente, sin necesidad de un contacto de detección de flanco separado seguido de una bobina.

Consejos profesionales

Esta es una instrucción de tipo bobina — va al final de un segmento, no en el medio.

Requiere un bit de memoria de flanco igual que la versión de contacto.

El operando es TRUE solo durante un ciclo y luego vuelve automáticamente a FALSE.

Activar operando ante flanco negativo

—(N)—

Qué hace

Activa (escribe TRUE en) un operando especificado durante un ciclo de scan cuando se detecta un flanco negativo (TRUE→FALSE) en el RLO. Combina la detección de flanco descendente y la asignación de salida en una sola instrucción.

Cuándo usarlo

Cuando desee activar una marca o salida durante exactamente un ciclo en un flanco descendente. Útil para disparar acciones post-desactivación.

Consejos profesionales

Instrucción de tipo bobina — colóquela al final de un segmento.

Requiere su propio bit de memoria de flanco único.

A menudo se utiliza para acciones de 'limpieza' que deben ocurrir una vez cuando un proceso se detiene.

P_TRIG — Consultar RLO ante flanco positivo

Qué hace

Detecta un flanco ascendente en el RLO (Resultado lógico) en lugar de en un operando específico. Cuando el resultado lógico combinado transiciona de FALSE a TRUE, la salida es TRUE durante un ciclo de scan. La memoria del flanco se almacena dentro de la instancia de la instrucción.

Cuándo usarlo

Cuando desee detectar un flanco ascendente en una combinación lógica compleja, no solo en un tag único. Por ejemplo: detectar cuándo (Sensor1 AND Sensor2 AND NOT Fallo) se vuelve TRUE por primera vez.

Consejos profesionales

P_TRIG opera sobre el RLO acumulado — detecta el flanco de toda la cadena lógica anterior.

La memoria del flanco está integrada en la instrucción — no se necesita un bit M por separado.

En FUP, P_TRIG es una caja con entrada CLK y salida Q.

N_TRIG — Consultar RLO ante flanco negativo

Qué hace

Detecta un flanco descendente en el RLO. Cuando el resultado lógico combinado transiciona de TRUE a FALSE, la salida es TRUE durante un ciclo de scan. La memoria del flanco se almacena dentro de la instancia de la instrucción.

Cuándo usarlo

Cuando desee detectar cuándo una condición compleja deja de ser verdadera. Por ejemplo: detectar el momento en que (Modo_Auto AND Todo_OK) pasa de TRUE a FALSE.

Consejos profesionales

N_TRIG es la contraparte de flanco descendente de P_TRIG.

No se necesita un bit M separado — la memoria del flanco es interna.

Útil para detectar el final de una condición combinada en lugar de una señal única.

R_TRIG — Detectar flanco de señal positivo

Qué hace

Un bloque de función detector de flancos ascendentes compatible con IEC 61131-3. Tiene una entrada CLK y una salida Q. Cuando CLK transiciona de FALSE a TRUE, Q es TRUE durante un ciclo de scan. La memoria del flanco se almacena en los datos de instancia del FB.

Cuándo usarlo

Cuando desee una detección de flancos estándar IEC con sus propios datos de instancia. R_TRIG es un bloque de función — cada instancia mantiene su propia memoria de flanco automáticamente. Preferido en código estructurado y reutilizable.

Consejos profesionales

R_TRIG es un FB — necesita datos de instancia (ya sea su propio DB o como multiinstancia en un FB padre). Esto lo hace autónomo y reutilizable.

Disponible desde la V1.0 en S7-1200/1500. Esta es la forma estándar de detección de flancos según la norma IEC 61131-3.

En SCL: myRTRIG(CLK := mySignal); IF myRTRIG.Q THEN ... END_IF;

F_TRIG — Detectar flanco de señal negativo

Qué hace

Un bloque de función detector de flancos descendentes compatible con IEC 61131-3. Tiene una entrada CLK y una salida Q. Cuando CLK transiciona de TRUE a FALSE, Q es TRUE durante un ciclo de scan. La memoria del flanco se almacena en los datos de instancia del FB.

Cuándo usarlo

Cuando desee una detección de flancos descendentes estándar IEC con sus propios datos de instancia. F_TRIG es la contraparte de flanco descendente de R_TRIG.

Consejos profesionales

F_TRIG es un FB con su propia instancia — al igual que R_TRIG, es autónomo y compatible con IEC 61131-3.

En SCL: myFTRIG(CLK := mySignal); IF myFTRIG.Q THEN ... END_IF;

Prefiera R_TRIG/F_TRIG sobre los contactos |P|/|N| al escribir código de biblioteca reutilizable, ya que no requieren bits M externos.

Referencia rápida — Las 20 instrucciones de lógica de bits

#InstrucciónSímbolo LADAtajoDescripción
1Contacto normalmente abierto—| |—F9Pasa la señal cuando el tag es TRUE
2Contacto normalmente cerrado—|/|—F10Pasa la señal cuando el tag es FALSE
3Invertir RLO—|NOT|—Invierte el resultado lógico
4Asignación—( )—Shift + F7Escribe el RLO en el tag de salida
5Asignación negada—(/)—Escribe el RLO invertido en el tag de salida
6Desactivar salida (Reset)—(R)—Establece el tag a FALSE cuando el RLO es TRUE
7Activar salida (Set)—(S)—Establece el tag a TRUE cuando el RLO es TRUE
8SET_BF — Activar campo de bitsEstablece un rango de bits a TRUE
9RESET_BF — Desactivar campo de bitsDesactiva un rango de bits a FALSE
10SR — Flip-Flop Set/ResetFlip-flop con prioridad de activación (S=1,R=1 → Q=1)
11RS — Flip-Flop Reset/SetFlip-flop con prioridad de desactivación (S=1,R=1 → Q=0)
12Consultar operando ante flanco positivo—|P|—Detecta flanco ascendente en un operando
13Consultar operando ante flanco negativo—|N|—Detecta flanco descendente en un operando
14Activar operando ante flanco positivo—(P)—Activa el operando durante 1 ciclo en flanco ascendente
15Activar operando ante flanco negativo—(N)—Activa el operando durante 1 ciclo en flanco descendente
16P_TRIG — Consultar RLO ante flanco positivoDetecta flanco ascendente en el RLO
17N_TRIG — Consultar RLO ante flanco negativoDetecta flanco descendente en el RLO
18R_TRIG — Detectar flanco de señal positivoDetector de flanco ascendente IEC (FB)
19F_TRIG — Detectar flanco de señal negativoDetector de flanco descendente IEC (FB)

Preguntas frecuentes

¿Cuál es la diferencia entre las bobinas Set/Reset y los flip-flops SR/RS?

Las bobinas Set (S) y Reset (R) son instrucciones individuales colocadas en segmentos separados — usted controla la prioridad según qué segmento aparece al final. Los flip-flops SR/RS son cajas únicas con ambas entradas — la prioridad está integrada (SR = prioridad de Set, RS = prioridad de Reset). Los flip-flops son más compactos y hacen que la prioridad sea explícita.

¿Qué detección de flancos debo usar: |P|/|N|, (P)/(N), P_TRIG/N_TRIG o R_TRIG/F_TRIG?

Los contactos |P|/|N| detectan flancos en un tag específico y necesitan un bit M externo. Las bobinas (P)/(N) combinan la detección de flancos con la asignación de salida. P_TRIG/N_TRIG detectan flancos en el RLO (lógica combinada). R_TRIG/F_TRIG son FBs estándar IEC con memoria integrada. Para código de biblioteca reutilizable, prefiera R_TRIG/F_TRIG. Para lógica simple en línea, los contactos |P|/|N| están bien.

¿Por qué mi circuito Set/Reset se comporta de forma inesperada?

La causa más común es que tanto la condición de Set como la de Reset sean TRUE simultáneamente. En ese caso, gana la última instrucción en el programa. Si su segmento de Reset está antes que su segmento de Set, la salida quedará activada (Set). Solución: use un flip-flop RS (prioridad de Reset) para circuitos críticos de seguridad, o asegúrese de que sus condiciones sean mutuamente excluyentes.

¿Puede la detección de flancos funcionar con valores analógicos o solo con BOOL?

Las instrucciones de detección de flancos (|P|, |N|, R_TRIG, F_TRIG) funcionan solo con señales booleanas. Para valores analógicos, necesita crear una comparación (p. ej., valor > umbral) que produzca un resultado BOOL, y luego aplicar la detección de flancos a ese BOOL.

Generar lógica de bits con IA

Describa su lógica de control en texto plano y T-IA Connect generará el código de PLC — incluyendo contactos, bobinas, flip-flops y detección de flancos.