Ho realizzato un semplice programma (Vedi stampa) con il quale cerco di darti la spiegazione di cosa succede.
Nel programma LDErrato, ho utilizzato il blocco funzione RS appoggiando l’uscita sulla variabile OFlag di tipo Retain, credo sia la stessa cosa che hai fatto tu. In questo caso non si ottiene quello che desideri, alla accensione la variabile è sempre in condizione di reset.
All’interno del blocco funzione viene gestita una variabile locale che è poi copiata sulla sua uscita. Quindi alla accensione la variabile OFlag è attiva ma poi alla prima esecuzione del programma viene trasferito lo stato della uscita del blocco funzione RS (Che è resettato). Quindi in teoria si dovrebbe rendere Retain il blocco funzione, ma questo non è possibile.
Per soluzionare il problema dai una occhiata al programma LDOk, viene utilizzato direttamente il Set ed il Reset sulla variabile OFlag che in questo caso mantiene il suo stato alla accensione. Allego anche il programma sorgente con cui puoi testare direttamente il funzionamento.