TON

Temporisation avec retard à l’activation

Le bloc fonction TON permet de programmer un retard à l’activation.

Paramètres

Entrée

IN (BOOL)

Temporisateur activé

Un temporisateur interne est démarré à chaque front montant détecté sur IN.

PT (TIME)

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

Q (BOOL)

Sortie de signal

Définie sur TRUE si PT = ET

ET (TIME)

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.

Remarques

  • 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.

Chronogramme

Exemple

En-tête du POU

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

Corps du POU

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.

Corps en LD

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

Corps en ST

copy_name( IN:= start ,
        PT:= set_value ,
        Q=> signal_output ,
        ET=> current_value );

Corps en IL

Si vous souhaitez appeler le bloc fonction dans une liste d’instructions, entrez ce qui suit :

Exemple avec arrêt d’urgence et initialisation du temps prédéfini

En-tête du POU

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

Corps du POU

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.

Corps en LD

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

Corps en ST

if (bEmergencyStop AND NOT bIN) then
    TOF1.ET:=tPT;
end_if;
TOF1(IN := bIN, PT := tPT, ET => tET);
bQ := NOT bEmergencyStop AND TOF1.Q;

Modifié le : 2023-03-10Commentaires sur cette pageAssistance téléphonique