F165_HighSpeedCounter_Cam

Control Cam para el FP0R

Esta instrucción realiza un control Cam según los parámetros especificados en la DUT con un máximo de 31 valores de preselección para el contardor de alta velocidad. Se puede ejecutar un programa de interrupción siempre que el valor actual coincida con uno de los valores de preselección.

Parámetros

Entrada

iHscChannel* (INT)

Canal del contador de alta velocidad: 0–5

s_dutDataTable (ANY_DUT)

Dirección de inicio del área que contiene la tabla de datos

Ejemplo: F165_HighSpeedCounter_Cam_8_Values_DUT

Salida

dutBitOutputs (ANY_DUT)

Dirección de inicio (WR) del área que contiene la dirección (palabra), por ejemplo, BOOL32_OVERLAPPING_DUT. Seleccionar el tamaño (16 ó 32 bits) según el número establecido en diNumberOfTargetValuesAndOutputRelays.

Observaciones

Crear su propia DUT utilizando la siguiente DUT como ejemplo: F165_HighSpeedCounter_Cam_8_Values_DUT

Se pueden especificar los siguientes parámetros en la DUT:

  • Código de control

  • Dirección (palabra) para las salidas

  • Número de valores de preselección

  • Valor de preselección:1

  • ...

  • Valor de preselección:n

  • Máximo valor de preselección

y

Valor actual del contador de alta velocidad

14000

Máximo valor de preselección

1)

Condición de ejecución

10000

Valor de preselección:4

2)

Bandera de control del contador de alta velocidad

8000

Valor de preselección:3

3)

Salida0-4

4000

Valor de preselección:2

2000

Valor de preselección:1

  • Siempre que el valor actual esté dentro del área del valor de preselección de n a n+1 (contaje incremental) o de n+1 a n, (contaje decremental), la salida correspondiente n pasa a TRUE.

  • En el ejemplo de arriba, se ha habilitado el control del valor de preselección máximo. Cuando el valor actual alcanza el valor de preselección máximo, el valor actual pasa a 0 y se reinicia el contaje.

  • Especificar la dirección (palabra) de las salidas en una DUT sobrecargada, por ejemplo, BOOL32_OVERLAPPING_DUT, y asignar esta DUT a dutBitOutputs.

  • Como máximo se pueden especificar 31 valores de preselección.

  • Los valores de preselección se pueden ordenar en sentido ascendente. No se puede utilizar un valor dos veces.

  • Cuando comience la instrucción, todos las salidas están a FALSE, excepto la salida 0, que pasa a TRUE, siempre que el valor actual sea menor que el valor de preselección 1. En caso contrario, la salida correspondiente al área del valor de preselección pasa a TRUE. Por ejemplo: Si el valor actual se encuentra entre el valor de preselección 2 = -4000 y el valor de preselección 3 = +4000, la salida 2 pasa a TRUE. En el siguiente ejemplo, se ha deshabilitado el control del valor de preselección máximo. Cuando el valor actual alcanza el último valor de preselección, continua el contaje y el valor actual no pasa a 0.

y

Valor actual del contador de alta velocidad

8000

Valor de preselección:4

1)

Condición de ejecución

4000

Valor de preselección:3

2)

Bandera de control del contador de alta velocidad

-4000

Valor de preselección:2

3)

Salida0-4

-10000

Valor de preselección:1

INT0

Programa de interrupción 0

Control del valor de preselección máximo

  • Se puede ejecutar la instrucción utilizando el control del valor de preselección máximo para poner el valor actual a 0 cuando se alcance el valor de preselección máximo. El control del valor de preselección máximo se puede habilitar en el código de control de F165_HighSpeedCounter_Cam_8_Values_DUT. En lugar de utilizar el control del valor de preselección máximo, el valor actual también se puede resetear utilizando una entrada de reset o un reset por software.

  • Para realizar el control del valor de preselección máximo, se deben especificar números enteros positivos para todos los valores de preselección.

  • Control del contaje incremental y decremental con el valor de preselección máximo:

y

Valor actual del contador de alta velocidad

14000

Máximo valor de preselección

1)

Condición de ejecución

10000

Valor de preselección:4

2)

