Temporisation à intervalles de 10ms (0 à 327,67s)
Ce temporisateur à intervalles de 0,01s fonctionne comme un temporisateur avec retard à l’activation. Lorsque le contact start du bloc fonction est activé, le temps prédéfini SV (set value) est décompté. Quand la durée s’est écoulée, le contact T du temporisateur est activé.
Entrée
Contact de départ
Chaque fois qu’un front montant est détecté, la valeur de consigne SV est copiée sur la valeur courante EV et le temporisateur démarre.
Valeur de consigne
Durée du retard à l’activation définie (0 à 327,67s)
Sortie
Contact du temporisateur
Activé lorsque la durée définie dans SV s’est écoulée, c.-à-d. lorsque EV = 0
Valeur courante
Valeur à partir de laquelle 1 est soustrait toutes les 0,01s pendant la temporisation
La valeur peut être modifiée pendant le comptage en écrivant dans la variable à partir de l’éditeur de programmation.
Le nombre de temporisateurs est limité et dépend des paramètres des registres système 5 et 6.
Pour les blocs fonctions des temporisateurs, le compilateur affecte automatiquement une adresse NUM* à chaque instance de temporisateur. Les adresses sont affectées de manière décroissante, en commençant par l’adresse la plus élevé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
Alarm_control: TM_10ms_FB;
Start_contact: BOOL:=FALSE;
Alarm_Relay_1: BOOL:=FALSE;
Alarm_Relay_2: BOOL:=FALSE;
END_VAR
Cet exemple utilise des variables. Vous pouvez également utiliser des constantes pour les variables d’entrée.
Dès que la variable Start_contact est TRUE, le temporisateur Alarm_control démarre. La variable EV du temporisateur est définie sur la valeur de SV. Tant que Start_contact est TRUE, la valeur 1 est soustraite de EV toutes les 10ms. Lorsque EV atteint la valeur 0 (10 secondes après, puisque SV = 1000 avec le temporisateur de type TM_10ms_FB), la variable Alarm_Relay_2 devient TRUE.
Dès que la valeur de la variable EV du temporisateur est inférieure ou égale à 500 (après 5s) et EV est différent de 0, Alarm_Relay_1 est activé (état = TRUE).
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,Start_contact,8,3,10,5,);
B(B_VARIN,,1000,8,4,10,6,);
B(B_VAROUT,,Alarm_Relay_2,20,3,22,5,);
B(B_FB,TM_10ms_FB,Alarm_control,10,2,19,6,,?Bstart?BSV?AT?AEV);
L(1,0,1,8);
L(19,4,20,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_F,@LE-2!,Instance,11,0,16,3,,?D?D?C);
B(B_VARIN,,Alarm_control.EV,9,0,11,2,);
B(B_VARIN,,500,9,1,11,3,);
B(B_F,@NE!,Instance,11,5,16,8,,?D?D?C);
B(B_VARIN,,0,9,6,11,8,);
B(B_VARIN,,Alarm_control.EV,9,5,11,7,);
B(B_F,@AND-2!,Instance,20,2,25,5,,?D?D?C);
B(B_VAROUT,,Alarm_Relay_1,25,2,27,4,);
L(16,1,17,1);
L(17,1,17,3);
L(17,3,20,3);
L(17,4,20,4);
L(17,4,17,6);
L(16,6,17,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Alarm_Control( start:= Start_Contact ,
SV:= 1000,
T=> Alarm_Relay_2 ,
EV=> Alarm_Control.EV );
(*The ON-delay time is 10s*)
Alarm_Relay_1:= Alarm_Control.EV <= 500 & Alarm_Control.EV <> 0;
(*Alarm_Relay_1 is set to TRUE after 5s*)