TON

Einschaltverzögerung

Mit dem Funktionsbaustein TON können Sie eine Einschaltverzögerung programmieren.

Parameter

Eingang

IN (BOOL)

Zeitgeber TRUE

bei jeder steigenden Flanke an IN wird ein interner Zeitmesser gestartet

PT (TIME)

Einschaltverzögerung (PT = preset time)

16 Bit: 0–327.27s

32 Bit: 0–21,474,836.47s (32 Bit nicht verfügbar für FP3, FPC, FP5, FP10/10S)

Auflösung jeweils 10ms

Ausgang

Q (BOOL)

Signalausgang

wird auf TRUE gesetzt, wenn PT = ET ist

ET (TIME)

Istwert

ist die tatsächlich abgelaufene Zeit (ET = elapsed time)

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

Anmerkungen

  • Q wird um die Zeit, die in PT definiert worden ist, verzögert gesetzt. Das Zurücksetzen verläuft verzögerungsfrei.

  • Wenn der Eingang IN nur so lange oder gar kürzer gesetzt wird, als die Verzögerungszeit PT dauert (t3 - t2 < PT), dann wird Q nicht gesetzt.

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
		copy_name: TON;
		start: BOOL:=FALSE;
		set_value: TIME:=T#0s;
		signal_output: BOOL:=FALSE;
		current_value: TIME:=T#0s;
	END_VAR

POE-Rumpf

Wenn start gesetzt wird (Status = TRUE), wird das Eingangssignal um die Zeitspanne set_value verzögert an signal_output weitergegeben.

KOP-Rumpf

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_CONTACT,,start,3,2,5,4,);
B(B_VARIN,,set_value,7,3,9,5,);
B(B_VAROUT,,current_value,14,3,16,5,);
B(B_COIL,,signal_output,21,2,23,4,);
B(B_FB,TON!,copy_name,9,1,14,5,,?BIN?BPT?AQ?AET);
L(1,3,3,3);
L(1,0,1,6);
L(5,3,9,3);
L(14,3,21,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

copy_name( IN:= start ,
        PT:= set_value ,
        Q=> signal_output ,
        ET=> current_value );

AWL-Rumpf

Wenn Sie den Funktionsbaustein in einer Anweisungsliste aufrufen möchten, geben Sie folgendes ein:

Beispiel mit Not-Halt und Initialisierung der programmierten Zeit

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
		TOF1: TOF;
		tPT: TIME:=T#10s;
		tET: TIME:=T#0s;
		bIN: BOOL:=FALSE;
		bQ: BOOL:=FALSE;
		bEmergencyStop: BOOL:=FALSE;
	END_VAR

POE-Rumpf

Nach einer fallenden Flanke an bIN beginnt der Zeitgeber mit dem Zählen und Q wird auf TRUE gesetzt. Wenn bEmergencyStop auf TRUE gesetzt wird, bevor der Zeitgeberwert abgelaufen ist, wird der Zählvorgang gestoppt und der Ausgang Q sofort zurückgesetzt. Der Zeitgeber wird in diesem Beispiel mit der programmierten Zeit PT von 10s initialisiert.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_F,E_MOVE!,,16,0,22,4,,?DEN?D?AENO?C);
B(B_VARIN,,tPT,14,2,16,4,);
B(B_VAROUT,,TOF1.ET,22,2,24,4,);
B(B_CONTACT,,bIN,11,1,13,3,N);
B(B_CONTACT,,bEmergencyStop,6,1,8,3,);
L(1,2,6,2);
L(13,2,16,2);
L(8,2,11,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_FB,TOF!,TOF1,16,1,21,5,,?BIN?BPT?AQ?AET);
B(B_VARIN,,tPT,14,3,16,5,);
B(B_VAROUT,,tET,21,3,23,5,);
B(B_CONTACT,,bIN,6,2,8,4,);
B(B_COIL,,bQ,34,2,36,4,);
B(B_CONTACT,,bEmergencyStop,27,2,29,4,N);
L(21,3,27,3);
L(29,3,34,3);
L(8,3,16,3);
L(1,3,6,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

if (bEmergencyStop AND NOT bIN) then
    TOF1.ET:=tPT;
end_if;
TOF1(IN := bIN, PT := tPT, ET => tET);
bQ := NOT bEmergencyStop AND TOF1.Q;

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