Glosario de Automatización • Un disparo / deteccion de flanco

¿Qué es una instruccion de un disparo / flanco ascendente?

Ingeniería Merobix • • 7 min de lectura

Una instruccion de un disparo, a veces llamada de deteccion de flanco o de transicion, vigila un bit y produce un pulso de exactamente un scan de duracion en el momento en que ese bit cambia de estado. Un disparo de flanco ascendente actua en la transicion de falso a verdadero; uno de flanco descendente actua en la de verdadero a falso. Segun la plataforma, la vera como ONS, OSR, OSF, o como bloques de funcion llamados R_TRIG y F_TRIG. El proposito completo es convertir una condicion que permanece en verdadero en un evento unico y momentaneo, para que una accion ocurra una sola vez por transicion en lugar de repetirse en cada scan mientras la condicion se sostiene.

Volver al glosario

Un disparo / deteccion de flanco en una línea: Una instruccion de un disparo o deteccion de flanco entrega verdadero durante exactamente un scan del programa cuando su entrada pasa de falso a verdadero (flanco ascendente) o de verdadero a falso (flanco descendente). Convierte una condicion de nivel que permanece activa en un pulso de un solo scan, de modo que la logica posterior se ejecuta una vez por transicion en lugar de repetidamente mientras la condicion se mantiene en verdadero.

Por que un contacto de nivel no basta

Un contacto ordinario es sensible al nivel: deja pasar energia mientras su condicion sea verdadera. Eso es justo lo que usted quiere para la mayoria de la logica, pero es incorrecto siempre que una accion deba ocurrir una vez por evento. Si ata el incremento de un contador o una captura de datos directamente a una condicion de nivel, el controlador la reejecuta en cada scan que la condicion permanezca verdadera, sumando miles a una cuenta o sobrescribiendo una captura de forma continua mientras un interruptor se mantiene. La accion dispara muchas mas veces que el evento del mundo real que pretendia rastrear.

Una instruccion de deteccion de flanco resuelve esto al recordar el estado anterior de la entrada. Internamente compara la entrada ahora contra la entrada del scan anterior, y solo activa su salida durante el unico scan en que la entrada acaba de pasar de falso a verdadero. En cada scan posterior, aunque la entrada siga en verdadero, la salida del disparo vuelve a ser falsa, porque la transicion ya ocurrio. Se rearma solo despues de que la entrada regresa a falso, lista para actuar en el siguiente flanco ascendente nuevo.

Esta memoria del estado previo es la razon por la que un disparo necesita su propio bit de almacenamiento y por la que no debe compartir ese bit entre dos disparos. Si dos instrucciones de flanco usan el mismo bit de estado, una consumira la transicion que la otra vigila, y la logica se vuelve intermitente. Dar a cada disparo su propio bit unico es la pequena disciplina que mantiene confiable la deteccion de flancos, y es una fuente frecuente de errores cuando se pasa por alto.

Flanco ascendente, flanco descendente y nombres por plataforma

Un disparo de flanco ascendente actua en la transicion de falso a verdadero, que es el caso comun: un operador presiona un boton, un nivel cruza un limite, un permisivo queda satisfecho. En los dialectos de escalera esto aparece como ONS u OSR, y en los bloques de funcion tipo IEC como R_TRIG, cuya salida Q se pone en verdadero durante una ejecucion cuando su entrada pasa de falso a verdadero. Use el flanco ascendente cuando quiera actuar en el instante en que una condicion se vuelve verdadera por primera vez.

Un disparo de flanco descendente actua en cambio en la transicion de verdadero a falso, util cuando el evento importante es algo que termina: un comando de marcha que cae, un permisivo que se pierde, un equipo que se detiene. Esto es OSF en los dialectos de escalera y F_TRIG en forma de bloque de funcion. Elegir ascendente frente a descendente es simplemente una cuestion de si el momento que le interesa es el inicio de una condicion o su liberacion, y ambos son pulsos de un solo scan en sus respectivas direcciones.

