TP

Temporizzatore con periodo definito

Il Function Block TP vi permette di programmare un temporizzatore a impulsi con un periodo di clock definito.

Parametri

Ingresso

IN (BOOL)

generatore clock

se viene rilevato un fronte di salita in IN, viene generato un clock con il periodo definito in PT

PT (TIME)

periodo di clock

valore a 16 bit: 0–327.27s

valore a 32 bit: 0–21,474,836.47s (valore a 32 bit non è disponibile per FP3, FPC, FP5, FP10/10S)

risoluzione 10ms ciascuno

un temporizzatore con periodo PT viene prodotto per ciascun fronte di salita in IN. Un nuovo fronte di salita rilevato in IN all'interno del periodo di impulso non produce un nuovo temporizzatore.

Uscita

Q (BOOL)

uscita segnale

viene impostata per il periodo di PT non appena viene rilevato un fronte di salita in IN

ET (TIME)

tempo trascorso

contiene il periodo trascorso del temporizzatore. Se PT = ET, Q verrà resettato

Il valore può essere cambiato durante il conteggio scrivendo sulla variabile dall’editore di programmazione.

Note

  • FP2, FP2SH e FP10SH usare un valore a 32 bit per PT.

  • Indipendentemente dal periodo di attivazione del segnale IN, viene generato un clock all'uscita Q con una lunghezza definita da PT. Il Function Block TP viene attivato se viene rilevato un fronte di salita all'ingresso IN.

  • Un fronte di salita all'ingresso IN non ha alcuna influenza durante l'elaborazione di PT.

Diagramma tempi

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		copy_name: TP;
		start: BOOL:=FALSE;
		set_value: TIME:=T#0s;
		signal_output: BOOL:=FALSE;
		current_value: TIME:=T#0s;
	END_VAR

Corpo del POU

Se start viene impostato (stato = TRUE), il clock viene emesso in signal_output fino a quando il set_value per il periodo di clock viene raggiunto.

Corpo LD

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

Corpo ST

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

Corpo IL

Esempio con stop di emergenza e inizializzazione dell'ora preimpostata

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU.La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		TP1: TP;
		bIN: BOOL:=FALSE;
		tPT: TIME:=T#30s;
		tET: TIME:=T#0s;
		bQ: BOOL:=FALSE;
		bEmergencyStop: BOOL:=FALSE;
	END_VAR

Corpo del POU

Dopo un fronte di salita su IN, il timer inizia a contare e Q viene impostato su TRUE. Quando bEmergencyStop è impostato su TRUE prima che il periodo del clock sia trascorso, il conteggio si arresta e l'uscita Q viene reimpostata immediatamente. In questo esempio il timer viene inizializzato con il periodo clock PT di 30 s.

Corpo LD

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

Corpo ST

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

L'ultima revisione: 2021-07-05Feedback su questa paginaPanasonic hotline