Medida del pulso de entrada
Esta instrucción mide el número y el periodo de los pulsos de entrada en el intervalo de contaje especificado.
Entrada
Canal del contador de alta velocidad: 0–5
Periodo de contaje [ms]:
1–5000 (1ms–5s).
Número de periodos: 1–5
Unidad de medida del periodo de pulsos
0: No se mide el periodo del pulso
1: El periodo del pulso se mide en ms
2: El periodo del pulso se mide en ms
3: El periodo del pulso se mide en ms y ms
Tiempo de espera para medir el periodo del pulso [ms]:
0: sin tiempo de espera
1: 100ms
2: 200ms
3: 300ms
4: 500ms
Salida
Media del número de pulsos por periodo de contaje (N° de pulsos en el periodo/número de periodos de contaje)
Periodo del pulso m
Periodo del pulso [ms]
Para la medida de los pulsos de entrada se debe especificar el número de canal, la duración del periodo de contaje (1ms–5s) y el número de periodos (1–5). Estos parámetros se usan para calcular la media de pulsos de entrada por periodo de contaje.
Se puede especificar la unidad de medida del periodo de los pulsos ([ms], [ms] o ambos).
Si la medida es en ms, se mide el periodo de los pulsos y se envía el resultado inmediatamente después de la ejecución de la instrucción. Se puede medir como máximo 174,4mseg. aproximadamente.
Si la medida se realiza en ms, el valor del periodo de los pulsos se actualiza después de cada medida. Se puede medir como máximo 49,7 días aproximadamente. Se puede especificar un valor de time-out después del cual la salida pasa a -1 si no ha finalizado la medida.
Durante los primeros periodos de contaje de la instrucción, la medida del periodo de los pulsos se pone a -1 hasta alcanzar el número de periodos de contaje especificados.
Si el periodo de los pulsos es mayor que el rango de medida o la medida no se puede completar, la salida se pone a -1.
Seleccionar la entrada del contador de alta velocidad para el canal determinado en los registros del sistema.
Mantener la condición de ejecución a TRUE mientras que se realiza la medida.
Para detener la medición, poner la condición de ejecución a FALSE.
Cuando se ejecuta una instrucción del contador de alta velocidad, la bandera control del contador de alta velocidad (por ejemplo, sys_bIsHscChannel0ControlActive) del canal utilizado pasa a TRUE. No se puede ejecutar otra instrucción del contador de alta velocidad utilizando el mismo canal mientras que la bandera de control esté a TRUE.
Se puede ejecutar la instrucción simultáneamente en un máximo de dos canales.
Si tanto el programa principal como el programa de interrupción contienen código para el mismo canal, asegurarse de que no se ejecutan simultáneamente.
El estado de la bandera de control del contador de alta velocidad o de la bandera de control de la salida de pulsos puede cambiar dentro del ciclo de scan.
si el canal del contador de alta velocidad ya está siendo usado por otra instrucción del contador de alta velocidad o salida de pulsos
si el número de canales usados es 3 ó más
si el canal del contador de alta velocidad ya está siendo usado por otra instrucción del contador de alta velocidad o salida de pulsos
si el número de canales usados es 3 ó más
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
bStartMeasurement: BOOL:=FALSE;
diNumberOfPulses: DINT:=0;
diPulsePeriodTime_μs: DINT:=0;
diPulsePeriodTime_ms: DINT:=0;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 9 ;
NETWORK_BODY
B(B_F,F178_HighSpeedCounter_Measure!,Instance,25,1,53,9,,?DEN?Ds1_iHscChannel?Ds2_NumberOfPulses_iPeriodTime_ms?Ds1_NumberOfPulses_iNumberOfPeriods?Ds1_PulsePeriod_iMeasurementMethod?Ds1_PulsePeriod_iTimeoutValueOf1msUnitOutput?AENO?Ad_NumberOfPulses_diAverage?Ad_PulsePeriod_diTime_μs?Ad_PulsePeriod_diTime_ms);
B(B_VARIN,,0,23,3,25,5,);
B(B_VARIN,,10,23,4,25,6,);
B(B_VARIN,,5,23,5,25,7,);
B(B_VARIN,,SYS_F178_HSC_MEASUREMENT_μs_ms,23,6,25,8,);
B(B_VARIN,,0,23,7,25,9,);
B(B_VAROUT,,diNumberOfPulses,53,3,55,5,);
B(B_VAROUT,,diPulsePeriodTime_μs,53,4,55,6,);
B(B_VAROUT,,diPulsePeriodTime_ms,53,5,55,7,);
B(B_CONTACT,,bStartMeasurement,9,2,11,4,);
L(1,3,9,3);
L(11,3,25,3);
L(1,0,1,9);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (bStartMeasurement) then
F178_HighSpeedCounter_Measure(s1_iHscChannel := 0,
s2_NumberOfPulses_iPeriodTime_ms := 10,
s1_NumberOfPulses_iNumberOfPeriods := 5,
s1_PulsePeriod_iMeasurementMethod := SYS_F178_HSC_MEASUREMENT_μs_ms,
s1_PulsePeriod_iTimeoutValueOf1msUnitOutput := 0,
d_NumberOfPulses_diAverage => diNumberOfPulses,
d_PulsePeriod_diTime_μs => diPulsePeriodTime_μs,
d_PulsePeriod_diTime_ms => diPulsePeriodTime_ms);
END_IF;