Bandera de control del contador de alta velocidad

8000

Valor de preselección:3

3)

Salida0-4

4000

Valor de preselección:2

2000

Valor de preselección:1

Resumen:

Control del valor de preselección máximo:

habilitado

deshabilitado (ver nota)

Contaje incremental:

El puntero a la tabla de datos se mueve desde el valor de preselección 1 al último valor de preselección.

Cuando el valor actual alcanza el valor de preselección máximo:

  • el puntero vuelve al valor de preselección 1

  • salida 0 pasa a TRUE

  • el valor actual pasa a 0

Cuando el valor actual alcanza el último valor de preselección:

  • el puntero vuelve al valor de preselección 1

  • salida 0 pasa a TRUE

  • el valor actual continua incrementando y reinicia el contaje en el valor mínimo del contador cíclico

Contaje decremental:

El puntero a la tabla de datos se mueve desde el último valor de preselección 1.

Cuando el valor actual alcanza el valor -1:

  • el puntero vuelve al último valor de preselección

  • la salida correspondiente al último valor de preselección pasa a TRUE

  • el valor actual toma el valor de preselección máximo

Cuando el valor actual alcanza el valor -1:

  • el puntero vuelve al valor de preselección n

  • la salida correspondiente al último valor de preselección pasa a TRUE

  • el valor actual continúa incrementando y reinicia el contaje en el valor máximo del contador cíclico

NOTA

Siempre que no se utilice una entrada de reset ni un reset por software.

Operación de reset por hardware

Canal

Entrada de reset por hardware

0

X2

1

2

X5

3

Operación de interrupción

El programa de interrupción se ejecutará cuando el valor actual alcance el valor de preselección. Cualquier interrupción que se introduzca en la lista de Tareas se activa automáticamente. Se asigna un número de programa de interrupción para cada canal.

Canal

0

1

2

3

4

5

Programa de interrupción

0

1

3

4

6

7

Información de programación general

  • Seleccionar la entrada del contador de alta velocidad para el canal determinado en los registros del sistema.

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

  • Para cancelar la ejecución de la instrucción, poner a TRUE el bit 3 del registro de datos que almacena el código de control del contador de alta velocidad (sys_wHscOrPulseControlCode). La bandera de control del contador de alta velocidad pasa a FALSE. Para habilitar la ejecución de la instrucción del contador de alta velocidad, poner el bit 3 a FALSE.

  • Sobrescribir el valor actual del canal utilizado en la ejecución de la instrucción puede causar un funcionamiento inesperado.

  • Asegurarse de que el intervalo de tiempo entre los valores de preselección adyacentes sea mayor que 1ms.

  • Si la instrucción se ejecuta en el programa principal, asegurarse de que el intervalo de tiempo entre los valores de preselección adyacentes es mayor que el ciclo de scan.

  • Si la instrucción se ejecuta en un programa de interrupción, asegurarse de que el intervalo de tiempo mínimo entre valores de preselección adyacentes es mayor que el máximo tiempo de ejecución del programa de interrupción.

  • Se puede ejecutar la instrucción simultáneamente en un máximo de dos canales.

  • Cuando se utiliza una entrada de reset o un reset por software, comprobar que el valor de preselección 1 es un entero y ³ 1.

  • Cuando se usa el control de valor máximo junto con una entrada de reset o un reset por software, tener la precaución de no utilizarlos la vez.

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

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el número de canal o los valores de la tabla de datos están fuera del rango permisible
  • si el contador de alta velocidad no se ha activado en los registros del sistema
  • si el valor de preselección > el valor de preselección máximo.

  • si el valor de preselección = 0.

  • si los valores de preselección no están ordenados en sentido ascendente.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si el número de canal o los valores de la tabla de datos están fuera del rango permisible
  • si el contador de alta velocidad no se ha activado en los registros del sistema
  • si el valor de preselección > el valor de preselección máximo.

  • si el valor de preselección = 0.

  • si los valores de preselección no están ordenados en sentido ascendente.

Ejemplo con control del valor de preselección máximo

DUT

La DUT FF165_HighSpeedCounter_Cam_8_Values_DUT está predefinida en la FP Library y se puede utilizar como un ejemplo.

