PLC open: Programando como es debido

Los bloques de función para control de ejes de PLC open tienen todos en común una misma estructura de parámetros de entrada, parámetros de salida y parámetros de Entrada y Salida.

Entender cómo se comportan y para qué sirven los parámetros de E/S de un bloque PLC open, facilitará el trabajo posterior de programación.

Un bloque de función PLC open está montado sobre el estándar IEC-61131-3. Dicha norma precisa que un bloque de función puede ser invocado en un programa  mediante una instancia, la instancia y sus subelementos es en definitiva la variable que contiene toda la información relativa a la ‘invocación’ del bloque de función.

En el ejemplo de la imagen “Origen Disco” es la instancia del bloque de función “MC_Home”

Los bloques PLC open necesitan de una o más entradas para la referencia del Eje (Axis). Estos parámetros son de un tipo de dato AXIS_REF. y definen el eje o ejes sobre los que actúa el bloque de función.

La estructura de datos AXIS_REF, es diferente para cada fabricante, puesto que PLC open define el tipo de dato AXIS_REF comno ‘específico del fabricante’.

Un bloque de función se puede ser de dos tipos:

-Trabajar por nivel (Enable)

-Trabajar por flanco de subida (Execute)

Los bloques de función que trabajan por nivel acostumbran a estar relacionados con funciones del estado del eje, como por ejemplo (MC_Power) que sirve para habilitar (Enable=TRUE), o deshabilitar (Enable=FALSE) la potencia de un eje.

 

Los bloques de función que se activan por flanco, acostumbran a estar relacionados con acciones, que se ejecutan en uno o más ciclos de escán del PLC, como por ejemplo (MC_Home) que iniciará una secuencia de búsqueda de origen para un eje.

