TP

Temporisation avec durée d’impulsion définie

Le bloc fonction TP permet de programmer un temporisateur d’impulsion avec une durée d’impulsion définie.

Paramètres

Entrée

IN (BOOL)

Générateur d’impulsions

Si un front montant est détecté sur IN, une impulsion est générée avec une durée définie dans PT.

PT (TIME)

Durée d’impulsion

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

Une impulsion d’une durée définie dans PT est générée à chaque front montant de IN. Un nouveau front montant détecté en IN pendant la durée de l’impulsion ne crée pas de nouvelle impulsion.

Sortie

Q (BOOL)

Sortie de signal

Activée pendant la durée indiquée dans PT dès qu’un front montant est détecté sur IN.

ET (TIME)

Temps écoulé

Contient la durée d’impulsion écoulée. Lorsque PT = ET, Q est réinitialisée.

La valeur peut être modifiée pendant le comptage en écrivant dans la variable à partir de l’éditeur de programmation.

Remarques

  • FP2, FP2SH et FP10SH utilisent une valeur de 32 bits pour PT.

  • Indépendamment de la durée d’activation du signal IN, une impulsion d’une longueur définie par PT, est générée en sortie Q. Le bloc fonction TP est déclenché lorsqu’un front montant est détecté sur l’entrée IN.

  • Un front montant sur l’entrée IN n’a pas d’influence pendant le traitement de PT.

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: TP;
		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), l’impulsion est émise en sortie de signal signal_output jusqu’à ce que la valeur de consigne set_value définie pour la durée d’impulsion soit atteinte.

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,TP!,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

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
		TP1: TP;
		bIN: BOOL:=FALSE;
		tPT: TIME:=T#30s;
		tET: TIME:=T#0s;
		bQ: BOOL:=FALSE;
		bEmergencyStop: BOOL:=FALSE;
	END_VAR

Corps du POU

Après un front montant sur IN, le temporisateur démarre le comptage et Q est définie sur TRUE. Lorsque bEmergencyStop est défini sur TRUE avant que la durée d’impulsion ne soit écoulée, le comptage s’arrête et la sortie Q est réinitialisée immédiatement. Le temporisateur est initialisé avec la durée d’impulsion PT de 30s 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,,TP1.ET,22,2,24,4,);
B(B_CONTACT,,TP1.Q,12,1,14,3,);
B(B_CONTACT,,bEmergencyStop,7,1,9,3,);
L(14,2,16,2);
L(1,2,7,2);
L(9,2,12,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_VARIN,,tPT,14,3,16,5,);
B(B_VAROUT,,tET,21,3,23,5,);
B(B_CONTACT,,bIN,7,2,9,4,);
B(B_COIL,,bQ,33,2,35,4,);
B(B_FB,TP!,TP1,16,1,21,5,,?BIN?BPT?AQ?AET);
B(B_CONTACT,,bEmergencyStop,27,2,29,4,N);
L(1,3,7,3);
L(9,3,16,3);
L(29,3,33,3);
L(21,3,27,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

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

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