Variables Globales

En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.

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
		bStartCam: BOOL:=FALSE;
		dut_F165_CAM_Example1: F165_Cam_Example1_4_Values_DUT;
	END_VAR
	VAR_EXTERNAL
		WR0_bits_F165_CAM_Examples: BOOL16_OVERLAPPING_DUT;
	END_VAR

Cuerpo de la POU

Cuando la variable bStartCam pasa a TRUE, se ejecuta la funció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 := 5 ;
        NETWORK_BODY
B(B_CONTACT,,sys_bIsFirstScan,5,2,7,4,);
B(B_F,E_MOVE!,Instance,14,1,20,5,,?DEN?D?AENO?C);
B(B_VARIN,,0,12,3,14,5,);
B(B_VAROUT,,sys_diHscChannel0ElapsedValue,20,3,22,5,);
B(B_COMMENT,,Reset the elapsed value,1,0,21,1,);
L(1,3,5,3);
L(7,3,14,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,F165_HighSpeedCounter_Cam!,Instance,14,1,28,6,,?DEN?HiHscChannel?Ds_dutDataTable?AENO?CdutBitOutputs);
B(B_VARIN,,0,12,3,14,5,);
B(B_VARIN,,dut_F165_CAM_Example1,12,4,14,6,);
B(B_VAROUT,,WR1_dut_CAM1,28,3,30,5,);
B(B_CONTACT,,bStartCam,5,2,7,4,R);
B(B_COMMENT,,Start the cam control,1,0,21,1,);
L(1,3,5,3);
L(7,3,14,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF (sys_bIsFirstScan) then
    sys_diHscChannel0ElapsedValue:=0;
END_IF;
IF DF(bStartCam) then
    F165_HighSpeedCounter_Cam(iHscChannel := 0, 
      s_dutDataTable := dut_F165_CAM_Example1, 
      dutBitOutputs => WR0_bits_F165_CAM_Examples);
END_IF;

Ejemplo sin control del valor de preselección máximo

DUT

La DUT FF165_HighSpeedCounter_Cam_8_Values_DUT está predefinida en la FP Library y se puede utilizar como un ejemplo.

Cabecera de la POU

VAR
		bStartCam: BOOL:=FALSE;
		dut_F165_CAM_Example2: F165_Cam_Example2_4_Values_DUT;
	END_VAR
	VAR_EXTERNAL
		WR0_bits_F165_CAM_Examples: BOOL16_OVERLAPPING_DUT;
	END_VAR

Cuerpo de la POU

Cuando la variable bStartCam pasa a TRUE, se ejecuta la funció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 := 5 ;
        NETWORK_BODY
B(B_CONTACT,,sys_bIsFirstScan,5,2,7,4,);
B(B_F,E_MOVE!,Instance,14,1,20,5,,?DEN?D?AENO?C);
B(B_VARIN,,0,12,3,14,5,);
B(B_VAROUT,,sys_diHscChannel0ElapsedValue,20,3,22,5,);
B(B_COMMENT,,Reset the elapsed value,1,0,21,1,);
L(1,3,5,3);
L(7,3,14,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,F165_HighSpeedCounter_Cam!,Instance,14,1,28,6,,?DEN?HiHscChannel?Ds_dutDataTable?AENO?CdutBitOutputs);
B(B_VARIN,,0,12,3,14,5,);
B(B_VARIN,,dut_F165_CAM_Example2,12,4,14,6,);
B(B_VAROUT,,WR0_bits_F165_CAM_Examples,28,3,30,5,);
B(B_CONTACT,,bStartCam,5,2,7,4,R);
B(B_COMMENT,,Start the cam control,1,0,21,1,);
L(7,3,14,3);
L(1,3,5,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF (sys_bIsFirstScan) then
    sys_diHscChannel0ElapsedValue:=0;
END_IF;
IF DF(bStartCam) then
    F165_HighSpeedCounter_Cam(iHscChannel := 0, 
      s_dutDataTable := dut_F165_CAM_Example2, 
      dutBitOutputs => WR0_bits_F165_CAM_Examples);
END_IF;

Modificado el: 2022-06-28Comentarios sobre esta páginaPanasonic hotline