 F118_UDC
F118_UDCContador ascendente/descendente
Contador DESCENDENTE si la entrada de trigger UpDirection está a FALSE. Contador ASCENDENTE si la entrada de trigger UpDirection está a TRUE.

Entrada
establece si es un contador ascendente (ON) o descendente (OFF)
entrada de contaje
resetea el contador
área de 16 bits o constante equivalente para almacenar el valor de preselección
Salida
área de 16 bits para almacenar el valor actual del contador
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.

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_VAREl 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.


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
output_value:=F118_UDC( UpDirection:= up, Count_Trigger:= count, Reset_Preset:= reset, s_PresetValue:= set_value);
(* output_value contains the count value *)