Los parámetros de salida del bloque de función nos sirven para monitorizar el estado del bloque y, poder así utilizarlo en otras líneas de programa (en el ejempo de la imagen, se utiliza el parámetro de salida “Status” de MC_Power para encadenar una secuencia de búsqueda re origen.

Descripción de los parámetros de salida de un bloque:

Done (Hecho): Indica que el bloque de función a finalizado satisfactoriamente su cometido (por ejemplo que la secuencia de búsqueda de origen ha terminado). Este tipo de salida está ligada a bloques de función que se activan con flanco de subida (execute)

Status (Estado): Indica el estado de un bloque de función, por ejemplo en el caso de MC_Power si el eje tiene potencia o no.  Este tipo de salida está ligada a bloques de función que se activan por nivel (enable).

Busy (Ocupado): Indica que el bloque de función está ejecutando su cometido (previamente fue activado por Enable o Execute) pero que aún no ha podido terminar su trabajo (Done/Status)

Error (error): Como su nombre indica, el bloque de función (no necesariamente el eje físico), ha tenido un error por lo que jamás podrá completar su trabajo (Done/Status). Ante un error será necesario subsanar el problema y reiniciar el bloque de función.

Aborted (Abortado): En realidad no está indicando ningún problema, simplemente indica que otro bloque de función ha tomado el control del eje, por lo que su trabajo ha sido abortado.

ErrorID (Identificador de Error): Facilita un código de error del bloque en caso de que éste se produzca (Error).

Existe una regla ‘de oro’ para estas salidas Booleanas del bloque de función y, es que estas son mutuamente exclusivas:

En otras palabras, definen un diagrama de estados del Bloque de Función, y por tanto las reglas del juego a la hora de encadenar éste con otros bloques de función o comandos del PLC.

En Realidad existen más entradas y salidas, como por ejemplo: Buffer y Active, que se utilizan para la transición entre bloques, pero serán explicadas  en otro post.

El ‘pulso’ Execute

Los bloques de función tipo Execute se activan automáticamente con el flanco de subida, es decir no precisan de una función  external al propio bloque para detectar el flanco.

La entrada ‘Execute’ no necesita ser mantenida a verdadero (TRUE) para que el bloque se ejecute (A diferencia de la entrada ‘Enable’ que desactiva el bloque inmediatamente).

En cambio sí que existe una diferencia para el estado de las salidas del bloque dependiendo de si la entrada Execute está mantenida o no.

-Las salidas que indican el estado final del bloque de función permanecerán activas indefinidamente mientras la entrada Execute sea cierta (TRUE), pero caerán un ciclo después  (Excepto la señal de error) de que la señal Execute caiga a (FALSE).

El siguiente ejemplo muestra quan importante es esta consideración a la hora de programar.

Cuando el código como el que se muestra a continuación se ejecuta, la salida del PLC ‘Glue’ (goma) sólo estará activada durante un ciclo de escán (tal y como muestra la traza ), ya que está enclavada con la salida Move_S0.Done del bloque de función.

En un controlador de altas prestaciones como el OMRON Sysmac NJ-501 que opera con naturalidad por debajo del milisegundo.., el dispensador de goma… jamás llegará a disparar producto cuando el eje llegue la posición indicada.

En el siguiente post se comentarán las transiciones entre bloques establecidos por el BufferMode de PLC open

Publicado en Programación | Etiquetado , , , , , | Deja un comentario

Programación del Controlador de Movimiento

Uno de los estándares más populares para la programación de movimiento es el plcOpen. Este estandard define una librería de bloques de función IEC-61131-3, para control de ejes.

Son muchos los fabricantes que han adoptado este estandard, en este y posteriores artículos se ilustrará plcOpen basado en la implementación que OMRON ha hecho en su controlador Sysmac NJ.

 

DIAGRAMA DE ESTADO DE UN EJE

El diagrama de estado de un eje nos indica en qué estado se encuentra un eje, así como las posibles transiciones entre estados.

El diagrama de estado definido por plcOpen define los siguientes estados:

  • Eje Deshabilitado (Axis Disabled): Este es el estado inicial, en el que el eje (y por consiguiente el servo) no está habilitado, en este estado la etapa de potencia del servo no está habilitada por lo que el controlador de movimiento no podrá comandar el eje.
  • Eje Parado (StandStill): En este estado, el eje está habilitado pero no se está generando perfil de movimiento sobre él, en este estado el eje está, controlado, y a velocidad cero (parado), la etapa de potencia del servo está habilitada y el servo está preparado para reaccionar inmediatamente a cualquier consigna de movimiento
  • Búsqueda de Origen (Homing): En este estado el eje realiza una maniobra (en la mayoría de los casos implicará movimiento) de búsqueda de origen, existen decenas de posibles combinaciones de búsqueda de origen, pero al final todas buscan lo mismo, referenciar al eje. Cabe notar que buscar el origen no implica necesariamente buscar la posición cero de la máquina, sino saber referenciarse respecto a la posición cero de la máquina.
  • Movimientos Discretos (Discrete Motion): Entendemos como movimientos discretos aquellos movimientos que genera el controlador de movimiento y que afectan de manera directa al posicionamiento de un eje, por ejemplo un movimiento relativo o absoluto, etc… Una característica de los movimientos discretos es que tienen un principio y un fin, por ejemplo un movimiento absoluto a la posición 5000 terminará cuando el eje se haya situado en dicha posición.
  • Movimiento Continuo (Continuous Motion): Este tipo de movimientos tienen un inicio pero no un fin, es decir, para poder parar un movimiento continuo será necesario lanzar al controlador otro movomiento (por ejemplo MC_Stop) que haga salir al eje del movimiento continuo. Por ejemplo, dar una consigna de Velocidad, o una Consigna de Par se consideran movimientos continuous, pues el eje permancerá en el estado de velocidad o par indefinidamente hasta que otro comando lo haga salir de ese estado.
  • Movimientos síncronos (Synchronous Motion): Este tipo de movimientos generan un perfil de movimiento en un eje ‘esclavo’ que dependerá de la posición del eje ‘maestro': Engranajes (Gears), Tablas de puntos (CAMs), y cualquier otro movimiento que establezca una relación Maestro-Esclavo, son Movimientos síncronos. Habitualmente existen Bloques de función especificos para cancelar bloques síncronos, por ejemplo un MC_GearIn (engranaje) puede ser cancelando por un MC_GearOut (Desengranar).
  • Parando (Stoping): Este es un estado intermedio en el que un eje pasa de un estado de movimiento, por ejemplo movimiento discreto al estado de eje parado (standstill).
  • Parada por Fallo (Error Stop): Este es un estado no deseable, en el que por fuerza mayor, ele eje se ve forzado a parar, pudiendo ser en función de la gravedad del fallo una parada controlada que concluirá en un estado de paro (standstill) o en un caso severo una parada por fallo podría derivar en un eje deshabilitado (Axis Disabled)

El siguiente gráfico muestra el diagrama de estado de eje del controlador Symac NJ, cabe notar que este controlador tiene bloques de función específicos de OMRON, como por ejemplo el MC_MoveFeed, y por tanto no presentes en plcOpen, noobstante tal y como muestra el diagrana, cualquier bloque de función puede clasificarse en alguno de los estados definidos por plcOpen.

Diagrama de Estado del Eje en el controlador Sysmac NJ de OMRON

Diagrama de Estado del Eje

 

 

A partir del diagrama de estado podemos entender si una transición de estado es o no posible o, por ejemplo planificar una aplicación.

Ejemplo: Aplicación de roscado de un embase ‘delicado’

En este tipo de aplicación interesa posicionarse con una velocidad elevada (para reducir el ciclo de trabajo) en la posició de inicio de roscado, una vez en dicha posición se procedería a roscar el embase utiliando un control de par (por tratarse de un embase ‘delicado’ y que pudiera fracturarse sin un control de par adecuado durante el roscado.

Examinando el Diagrama de estado se observa una linea bidireccional entre  Discrete Motion y Continuous Motion, esto indica que es posible pasar sin necesidad de pasar por velocidad cero (y así ganar tiempo) entre un control de posición y un control de par (Torque).

Existen  un tipo de movimentos que no sea han incluido en el diagrama de estado, puesto que por su naturaleza tienen su propio diagama de estado, estos son los movimientos coordinados (Coordinated Motion). Movimientos coordinados incluyen la familia de interpolaciones y transformaciones kinematicas necesarias para controla mecanismos en los que varios ejes siguen un perfil coordiado, como es el caso de un robot.

Publicado en Programación | Etiquetado , , , , , | 1 comentario

Entradas y Salidas (E/S) de un servo

Servo: E/S de control

 Dependiendo del tipo de servo del que se trata (controlado por pulsos, controlado por consigna analógica, controlado por protocolo de red,…) y por supuesto dependiendo del fabricante, un servo tendrá más o menos Entradas/Salidas de control.

 El siguiente esquema muestra un OMRON G5, pero la mayoría de lo aquí explicado será aplicable para servos de cualquier fabricante.

 

ENTRADAS DIGITALES

 

Entrada de Habilitado (Enable)

 

(Enable dependiendo del frabricante…), es una entrada que puede estar presente (o no…., p.e. en servos comandados via red) y sirve para habilitar la etapa de potencia del servo, si esa entrada no está cableada (o activa via red)), el servo no será habilitado (no tendrá potencia) y no podrá moverse.

 

Los límites de carrera (Overtravel)

 

(Positive and Negative overtravel…) son dos entradas, una para el límite de carrera positivo y otra para el límite de carrera negativo.

 

Se cablean a sensores externos al servo: p.e. un inductivo o fotocélula… que servirán para delimitar el area de trabajo del eje. El eje no podrá trabajar fuera del area definida entre los dos sensores cableados, pudiendo este por lo general… entrar en fallo, bloquearse o sólo admitir un sentido de funcionamiento inverso al movimiento que propició la detección del límite de carrera

 El uso de estos sensores tiene mucho sentido en ejes que realizan un desplazamiento ‘finito’, por ejemplo un husillo… Por lo general no tendrá sentido definir estas entradas en un eje ‘infinito’ (rotativo), por ejemplo una cizalla rotativa.

 

Nota.- Con frecuencia se pueden también habilitar límites de carrera por software (no son entradas físicas), por lo general se utilizarán como precaución adicional, o por comodidad (configuración via HMI, etc…).

 

Entradas de registro

 

Las entradas de registro (latch, touchpobe, etc… dependiendo del fabricante) son entradas rápidas, que se utilizan para desencadenar un evento en el drive.

 Por lo general, este evento será la captura (registro) de la posición del eje, (por ejemplo para utilizarla con posterioridad para una correción de marca, etc…)

 

Estas entradas son ultrarrápidas, ya que buscan capturar la posición del eje con la mayor precisión posible (¿y quién mejor que el propio eje para realizar esta tarea con la máxima precisión?… estamos hablando de microsegundos!).

Por tratarse de entradas ultra-rápidas acostumbran a no estar filtradas… por lo que no es recomendable cablear elementos como relés mecánicos, pues son demasiado lentos… y una potencial fuente de ruido eléctrico.

 Normalmente, un servo tendrá  más de una entrada de registro, para poder calcular diferencias de posición (por ejemplo para corregir rodillos de una impresora tipo Offset).

 

Entrada de proximidad de Origen y Origen (Home)

 La entrada de proximidad puede utilizarse opcionalmente en combinación con una ¡entrada de registro’ o la marca ‘Z’ del encoder para definir una secuencia de búsqueda de origen.

 

La búsqueda de origen acostumbra a realizarse en en dos Fases:

 Fase 1: En una primera etapa de aproximación a la entrada de proximidad, el eje se desplaza a una velocidad lenta hasta detectar la entrada de ‘proximidad de Origen’, una vez detectada esta el eje pasará a la Fase 2.

 

Fase 2: En este estado, el eje se moverá a una velocidad muy lenta esperando detectar una entrada rápida de registro o la marca ‘Z’ del encoder.

 La utilización de la entrada de origen, permite un acercamiento a una velocidad más alta hasta la Fase 2, que por lo general se realizará a muy poca velocidad paa garantizar precisión.

 Esta secuencia básica, se puede completar (si el controlador o servo lo permiten) incluyendo señales adicionales a la maniobra, p.e. cómo los límites de carrera ,etc..

 

Entradas de propósito general

 

Estas entradas acostumbran a ser parametrizables por el servo y, en ocasiones pueden utilizarse como E/S de propósito general para el controlador del servo, p.e. via EtherCAT.

 

SALIDAS DIGITALES

 

Alarma

 

Típicamente el servoamplificador tendrá una salida de alarma que podrá utilizarse para reportar el estado del mismo hacia su controlador (si no se dispone de red de datos), o por ejemplo para deshabilitar el servo en caso de alarma.

 

Salidas de propósito general

 

Estas salidas acostumbran a ser configurables (por ejemplo para indicar que el servo está a velocidad, o en posición, etc…) y en algunos casos pueden ser utilizasdas como salidas de propósito general del controlador.

 

ENTRADAS ANALÓGICAS

 

Consigna y límites

 

En caso de servos analógicos o de pulsos, se acostumbran a utilizar entradas analógicas, que en combinación nos darán la consigna de velocidad y el límite de par o la consigna de par y límite de velocidad, acostumbran a ser configurables

 

SALIDAS ANALÓGICAS

 

Monitores

 

Los monitores analógicos son salidas configurables que se utilizan para monitorizar, por ejemplo… velocidad, par, etc…

 Resumen

 Por norma general un servo tendrá las E/S anteriormente mencionadas, pudiendo diferir estas en función del fabricante…

 Estas E/S son propias del servo por lo que por lo general serán mucho más rápidas que otras señales de campo. (p.e. entrada de registro).

 Las funciones básicas del servo (excepto en buses de motion) se comandan via combinación de E/S discretas del mismo. (p.e. un servo con posicionamiento incluido o indexer podrá comandarse utilizando esas entradas).

¿E/S en el servo  o en el PLC?

Actualmente existen buses de máquina que permiten un refresco muy rápido y síncrono de una red, lo que da pie a  la utilización de E/S distribuidas del ‘PLC’ para control de ejes.

Pese a que estos buses de campo son cada vez más rápidos y precisos, con anchos de banda de 100 Mb o más, mecanismos de compensación del jitter (fluctuación del ciclo), y mecanismos de sincronización basados en relojes distribuidos , la mayoría de los servoaccionamientos  en red, tienen entradas locales, ya que estas pueden trabajar (sin necesidad de compensaciones) al ciclo del servoaccionador , siendo este generalmente de unos pocos microsegundos.

Publicado en Servos | Deja un comentario

pulsos, grados, milímetros: Escalado de unidades

Uno de los temas que en ocasiones nos hace perder más el tiempo es el el escalado, o conversión de unidades de encoder (o resolver) a unidades de usuario (o de ingeniería), especialmente… cuando tenemos mecánicas o unidades con relaciones numéricas digamos que… poco agraciadas.  

Los sistemas de realimentación de posición pueden se de muchos tipos, con diferentes construcciones mecánicas, pricipios físicos, con diferentes funcionalidades y protocolos: A/A, B/B, Z/Z,  incremental, absoluto, marcas-codificadas, SSI, Endat, Tamagawa, lineal, rotativo, encoder, resolver, etc.. (dedicaremos un (o más de uno)  post específico a este tema)  

Pero… al final.. sea cual sea la naturaleza del sistema de realimentación, acabará traduciéndose en un valor de posición del motor que el motion controller utilizará para por ejemplo calcular el error de seguimento (bondad del perfil de movimiento) o por ejemplo para juzgar si se ha llegado a la posición comandada.  

El valor que el servo sistema entrega al controlador de movimiento acostumbra a ser un valor en cuentas de encoder, es decir, un valor discretizado en función del número de bits de resolución del encoder.  

Imaginemos un motor con un encoder de 13 bits de resolución. En este caso estamos hablando de un encoder que es capaz de de dividir (discretizar) la posición del motor dentro de una revolución en 8192 pulsos (2^13=8192).  

Pero… en general nos resultará más agradable trabajar en unidades de usuario,  p.e.  una una revolución son  360º,  no… 8192 pulsos,  hay que tener en cuenta que existen encoders de 16,17,18,20 y más bits!… por lo que… sería deseable… poder trabajar en unidades de usario, más ‘humanas’, como p.e. los grados, revoluciones, etc…  

La conversión entre cuentas de encoder y unidades de usuario es sencilla… por ejemplo para el caso del encoder de 13 bits (8192 pulsos por revolución) bastara con aplicar la siguiente conversión:  

Conversión de 360º a 13 bits

 

Por tanto si por ejemplo queremos movernos 100º el controlador enviará un comando de posición al servosistema de (100º x (2^13)/360) y a su vez el controlador convertirá la realimentación del motor (codificada en 13 bits) a grados aplicando la relación inversa (360/2^13).  

Con toda seguridad… el lector se habrá percatado de que 360/2^13  no da como resultado un número entero… por lo que en teoría a cada revolución se acumulará un error de cálculo de  ésta.   

Con toda seguridad el error propagado por la división no entera se traducirá en un error en la estimación que el controlador realiza de la posición del motor, es decir… por ejemplo en el caso de un eje rotativo que trabaje indefinidamente y que tenga un error de cálculo de un ‘pequeño’ pulso por vuelta, al cabo de 8192 revoluciones acumulará un error de 1 revolución!.   (El caso de un eje lineal con recorrido finito pasa más desapercibido).  

Imaginemos ahora que para más inri (y como acostumbra a ocurrir en la vida real) entre el motor y la carga tenemos reductores mecánicos, con relaciones de reducción que aún nos generen valores más ‘feos’…  

Resulta claro… que el hecho de trabajar con decimales… es un problema…  

SOLUCIÓN:  

En la mayoría de servosistemas, es posible definir una relación de pulsos de entrada del controlador y pulsos de salida hacia el motor (Gear Ratio, Encoder Ratio,…)  

Esta relación se puede definir en el propio servo, ó en el controlador, o en ambos…  

Volviendo al ejemplo anterior, tenemos que:  

Unidades de usuario 360 º por revolución  

Pulsos por revolucion son 8192 (2^13).  

Por tanto, lo que el servo (o el Motion controller) deberá hacer es un manejo de las unidades y los pulsos sin errores de cálculo. y en todo momento realizar las acciones o correcciones necesarias para asegurar que 8192 unidades de encoder correspondan con 360º, para ello, muchas veces lo que el dispositivo realiza son correcciones constantes teniendo en cuenta el resultado de la division entera MOD , y el RESTO.  

Muchas veces resulta útil asignar éste trabajo al Servo (cuando el servo tiene parámetros para el gear ratio) de modo que el controlador trabajará con conversiones de unidades ‘enteras’ sin decimales.  

En otras  ocasiones será también posible definir en el propio controlador el ‘gear ratio’ del eje.  

Sea como fuera, lo que  no es recomendable es definir escalados de unidades con decimales. Para ello, la mayoría de controladores disponen de un par de parámetros en los que se define la relación entre cuentas de encoder y unidades por vuelta.  

  

¿Qué hacer con las transmisines mecánicas?  

Se puede dar el caso de tener un encoder de 13 bits  (8192 pulsos por vuelta) y un engranaje  con una relación 1:3 entre motor y carga.  

  

Existen dos estrategias:  

-Una opción es incluir el reductor en la relación de cuentas de encoder en el Controlador:  

  Cada  (3 x 8192) cuentas se corresponde con 360º de revolución de la carga  

-Otra opción (si el servo lo permite) es insertar la relación 1:3  en el el gear ratio del servo.  

RESUMEN  

En Definitiva, lo realmente importante es que seamos conscientes de que muchos de los problemas que puedan aparecer en una aplicación de control de ejes se deben a errores en la definición de la relación entre unidades de usuario y cuentas de encoder, por tanto debemos ser extremadamente cuidadosos en el momento de establecer dicha relación en el servo y el controlador.

Publicado en Sin categoría | 4 comentarios

Sistema de realimentación de posición (I): encoder o resolver

 

Un elemento imprescindible a la hora de controlar un servosistema es el la realimentación de posición y velocidad.

Cierto es que existen sistemas (variadores pricipalmente) que funcionan sin realimentación de posición (lazo abierto) , pero dichos variadores se utilizan básicamente para control de velocidad o par. Para un control preciso de velocidad y posición, la realimentación del motor o la carga hacia el dispositivo de control, es absolutamente necesaria.

¿Encoder o Resolver?

Generalmente utilizamos el término inglés ‘encoder’ para referirnos al sistema de realimentación.

Cabe decir, que existen gran variedad de encoders: rotativos, llineales, incrementales, absolutos, semi-absolutos, y… de hecho en muchas ocasiones hablamos de ‘encoder’ cuando en realidad lo que tenemos es un resolver.

La diferencia fundamental entre encoder y resolver estriba en que el primero es un sistema digital y el segundo un sistema analógico.

-El encoder rotativo normalmente consta de un disco fijado al eje del motor, con una serie de marcas (normalmente codificadas en gray para minimizar errores), y un dispositivo optico capaz de leer dichas marcas. La combinación binaria de la lectura de dichas marcas nos dará como resultado la posición del rotor respecto al estator. Posteriormente y según el tipo de encoger, esta información será codificada y transmitida al servoamplificador o controlador de movimiento.

En su versión más ‘simple’ el encoder nos enviará dos trenes de pulsos con un desfase conocido, contando los pulsos podremos saber la posición del motor y examinando qué fase es la primera, podremos saber la dirección, es el tipico encoder de cuadratura A,/A, B, /B. Normalmente una señal adicional Z,/Z nos informará de una marca única en el disco que servirá para definir el origen (Homing)

-El resolver (rotativo), es un sistema analógico, grosso modo lo que nos está enviando es el voltaje inducido de dos espiras, que por razones constructivas daran como resultado dos senoides (en lugar de pulsos digitales aquí tenemos una senoide), examinando la senoide podremos conocer la posición, y examinando el desfase la dirección.

Hoy en día se utilizan tanto resolvers como encoders. Tradicionalmente el resolver se ha considerado más robusto desde el punto de vista mecánico, pero al tratarse de una señal analógica es más sensible desde el punto de vista electromagnético. El encoder a su vez es más sensible desde el punto de vista mecánico: fuerzas excesivas perpendiculares al eje pueden dañar el disco lector, pero en sus versiones más avanzadas codifica los datos digitalmente por lo que la detección y corrección de errores de comunicación es posible a nivel de protocolo.

Creo que existe ifinidad de literatura respecto al ‘encoder’ de cuadratura y el resolver, por lo que no me extenderé más y os referencio a : http://es.wikipedia.org/wiki/Codificador_rotatorio para más información.

En este artículo mi intención es no tanto explicar qué es un encoder o un resolver (para eso está la Wiki), sinó hacer un pequeño repaso de los diferentes tipos de encoders y protocolos y su campo de aplicación.

¿Encoder incremental o absoluto?

La respuesta está clara: Absoluto ! Siempre que el presupuesto nos lo permita.

El encoder incremental nos informa de los incrementos de posición y a cada vuelta nos envía una marca especial “Z” que utilizaremos para referenciar o hacer el Homing de una máquina.

¿Qué es el Homing?

Lo razonable es dedicar uno o más artículos al Homing, aquí sólo mencionaré que el homing es una secuencia inicial para cualquier sistema de posicionado en el que el controlador necesita conocer la posición absoluta del motor respecto a la máquina.

Imaginemos una mesa rotativa, con posiciones de trabajo situadas a 90, y 180 grados respectivamente respecto al punto en el que depositamos la pieza que queremos manipular (Posición 0º)

Al poner en marcha la máquina, el controlador de movimiento necesita saber, cual es la posición actual del eje del motor, respecto de la posición 0º de la máquina, para ello, si no se dispone de un encoder absoluto el controlador comandará uno o varios movimientos al eje, hasta que pueda detectar la marca “Z”.

Posiblemente la marca “Z” no estará en la posición 0º de la máquina, pero una vez  detectada la señal “Z” del encoder motor solidario a la mesa (imaginemos que se ha pasado 37º del ‘cero’ de máquina) , podremos  podremos referenciar el sistema y decirle al motor, muévase 37º en sentido contratio, pues ese es el ‘cero’ de la máquina y donde debe colocarse usted para recibir la primera pieza a trabajar.

El ejemplo que he expuesto es muy simplificado (sería el caso de un direct-drive) sin transmisión alguna entre motor y mesa, por tanto una revolución de motor, correspondería con una revolución de la mesa. En la mayoría de los casos nos encontraremos con transmisiones intermedias, por lo que una revolución de motor no corresponderá con una revolución de mesa, en este caso, se utilizan señales adicionales (sensor de proximidad) para determinar la posición.

Ejemplo de mesa rotativa (lo he encontré en youtube al azar): http://www.youtube.com/watch?v=kUps8Hbbxfo

Encoder Absoluto, y Absoluto multi-vuelta

En un sistema con encoder absoluto, no es necesario realizar la secuencia de Homing, puesto que al poner en marcha la máquina y sin necesidad de movimiento alguno, el encoder del motor informará al controlador de su posición: “Estoy en la posición 37º”.

El encoder absoluto necesita de algún mecanismo mecánico o electrónico para memorizar su posición: dentro de una revolución del motor. Muy habitualmente cuando hablamos de un encoder absoluto, en realidad se trata de un encoder absoluto-multivuelta, pues en muchas aplicaciones necesitamos conocer no sólo la posición absoluta dentro de una vuelta, también en número de vueltas que ha dado el motor, para poder determinar la posición absoluta.

Tradicionalmente existen dos enfoques a la hora de implementar un encoder absoluto multivuelta:

-Un sistema mecánico de discos (algo así como un reloj suizo…)
-Una batería capaz de mantener la posición durante varios años

La ventaja está clara: con un encoder absoluto no es necesario ningún movimiento para determinar la posición del motor, por lo que se gana tiempo en el arranque de la máquina y se evitan movimientos inconvenientes para algunas máquinas.

Contrapartida: Un encoder incremental resulta más económico.

En el caso de encoders absolutos multivuelta con batería, debemos ser conscientes de que desconectar la batería implicará perder la posición absoluta…

Full-close loop encoder

El encoder en sí mismo, lo que nos da es una realimentación de posición.

El servoamplificador derivará la posición respecto al tiempo para calcular la velocidad.

Como ya se comentó en artículos anteriores, el amplificador necesita la realimentación del encoder para poder cerrar el lazo de velocidad y efectuar un buen control vectorial.

Normalmente la misma señal de encoder es retransmitida al controlador de posición para cerrar el lazo de posición y/o controlar la desviación (error).

En ocasiones será necesario utilizar un encoder adicional para cerrar el lazo de posición e ignorar el encoder del motor.

Típicamente esto ocurre cuando:

-La mecánica entre el motor y la carga es ‘mala’ o ‘complicada’ (resulta más sencillo utilizar un encoder adicional cerca de la carga, y evitar toda la cadena cinemática entre motor y carga
-Aplicaciones en las que positivamente sabemos que existen variaciones difícilmente controlables entre la posición del motor y la carga: p.e. cuando la carga desliza sobre rodillos, a veces es mejor leer la posición con una encoder en contacto directo con la carga.

La utilización de este tipo de encoder adicional, se conoce como full-close loop feedback, aunque dependiendo del fabricante puede tener nombres comerciales diferentes.

Encoder rotativo y encoder lineal

En gran numero de ocasiones el movimiento rotativo del motor se traduce en un movimiento lineal.

A raíz de que que los ciclos de trabajo se han vuelto más exigentes (mayor productividad) y la demanda de precisión (mayor calidad), cada vez són más las aplicaciones que integran motores lineales en lugar de utilizar motores rotativos que posteriormente pirden eficiencia y precisión al transformarse en un movimiento lineal, p.e. tornillo sin fin.

Cabe decir que hay dos grandes familias de motores lineales:

Motores lineales montados sobre guías : El motor (o los imanes) se desliza sobre guías (sliders) a gran velocidad varios m/s, con aceleraciones de varios ‘g’ y con una precisión sub-micra. (No se trata de ciéncia ficción…, esta tecnología existe y ha evolucionado mucho en los últimos años: Si teneis alguna de TV pantalla plana 32” o más… en casa, con toda seguridad os digo que se han utilizado este tipo de motores tanto en su fabricación como en su control de calidad, demasiados píxels y demasiada precisión para un motor convencional), otro mercado habitual para este tipo de motor es el del semi-conductor y, en los últimos años está generalizando su uso en la fabricación de paneles fotovoltaicos. En los últimos tiempos se están empezando a utilizar este tipo de motores en otros sectores, como el embalage, la manipulación y conformación de objetos, etc…, el motivo es claro: calidad y velocidad!

En configuraciones más avanzada estos motores pueden trabajar cooperando sobre la misma guía, o en tandem paralelo p.e. puentes grua, o en conformaciones cartesianas XY, XYZ, XYZ+R (R=motor rotativo)

Motores lineales con eje cilíndico (motores lineales de fuerza): Existen varios nombres comerciales para este tipo de motor, pero en mi opinión la característica común a todos estos motores es que reemplazan la función de un cilíndro pneumático. Este tipo de motor acostumbra a tener un eje cilíndico en su interior, se trata efectivamente de un motor lineal, y su característica principal no es tanto la precisión como la fuerza que pueden desarrollar. Este tipo de motores tiene un recorrido (strocke) limitado comparado con el primer tipo de motores que pueden alcanzar varios metros de longitud.

Los encoders lineales son la evolución de las escalas lineales, ahora ya no hablamos de milímetros sinó de sub-micras de precisión, este tipo de encoders són utilizados en motores con guías, (los motores lineales cilíndicos acostumbran a tener su propio encoder integrado).

Estos encoders tienen una serie de marcas equidistantes que un sensor óptico o magnético puede leer.

Resulta interesante el caso de los encoders lineales semi-absolutos o de marcas codificadas. Este tipo de encoder es muy ingenioso, ya que utiliza marcas no equidistantes, estas están separadas siguiendo un patron numérico (generalmente dos series numéricas superpuestas), de manera que la distancia entre dos marcas es única, por tanto leyendo dos marcas consecutivas podemos saber la posición absoluta. Su utilización resulta muy interesante en guías lineales de varios metros, o p.e, cuando varios motores colaboran en una misma guía lineal.

Mi intención era hablar de protocolos de encoder, pero creo que será mejor hacerlo en otro artículo.

En pocas palabras, tenemos sistemas de realimentación de posición (velocidad) que en función de :

Su principio físico de funcionamiento serán:
-Resolvers (analógicos)
-Encoders (digitales)

Su capacidad de reverenciarse:
-Incrementales
-Absolutos (Absolutos multi-vuelta) ya sea mediante mecánica o electrónica con batería.

La naturaleza del motor a utilizar:
-Rotativos
-Incrementales

Según el protocolo:
-(Por su extensión lo trataremos en otro artículo).

Publicado en Servos, Variadores de Frecuencia (Inverter) | 7 comentarios

Tierras raras…

“Rare-earth shortages affect Germany” 

BERLIN- Germany’s industrial base is feeling the effects of current supply shortages of rare earth material, German economics Minister Rainer Bruederle said…”

A pie de página…, en una de las páginas interiores de un conocido periódico aparecía esta noticia.

Noticia, que… no es noticia…, porque hace tiempo que se sabe que China, que actualmente suministra el 97% de la producción mundial de tierras raras, ha cerrado el grifo a la exportación de dichos elementos.

Lo que para mi es noticia… es encontrar, aunque sea a pie de páginas y en un pequeño recuadro, la noticia.

Casualmente, durante esta semana y hablando con un colega…, me comentaba que en su país, muchas minas que habían cerrado vuelven a renacer, -incluso todo un pueblo ha tenido que ser trasladado –me dijo-  casa por casa…, puesto que bajo el subsuelo existían ricas fuentes de mineral y las nuevas galerías ponían en riesgo la población.

A esto… le pregunté:

 -¿No se tratará de tierras raras?

.-¿Tierras raras?…, ¿cómo…?- me preguntó…

En ese momento…. sentí que… era yo el ‘raro’ …, pues mi colega no parecía entender (a parte del idioma) de qué le estaba hablando.

Sí, son ‘raras’ porque son relativamente escasas…, algunas de ellas como el samario, son subproductos de fisión de átomos más pesados (aunque no parece una buena idea rescatar el samario de los residuos de las centrales nucleares… no seré yo quién se meta allí dentro…) y, por consiguiente son proporcionalmente poco abundantes en la naturaleza.

Las llamadas ‘tierras raras’, aquellos elementos con nombres ‘curiosos’ como el scandio, neodimio, samario,… que aparecen en la Tabla periódica y que…  en algún curso de EGB nos hicieron ’empollar’, ostentan… inmerecidamente el apelativo de ‘raras’. Pues… raras… lo que se dice raras… no son…de hecho, son la base tecnológica de nuestra sociedad actual.

Tierras raras son imprescindibles y están presentes en, pantallas planas de TV, discos duros, teléfonos móviles, fibras ópticas, sistema de telecomunicaciones, sistemas militares, electrónica de consumo, ….y…. muy señores míos… como ya sabeis…  son masivamente utilizadas en los servomotores!

Todos queremos servomotores cada vez más pequeños, con más par y más baratos! y eso se consigue utilizando en los imanes permanentes compuestos que contienen tierras raras.

En pocas palabras…, se avecina una tormenta tecnológica  debido a la especulación (o al legítimo derecho de China a controlar sus  preciados recursos naturales), o tal vez… a un poquito de todo…

Japón, líder tecnológico en electrónica de consumo   y masivo  exportador de alta tecnología (con el permiso de Samsung… ¿quién no tiene un televisor japonés en casa?) , es un importador de materias primas, y en especial de tierras raras.

El problema es tan serio… que la tensión entre el régimen de Pekín y su homólogo de Tokio, va  seriamente y repito… seriamente…, en aumento….

No sólo en un periódico sino también en algún canal de TV de  noticias , ha aparecido esta semana el  tema.   Y muy preocupados deben de estar los alemanes, pese a ser menos dependientes que Japón (una isla…) cuando el ministro de economía ha sacado a relucir el tema.

Cierto es China tiene ricas reservas minerales de tierras raras, pero no es menos cierto, que muchas minas, fuera de china se han cerrado o subexplotado por no ser rentables.

La consecuencia de la política china, será que muchas de esas minas (mmhmhmh…. a ver si vamos a encontrar tierras raras en mi pueblo! ) se volverán a abrir, pero  volver a explotar una mina cerrada no es algo que se pueda organizar en un día, ni en un mes ni dos ni seis… con toda certeza… las restricciones en el suministro impuestas por Pekín, provocarán un aumento en el precio de los equipos electrónicos y… muy especial en lo que nos afecta… en este Blog, …. los servomotores.

Es natural, que Japón, productor nº1 de servomotores: Yaskawa, Mitsubishi, OMRON, Panasonic, Fuji, Denki,…  y Alemania-Austria (nº2 en el ranking): SIEMENS, Lenze, SEW, etc… estén más que preocupadas por los efectos en su producción industrial, pues… no sólo afecta a las empresas fabricantes de servomotores, afecta en general a la producción  de maquinara, pues las máquinas…. utilizan servos!

Pongámonos a cubierto, rescatemos los viejos servomotores de nuestros desguaces y pongámoslos a subasta en E-bay, pues… de aquí a unos meses… valdrán más por su peso que por su función.

Algo bueno ha de tener España…, nuestros políticos, tanto PP como PSOE, (en eso no se diferencian….) han  basado  nuestro sistema productivo en no incentivar adecuadamente el I+D y  fomentar  una tecnología basada en la ‘apilación’ más o menos alineada y ordenada de tochos unos encima de otros (tendrá su mérito… no lo dudo… pero genera poco valor añadido para el país…). Y… hasta donde yo sé… nuestro sistema productivo, basado en el cemento, el pladur el tocho y la regata (que no las del monarca…) , no  se verá afectado por la escasez de tierras raras (quito de los 4 desafortunados que leen este blog… y que asumo… utilizan servos… en sus máquinas), eso sí… como esto siga así…. los del ‘tocho’ no van a tener un duro para comprar televisores, teléfonos móviles, i-phones, y similares…, pues si el tema no se arregla… los precios se van a poner por las nubes!

Desde mi ignorancia… formulo una pregunta… ¿están pensando los diseñadores de coches eléctricos en utilizar pequeños, potentes y eficaces motores de imanes permanentes?, porque si es así… la tormenta… puede convertirse en huracán….

 http://www.spiegel.de/international/business/0,1518,725606,00.html

Publicado en Cosas de la vida | 2 comentarios

El `Motion Controller`

El titulo de este Blog es “Motion Control”, pero hasta ahora no he escrito ninguna entrada dedicada al controlador de movimiento.

Nos hemos centrado en los actuadores: motores, convertidores de frecuencia, etc…  puesto que para poder hablar del controlador de movimiento creí necesario publicar previamente algunas nociones sobre motores, actuadores, etc…

Pese a que no doy por cerrados los posts relacionados con los actuadores, creo que el ‘Blog’ pide que de una vez por todas empecemos a hablar sobre controladores de movimiento.

Para mí es un ‘dilema’, puesto que… la teoria e implementacion de los actuadores es bastante similar para cualquier fabricante…, pero… los controladores de movimiento pueden variar mucho, en su concepción, forma de trabajar, lenguanje  entre distintos frabricantes.

Mi objetivo es cubrir, en esta primrea fase, control de movimiento de propósito general, es decir…, dentro del control de movimiento podemos hablar de control discreto de ejes, control de movimiento punto a punto (PTP), control de ejes sincronizados, control de ejes coordinados, transformaciones kinematicas (robots), control numerico CAD-CAM, etc…

Otro dilema es… qué ‘lenguaje’ o controlador explicar…

Después de mucho reflexionar, he decidido utilizar el standard ‘PLCOpen’, puesto que existen en el mercado muchos controladores de propósito general que permiten la utilización de librerías PLCOpen.

Existen pequeñas variaciones en la implementación, pero la portabilidad es casi total..

Por ejemplo, la función “Home” busqueda de origen, en un controlador ControLogix  de Allen Bradleyse realiza con la función “MAH”: Motion Axis Home, en un controlador Trajexia de OMRON, se realiza con la función “DATUM”,  y en plcOpen existe el function block “MC_Home”.

En este blog hablaré de “MC_Home” y no de MAH o Datum, pues creo que de este modo podré cubrir más fabricantes, entendiendo que los lectores utilizando Trajexia o ControLogix, podrán fácilmente también entender la funcionalidad de cada comando y ‘portarlo’ al equivalente en su controlador si no es PLCOpen compatible.

Mi objetivo final una vez explicado el controlador de movimiento y los comandos plcOpen, es el de poder discutir aplicaciones tipicas: corte al vuelo, máquinas de embasado, etc… utilizando como lenguaje común plcOpen.

Existe un tema pendiente al que también dedicaré algunos artículos y es el de cómo ligar el controlador de movimiento al servosistema, es decir: control por pulsos, control analógico, control por bus de motion, etc…

Este post es más una declaración de intenciones, para que vosotros podais juzgar si este post os interesa o no, y si voy por buen camino…

Sobre PLCopen, os diré que es una organización formada por diferentes fabricantes de de equipos de control así como de usuarios.

El objetivo final de la organización es la portabilidad entre programas de PLC y de control de movimiento.

En la práctica se está convirtiendo en un standard muy popular para los fabricantes del centro y norte de europa, y poco a poco está penetrando en América y Ásia.

Muchas gracias!

Publicado en Control de Posición | 3 comentarios

Elementos de un servo drive

El propósito de este post es el de mostrar los elementos básicos presentes en cualquier servodrive. Hasta ahora nos hemos limitado a la teoría pero resultará interesante ver como se plasma dicha teoría en un producto real.

 

OMRON Accurax G5 EtherCAT

Display

Muchos servos incluyen una pantallita o Display para informar del estado del servo así como posibles anomalías.

Entrada potencia:

La entrada de potencia (desde la red eléctrica, previo paso por filtros si fuera necesario para cumplir EMC), aporta la energía necesaria al Drive para que posteriormente rectificada y troceada sea entregada al motor.

Normalmente existen versiones del servo para monofásico y trifásico. La frontera entre sistemas monofásicos y trifásicos acostumbra a situarse alrededor de 1KW-1.5 KW. dependerá del fabricante.

La mayoría de los servosistemas tendrán a su vez una entrada adicional de control, que alimentará la lógica del servodrive. Esta entrada acostumbra a ser de 230 V (para sistemas monofásicos)  ó 24 V (para sistemas trifásicos).

La segregación entre la alimentación del DC BUS y Control, permite por ejemplo deshabilitar toda la potencia del DC BUS manteniendo el control (p.e. para que el servo no pierda la realimentación de posición del encoder).

Salida Potencia

La salida de potencia es la que alimenta al motor, es por donde la onda PWM de alta potencia será conducida para hacer girar el motor según velocidad y par comandados.

Por tratarse la señal PWM de una señal de alta frecuencia y alta potencia, existe la posibilidad de que ondas radiadas afecten a otros equipos adyacentes. Para evitar este problema  deben seguirse las instrucciones de montaje e instalación del fabricante del equipo, un mal apantallamiento o aislamiento de estos cables (p.e. si se los fabrica uno mismo, o se realizan empalmes) es la causa de numerosos problemas de ruido eléctrico (que son los ‘Poltergeist’ de nuestro mundillo…), de difícil diagnosis y en ocasiones dificil solución.

Es habitual en la mayoría de los servos que se permita el acceso al DC BUS mediante bornas. De este modo se puede controlar el nivel del DC BUS, ya sea con resistencias de frenado (quemamos el exceso de energia al regenerar) o mediante regeneración a la red eléctrica (acostumbra a utilizarse en sistemas de muy alta potencia debido al incremento en los costes).

El servo de la imagen anterior, permite al acceso a dichas bornas del DC BUS, pero para aplicaciones donde existan muchos ejes y en los que se produzca regeneración y consumo simultáneo por varios ejes, existe la posibilidad de cablear los DC BUS de varios servos, de este modo en teoría la energía regenerada de un eje puede ser aprovechada por otro.

La teoría es muy bonita, pero en la práctica no son tantas las aplicaciones en las que los ejes trabajen de un modo en la que el aprovechamiento de la regeneración sea rentable, p.e. en una impresión offset con muchos ejes, lo habitual es que los ejes que realmente consumen o generan mucha potencia, aceleren todos a la vez o deceleren todos a la vez…

Pero ciertamente, existen aplicaciones en las que podría ser rentable aprovechar dicha regeneración, es por eso que muchos fabricantes presentan modelos de servosistemas en Rack, de modo que la etapa de rectificación se sitúa en la cabecera  del servo y los ejes, son módulos onduladores PWM individuales. Esta configuracióntiene sus ventajas y desventajas, y será adecuada o no en función de la inversión inicial en hardware y naturaleza de la aplicación (regeneración)

Ejemplo de este tipo de configuración es el Kinetix 6000 de Allen-Bradley

 

 

 

 

Comunicaciones Serie

Pese a que hoy en día la mayoría de los servos presentan versiones con Buses de Motion Control Digitales, lo cierto es que existen muchas aplicaciones que se siguen solucionando con consignas analógicas o de pulsos. Para poder configurar dichos servos se acostumbra a dotar al servo de un puerto de comunicaciones serie. En el pasado estos solían ser RS-232 o 422, pero en la actualidad muchos servos de nueva generación vienen provistos de puertos serie USB, que permiten una comunicación mucho más rápida con el equipo.

Incluso los servos provistos de protocolo de comunicaciones para Motion, acostumbran a conservar el puerto serie/USB, es siempre una puerta de acceso adicional cuando por algún motivo es necesario.

Motion BUS

Para sistemas multiejesen los que se requiere acceso a parámetros de muchos ejes y funciones de control de eje en las que varios ejes funcionan sincronizados o coordinados, acostumbran a utilizarse sistemas de Motion BUS digitales.

Existen muchos buses, ya sean propietarios del fabricante o abiertos mediante organizaciones. Cada fabricante intentará convencernos de las bondades de su BUS, lo cierto es que en la actualidad nos encontramos en un momento de transición entre buses con un ancho de banda ‘justito’ para controlar muchos ejes 10-20 Megas, a  protocolos basados en medio fisico Ethernet. En la actualidad el número de ejes por máquina está aumentando, así como el número de ejes que es capaz de controlar un Motion Controller. La misma máquina embolsadora se puede solucionar con 4 o con 14 ejes, la diferencia está en los ejes auxiliares que permiten funciones adicionales como la automatización de cambios de formato o producto. Son estas funciones adicionales y los beneficios para el usuario final, las que justificarán el pagar ‘más’ por una máquina hecha en Europa o escoger una máquina fabricada en China.

Señores… es un hecho ! no podemos competir en precio… pero sí en tecnología! y está es la estrategia adoptada por muchos fabricantes de maquinaria , p.e. alemanes, que de este modo pueden seguir ‘vivos’ en el mercado frente a máquinas ‘más primitivas’ fabricadas en p.e. China.

Seguridad Integrada

La normativa de seguridad europea es muy estricta y cada vez lo va a ser más.

Ciertamente las móviles de una máquina son un punto de peligro, es por esto que desde hace algunos años están apareciendo servosistemas con funciones de seguridad integrada, el motivo es claro: aumentan la seguridad (la seguridad está integrada en la electrónica del drive, reduciéndose así el tiempo re reacción), y facilitan el proceso de certificación de la seguridad de la máquina.

Este es un tema muy interesante que se merece uno o varios posts…

Entradas y salidas I/O

Todos los servos necesitan interactuar con su entorno, en función de la naturaleza del servo y p.e. de la disponibilidad de un bus de control de motion, los servos vendrán provistos de más o menos entradas.

I/O’s típicas en un servo son:

-Enable/Run: Habilitación de la etapa de salida del DC BUS

-Alarm Reset: En caso de fallo…se requerirá de una entrada para borrar la alarma.

-Positive Over Travel (POT): Los límites de carrera positivos indican al servo (p.e. mediante un sensor inductivo) que ha alcanzado una posición física que no debe de ser superada.

-Negative Over Travel (NOT): Análogamente al POT, existen posiciones en sentido negativo de movimiento que no deben de ser superadas.

-TouchProbe (o captura de registro): Se trata de una entrada ultrarápida que permite al servo memorizar la posición del eje cuando dicha entrada es activada.

Adicionalmente el servo acostumbrará a tener como mínimo las siguientes salidas:

-/Alarma (indicará que el servo se encuentra en estado de fallo)

-Ready (todo va bien…)

-Brake (El servo está operando un motor con freno eléctrico.

Existen muchas más otras I/O’s configurables, que estarán presentes o no en función del servo y fabricante: p.e. salidas configurables en función del estado del servo: a velocidad, en posición, etc… entradas adicionales de registro, cambios de ganancias, etc..

Realimentación del encoder del motor

Esta entrada es necesaria para un control preciso del motor, es imprescindible para poder cerrar el lazo de velocidad y, en la mayoría de las aplicaciones también se utilizará para cerrar el lazo de posición.

Realimentación Encoder Auxiliar

La realimentación del lazo de velocidad nos vendrá dada por el encoder del motor, pero en ocasiones resulta útil poder cerrar el lazo de posición con otro encoder adicional: p.e. cuando la mecánica de la máquina es francamente mala… pueden existir notables holguras entre la posición del eje del motor y la posición de la carga que queremos controlar. También se da el caso de sistemas que tengan un ‘deslizamiento’ inherente, p.e. una cinta transportadora de papel en la que exista un cierto deslizamiento del papel respecto al eje.

Publicado en Servos | 9 comentarios

Dimensionamiento de un servo motor

¿Cuántos caballos necesito para mi aplicación?

Pues…  sin dudarlo.. cuantos menos mejor!   sobre todo teniendo en cuenta cómo está evolucionando el precio de la electricidad… (no hay más que comparar la factura de estos últimos meses con p.e. la que teníamos hace un par de años….)

Para colmo, normalmente se cumplirá que cuanto más potente sea el sevomotor, más caro nos resultará…

Por tanto… el objetivo será elegir un servo con la mínima potencia necesaria para solucionar nuestra aplicación.

¿Y qué potencia es la mínima requerida para mi aplicación?

Para responder a esta pregunta lo primero que temos que hacer es recitar el ‘mantra’ : “Lo que mueve al mundo es el Par” y de este modo… podremos reformular la pregunta:

¿A qué velocidad y qué par motor se requieren para mi aplicación?

Esta pregunta ya me hace sentir mejor…, de otro modo… parece que estemos hablando con un vendedor de coches de segunda mano,  nos os parece…?

1) Cálculo del perfil de velocidades

 Lo primero que nos hemos de plantear es qué perfil de velocidades vamos a necesitar, es decir…, ¿cuánto tiempo he de acelerar?, ¿hasta que velocidad he de acelerar? ¿durante cuánto tiempo he de mantener la velocidad? ¿cuánto tiempo va a durar la deceleración? ¿tendré algún tiempo para descansar?

Para responder a estas preguntas… lo más sencillo es hacer una tabla en la que se indiquen las posiciones en función del tiempo, el cálculo de las velocidades y aceleraciones es inmediato:

Imaginemos que el ciclo de trabajo continuo (heavy duty) dura 1 segundo, y que el 25% del tiempo aceleramos de 0 a 60º, y mantenemos la velocidad constante durante el 50%  del ciclo y, al legar a 300º desaceleramos hasta 0 rpm

Si ponemos esta información en una tabla y calculamos la velocidad de cada tramo obtendremos un perfil de velocidades trapezoidal con una velocidad máxima de 80 rpm (un valor ridículo para un servo… pero se trata de hacer un ejemplo sencillo).

 

Por tanto.. la respuesta a la primera pregunta es, que el motor que escojamos necesita ser capaz de trabajar como mínimo a 80 rpm

2) Cálculo del par motor

No volveré a repetir el ‘mantra’ pero sì que recordaré una de las leyes de la dinámica de Newton:

F=m · a

Pero a no ser que estemos trabajando con un motor lineal, en la mayoría de los casos enunciaremos la fórmula anterior para un sólido en rotación:

Par=Inercia · Aceleración angular

De la tabla anterior se desprende que la máxima aceleración angular la podemos calcular dividiendo para cada tramo la variación de velocidad entre el tiempo requerido.

En nuestro caso tenemos que el motor debe acelerar (o decelerar) 80 rpm en 0.25 segudos, por tanto:

80 rpm/0.25 s= 320 rpm/s^2

Que pasadas a radianes/s^2 son:  33.51radianes/s^2

Para calcular el Par necesitamos un dato adicional, la Inercia !

El cáculo de la inercia Total del sistema será la suma de las inercias de cada uno de los componentes rotativos del sistema.

Por ejemplo, si el motor ha de mover un plato giratorio y entre el plato y el eje del motor hay un reductor, tendremos que calcular la inercia del plato (incluida la carga) y del reductor (nos lo facilitará el fabricante del reductor). Si existiera alguna fuerza exterior a favor o en contra del par motor, ésta también debería de ser sumada o restada para el cálculo del par.

Un sistema de motor + reductor + Plato giratorio, puede modelizarse con la siguiente cadena cinemática:

El cáculo del momento de inercia de cada elemento, por ejemplo del plato, es sencillo, una vez conocida la geometría y la densidad del material, será suficiente con aplicar la fórumula del sólido rígido correspondiente (momentos de inercia), para ello podemos desempolvar el libro de mecánica del sólido rígido y buscar en las tablas…o podemos hacer uso de google, o…en la mayoría de los casos… el fabricante del motor nos facilitará un software para dimensionar el servo que, por supuesto será también capaz de ayudarnos a calcular momentos de inercia de mecanismos habituales.

Una vez obtenemos el momento de Inercia  imaginemos que el total de las inercias suma :

1.061 Kg·m^2

calcular el par máximo necesario para el motor es inmediato:

Pmáximo =Inercia · Aceleración angular máxima

Pmáximo= 1.061  ·  33.51 =  35.55 N·m

Por tanto… de (1) y (2)  se obtiene que en principio necesitamos un motor capaz de :

Obtener una velocidad de 80 rpm

Con un par máximo de 35.55 N·m

Pero… podemos ajustar un poco más nuestra elección si consideramos el par efectivo, o par RMS.

El valor del par que hemos obtenido anteriormente se corresponde con el valor de pico de par del motor (peak torque), normalmente este valor se corresponde con valores del 300% o más del par nominal del motor.

El fabricante del motor siempre nos dará dos datos referidos al par:

-Par nominal (Es el par para trabajo contínuo del motor (heavy dutty)

-Peark Torque (Es el par que instantáneamente (unos pocos segundos) el servo es capaz de suminstrar… pasados estos segundos… y para evitar quemar el motor… el servoamplificador generará una alarma (típicamente… overload, o overcurrent…) y entará en fallo.

Si nuestro ciclo de trabajo no es severo, es decir… si existe por ejemplo un tiempo en el que el motor no está acelerando ni decelerando, mejor aún! si existiera un intervalo de tiempo en el que el motor estuviera parado…  veríamos que el par efectivo (o RMS) disminuye notablemente.

El par RMS se obtiene de la raíz cuadrada del producto ponderado por el tiempo del par necesario para cada tramo dividido por el total del tiempo de ciclo.

                 (TRMS)2=(T12t1+ T22t2+ T32t3+ T42t4)/(t1+t2+t3+t4)

En nuestro ejemplo, al tratarse de un  prefil trapezoidal obtendríamos los siguientes resultados:

Es decir… necesitaríamos un motor con un par nominal que exceda los 25.14 N·m  y con un pico de par de 35.54 N·m.

Conclusión

Dimensionar un servo es relativamente sencillo…, pero en ocasiones resulta tedioso, por tanto recomiendo utilizar el software que el fabricante de cada servo nos facilite (acostumbra a ser gratuito….).

Para este ejemplo he utilizado el software “Motor Selection” de OMRON

Publicado en Servos | 5 comentarios

Tuning: “Lo que mueve el mundo es el…PAR!”

 

Lo que mueve el mundo es el  PAR!

Esta afirmación, así de contundente…, la vi por primera vez hace unos cuantos años…, y… en aquel momento, en el que conocía más los PLC’s que el control de movimiento… la interpreté como una reivindicaciónde la importancia del ‘par’ frente a otra magnitud física, la ‘potencia’ a la hora de seleccionar un motor.

Incluso en la actualidad…, los anuncios de automóviles insisten… en convencernos de la compra de tal o cual coche por los caballos que tiene, pero… para nada nos hablan del par ni de las RPM del motor…, y es que sin las curvas de ‘gancho’…  nunca sabremos si ese motor es el de un ‘vólido’ o el de un ‘tractor’.

Por suerte… en nuestro ‘mundillo’ de la automatización  industrial, todo el mundo tiene ya claro… que hablar de un motor…es hablar de ‘par’ y ‘RPM’, y los KW… no son más que una consecuencia :

Potencia_mecanica = Par x velocidad_angular.

Hoy… desde la distancia… la frase ‘lo que mueve el mundo es el par’… tiene, para mí… una segunda lectura… y es que… en última instancia… lo que un servocontrolador regula es el ‘PAR’  y regular bien el par es la base… de toda regulación.

Tuning…

 Lo que esperamos obtener después del ‘tuning’ (afinamiento) o ajuste es la mejor reacción del servo frente a un cambio en la consigna.

 La consigna puede ser:

  •  Un comando de par (lo que mueve el mundo…)
  • Un comando de velocidad (este a su vez generará un comando para el lazo de par.
  • Un comando de posición (este a su vez generará un comando para el lazo de  velocidad)

 Imaginemos que hacemos un doble nudo en un zapato… el primer nudo debe de estar bien apretado, si no es así… por mucho que apretemos el segundo nudo…el zapato no quedará bien ajustado…

En el caso de un servo… pasa lo mismo… el lazo de par  debe quedar perfectamente ajustado, para que un buen ajuste del lazo de velocidad tenga efecto. Análogamente el lazo de velocidad debe de estar bien ajustado para que un buen ajuste en el lazo de posición tenga efecto.

Para poder ajustar el lazo de par, es imprescindible que el servoamplificador tenga modelizado el motor que va a utilizar, esto es, que conozca  sus parámetros eléctricos y mecánicos.

 Normalmente esto no supondrá un problema, puesto que el fabricante del amplificadorserá el mismo que el del motor, por lo que de algún modo u otro el amplificadortendrá toda la información que necesita del motor. En servosistemas de gama media y alta suele existir un protocolo de datos entre motor y amplificador, este protocolo no sólo suministra información sobre la posición del motor sinó que al iniciar la comunicación transmite toda la información necesaria para el control al servoamplificador.

Fantástico! Esto de ajustar un motor es pan comido…

Sería pan comido… si no fuera… porque fijada al eje del motor siempre tendremos una carga (load), de otro modo… ¿para que queremos el motor?…

En definitiva… nuestro objetivo será acelerar y decelerar la carga del motor (suministrar más o menos amperios)  para de este modo poder regular su velocidad y en última instancia su posición.

 ¿Cómo regular la aceleración de una carga?

 F= m · a

 Pero en caso de cargas rotativas… (siendo los motores rotativos los más habituales) tenemos que:

Fuerza

Par
Masa Momento de Inercia
Aceleración Aceleración Angular

Y la relación entre par (T), momento de inercia(J) y aceleración angular (a):

T= J · a

En la anterior ecuación,  lo que a priori se desconoce  es… el Momento de inercia “J”.

El momento de inercia   depende de la geometría y la distribución de la masa: Típico es el ejemplo de la patinadora girando sobre se misma y que regula su velocidad en función de lo separados que tenga sus brazos del cuerpo (está variando el momento de inercia!)

Si el servoamplificador no utiliza el valor correcto para  el momento de inercia en sus cálculos… le será imposible entregar el par adecuado para la aceleración demandada… porlo que el control del motor será malo.

El momento de inercia es por tanto un parámetro crítico para el ajuste de un sistema servomotor rotativo.

 ¿Cómo saber  momento de inercia?

El momento de inercia de la carga es un dato que se ha tenido en cuenta a la hora del dimensionamiento y elección del motor, (en algún momento tendré que hacer un ‘post’ sobre dimensionamiento de motores) ,por lo que en principio… es un dato conocido.

¿Y si por algún motivo se desconoce el  dato… o su cálculo no es ‘trivial’ (muchas aplicaciones tienen momentos de inercia variables: ejemplo un desbobinador, a medida que el rollo se hace más pequeño tanto su radio como su masa disminuyen).

La mayoría de los servos tienen la posibilidad de estimar la inercia durante el proceso de autotuning, o en tiempo real durante todo el tiempo de operación.

En ocasiones , lo que se acostumbra a utilizar no directamente el valorde la inercia sino la relación  de inercias entre motor y carga. Se trata de un valor porcentual que refleja la diferencia en momentos de inercia entra motor sin carga y motor con carga.

La relación de inercias es un valortan importante para la regulación del motor que en el caso de algunos servos (japoneses generalmente) , acostumbra a ser el parámetro más importante de todos ya que si este está bien calculado, se pueden llegar a determinar las ganancias de los lazos de par, velocidad y posición en función de tablas de rigidez (stiffness or rigidity) del sistema.

Ganancias y Rigidez del sistema.

Una vez conocida la relación de inercias del sistema (en todo momento), el servo sistema podrá determinar el par necesario (corriente de par), para acelerar o decelerar el motor en función de las consignas de velocidad necesarias para completar su perfil de posición.

Esta regulación se realiza con tres lazos: par, velocidad y posición, en cascada y, cada lazo tendrá su sistema de ganancias y filtros, en función de cada servo.

Cuanto mayor sea el ancho de banda del sistema, mayores serán las ganancias (armonizadas y normalizadas) que se podrán aplicar.

El ancho de banda del sistema depende de la ‘rigidez’ del sistema. Un sistema rígido se podrá regular  correctamente en un rango de frecuencias mayor que un sistema poco rígido.

Ejemplo:

En un sistema con sus componentes rígidamente unidos, un desplazamiento “X” se traducirá en un desplazamiento “Y” en su otro extremo,  siendo Y=X para cualquier frecuencia de excitación de “X”
En un sistema poco rígido, un desplazamiento“X” se traducirá en un desplazamiento “Y” siendo Y un valor variable en función de la frecuencia de excitación

En el caso de un servo sistema, algunos fabricantes han sido capaces de definir tablas ‘harmonizadas y normalizadas’ de ganancias de los lazos de regulación del servo en función de la rigidez del sistema.

 Esta es la filosofía de la mayoría de fabricantes japoneses, para los que el ‘tuning’ de un servosistema, se basa en modelizar el sistema en función de las características del motor, la relación de momentos de inercia y, la rigidez del sistema.

 Los resultados de este tipo de ‘tuning’ son excepcionalmente buenos.

 Cabe decir que en paralelo existen un montón de algoritmos de modelización, control de vibraciones de la carga , control de resonancias, control de perturbaciones, control de la variación de inercia, feedforwards, etc…  

 Pero todos estos algoritmos, que marcan la diferencia,  forman parte del ‘knowhow’ de cada fabricante.

 Si no se ha  trabajado con servosde este tipo, tal vez  resultará curioso… que en definitiva el ‘tuning’ se limite a calcular el valor de relación de inercias y rigidez del sistema.

 Cierto es que siempre es posible modificar ligeramente manualmente los valores de ganancias para acabar de ‘afinar’ el sistema al gusto de cada uno.

 Los primeros controles de posición que utilizé, hace ya algunos años… (y muchos de los que hay hoy en día en el mercado) no utilizan tablas de rigidez en  el proceso de autotuning, se basan en cambio  en una serie de interaciones obteniendo como resultado de cada iteración una mejor aproximación de los valores ideales de ganancia de los distintos lazos

 ¿Qué método es mejor?

 Creo que no hay una respuesta  clara para esa pregunta.

 Ambos métodos deberían concluir en un control fino del motor  y, esto dependerá mucho de la calidad del servo y lo ‘bueno’ que sea la persona encargada de hacer el ajuste del servo.

 ¿Cómo valorar un tuning?

 Para saber si un servo está bien ajustado o no… hemos de fijarnos en la ‘bondad’ del mismo a la hora de seguir una consigna, cuanto más se ajuste la respuesta del mismo a la consigna, mejor ajustado estará. Para ello… podemos graficar el perfil comandado vs. La respuesta del motor, o.. directamente el error de seguimiento.

 Una buena herramienta es un análisis frecuencia del mismo (Diagrama de Bode), ‘idealmente’ deberíamos ver una linea de ganancias horizontal, que nos indicaría que la ganancia no varía para ninguna frecuencia, esto es… imposible…, al aumentar la frecuencia el control del motor resulta más difícil…, hasta llegar a un punto (frecuencia de corte, (coincide con una perdida en ganancia de -3 dB) en la se considera que el servo ya no responderá de una forma deseable a la consigna demandada.

 En todo caso, no debemos perder de vista que el mejor ‘tuning’ no es siempre lo mejor para nuestra aplicación, por ejemplo aplicar una rigidez elevada (ganancias altas) a un sistema mecánico que no alcanza dicha rigidez, pese a que eventualmente pueda obtener un error de seguimiento mínimo tendrá como consecuencia una sobreactuación del servo, vibraciones no deseadas, esfuerzos mecánicos y en definitiva podría derivar en inestabilidad en el sistema.

 Sentido común… hay que ‘apretar’… pero no ‘ahogar’…

 Un sistema con poca rigidez es por ejemplo un sistema con transmisiones elásticas (p.e. servos rotativos en una cinta transportadora de goma).

 Un sistema con alta rigidez es porejemplo, un sistema de motor lineal (no todos los motores son rotativos!) que por su naturaleza y rigidez tiene unas prestaciones dinámicas imposibles para un motor rotativo.

Sistema con motor linear
Sistema super-rigido de motor lineal
Publicado en Servos | 5 comentarios