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.
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_VAR
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.
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 *)