CT_FB Contador descendente

Con el bloque de función CT_FB se pueden implementar contadores descendentes. El rango de contaje SV (valor de preselección) está entre 1 y 32767.

Parámetros

Entrada

Count (BOOL)

entrada de contaje (descendente)

en cada flanco de subida de Count, se resta 1 del valor actual EV hasta que alcance el valor cero

Reset (BOOL)

entrada de reset

con el flanco de subida de Reset, se inicializa EV y se resetea la salida C; en el flanco de bajada de Reset, el valor de SV se copia en EV.

SV (INT)

Valor de preselección

valor de EV después del procedimiento de inicialización

Salida

C (BOOL)

señal de salida

se activa cuando EV llega a 0

EV (INT)

Valor actual

  • valor actual

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

Observaciones

  • El bloque de función CT_FB debe ser reseteado cada vez que se utiliza.

  • El número de contadores disponibles es limitado y depende de la configuración de los registros del sistema 5 y 6. El compilador asigna una dirección NUM* en cada llamada del contador. Las direcciones se asignan de forma consecutiva hacia abajo, comenzando por la dirección más alta.

  • La función básica CT (contador descendente) utiliza la misma dirección NUM* (entrada Num). Para evitar errores (conflicto entre direcciones), no se deben utilizar en el mismo proyecto las funciones CT y los bloques de funciones CT_FB.

Diagrama de tiempos

  1.  (1) Descargar en modo PROG
  2.  (2) Modo RUN

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: CT_FB;
		set_value: INT:=10;
		signal_output: BOOL:=FALSE;
		count_contact: BOOL:=FALSE;
		Reset_CT: BOOL:=FALSE;
		machine_error: BOOL:=FALSE;
		number_error: INT:=0;
	END_VAR

Cuerpo de la POU

En este ejemplo se utilizan variables. También se pueden utilizar constantes como variables de entrada. En cada flanco de subida de count_contact se resta 1 del valor de EV. Signal_output pasa a TRUE si el valor actual EV llega a cero.

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_FB,CT_FB!,copy_name,9,1,15,6,,?BCount?BReset?BSV?AC?AEV);
B(B_VARIN,,count_contact,7,2,9,4,);
B(B_VARIN,,Reset_CT,7,3,9,5,);
B(B_VARIN,,set_value,7,4,9,6,);
B(B_VAROUT,,signal_output,15,2,17,4,);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,E_MOVE!,Instance,10,1,16,5,,?DEN?D?AENO?C);
B(B_VARIN,,copy_name.EV,8,3,10,5,);
B(B_VAROUT,,number_error,16,3,18,5,);
B(B_CONTACT,,machine_error,4,2,6,4,);
L(1,3,4,3);
L(6,3,10,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo IL

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

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