F176_PulseOutput_Pass

Interpolación circular (punto de paso)

Se envían pulsos desde dos canales según los parámetros especificados en la DUT, de forma que el recorrido a la posición destino forma un arco. El radio del círculo se calcula especificando el centro del círculo y el punto destino. Se envían pulsos desde el canal especificado si la bandera de control para ese canal es FALSE y la condición de ejecución es TRUE.

Parámetros

Entrada

n_iPulseOutputChannel* (constante decimal)

Canal de salida de pulsos: 0, 2

Entrada/salida

s_dutDataTable (F176_PulseOutput_Pass_DUT)

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

Observaciones

Utilizar la siguiente DUT predefinida: F176_PulseOutput_Pass_DUT

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

  • Código de control

  • Velocidad Compuesta

  • valor de preselección eje X

  • Valor de preselección eje Y

  • Valor de paso eje X

  • Valor de paso eje Y

Los siguientes parámetros para cada eje, se calculan a partir de la ejecución de la instrucción y se almacenan en el área del resultado de la operación de la DUT.

  • Radio

  • Centro del círculo eje X

  • Centro del círculo eje Y

Diagrama de la salida de pulsos

1)

Sentido de giro: Sentido de giro: desde el canal 0 (eje x) al canal 2 (eje y) (para un movimiento en sentido de las agujas del reloj en ambos canales)

2)

Sentido de giro: Sentido de giro: desde el canal 2 (eje Y) al canal 0 ( eje x) (para un movimiento en sentido de las agujas del reloj en ambos canales)

Fv:

Velocidad Compuesta

O (Xo,Yo):

Centro del círculo

Fx:

Velocidad eje X

S (Xs,Ys):

Posición actual (inicio)

Fy:

Velocidad eje Y

P (Xp,Yp)

Posición de paso

r:

Radio

E (Xe,Ye)

Posición final (Fin)

Ejemplo

Utilizar el canal 0 para el eje X y el canal 2 para el eje Y.Se utiliza el modo de control de posicionamiento absoluto.

La posición actual es (q=60°, Xs=5000, Ys=8660). El centro del círculo O (Xo=0, Yo=0) se usa como punto de referencia. Se envían pulsos desde el eje X (canal 0) y desde el eje Y (canal 2) a una velocidad de Fv=2000Hz hasta alcanzar la posición final (q=-30°, Xe=8660, Ye=-5000).

Información de programación general

  • La condición de ejecución para esta instrucción debe estar siempre a TRUE. Si la condición de ejecución es FALSE, se detiene la salida de pulsos.

  • La bandera de control del contador de alta velocidad (por ejemplo sys_bIsHscChannel0ControlActive) y la bandera de control de la salida de pulsos (por ejemplo sys_bIsPulseChannel0Active) están asignadas al mismo relé interno especial (R903A). Por lo tanto, cuando se ejecuta una instrucción del contador de alta velocidad o de salida de pulsos, tanto la bandera de control de contador de alta velocidad (por ejemplo sys_bIsHscChannel0ControlActive) como la bandera de control de la salida de pulsos (por ejemplo sys_bIsPulseChannel0Active) para el canal especificado, están a TRUE. No se puede ejecutar ninguna otra instrucción del contador de alta velocidad o de salida de pulsos mientras que está bandera esté a TRUE.

  • Al ejecutar la instrucción de interpolación circular F176_PulseOutput_Center la bandera de control de interpolación circular (sys_bIsCircularInterpolationActive) pasa a TRUE. Se mantiene el estado de la bandera hasta que se alcanza el valor de preselección (incluso si la condición de ejecución ya no es TRUE). En este intervalo, no se puede ejecutar otra función de salida de pulsos. Para reiniciar la interpolación circular, forzar una parada (salida de detección de pulsos) para fijar la bandera de control de interpolación circular (sys_bIsCircularInterpolationActive) a FALSE.

  • Si se ha seleccionado "Continuar" para el modo de conexión de la operación, utilizar la bandera especial (sys_bIsCircularInterpolationOverwritingPossible) para permitir sobrescribir el valor de preselección. La bandera se encuentra a TRUE durante un ciclo de scan cuando se ejecuta la instrucción de interpolación circular.

  • La posición destino de cada eje debe estar dentro del rango de -8388608–8388607. Cuando se usa esta instrucción en combinación con otras funciones de salida de pulsos, como por ejemplo, F171_PulseOutput_Trapezoidal, el valor de preselección de estas instrucciones debe estar dentro del mismo rango.

  • La precisión de la interpolación circular se puede reducir si el ciclo de scan es demasiado largo.

  • La edición Online en modo RUN no está disponible para esta instrucción.

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

  • Puesto que no existe una función de interpolación para la vuelta al origen, la vuelta al origen se debería ejecutar para cada canal.

  • Cuando se usa en aplicaciones que requieren precisión, es necesario realizar un test de prueba con la máquina real.

  • En los registros del sistema seleccionar como "No usado" cualquier contador de alta velocidad asignado a un canal de salida de pulsos.

  • Se recomienda encarecidamente proporcionar la posibilidad de una parada forzada en cualquier programa de posicionamiento.

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

Comportamiento de las banderas durante la ejecución de la instrucción

1)

Condición de ejecución X0

2)

Bandera de control de la salida de pulsos, canal 0 (sys_bIsPulseChannel0Active)

3)

Bandera de control de la salida de pulsos, canal 2 (sys_bIsPulseChannel2Active)

4)

Bandera de control de interpolación circular (sys_bIsCircularInterpolationActive)

5)

Bandera de sobrescritura del punto de destino (sys_bIsCircularInterpolationOverwritingPossible)

a

Inicio

b

Condición de ejecución FALSE

c

Alcanzado el valor de preselección

d

Modo inicio continuo

e

1 ciclo de scan

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
		Trigger: BOOL:=FALSE;
		dutPassData: F176_PulseOutput_Pass_DUT:=dwControlCode := 16#1000,
diSpeed := 2000,
diTargetPos_X := 8660,
diTargetPos_Y := -5000,
diPassPos_X := 9396,
diPassPos_Y := -3420;
			(*Control code:
Digit 4: 0=Operation connection mode: stop
Digit 3: 1=Rotation direction: CCW (left)  
Digit 2: 0=Fixed
Digit 1: 0=Relative value control
Digit 0: 2=Pulse/direction (Forward FALSE)
*)
		@'': @'';
	END_VAR

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_CONTACT,,Trigger,4,2,6,4,R);
B(B_VARIN,,dutPassData,10,4,12,6,);
B(B_VARIN,,0,10,3,12,5,);
B(B_F,F176_PulseOutput_Pass!,Instance,12,1,27,6,,?DEN?Hn_iPulseOutputChannel?Ds_dutDataTable?As_dutDataTable?AENO);
L(1,3,4,3);
L(6,3,12,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF DF(Trigger) then
    F176_PulseOutput_Pass(n_iPulseOutputChannel := 0, 
        s_dutDataTable := dutPassData);
END_IF;

Modificado el: 2023-03-14Comentarios sobre esta páginaPanasonic hotline