F177_PulseOutput_Home

Vuelta al origen

Esta instrucción ejecuta una vuelta al origen según los parámetros especificados en la DUT. 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

s_dutDataTable (F177_PulseOutput_Home_Type0_DUT) o (F177_PulseOutput_Home_Type1_DUT)

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

n_iPulseOutputChannel* (constante decimal)

Canal de salida de pulsos:0–3

Observaciones

Cuando se arranca un servomotor, existe una diferencia, que no se puede predeterminar, entre el valor de la posición inicial (valor actual) y la posición mecánica real del eje. Este valor interno se debe sincronizar con el valor de la posición real del eje. Esto se realiza por medio de una vuelta al origen, de forma que se registre la posición de un punto de referencia conocido (origen).Durante la ejecución de la instrucción de vuelta al origen, se envían pulsos continuamente hasta que se activa la entrada de vuelta al origen. El mapa de E/S está determinado por el canal utilizado.Para decelerar el movimiento cerca de la posición de origen, seleccionar una entrada de proximidad al origen y cambiar el bit 4 del registro de datos especial que almacena el código de control (sys_wHscOrPulseControlCode) a TRUE y de nuevo a FALSE.Se puede poner a TRUE la salida del borrado del valor de desvío de contaje cuando ha finalizado la vuelta al origen.

Seleccionar uno de los dos modos de operación:

  • Tipo 0:

    La entrada de vuelta al origen tiene efecto con independencia de si existe una entrada de proximidad al origen, de si está decelerando o de si ha finalizado la deceleración.

    Sin entrada de proximidad al origen:

    1.  (1) Velocidad inicial
    2.  (2) Velocidad máxima
    3.  (3) -
    4.  (4) Entrada de vuelta al origen: TRUE

    Con entrada de proximidad al origen:

    1.  (1) Velocidad inicial
    2.  (2) Velocidad máxima
    3.  (3) Entrada de proximidad al origen: TRUE
    4.  (4) Entrada de vuelta al origen: TRUE
    5.  (5) Velocidad de seguimiento
    6.  (6) La entrada de vuelta al origen es efectiva en cualquier momento.
  • Tipo 1: La entrada de vuelta al origen solo tiene efecto una vez finalizada la deceleración.

    1.  (1) Velocidad inicial
    2.  (2) Velocidad máxima
    3.  (3) Entrada de proximidad al origen: TRUE
    4.  (4) Entrada de vuelta al origen: TRUE
    5.  (5) Velocidad de seguimiento
    6.  (6) La entrada de vuelta al origen solo es efectiva después de la desaceleración

Utilizar la siguiente DUT predefinida: F177_PulseOutput_Home_Type0_DUT o F177_PulseOutput_Home_Type1_DUT

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

  • Código de control

  • Velocidad inicial

  • Velocidad máxima

  • Tiempo de aceleración

  • Tiempo de deceleración

  • Velocidad de seguimiento

  • Señal de borrado de la desviación del contador (tiempo de salida)

Diagrama de la salida de pulsos

  • La frecuencia de los pulsos de salida varía según el tiempo de aceleración y el tiempo de deceleración especificado.

  • La diferencia entre la velocidad de preselección y la velocidad actual determina la pendiente de la rampa..

  • Se envían pulsos con un rendimiento del 25%.

  • Con el método de salida de pulsos "pulso/dirección", los pulsos se envía aproximadamente 300ms después de enviar la señal de dirección, donde se tienen en cuenta la curva característica del driver del motor.

Información de programación general

  • Seleccionar en los registros del sistema, "Salida de pulsos " para el canal deseado.

  • Incluso cuando se ha activado la entrada de vuelta al origen, al ejecutar esta instrucción se inicia la salida de pulsos.

  • Si la entrada de proximidad al origen se habilita durante la aceleración, comienza una deceleración.

  • La señal de borrado del valor de desvío de contaje se asigna a una serie de salidas dedicadas específicas para cada tipo de PLC.

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

  • Durante la salida de pulsos, la bandera de control (por ejemplo sys_bIsPulseChannel0Active) del canal correspondiente está a TRUE. No se puede ejecutar ninguna otra instrucción de salida de pulsos mientras esta bandera sea TRUE

  • Si se edita en modo RUN durante la salida de pulsos, se detiene la salida de pulsos una vez descargados los cambio del programa.

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

