Per iniziare ogni compilatore "desidera" che si scrivano dei Rung non eccessivamente complessi, dovrebbero contenere una funzione di 10
non tutte e 10 le funzioni
questo per semplificare la lettura del programma in debug e la compilazione stessa.
Oltre questo sarebbe opportuno usare il più possibile librerie IEC1131-3 (i timer in uso non lo sono e non si può fare il debug preliminare in quanto i parametri non sono visibili)
I questo schema in particolare avrei separato le funzioni:
Apertura cancello + sicurezza
tempo di attesa per chiusura e Chiusura cancello + sicurezza
tramite dei --(SET)-- ---(RESET)--
dove il RESET ha priorità (intervento sicurezza)
poi tutto può funzionare se ben testato ma oltre a non essere standard risulta non comprensibile a prima vista.