F118_UDC

Contador ascendente/descendente

Contador DESCENDENTE si la entrada de trigger UpDirection está a FALSE. Contador ASCENDENTE si la entrada de trigger UpDirection está a TRUE.

Parámetros

Entrada

UpDirection (BOOL)

establece si es un contador ascendente (ON) o descendente (OFF)

CountTrigger (BOOL)

entrada de contaje

Reset_Preset (BOOL)

resetea el contador

s_PresetValue (WORD, INT, UINT)

área de 16 bits o constante equivalente para almacenar el valor de preselección

Salida

d (WORD, INT, UINT)

área de 16 bits para almacenar el valor actual del contador

Observaciones

  • El área para el valor actual d pasa a 0 si se detecta el flanco de subida (FALSE® TRUE) de la señal. En el flanco de bajada de la señal (TRUE ® FALSE) se transfiere al área d el valor de s_PresetValue.

  • Las variables s_PresetValue y d tienen que ser del mismo tipo de datos.

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
		up: BOOL:=FALSE;
			(*declares, if the counter
counts up or down*)
		count: BOOL:=FALSE;
			(*at a rising edge on count
the counter counts*)
		reset: BOOL:=FALSE;
			(*resets the counter to 
set_value if TRUE*)
		set_value: INT:=0;
			(*the starting value*)
		output_value: INT:=0;
			(*the actual value*)
	END_VAR

Cuerpo de la POU

El contador se activa con un flanco de subida en Count_Trigger. La variable Booleana en la entrada UpDirection establece el sentido de contaje (TRUE = ascendente, FALSE =descendente). TRUE en la entrada Reset_Preset resetea el contador con el valor de preselección.

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_F,F118_UDC!,Instance,8,0,17,6,,?DUpDirection?DCountTrigger?DReset_Preset?Ds_PresetValue?Cd);
B(B_VARIN,,up,6,1,8,3,);
B(B_VARIN,,count,6,2,8,4,);
B(B_VARIN,,reset,6,3,8,5,);
B(B_VARIN,,set_value,6,4,8,6,);
B(B_VAROUT,,output_value,17,1,19,3,);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

output_value:=F118_UDC( UpDirection:= up, Count_Trigger:= count, Reset_Preset:= reset, s_PresetValue:= set_value);
(* output_value contains the count value *)

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