Entre marcas los nombres difieren pero el comportamiento es el mismo pulso de un scan atado a una transicion. Como el pulso dura solo un scan, rara vez lo cableara directo a una salida fisica, donde un parpadeo de un scan seria demasiado breve para servir. En su lugar el disparo alimenta logica interna: siembra un enclavamiento, incrementa un contador o dispara una copia de valores, y esa logica posterior sostiene el estado resultante todo el tiempo que haga falta. El trabajo del disparo es marcar el instante, no sostener el resultado.

Contar una sola vez, enclavar alarmas y capturar datos

El uso de campo mas comun es hacer que un contador cuente una vez por evento. Si alimenta una condicion sensible al nivel directo a un CTU, incrementara en cada scan que la condicion se sostenga; poner un disparo de flanco ascendente delante hace que incremente exactamente una vez cada que la condicion se vuelve verdadera por primera vez. Asi es como usted contabiliza correctamente eventos discretos como llegadas, ciclos o terminaciones sin que la cuenta se dispare mientras una entrada se queda activa. Dondequiera que una cuenta parezca desmedidamente alta, un disparo faltante suele ser el culpable.

El enclavamiento de alarmas es otro uso natural. Cuando una medicion cruza un limite, muchas veces usted quiere registrar el momento en que ocurrio por primera vez: capturar los valores del proceso en ese instante y activar una alarma que permanezca hasta el reconocimiento, aunque la medicion baje por debajo del limite. Un disparo de flanco ascendente en la condicion de limite excedido actua una vez, en el momento de la excursion, sembrando el enclavamiento y tomando la captura. Sin el disparo, la captura se sobrescribiria en cada scan que el limite siguiera excedido, perdiendo el dato crucial del primer evento.

El mismo patron impulsa las capturas de datos por unica vez en general: registrar la lectura de un totalizador en el momento exacto en que termina un lote, congelar un conjunto de lecturas cuando ocurre un disparo, o estampar un valor una vez por embolada. En el monitoreo distribuido de petroleo y gas estas capturas de un solo evento se vuelven los registros que una plataforma SCADA en la nube historiza y que un ingeniero revisa despues. Disparar una captura exactamente una vez por transicion, en lugar de continuamente, es lo que hace que esos registros tengan sentido en vez de ser un borron de entradas identicas repetidas, y es una de las razones silenciosas por las que la deteccion de flancos aparece a lo largo de todo el codigo de control bien escrito.

Preguntas frecuentes

¿Cual es la diferencia entre un disparo de flanco ascendente y uno descendente?

Un disparo de flanco ascendente produce su pulso de un solo scan cuando la entrada pasa de falso a verdadero, asi que marca el momento en que una condicion se vuelve verdadera por primera vez. Un disparo de flanco descendente pulsa cuando la entrada pasa de verdadero a falso, marcando el momento en que una condicion termina. Usted elige segun si el evento que le interesa es el inicio de una condicion o su liberacion; en forma IEC estos son R_TRIG y F_TRIG.

¿Por que mi contador suma demasiado rapido sin un disparo?

Porque una condicion sensible al nivel permanece verdadera durante muchos scans, y si la cablea directo a un contador, este incrementa en cada uno de esos scans. La cuenta trepa entonces mucho mas rapido que los eventos reales que pretendia contabilizar. Poner un disparo de flanco ascendente delante del contador hace que sume exactamente una vez cada que la condicion se vuelve verdadera por primera vez, que es la cuenta que usted realmente quiere.

¿Por que cada disparo debe tener su propio bit de almacenamiento?

Un disparo detecta un flanco comparando el estado actual de la entrada contra su estado previo almacenado, asi que necesita un bit dedicado para guardar esa historia. Si dos disparos comparten el mismo bit de almacenamiento, una instruccion alterara el estado del que depende la otra, y ambas se comportaran de forma intermitente. Asignar a cada instruccion de flanco un bit unico y no compartido mantiene confiable la deteccion de transiciones.

Más en PLC, RTU, HMI y DCS
Contador de PLC (CTU/CTD)  •  Instruccion latch y unlatch  •  Unidad de organizacion de programa  •  Todo en PLC, RTU, HMI y DCS →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →