Vor- und Rückwärtszähler
Der Zähler zählt rückwärts, wenn der Trigger UpDirection auf FALSE gesetzt wird. Der Zähler zählt vorwärts, wenn der Trigger UpDirection auf TRUE gesetzt wird.
Eingang
Setzt Zähler auf Aufwärts- (ON) oder Abwärtszählen (OFF)
Startet Zähler
Setzt Zähler zurück
16-Bit-Bereich oder äquivalente Konstante für voreingestellten Wert des Zählers
Ausgang
16-Bit-Bereich für Istwert des Zählers
Das Speicherregister für den Istwert d wird 0, wenn die steigende Flanke des Trigger ermittelt wird (FALSE ® TRUE). Der Wert im Speicherregister s_PresetValue wird nach d übertragen, wenn eine fallende Flanke des Trigger ermittelt wird (TRUE® FALSE).
Die Variablen s_PresetValue und d müssen vom gleichen Datentyp sein.
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
up: BOOL:=FALSE;
(*declares, if the counter
counts up or down*)
count: BOOL:=FALSE;
(*at a rising edge on count
the counter counts*)
reset: BOOL:=FALSE;
(*resets the counter to
set_value if TRUE*)
set_value: INT:=0;
(*the starting value*)
output_value: INT:=0;
(*the actual value*)
END_VAR
Wenn am Eingang Count_Trigger eine steigende Flanke anliegt, wird der Zähler ausgeführt. Die Zählrichtung wird am Eingang UpDirection gesetzt (TRUE bedeutet vorwärtszählen, FALSE rückwärtszählen). Wenn am Eingang Reset_Preset TRUE anliegt, wird der Zähler auf den Anfangswert zurückgesetzt.
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_F,F118_UDC!,Instance,8,0,17,6,,?DUpDirection?DCountTrigger?DReset_Preset?Ds_PresetValue?Cd);
B(B_VARIN,,up,6,1,8,3,);
B(B_VARIN,,count,6,2,8,4,);
B(B_VARIN,,reset,6,3,8,5,);
B(B_VARIN,,set_value,6,4,8,6,);
B(B_VAROUT,,output_value,17,1,19,3,);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
output_value:=F118_UDC( UpDirection:= up, Count_Trigger:= count, Reset_Preset:= reset, s_PresetValue:= set_value);
(* output_value contains the count value *)