Temporizzatore con ritardo allo spegnimento
Il Function Block TOF vi permette di programmare un ritardo allo spegnimento, p.es. per spegnere il ventilatore di una macchina in un secondo momento rispetto alla macchina stessa.
Ingresso
temporizzatore attivo
un temporizzatore interno viene avviato se viene rilevato un fronte di discesa in IN. Se viene rilevato un fronte di salita in IN prima che PT abbia raggiunto il suo valore, Q non verrà impostato su FALSE
ritardo allo spegnimento (PT = tempo preimpostato)
valore a 16 bit: 0–327.27s
valore a 32 bit: 0–21,474,836.47s (valore a 32 bit non è disponibile per FP3, FPC, FP5, FP10/10S)
risoluzione 10ms ciascuno
Uscita
uscita segnale
resettata (FALSE) se PT = ET
tempo trascorso
indica il valore attuale del tempo trascorso
Il valore può essere cambiato durante il conteggio scrivendo sulla variabile dall’editore di programmazione.
Q viene impostato su FALSE con un ritardo corrispondente al tempo definito in PT. L'impostazione su TRUE avviene senza ritardo.
Se IN (come nel diagramma tempi t3 a t4) viene impostato prima che sia trascorso il tempo di ritardo PT, Q rimane impostato (diagramma tempi per t2 a t3).
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
copy_name: TOF;
start: BOOL:=FALSE;
set_value: TIME:=T#0s;
signal_output: BOOL:=FALSE;
current_value: TIME:=T#0s;
END_VAR
Se start viene resettato, questo segnale viene trasferito a signal_output con un ritardo corrispondente al periodo di set_value.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_FB,TOF!,copy_name,9,1,14,5,,?BIN?BPT?AQ?AET);
B(B_CONTACT,,start,3,2,5,4,);
B(B_VARIN,,set_value,7,3,9,5,);
B(B_VAROUT,,current_value,14,3,16,5,);
B(B_COIL,,signal_output,21,2,23,4,);
L(1,3,3,3);
L(5,3,9,3);
L(14,3,21,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
copy_name( IN:= start ,
PT:= set_value ,
Q=> signal_output ,
ET=> current_value );
Se desiderate chiamare il Function Block in una lista istruzioni, inserite quanto segue:
CAL |
copy_name(IN:= start,, PT:= set_value,, Q:= signal_output,, ET:= current_value,) |