Temporizzatore per intervalli di 100ms (da 0 a 3276.7s)
Questo temporizzatore per unità di 0.1s funziona come un temporizzatore con ritardo all’accensione. Se il contatto start del Function Block è in stato TRUE, il tempo preimpostato SV (valore target) viene avviato. Una volta trascorso questo tempo, il contatto temporizzatore T passa a TRUE.
Ingresso
contatto di avvio
ogni qualvolta viene rilevato un fronte di salita, il valore target SV viene copiato nel valore corrente EV e il temporizzatore viene avviato
valore target
tempo di ritardo accensione definito (da 0 a 3276.7s)
Uscita
contatto temporizzatore
viene impostato quando il tempo definito in SV è trascorso, ovvero quando EV diventa 0
valore corrente
valore di conteggio dal quale viene sottratto 1 ogni 0.1s mentre il temporizzatore è in esecuzione
The value can be changed during counting operation by writing to the variable from the programming editor.
Il numero di temporizzatori disponibili è limitato e dipende dalle impostazioni nei registri di sistema 5 e 6.
Per i Function Block del temporizzatore, il compilatore alloca automaticamente un indirizzo NUM* a ciascuna istanza del temporizzatore. Gli indirizzi vengono allocati contando indietro, a partire dall'indirizzo più alto possibile.
download modalità PROG
modalità RUN
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
Alarm_Control: TM_100ms_FB;
Start_Contact: BOOL:=FALSE;
Alarm_Relay_1: BOOL:=FALSE;
Alarm_Relay_2: BOOL:=FALSE;
END_VAR
In questo esempio vengono utilizzate variabili. Potete anche utilizzare costanti per le variabili di ingresso.
Non appena la variabile Start_contact diventa TRUE, il temporizzatore Alarm_control verrà avviato. La variabile EV del temporizzatore viene impostata sul valore di SV. Finché Start_contact è TRUE, il valore 1 viene sottratto da EV ogni 100ms. Quando EV raggiunge il valore 0 (dopo 10 secondi in quanto SV = 100 con il tipo di temporizzatore TM_100ms_FB), la variabile Alarm_Relay_2 diventa TRUE.
Non appena il valore della variabile EV del temporizzatore è inferiore o pari a 50 (dopo 5s) ed EV è diverso da 0, Alarm_Relay_1 viene impostato su 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,,100,8,4,10,6,);
B(B_VAROUT,,Alarm_Relay_2,18,3,20,5,);
B(B_FB,TM_100ms_FB!,Alarm_control,10,2,18,6,,?Bstart?BSV?AT?AEV);
L(1,0,1,8);
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,,50,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:= 100,
T=> Alarm_Relay_2 ,
EV=> Alarm_Control.EV );
(*The ON-delay time is 10s*)
Alarm_Relay_1:= Alarm_Control.EV <= 50 & Alarm_Control.EV <> 0;
(*Alarm_Relay_1 is set to TRUE after 5s*)
Se desiderate chiamare il Function Block in una lista istruzioni, inserite quanto segue:
CAL |
Alarm_control (start:=Start_contact, SV:= 100 , T:= Alarm_Relay_2) |
LD |
Alarm_control.EV |
LE |
50 |
AND( |
Alarm_control.EV |
NE |
0 |
) |
|
ST |
Alarm_Relay_1 |