Temporisation avec retard à l’activation
Le bloc fonction TON permet de programmer un retard à l’activation.
Entrée
Temporisateur activé
Un temporisateur interne est démarré à chaque front montant détecté sur IN.
Retard à l’activation (PT = preset time)
Valeur de 16 bits : 0–327.27s
Valeur de 32 bits : 0–21,474,836.47s (valeur de 32 bits non disponible pour FP3, FPC, FP5, FP10/10S)
Résolution de 10ms chacune
Sortie
Sortie de signal
Définie sur TRUE si PT = ET
Temps écoulé
Indique la valeur courante du temps écoulé
La valeur peut être modifiée pendant le comptage en écrivant dans la variable à partir de l’éditeur de programmation.
Q est activée avec retard en fonction de la durée définie dans PT. La réinitialisation est effectuée sans retard.
Si l’entrée IN est activée uniquement pendant la durée du retard définie dans PT ou même pendant une durée inférieure (t3 - t2 < PT), Q ne sera pas activée.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
copy_name: TON;
start: BOOL:=FALSE;
set_value: TIME:=T#0s;
signal_output: BOOL:=FALSE;
current_value: TIME:=T#0s;
END_VAR
Lorsque start est activé (état = TRUE), le signal d’entrée est transféré vers la sortie de signal signal_output avec un retard correspondant à la durée prédéfinie 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_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,);
B(B_FB,TON!,copy_name,9,1,14,5,,?BIN?BPT?AQ?AET);
L(1,3,3,3);
L(1,0,1,6);
L(5,3,9,3);
L(14,3,21,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
copy_name( IN:= start ,
PT:= set_value ,
Q=> signal_output ,
ET=> current_value );
Si vous souhaitez appeler le bloc fonction dans une liste d’instructions, entrez ce qui suit :
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
TOF1: TOF;
tPT: TIME:=T#10s;
tET: TIME:=T#0s;
bIN: BOOL:=FALSE;
bQ: BOOL:=FALSE;
bEmergencyStop: BOOL:=FALSE;
END_VAR
Après un front descendant sur bIN, le temporisateur démarre le comptage et Q est définie sur TRUE. Lorsque bEmergencyStop est défini sur TRUE avant que la valeur du temporisateur ne soit écoulée, le comptage s’arrête et la sortie Q est réinitialisée immédiatement. Le temporisateur est initialisé avec le temps prédéfini PT de 10s dans cet exemple.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_F,E_MOVE!,,16,0,22,4,,?DEN?D?AENO?C);
B(B_VARIN,,tPT,14,2,16,4,);
B(B_VAROUT,,TOF1.ET,22,2,24,4,);
B(B_CONTACT,,bIN,11,1,13,3,N);
B(B_CONTACT,,bEmergencyStop,6,1,8,3,);
L(1,2,6,2);
L(13,2,16,2);
L(8,2,11,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_FB,TOF!,TOF1,16,1,21,5,,?BIN?BPT?AQ?AET);
B(B_VARIN,,tPT,14,3,16,5,);
B(B_VAROUT,,tET,21,3,23,5,);
B(B_CONTACT,,bIN,6,2,8,4,);
B(B_COIL,,bQ,34,2,36,4,);
B(B_CONTACT,,bEmergencyStop,27,2,29,4,N);
L(21,3,27,3);
L(29,3,34,3);
L(8,3,16,3);
L(1,3,6,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bEmergencyStop AND NOT bIN) then
TOF1.ET:=tPT;
end_if;
TOF1(IN := bIN, PT := tPT, ET => tET);
bQ := NOT bEmergencyStop AND TOF1.Q;