Activé un evento de alarma con (ONTIMEALARMX) en el Principal.sld Y....

  • 3 Respuestas
  • 2844 Vistas

Martín Fernández

  • Novato
  • *
  • Mensajes: 5
Estimados: Me pueden ayudar a entender una situación: Activé un evento de alarma con (ONTIMEALARMX) en el Principal.sld, de un programa que estoy haciendo, creé la función (OnTimeAlarm1.sld) y allí desarrollé un grupo de instrucciones que utilizarán un tiempo de uno o dos minutos. Pregunta, como vuelvo al Principal.sld después de haber realizado la rutina. Aclaración, elegí una alarma semanal que debe realizar unos arranques de alrededor de 2 minutos y finalizado el arranque deseo volver al principal.sld. Pensaba desactivar el evento con (ALARM CLR EVENT) al finalizar el grupo de rutinas del arranque, pero no estoy seguro que se resuelva así.

Desde ya muchas gracias

Martín

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re:Activé un evento de alarma con (ONTIMEALARMX) en el Principal.sld Y....
« Respuesta #1 : agosto 12, 2016, 13:37:24 pm »
Buenos dias,

En primer lugar, te recomiendo que actives la alarma una sola vez, es decir, fíjate que en tu codigo desde Principal.sld llames una vez a la alarma cuando decidas activarla. Para que no se este ejecutando el componente infinitamente. Si sabes que siempre la vas  a utilizar, podes activarla tambien desde "Inicio.sld".

Cuando los eventos se producen (cualquiera) el PLC, interrumpe al diagrama "Principal.sld" (en cualquier punto) y llama al diagrama-evento en cuestión y lo ejecuta. Una vez que se ejecuta el diagrama, el programa vuelve automáticamente al punto del diagrama "Principal.sld" (puede ser otro, por ejemplo un diagrama función) y continua con la ejecución normalmente.

Podes "forzar" a que se vuelva inmediatamente desde un evento sin esperar que se ejecute todo el diagrama, eso lo podes hacer con el componente "Eventos > Event Return". Cuando ese componente se ejecute en un evento, hace que el programa retorne al punto de donde fue interrumpido previamente y no continué con la ejecución del diagrama.

Los componentes que desactivan eventos como ALARM CLR EVENT, lo que hacen es deshabilitar la generación de eventos, es decir el PLC ya no generará mas eventos de alarma una vez que se llame. Esto se utiliza si sabes que en tu programa, no usaras mas las alarmas hasta que explicitamente vuelvas a activarlas. Este concepto se aplica para cualquier otro tipo de eventos análogamente.

Finalmente, tene en cuenta que en los eventos debes intentar ejecutar las cosas lo mas rápido posible, es decir, hacer lo necesario y salir. Porque en ese tiempo no se ejecutaran otros eventos que tengas activados, mientras el PLC permanezca ejecutando el evento. Lo ideal es que implementes una lógica rápida en el evento, por ejemplo activar alguna salida, leer alguna entrada, tomar una decisión y luego señalizar con algún "flag" (variable bool global) el resultado. Entonces luego desde Principal.sld, si ese "flag" esta activado, comiences la operación larga o de lógica extensa.

Te podes ayudar utilizando diagramas-funciones, para no amontonar todo el código en el diagrama "Principal.sld" y llamar desde ahí a funciones que agrupen lógica en diagramas separados. Esto mejora el diseño y comprensión del programa.

Espero haberte dado un pantallazo, son conceptos de programación, es importante que los comprendas, ya que a la larga mejoran el diseño del programa final.

Quedo a disposición por cualquier consulta.

« Última Modificación: agosto 12, 2016, 13:41:20 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Martín Fernández

  • Novato
  • *
  • Mensajes: 5
Re:Activé un evento de alarma con (ONTIMEALARMX) en el Principal.sld Y....
« Respuesta #2 : agosto 12, 2016, 13:48:34 pm »
Gracias.... lo voy a meditar y es probable que elimine el evento y realice toda gestión de los arranques solo en el principal.

Muchas gracias, la respuesta fue muy veloz. que bien!!

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re:Activé un evento de alarma con (ONTIMEALARMX) en el Principal.sld Y....
« Respuesta #3 : agosto 12, 2016, 14:17:04 pm »
Muy bien.

Esta bien lo que haces, usar los eventos. Solo que debes tener en consideración lo que te dije para obtener el máximo desempeño del PLC.

Por ejemplo, desde la alarma (una vez que se produce) pones una variable "bool" global llamada "AlarmaMotor" a "1".

Entonces, desde Principal, cuando leas que la variable AlarmaMotor es igual a "1", comenzas la activación de los motores.
Para ello podes ayudarte también con los timers-ladders, y por ejemplo usas uno del tipo "TOFF" con un retardo para el apagado de 2 minutos. Entonces, eso va a hacer que el motor este activado 2 minutos y luego se apague. También, luego volves a "0" la variable AlarmaMotor previamente activada.

Es simple, lo importante es el concepto. Usas el evento para señalizar alguna condición u operación rápida. Pero no uses un evento para "quedarte indefinidamente dentro del él". La idea es entrar, procesar,  y salir rápidamente del evento.

Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com