TON

Temporizador con retardo a la conexión

El bloque de función TON permite programar un retardo para realizar una conexión

Parámetros

Entrada

IN (BOOL)

temporizador ON

en el flanco de subida de IN arranca un temporizador interno

PT (TIME)

retardo a la conexión (PT = preset time)

dato de 16 bits: 0–327.27s

dato de 32 bits: 0–21,474,836.47s (dato de 32 bits no disponible para FP3, FPC, FP5, FP10/10S)

resolución de 10ms

Salida

Q (BOOL)

señal de salida

pasa a TRUE si PT = ET

ET (TIME)

valor actual

representa el valor actual del temporizador

El valor se puede cambiar durante la operación de contaje escribiendo en la variable desde el editor de programación.

Observaciones

  • Q se activa con el retardo definido en PT. El reset se realiza sin retardo.

  • Si IN solo está a on durante el periodo igual a PT o más corto (de t3 a t2 < PT), no se activará Q.

Diagrama de tiempos

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

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

Cuerpo de la POU

Si start pasa a on (TRUE), signal_output pasa también a ON con un retardo igual a set_value.

Cuerpo 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,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

Cuerpo en ST

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

Cuerpo IL

Para llamar al bloque de función en lista de instrucciones, introducir:

Ejemplo con parada de emergencia e inicialización del temporizador

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU.Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		TOF1: TOF;
		tPT: TIME:=T#10s;
		tET: TIME:=T#0s;
		bIN: BOOL:=FALSE;
		bQ: BOOL:=FALSE;
		bEmergencyStop: BOOL:=FALSE;
	END_VAR

Cuerpo de la POU

Después de un flanco descendente en bIN, el temporizador inicia el contaje y Q pasa a TRUE. Cuando bEmergencyStop pasa a TRUE antes de que el valor del temporizador haya transcurrido, el contaje se detiene y la salida Q se reinicia inmediatamente. En este ejemplo, el temporizador se inicializa con un tiempo preajustado PT de 10s.

Cuerpo 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,,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

Cuerpo en ST

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

Modificado el: 2021-09-27Comentarios sobre esta páginaLínea directa de Panasonic