Salidas del borrado del valor de desvío de contaje y entradas de origen para el FP0R

  • FP0R C16

    Canal N°

    Salida del borrado del valor de desvío de contaje

    Entrada de origen

    0 Y6 X4
    1 Y7 X5
    2 X6
    3 X7
    NOTA
    • Las entradas X4–X7 se pueden usar tanto como entradas del contador de alta velocidad como entradas de vuelta al origen.

    • Y6 y Y7 se pueden usar como salida de pulsos para el canal 3 o como salida para borrar el valor de desvío de contaje para los canales 0 y 1.

  • FP0R C32, T32, F32

    Canal N°

    Salida del borrado del valor de desvío de contaje

    Entrada de origen

    0 Y8 X4
    1 Y9 X5
    2 YA X6
    3 YB X7
    NOTA

    Las entradas X4–X7 se pueden usar tanto como entradas del contador de alta velocidad como entradas de vuelta al origen.

Ejemplo

Variables Globales

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

DUT

La DUT F177_PulseOutput_Home_Type1_DUT está predefinida en la librería “FP library”.

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_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		diInitialSpeed: DINT:=1000;
		diTargetSpeed: DINT:=5000;
		diAccelerationTime: DINT:=3000;
		diDecelerationTime: DINT:=3000;
		diCreepSpeed: DINT:=5000;
		dutHomeType1: F177_PulseOutput_Home_Type1_DUT:=dwControlCode := 16#0012,
diInitialSpeed := 0,
diTargetSpeed := 0,
diAccelerationTime := 0,
diDecelerationTime := 0,
diCreepSpeed := 0;
			(*For ControlCode (16#0012):
1 = Forward 
2 = Pulse/Sign forward on*)
		@'': @'';
	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 := 24 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,1,6,3,R);
B(B_F,E_MOVE!,Instance,17,4,23,8,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,Instance,17,8,23,12,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutHomeType1.diAccelerationTime,23,10,25,12,);
B(B_VARIN,,diAccelerationTime,15,10,17,12,);
B(B_F,E_MOVE!,Instance,17,20,23,24,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diDeviationCounterClearSignalOutputTime,23,22,25,24,);
B(B_VARIN,,0,15,22,17,24,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diInitialSpeed,23,2,25,4,);
B(B_VARIN,,diInitialSpeed,15,2,17,4,);
B(B_F,E_MOVE!,Instance,17,12,23,16,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diDecelerationTime,23,14,25,16,);
B(B_VARIN,,diDecelerationTime,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,16,23,20,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diCreepSpeed,23,18,25,20,);
B(B_VARIN,,diCreepSpeed,15,18,17,20,);
L(7,2,7,6);
L(1,2,4,2);
L(6,2,7,2);
L(7,2,17,2);
L(7,6,17,6);
L(7,10,17,10);
L(7,6,7,10);
L(7,10,7,22);
L(7,22,17,22);
L(7,14,17,14);
L(7,18,17,18);
L(1,0,1,24);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 12 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,8,5,10,7,R);
B(B_VARIN,,dutHomeType1,15,6,17,8,);
B(B_VARIN,,0,15,7,17,9,);
B(B_COMMENT,,Example for home position return,1,2,18,4,);
B(B_F,F177_PulseOutput_Home!,Instance,17,4,30,9,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(10,6,17,6);
L(1,6,8,6);
L(1,0,1,12);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF DF(X0_bMotorSwitch) then
  dutHomeType1.diInitialSpeed:=diInitialSpeed;
  dutHomeType1.diTargetSpeed:=diTargetSpeed;
  dutHomeType1.diAccelerationTime:=diAccelerationTime;
  dutHomeType1.diDecelerationTime:=diDecelerationTime;
  dutHomeType1.diCreepSpeed:=diCreepSpeed;
  dutHomeType1.diDeviationCounterClearSignalOutputTime:=0;
END_IF;
(*Example for home position return*)
IF DF(X0_bMotorSwitch) then
  F177_PulseOutput_Home(s_dutDataTable := dutHomeType1, 
    n_iPulseOutputChannel := 0);
END_IF;

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