Zeitgeber zur Zeitbasis 0,001s einschaltverzögert (0 bis 32,767s)
Dieser Zeitgeber mit der Zeitbasis von 0,001s arbeitet als Einschaltverzögerung (0 bis 32,767s). Ist die Eingangsbedingung start des Zeitgeberbausteins erfüllt, wird die programmierte Zeit SV (Set value = Sollwert) gestartet. Nach Ablauf der Zeit schaltet der zugehörige Zeitgeberkontakt T ein.
Eingang
Startsignal
bei jeder steigenden Flanke wird der Sollwert SV auf den Istwert EV kopiert und der Zeitgeber gestartet
Sollwert
hier definieren Sie die Einschaltverzögerungszeit (0 bis 32,767s)
Ausgang
Zeitgeberkontakt
wird gesetzt, wenn die an SV definierte Zeitspanne abgelaufen ist, d.h., wenn der Istwert EV den Wert 0 erreicht hat
Istwert
ist der Zählwert, der bei laufendem Zeitgeber alle 0,001s um 1 verringert wird
Der Wert kann während des Zählens geändert werden, indem aus dem Programmiereditor heraus in die Variable geschrieben wird.
Die Anzahl der verfügbaren Zeitgeber ist von den Einstellungen in den Systemregistern 5 und 6 abhängig.
Für die Zeitgeber-Funktionsbausteine vergibt der Compiler an jede FB-Instanz automatisch eine NUM*-Adresse. Die Vergabe erfolgt abwärts zählend beginnend mit der höchstmöglichen Adresse.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
Alarm_control: TM_1ms_FB;
Start_contact: BOOL:=FALSE;
Alarm_Relay_1: BOOL:=FALSE;
Alarm_Relay_2: BOOL:=FALSE;
END_VAR
In diesem Beispiel werden Variablen verwendet. Sie können als Eingangsvariable auch eine Konstante verwenden.
Sobald die Variable Start_contact gesetzt wird (Status = TRUE), wird der Zeitgeber Alarm_control gestartet. Die Variable EV des Zeitgebers wird auf den Wert von SV gesetzt. Solange Start_contact den Zustand TRUE behält, wird alle 1ms der Wert 1 von EV abgezogen. Erreicht EV den Wert 0 (nach 1 Sekunde, da SV = 1000 mit Zeitgeber-Typ TM_1ms_FB), wird Alarm_Relay_2 auf TRUE gesetzt.
Sobald der Wert der Variable EV des Zeitgebers kleiner oder gleich 500 ist (nach 0,5 Sekunden) und EV nicht 0 ist, wird Alarm_Relay_1 auf TRUE gesetzt.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_VARIN,,Start_Contact,7,2,9,4,);
B(B_VARIN,,1000,7,3,9,5,);
B(B_VAROUT,,Alarm_Relay_2,16,2,18,4,);
B(B_FB,TM_1ms_FB!,Alarm_control,9,1,16,5,,?Bstart?BSV?AT?AEV);
L(1,0,1,5);
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 1000ms*)
Alarm_Relay_1:= Alarm_Control.EV <= 500 & Alarm_Control.EV <> 0;
(*Alarm_Relay_1 is set to TRUE after 500ms*)
Wenn Sie den Funktionsbaustein in einer Anweisungsliste aufrufen möchten, geben Sie folgendes ein:
CAL |
Alarm_control (start:=Start_contact, SV:= 1000 , T:= Alarm_Relay_2) |
LD |
Alarm_control.EV |
LE |
500 |
AND( |
Alarm_control.EV |
NE |
0 |
) |
|
ST |
Alarm_Relay_1 |