Vuelta al origen
Entrada
Dirección de inicio del área que contiene la tabla de datos
Canal de salida de pulsos:
FP-S: 0,2
FP-X R: 0,1
FP-XC14T: 0,1,2
FP-X C30T/C60T: 0,1,2,3
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.Durante la vuelta al origen, el contenido del área del valor actual puede diferir del valor real. Cuando se ha completado la vuelta al origen, el valor actual pasa a 0.
Seleccionar uno de los dos modos de operación:
Tipo 1: 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:
Con entrada de proximidad al origen:
Tipo 2: La entrada de vuelta al origen solo tiene efecto una vez finalizada la deceleración.
Utilizar la siguiente DUT predefinida:
F171_PulseOutput_Home_DUT
Se pueden especificar los siguientes parámetros en la DUT:
Código de control
Velocidad inicial y final
Velocidad máxima
Tiempo de aceleración/deceleración
Señal de borrado de la desviación del contador
Diagrama de la salida de pulsos
La frecuencia de salida de pulsos pasa desde la velocidad inicial a la velocidad final según el tiempo de aceleración/deceleración.
La diferencia entre la velocidad de preselección y la velocidad actual determina la pendiente de la rampa..
Información de programación general
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.
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.
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 se edita en modo RUN durante la salida de pulsos, se detiene la salida de pulsos una vez descargados los cambio del programa.
FP-X: 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
FPS: 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.
FPS: En los registros del sistema seleccionar como "No usado" cualquier contador de alta velocidad asignado a un canal de salida de pulsos.
FP-X: Seleccionar en los registros del sistema, "Salida de pulsos " para el canal deseado.
FPS: 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.
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.
Canal N° |
Salida del borrado del valor de desvío de contaje |
Entrada de origen |
0 | Y2 | X2 |
2 | Y5 | X5 |
La función de salida de pulsos solo está disponible si está instalado el casete de E/S de pulsos (AFPX-PLS).
Canal N° |
Salida del borrado del valor de desvío de contaje |
Entrada de origen |
0 | ||
(posición 1 de montaje de casetes) | Y102 | X102 |
1 | ||
(posición 2 de montaje de casetes) | ||
(solamente para el C30/60R) | Y202 | X202 |
Canal N° |
Salida del borrado del valor de desvío de contaje |
Entrada de origen |
0 | Y4 o Y8 | X4 |
1 | Y5 o Y9 | X5 |
2 | – | X6 |
3 (solemente para el C30/60R) | – | X7 |
En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.
La DUT F171_PulseOutput_Home_DUT está predefinida en la FP Library.
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
dutHome: F171_PulseOutput_Home_DUT:=dwControlCode := 16#1125;
(*Control code:
Digit 3: 1= Duty ratio 25%
Digit 2: 1= Frequency range 48Hz-100kHz
Digit 1: 2 =Operation mode type 1
Ditig 0: 5= CCW + deviation counter clear signal*)
diInitialSpeed: DINT:=100;
diTargetSpeed: DINT:=2000;
diAccelerationTime: DINT:=300;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 16 ;
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,,dutHome.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutHome.diAccelerationDecelerationTime,23,10,25,12,);
B(B_VARIN,,diAccelerationTime,15,10,17,12,);
B(B_F,E_MOVE!,Instance,17,12,23,16,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diDeviationCounterClearSignalOutputTime,23,14,25,16,);
B(B_VARIN,,10,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diInitialAndFinalSpeed,23,2,25,4,);
B(B_VARIN,,diInitialSpeed,15,2,17,4,);
L(7,2,7,6);
L(7,6,7,10);
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,10,7,14);
L(7,14,17,14);
L(1,0,1,16);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,6,3,8,5,R);
B(B_VARIN,,dutHome,15,4,17,6,);
B(B_VARIN,,0,15,5,17,7,);
B(B_F,F171_PulseOutput_Home!,Instance,17,2,30,7,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_COMMENT,,Example for home position return,1,1,18,2,);
L(1,4,6,4);
L(8,4,17,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(X0_bMotorSwitch) then
dutHome.diInitialAndFinalSpeed:=diInitialSpeed;
dutHome.diTargetSpeed:=diTargetSpeed;
dutHome.diAccelerationDecelerationTime:=diAccelerationTime;
dutHome.diDeviationCounterClearSignalOutputTime:=10;
END_IF;
(*Example for home position return*)
IF DF(X0_bMotorSwitch) then
F171_PulseOutput_Home(s_dutDataTable := dutHome,
n_iPulseOutputChannel :=0);
END_IF;