Abwärtszähler
Die mit dem Funktionsbaustein CT_FB erzeugten Zähler sind Rückwärtszähler. Der Zählbereich SV (set value = Sollwert) liegt zwischen 1 und 32767.
Eingang
Zähleingang (abwärts)
bei jeder steigenden Flanke an Count wird der Wert 1 vom Istwert EV abgezogen, bis der Wert Null erreicht ist
Rücksetzeingang
bei jeder steigenden Flanke an Reset wird dem Istwert EV der Wert 0 zugewiesen und der Signalausgang C zurückgesetzt; bei jeder fallenden Flanke an Reset wird der Wert am Sollwert SV dem Istwert EV zugewiesen
Sollwert
ist der Wert, den der Istwert EV nach einem Rücksetzvorgang (Reset) hat
Ausgang
Signalausgang
wird gesetzt, wenn der Istwert EV den Wert 0 erreicht hat
Istwert:
ist der aktuelle Zählwert
Der Wert kann während des Zählens geändert werden, indem aus dem Programmiereditor heraus in die Variable geschrieben wird.
Damit der CT_FB einwandfrei arbeitet, muss vor jeder Benutzung ein Rücksetzvorgang (Reset) erfolgen.
Die Anzahl der verfügbaren Zähler ist von den Einstellungen in den Systemregistern 5 und 6 abhängig. Der Compiler vergibt an jede Zählerinstanz eine NUM*-Adresse. Die Vergabe erfolgt abwärts zählend beginnend mit der höchstmöglichen Adresse.
Die FP-Funktion CT Rückwärtszähler) benutzt den gleichen NUM*-Adressbereich (Num-Eingang). Um Fehlern (Adresskonflikten) vorzubeugen, sollten Sie die Funktion CT und den Funktionsbaustein CT_FB nicht gleichzeitig in einem Projekt verwenden.
Zeitdiagramm
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
copy_name: CT_FB;
set_value: INT:=10;
signal_output: BOOL:=FALSE;
count_contact: BOOL:=FALSE;
Reset_CT: BOOL:=FALSE;
machine_error: BOOL:=FALSE;
number_error: INT:=0;
END_VAR
In diesem Beispiel werden Variablen verwendet. Sie können als Eingangsvariable auch eine Konstante verwenden. Bei jeder steigenden Flanke an count_contact wird der Wert 1 vom Istwert EV abgezogen. Signal_output wird auf TRUE gesetzt, wenn der Istwert EV den Wert 0 erreicht hat.
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_FB,CT_FB!,copy_name,9,1,15,6,,?BCount?BReset?BSV?AC?AEV);
B(B_VARIN,,count_contact,7,2,9,4,);
B(B_VARIN,,Reset_CT,7,3,9,5,);
B(B_VARIN,,set_value,7,4,9,6,);
B(B_VAROUT,,signal_output,15,2,17,4,);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,E_MOVE!,Instance,10,1,16,5,,?DEN?D?AENO?C);
B(B_VARIN,,copy_name.EV,8,3,10,5,);
B(B_VAROUT,,number_error,16,3,18,5,);
B(B_CONTACT,,machine_error,4,2,6,4,);
L(1,3,4,3);
L(6,3,10,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Wenn Sie den Funktionsbaustein in einer Anweisungsliste aufrufen möchten, geben Sie folgendes ein: