TP

Impuls-Zeitgeber

Mit dem Funktionsbaustein TP können Sie einen Impulsgeber mit einer definierten Impulsdauer programmieren.

Parameter

Eingang

IN (BOOL)

Impulsgeber

bei einer steigenden Flanke an IN wird ein Impuls von der Dauer erzeugt, die in PT definiert worden ist

PT (TIME)

Impulsdauer

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

bei jeder steigenden Flanke an IN wird ein Impuls von der Dauer PT ausgelöst. Während der Impulsdauer löst auch eine neue steigende Flanke an IN keinen neuen Impuls aus.

Ausgang

Q (BOOL)

Signalausgang

wird für die Dauer von PT gesetzt, sobald eine steigende Flanke an IN anliegt

ET (TIME)

Istwert

enthält die abgelaufene Impulsdauer. Wenn PT = ET ist, wird Q zurückgesetzt.

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

Anmerkungen

  • FP2, FP2SH und FP10SH benötigen für PT den 32-Bit Wert.

  • Unabhängig von der Einschaltdauer des IN-Signals, wird am Ausgang Q ein Impuls von der Länge erzeugt, der in PT definiert worden ist Der Funktionsbaustein TP wird gestartet (getriggert), wenn am Eingang IN eine steigende Flanke anliegt.

  • Während PT abgearbeitet wird, hat eine steigende Flanke am Eingang IN keinen Einfluss.

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

POE-Rumpf

Wenn start gesetzt ist (Status = TRUE), wird der Impuls an signal_output so lange ausgegeben, bis set_value für die Impulsdauer erreicht worden ist.

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,TP!,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

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

POE-Rumpf

Nach einer steigenden Flanke an IN beginnt der Zeitgeber mit dem Zählen und Q wird auf TRUE gesetzt. Wenn bEmergencyStop auf TRUE gesetzt wird, bevor die Impulsdauer abgelaufen ist, wird der Zählvorgang gestoppt und der Ausgang Q sofort zurückgesetzt. Der Zeitgeber wird in diesem Beispiel mit der Impulsdauer PT von 30s 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,,TP1.ET,22,2,24,4,);
B(B_CONTACT,,TP1.Q,12,1,14,3,);
B(B_CONTACT,,bEmergencyStop,7,1,9,3,);
L(14,2,16,2);
L(1,2,7,2);
L(9,2,12,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_VARIN,,tPT,14,3,16,5,);
B(B_VAROUT,,tET,21,3,23,5,);
B(B_CONTACT,,bIN,7,2,9,4,);
B(B_COIL,,bQ,33,2,35,4,);
B(B_FB,TP!,TP1,16,1,21,5,,?BIN?BPT?AQ?AET);
B(B_CONTACT,,bEmergencyStop,27,2,29,4,N);
L(1,3,7,3);
L(9,3,16,3);
L(29,3,33,3);
L(21,3,27,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

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

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