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.