Problemi nell'uso dei timer
Timer e variabili dei DB associati
Nell'utilizzo dei timer e delle variabili ad essi associate nei rispettivi blocchi dati (DB) può capitare di osservare un comportamento apparentemente sbagliato e imprevisto. Consideriamo ad esempio il programma in figura:
Il timer TON è abilitato da un contatto normalmente chiuso comandato dalla variabile Q del blocco dati del timer. Questa variabile assume il valore logico 1 quando il timer esaurisce il conteggio quindi il timer risulta inizialmente abilitato. Quanto il tempo trascorso ET raggiunge il tempo preimpostato PV l'uscita viene attivata e sarebbe logico aspettarsi:
- che il timer si disattivi
- che il contatto NA del secondo segmento comandato dalla variabile Q del DB del timer permetta di settare l'uscita Q0.0
Questo invece non avviene: il timer ricomincia il conteggio e l'uscita non viene settata.
Questa situazione si verifica perché la variabile Q del DB del timer viene aggiornata più volte nello stesso ciclo e quando si arriva al secondo segmento il suo valore, che da 0 è passato a 1, è già tornato a 0.
Questo comportamento è descritto nel manuale di sistema alla voce “Programmazione del temporizzatore” e, nonostante produca un comportamento imprevisto, rispecchia le specifiche dei timer IEC standard (non è un bug). Per evitare questo tipo di comportamento è sufficiente utilizzare l'uscita del timer per pilotare una bobina e associare i contatti a questa bobina, come in figura: