Zeitgeber zur Zeitbasis 0,1s einschaltverzögert (0 bis 3276,7s)
Dieser Zeitgeber mit der Zeitbasis von 0,1s arbeitet als Einschaltverzögerung (0 bis 3276,7s). 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 3276,7s)
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,1s 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 PROG-Modus übertragen
RUN-Modus
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_100ms_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 100ms der Wert 1 von EV abgezogen. Erreicht EV den Wert 0 (nach 10 Sekunden, da SV = 100 mit Zeitgeber-Typ TM_100ms_FB), wird Alarm_Relay_2 auf TRUE gesetzt.
Sobald der Wert der Variable EV des Zeitgebers kleiner oder gleich 50 ist (nach 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 := 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*)
Wenn Sie den Funktionsbaustein in einer Anweisungsliste aufrufen möchten, geben Sie folgendes ein:
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 |