Upload
others
View
19
Download
0
Embed Size (px)
Citation preview
Setup y cero (definición de posición) de
encoder absoluto de servos G5
mediante el controlador Sysmac
0. INTRODUCCION
Al trabajar con servomotores de la serie G5 con encoder absoluto, la primera vez
que conectamos el sistema o bien cuando el cable del encoder se desconecta de la
batería, es necesario realizar un Setup del encoder absoluto, puesto que mientras
que no se realice el drive mostrará la Alarma 40.
Una vez realizado el Setup y mientras no se desconecte el cable del encoder de la
batería no será necesario volver a realizarlo, es decir mientras el cable de encoder se
mantenga conectado al cable de batería se puede quitar alimentación a la máquina
sin riesgo de perder la posición del eje.
Otro motivo para realizar el setup del encoder absoluto es hacer el cero del encoder,
los encoder absolutos conocen su posición absoluta desde su Z en una vuelta y por
otro lado disponen de un contador donde se almacenan las vueltas que llevan desde
que se hizo su setup, este contador se incrementa cuando las vueltas avanzan en
sentido positivo y se decrementa cuanto las vueltas son dadas en sentido negativo,
de esta forma el encoder puede proporcionar información detallada de la posición
en la que se encuentra después de varias vueltas, sumando a la posición que se
encuentran en la vuelta actual el valor correspondiente a las vueltas del contador
multiplicado por el número de pulsos por vuelta.
������ó� � ����������� ���������� � �º ����� ∗ �������1 �����������
Cuando realizamos un Setup del encoder Absoluto se inicializa el contador de
vueltas a 0, con lo cual el valor de la posición que nos dará el encoder en ese
momento será la posición respecto a su fase Z en la vuelta 0, en los encoder
Absoluto de la serie G5 la Z es física y no es posible reubicarla, con lo cual para
posicionar el cero del encoder en otra posición se aplica un Offset a la posición real,
este offset puede ser aplicado por el servo Drive y por el sistema de control.
1. SETUP DE ENCODER ABSOLUTO
Para realizar el setup y eliminar el error A.40 del driver, se puede usar Cx-Drive
usando el asistente disponible para ello, pero es necesario conectarse al Drive
usando este software especifico, y no siempre es posible, ya que es necesario que el
receptor de la maquina disponga del software, y esté formado para esta tarea.
Otra solución más acertada para estos casos, es implementar dicha maniobra en el
programa del controlador de maquina Sysmac, para ello emplearemos la siguiente
secuencia.
Al activar la secuencia, se manda un comando de escritura a través de la red
Ethercat, que escribirá el código 6A646165 sobre el Objeto 4102.0 del drive (en este
ejemplo, el ServoDrive está configurado como nodo 2), quedando realizado el Setup
y a continuación se resetea el drive para limpiar el error.
2. CERO (definición de posición) DEL ENCODER ABSOLUTO
Con el controlador Sysmac, es posible definir la posición de un eje con encoder ABS
utilizando la función de Homing (aplica un Offset al controlador Sysmac) o bien
usando el método explicado en esta guía, de cualquier forma una vez realizado el
cero, no será necesario volver a realizarlo aunque se quite alimentación a la
máquina, tan solo será necesario en caso que se desconecte la batería del encoder
ABS.
Cuando se usa el FB de Homing, el valor que se fijará en la posición del eje es
siempre el mismo, ya que es predefinido de antemano por el programador en la
sección de configuración del método de búsqueda de origen desde el proyecto de
Sysmac Studio.
Si es necesario definir distintos valores del encoder ABS (Ej: Mediante una HMI),
como no es posible cambiar los valores de configuración de búsqueda de origen en
ejecución de programa, será necesario realizar lo explicado en esta guía
La secuencia empleada para realizar el cero será la siguiente.
Se definen los objetos a los que será necesario acceder, así como los valores que se
escribirán, quedando de la siguiente forma:
Object => Objeto donde será necesario escribir para el Setup del encoder ABS
Object2 => Objeto donde está la posición del motor en una vuelta (con Offset)
Object3 => Objeto donde está configurado el Offset del ServoDrive
Object4 => Objeto donde será necesario escribir para guardar en EEPROM
Se escribe en el objeto correspondiente al Setup del encoder ABS el código que
realiza el Setup del encoder ABS, igual que en el apartado anterior.
Se resetea el ServoDrive
A continuación se lee el objeto correspondiente a la posición del motor en una
vuelta con el Offset del ServoDrive aplicado (si lo tiene), y el objeto correspondiente
al offset configurado en el ServoDrive, en caso de que lo tuviera.
Se adaptan los tipo de dato de los valores leídos, estos datos vienen dados en
flancos y por tanto se convierten en unidades de sistema para poder trabajar con
ellos.
Para convertir los datos leídos (flancos) en unidades de sistema, basta con
multiplicar el dato por el número de unidades del sistema que hay en una vuelta del
motor y dividirlo por el número de flancos que hay en una vuelta de motor.
En el ejemplo, se usa un motor de 17 bit por tanto 2^17 = 131072 flancos por vuelta.
Como unidades de sistema se ha empleado el grado, por tanto una vuelta de motor
son 360 grado. Como puede verse, en lugar de emplear directamente el valor de
unidades de sistema para la conversión, se ha empleado el valor multiplicado por
100 es decir 36000, esto evita perder precisión en la conversión del tipo de datos, de
LREAL a INT.
Por último se calcula el Offset que pueda tener configurado el controlador Sysmac,
para ello basta con comparar la posición que muestra el controlador con la posición
leída del ServoDrive, teniendo en cuenta que el valor leído del ServoDriver ha sido
multiplicado por 100.
En el siguiente bloque se calcula el nuevo Offset que habrá que escribir en el
ServoDrive para definir la nueva posición del eje con el valor que se deseé.
Procediendo igual que en el cálculo anterior, se convierten los tipos de datos,
además se calcula el factor para convertir unidades de sistema en flancos, que se
calcula a la inversa que en el caso anterior, flancos en una vuelta dividido de
unidades de sistema en una vuelta (se ha multiplicado por 100 por lo ya
comentado) .
Se calcula la posición en una única vuelta del motor ABS sin el Offset que le haya
podido aplicar el ServoDrive.
Por si al quitar el Offset nos encontramos en que tenemos un valor mayor al de una
vuelta (podría pasar si por ejemplo se había aplicado un offset negativo), se hace la
división del valor y nos quedamos con el resto, dándonos así el valor de la posición
en la vuelta 0.
Una vez convertido el tipo de dato, tomamos el valor de la variable donde está
escrita la nueva posición que se quiere configurar, esa variable puede ser por
ejemplo pasada a través de una pantalla HMI para permitir una mayor flexibilidad
del sistema, y convertimos el valor en flancos, usando el factor de conversión
calculado anteriormente (k) y multiplicado por 100 (por lo ya comentado).
Para calcular el nuevo Offset que habrá que aplicar al ServoDrive, en primer lugar se
resta la posición actual en una única vuelta del motor ABS (vuelta 0) y el Offset
aplicado por el controlador Sysmac (si lo hubiera) para situarnos en la posición cero,
y se suma la nueva posición que se quiera consignar ya convertida a flancos.
Una vez convertido el dato, se envía al Objeto correspondiente al Offset del
ServoDrive.
Por último se escribe en el objeto que hace que los cambios sean fijados en la
EEPROM.
Para que los cambios tengan efecto, será necesario quitar tensión a la máquina.
Versión Nota Tec.: v.3.2