CTU

Aufwärtszähler

Mit dem Funktionsbaustein CTU (count up) können Sie Zählvorgänge programmieren.

Der Zähler zählt von null bis zum Maximalwert 32767 aufwärts. Bei jeder steigenden Flanke an CU wird der aktuelle Wert CV (current value) um 1 erhöht.

Parameter

Eingang

CU (BOOL)

Aufwärtszähler

bei jeder steigenden Flanke an CU wird der Wert 1 zu CV addiert, außer R ist gesetzt

R (BOOL)

Zurücksetzen

Bei einer steigenden Flanke an R wird der aktuelle Wert CV auf null zurückgesetzt und der Zählvorgang beendet. Der Ausgang Q wird auf FALSE gesetzt.

Bei der nächsten fallenden Flanke an R wird der Zählvorgang neu gestartet.

PV (INT)

Sollwert

wenn CV größer/gleich PV, wird Q auf TRUE gesetzt

Wenn kein Sollwert eingestellt oder der Sollwert null ist, wird der Ausgang Q unmittelbar nach dem Start des Zählvorgangs auf TRUE gesetzt.

Ausgang

Q (BOOL)

Signalausgang

wird auf TRUE gesetzt, wenn CV größer/gleich PV

wird auf FALSE gesetzt, wenn eine steigende Flanke an R anliegt

CV (INT)

Aktueller Wert

  • enthält das Additionsergebnis

  • Wenn CV den Sollwert PV erreicht, wird der Ausgang Q auf TRUE gesetzt, der Zähler zählt jedoch weiter, bis der obere Grenzwert von 32767 erreicht ist.

  • Der Wert kann während des Zählens geändert werden, indem aus dem Programmiereditor heraus in die Variable geschrieben wird.

Zeitdiagramm

Beispiel

POE-Kopf

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
		CTU1: CTU;
		bReset: BOOL:=FALSE;
			(*sets CV to zero if TRUE*)
		iPresetValue: INT:=3;
			(*if CV reaches this value,
output Q is set*)
		bUpCounting_PV_reached: BOOL:=FALSE;
			(*is set, if CV reaches PV*)
		iCurrentValue: INT:=0;
			(*contains the current value*)
	END_VAR

POE-Rumpf

Wenn bReset gesetzt ist (Status = TRUE) wird iCurrentValue(CV) zurückgesetzt. Wenn an CU eine steigende Flanke erkannt wird, wird der Wert 1 zu iCurrentValue addiert. Vorgang wird bei jeder steigenden Flanke an CU so oft wiederholt, bis iCurrentValue größer/gleich iPresetValue ist. Dann wird bUpCounting_PV_reached auf TRUE gesetzt.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,sys_bPulse1s,5,2,7,4,);
B(B_FB,CTU!,CTU1,12,1,17,6,,?BCU?BR?BPV?AQ?ACV);
B(B_COIL,,bUpCounting_PV_reached,23,2,25,4,);
B(B_CONTACT,,bReset,5,4,7,6,);
B(B_VAROUT,,iCurrentValue,18,4,20,6,);
B(B_VARIN,,iPresetValue,7,6,9,8,);
L(1,0,1,8);
L(1,3,5,3);
L(7,3,12,3);
L(17,3,23,3);
L(9,4,12,4);
L(9,4,9,5);
L(17,4,17,5);
L(1,5,5,5);
L(7,5,9,5);
L(10,5,12,5);
L(17,5,18,5);
L(10,5,10,7);
L(9,7,10,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

CTU1(CU := sys_bPulse1s, R := bReset, PV := iPresetValue,
     Q => bUpCounting_PV_reached, 
	 CV => iCurrentValue);

AWL-Rumpf

Letzte Änderung am: 2021-09-27Feedback zu dieser SeitePanasonic Hotline