SUMO AUTOMATION

Blog de divulgación técnica. Artículos basados en FAQs referentes al campo de la automatización industrial.

Mostrando entradas con la etiqueta Motion control. Mostrar todas las entradas
Mostrando entradas con la etiqueta Motion control. Mostrar todas las entradas

miércoles, 26 de enero de 2022

MOTION - Jerk

Motion control
Todo aquel que haya desarrollado aplicaciones de motion control se habrá encontrado con esta palabra, pues es un parámetro requerido en la mayoría de FBs para el control de movimiento en servoaccionamientos.

El jerk, se puede traducir como "tirón" o "sacudida".
Matemáticamente se define como la derivada de la aceleración. Es decir, la velocidad con la que cambia la aceleración.
El jerk es a la aceleración lo que esta es a la velocidad...

Muchos sabemos más o menos a que hace referencia, pero en ocasiones se desconoce en que consiste realmente...
Por ejemplo, en que unidades trabaja, que valor debe tomar, los efectos que produce, etc.

Este artículo presentará esta magnitud física de una forma más descriptiva, detallando como se puede utilizar para nuestros perfiles de movimiento en aplicaciones de motion control.

¿QUÉ ES REALMENTE?

De la misma forma que la aceleración determina en cuanto tiempo alcanzaremos una velocidad, el jerk determina en cuanto tiempo alcanzaremos la aceleración deseada. 
Entonces, el "perfil de aceleración" de un movimiento dependerá del jerk.

En un eje, el jerk suele expresarse en unidades/s^3
Si, por ejemplo, trabajamos con un eje en mm...
La velocidad se mediría en mm/s, la aceleración en mm/s^2 y el jerk en mm/s^3. 

Conceptualmente, podemos entender el jerk como el impacto que sufre la mecánica ante cambios de velocidad. 
Podemos decir que contra más bajo sea su valor mejor. Pues más se suavizará la dinámica.


¿CÓMO FUNCIONA?

> Partiremos de un ejemplo muy común en control de movimiento... Un perfil de velocidad trapezoidal:

Motion control
Consideremos Tiempo1 como tiempo para llegar a velocidad deseada y Tiempo2 para llegar a la aceleración...
·Sabemos que: 
Aceleración = Velocidad / Tiempo1
·Entonces: Jerk = Aceleración / Tiempo2
Vemos que este perfil de movimiento requiere una aceleración "instantánea" (onda cuadrada). Siendo así, teóricamente, el Tiempo2 sería nulo y el jerk infinito...

De todos modos, un eje nunca tiene una dinámica ideal... Supongamos que la aceleración para alcanzar la velocidad en 0.3s es de 5000mm/s^2. Si el servomotor puede llegar a esa aceleración en 0.00001s. Entonces, el jerk sería de 500000000mmm/s^3. Muy alto.

> La dinámica del ejemplo anterior es evidente que supone un golpe fuerte para la mecánica, pero el jerk nos permite "acelerar la aceleración". Lo que suavizaría ese tirón.
Por ejemplo, podemos lograr fácilmente un perfil de velocidad con curva en S:

Motion control
En este caso, queremos que se llegue a la aceleración deseada en 1/3 del tiempo. 
Pero, para que la velocidad se alcance en el mismo tiempo que con el perfil trapezoidal
, la aceleración máxima debe ser superior a la del caso anterior en un 150%.
Entonces, la aceleración será una onda trapezoidal, pero tendrá la misma área que la onda cuadrada del caso anterior.

·Siendo así: Aceleración = 1.5 x (Velocidad / Tiempo1)
·Por lo que: Jerk = Aceleración / (Tiempo1 x 1/3)

En el primer caso, requeríamos una aceleración 5000mm/s^2 para alcanzar la velocidad en 0.3s... Con la curva en S, la aceleración aumentaría a 7500mm/s^2, pero el jerk pasaría a ser de 75000mmm/s^3. Mucho más bajo.

> Aún se podría suavizar más el impacto (al máximo)... Mediante una aceleración con forma de onda triangular. Es decir, consiguiendo que la aceleración nunca fuera constante.
En este caso, se tardaría la mitad del Tiempo1 en acelerar y la otra en desacelerar (1/2).
El resultado sería un perfil de velocidad con la curva en S más pronunciada.
·Para ello: Aceleración = 2 x (Velocidad / Tiempo1)
·Entonces: Jerk = Aceleración / (Tiempo1 x 1/2)
Véase que se trabajaría con un jerk todavía más bajo. De hecho, el mínimo con el que podemos asegurar que se alcance la velocidad en el tiempo deseado... Pero alerta, se requeriría llegar a una aceleración que duplica a la del perfil de velocidad trapezoidal (200%). 

¿PRECAUCIONES?

Por defecto, en algunos FBs motion no es estrictamente necesario configurar jerk. Siendo así, lo normal es que se utilice el valor máximo de jerk que el eje es capaz de dar.
Entonces, estaríamos hablando de un perfil de velocidad trapezoidal. Y, el repetido impacto de la mecánica al acelerar/desacelerar, podría provocar un estrés en la mecánica que derivaría en un desgaste prematuro de la misma. 

Ahora bien, un valor muy bajo de jerk también puede ser contraproducente. Pues, en ese caso, puede no llegarse a alcanzar la aceleración necesaria. 
Una onda de aceleración triangular es el límite. Con un jerk superior al de ese caso, el eje no podría llegar a la velocidad consignada en el tiempo deseado. Es como si, directamente, bajáramos el valor de la aceleración. 

Se debe tener en cuenta que suavizar la dinámica con el jerk tiene un precio... Como se ha visto, se requieren mayores aceleraciones para mantener los tiempos del perfil de velocidad. Eso implica picos de par directamente proporcionales al aumento de la aceleración.
Es importante tener eso en cuenta cuando se dimensiona el servoaccionamiento. 

En algunos equipos, se emplea el smooth (suavización) en lugar del jerk. Básicamente es el concepto contrario al jerk y suele expresarse en tanto por ciento. 
Con una onda de aceleración cuadrada el smooth sería del 0%, con una onda trapezoidal del 50% y con una onda triangular del 100%.

lunes, 10 de enero de 2022

MOTION - Referenciado con homing

El homing en motion control se define como un modo de funcionamiento del servo, utilizado para referenciarlo en una posición mecánica concreta (absoluta). 

Motion control
Para ejecutar esta funcionalidad, se suele utilizar el bloque de función MC_Home (PLCopen) en el programa del controlador. 
Ya se presentó este FB de motion, junto a otros, en un artículo anterior (enlace aquí). 

Al ejecutar la instrucción, se da la posición de home al eje. No obstante, hay distintas formas de hacerlo, dependiendo de la parametrización previa que se determine en el servo para ello.

El presente artículo pretende esclarecer porque utilizar este modo de funcionamiento y como hacerlo. Detallando los procedimientos más habituales para su implementación. 


¿PARA QUÉ SIRVE
?

Tal como ya se ha comentado, el homing permite referenciar una posición en el eje, normalmente para disponer de un origen a partir del cual realizar posicionados absolutos.
Recordemos que en un posicionado relativo la posición de origen sería indiferente, pues la consigna no deja de ser un incremento de unidades respecto la posición actual. 

Normalmente se utiliza para servomotores con encoders incrementales, dado que no guardan la posición tras nuevo ciclo de alimentación... En la mayoría de casos, esto implica tener que volver a calibrarlos mediante el homing.
Aún así, puede requerirse hacer un homing a un servomotor con encoder absoluto. Ya sea para posicionarlo la primera vez que se pone en marcha o bien si la secuencia de la aplicación lo requiere... 

Solemos distinguir entre dos tipos de homing; los de referenciado activo y pasivo
En los activos, se hace una secuencia de movimientos hasta la detección de una señal física para, una vez en posición, dar el origen de referencia al eje.
En los pasivos, simplemente se da un origen de referencia  al eje en la posición actual en la que se encuentra.

¿MÉTODOS?

Seguidamente se definirán, de forma genérica, los distintos procedimientos que habitualmente admite la funcionalidad de homing.
Cabe destacar que el uso de un método u otro se debe configurar en el eje previamente. De tal manera que, al lanzarse la instrucción de MC_Home, se ejecutará la secuencia acorde...

Empecemos con los referenciados activos

Motion control
- Referencia a fase Z
La fase Z (o pulso índice) es una señal física del encoder que sirve como marca. Esta se activa cada vuelta de motor indicando al drive que ha vuelto a pasar por ese punto.

En el referenciado a la marca Z, se realiza un movimiento desde la posición actual hasta el siguiente pulso índice que detecte el drive. Una vez se llega a esa punto, se le da la nueva posición origen al eje. 
Se suele utilizar como referencia para poder asegurar un posicionado exacto, pues esta señal nunca se desajustará...
Pero alerta... Cada motor tiene la fase Z en un punto distinto. Se debe tener eso presente, sobre todo, si se hace un cambio de motor.

- Referencia a señal de home
La señal de home suele ser un sensor externo conectado a las entradas del drive. Específico para determinar la posición de origen, pues no tiene otra funcionalidad. 
En el movimiento de referencia a la señal de home, el eje se mueve hasta la detección de la conmutación en dicha entrada. Es allí donde se establece la nueva posición de origen. 
El motor no tiene porque parar y referenciarse en ese punto exacto... Es común que se aplique un offset respecto a la posición de detección para margar el origen.
También es muy común, para mayor precisión, que tras la detección del sensor se vaya buscar la fase Z más cercana para que ese punto sea el home.

- Referencia a final de carrera
Los ejes también suelen tener finales de carrera (conectados a las entradas del drive). No dejan de ser sensores que sirven para imponer límites de hardware del motor, pero también pueden utilizarse para hacer el home. 
En el movimiento de referencia a final de carrera, el eje se mueve hasta detectar el final de carrera (positivo o negativo). Normalmente, el motor se detiene y se produce otro movimiento de retorno hasta el punto de conmutación de dicha señal para establecer el origen.
Como en la referencia a señal de home, también se puede aplicar un offset respecto a esa posición o ir a buscar la fase Z más cercana antes de dar el origen.

Por lo que respecta al referenciado pasivo:

- Referencia para ajuste de posición
En este caso, al ser un referenciado pasivo, el eje no realiza ningún movimiento al ejecutar el homing.  
En este referenciado, la posición actual del motor se ajusta a un nuevo valor de posición deseado (origen). 

¿EJEMPLO PRÁCTICO?

Imaginemos un servoaccionamiento acoplado a un husillo. Este mueve una carga de forma lineal y hará distintas secuencias de movimientos entre las posiciones -100 y +100 (en cm).
El caso es que queremos definir el 
origen en la posición 0 (central). Y, cada vez que se ponga en marcha el sistema se deberá hacer el calibrado en dicha posición... 

Motion control

El servodrive tiene conectados tres sensores que detectan la pieza (carga)... Dos finales de carrera (positivo y negativo, como límites de hardware) y otro que es la señal de home. 
Los finales de carrera son el Negative limit input y Positive limit input, mientras que el sensor de home es el External home input
.

Vamos a proponer un referenciado activo a señal de home, pero también utilizaremos los límites de hardware para la secuencia...
Seguidamente vemos como se propone configurar el método de homing en el eje: 

Motion control

Se ha definido la secuencia de tal manera que siempre se detecte la señal de home moviéndose en sentido positivo (para detectar siempre la misma parte de la pieza). Entonces, se pueden dar las siguientes situaciones que se ven en el gráfico:
1) Primero se detecta el External home input, con lo que ya se referencia el origen a 0.
2) Primero se detecta el  Positive limit input, con lo que el motor se empieza a mover en sentido negativo hasta dar con el Negative limit input. Entonces, vuelve a moverse en sentido positivo hasta dar con el External home input (donde se referencia el origen a 0). 

En el eje no solo se configura esta secuencia, evidentemente también sería necesario definir la dinámica del motor (velocidad, aceleración/desaceleración, etc). 


¿PRECAUCIONES?

Tal como se muestra en el ejemplo anterior, la referencia de homing suele ser la posición 0, pero no tiene porque ser así siempre.
Se puede definir como origen cualquier posición, siempre que esté dentro del rango de trabajo del eje... Pues puede haber ejes configurados como rotativos (con módulo) o que tengan definidos límites de posición por software. 

Las señales que intervienen en una secuencia de homing suelen ser, por naturaleza, de sensores normalmente cerrados (NC). 
Esto es así por seguridad, pues en caso de desconexión es como si se activara la señal en cuestión. Esto evita posibles impactos mecánicos al no detectar las señales en cuestión. 

El bloque de función MC_Home solo puede abortarse mediante el FB de MC_Stop o deshabilitando el de MC_Power del eje.
También dejaría de ejecutarse si se da cualquier error que no permite la correcta finalización del mismo.  

lunes, 5 de julio de 2021

MOTION - Servomotor con freno

Hay muchos modelos de servomotores en el mercado, con distintas especificaciones. Una de ellas es la integración de un freno de retención
Se utiliza, comunmente, en sistemas mecánicos que requieren un frenado brusco o mantener la carga sin potencia (p.e. aplicaciones de elevación).

Este tipo de frenos suelen estar compuestos por un imán permanente y una bobina que, en caso de encontrarse en reposo y sin corriente, el campo magnético que forma el imán les frena. 

Tienen reducidas dimensiones y suelen encontrarse ubicados en la parte trasera del motor.

Motion control

Normalmente, el freno se controla directamente mediante una salida digital del servodrive, y lo más habitual es que el cable de freno vaya integrado en el de potencia

En este artículo se expondrá con que criterio seleccionar el servomotor con freno, se detallará como funciona y se presentarán aquellas consideraciones a tener en cuenta cuando se utilice. 


¿ESPECIFICACIONES DEL FRENO
?

Al optar por un servomotor con freno, se deben tener presentes las siguientes especificaciones básicas del mismo: 

- Tensión nominal: V 
Es el voltaje de excitación con el que se desenclava el freno del motor. 

- ConsumoA / W
Necesario saberlo para dimensionar la fuente de alimentación que utilizará el freno (si se requiere que sea externa). 

Momento de inercia de retención: kg·m^2
Nos permite estimar el tiempo que se tardará en frenar si conocemos el par de frenado y la velocidad actual. 

Par de fricción: N·m
Podríamos decir que es el dato más relevante, pues nos indica el par de sujeción que tendrá el freno cuando el motor esté parado.
Nos permite saber si el eje será capaz de mantener la carga con el freno enclavado.

Tiempos de activación/desactivación: ms
Indica el tiempo de respuesta del freno para desenclavarse/enclavarse. 

Motion control





¿CÓMO FUNCIONA
?

Como ya se ha comentado anteriormente, lo servomotores suelen tener frenos no excitables, es decir, se liberan cuando se aplica el voltaje de excitación
Entonces, lo común es que el drive siempre lo mantenga activo (desenclavado), exceptuando las siguientes situaciones:

Motion control
1) Se hace un servo OFF por programa.
Lo normal es que esto se haga deshabilitando el bloque de función de MC_Power.

2) Se pierde alimentación de control/potencia.
Ante cualquiera de estas situaciones, el freno se enclavará. 

3) Se da un error en el drive.
Por seguridad, frente a cualquier error del servo, entrará el freno.

4) Se activa alguna prohibición de movimiento.
Las prohibiciones más comunes son los limites de posición del eje, ya estén definidos por software o hardware (finales de carrera).

5) Se entra en estado de Safe Torque Off.
La STO (parada segura) es una funcionalidad de safety que muchos drives actuales incorporan, mediante comunicaciones o entradas digitales. Cuando se activa, entra el freno.

No obstante, hay situaciones en las que puede no interesar trabajar con el freno de este modo que lo controla el drive...
Entonces, también es posible controlar su apertura y cierre de forma independiente, por ejemplo, utilizando una salida digital del autómata.


¿PRECAUCIONES
?

Está claro que hay que ser cuidadoso al utilizar el freno de un servomotor, pues un mal uso puede ser fatal. Seguidamente se exponen algunas de las precauciones que se deben tener en cuenta:

- Nunca intentar mover el motor sin el freno cableado.
Es un error muy común el intentar mover el motor sin haber cableado el freno. Evidentemente este estará enclavado y, el intentar moverlo, puede dañar el eje del motor de forma permanente. Aunque, en el mejor de los casos, puede darse antes un error de sobrecarga/sobrecorriente.
Siempre asegurarnos, la primera vez de moverlo, que llega la tensión de excitación al freno.

- Evitar enclavar el freno cuando el motor está moviéndose.
Si el motor se está moviendo, aún siendo a bajas revoluciones, es peligroso hacer entrar el freno. A la larga puede ocasionar daños al motor, por desgaste.

- Cerciorarse de que la entrada del freno no puede ser peligrosa para el operario.
Como antes he comentado, frente a cualquier error o prohibición, el servo enclavará el freno (no quedará libre de par). Por lo que hay que estar seguro de que esto no puede representar ningún peligro para las personas.

- Tener en cuenta el delay en la apertura/cierre
Ya ha quedado claro que el freno tiene un tiempo de reacción. Puede ser crítico en algunos casos donde se requiera una acción inmediata del freno.
Esto es posible que se acentúe si se controla externamente, por ejemplo, desde un PLC (donde el refresco de la salida irá ligada al ciclo de SCAN).

- Cumplir con las recomendaciones básicas de EMC en la instalación del servo.
Si el cable del freno se ve afectado por perturbaciones (ruido), se pueden dar oscilaciones en la tensión de excitación del freno...
Si baja mucho, podría enclavarse el freno accidentalmente. 
Si se da algún pico, se puede ir dañando progresivamente.

- Tener presente el fenómeno de magnetización
Al trabajar con un imán permanente, la activación del freno genera un campo magnético.
Por lo general, no es crítico. Pero, dependiendo el producto con el que se trabaje, puede dar problemas (p.e. virutas metálicas). 

- Siempre seguir las recomendaciones adicionales que pueda hacer el fabricante.
Se deben tener en cuenta otras posibles restricciones (como la frecuencia de uso, la vida útil de la salida del drive, etc).

lunes, 26 de abril de 2021

MOTION - Eje virtual

Motion Control
Es probable que hayas oído hablar del eje virtual en motion control... Se trata de un recurso de programación muy utilizado en la automatización para el sincronismo y control de ejes.
No obstante, en ocasiones, puede resultar un concepto poco intuitivo y genera dudas sobre para que sirve, como se debe tratar y en que casos es preferible usarlo.

El presente artículo hablará sobre ello e intentará resolver todas las dudas conceptuales al respecto. 

¿QUÉ ES?

Como su nombre indica, un eje virtual no existe físicamente. Por definición, es un servomotor simulado por software.
No tiene asociado ningún accionamiento con control de lazo cerrado o encoder, por lo que no puede verse afectado por problemas de cableado, ruido, mecánica, electrónica, etc.

Entonces, la dinámica de este eje siempre será ideal.
Se comporta como una consigna, no dispone de
 "valor actual" por programa

A nivel de programación en el autómata, se configura/programa como un eje físico. La única diferencia es que no se asocia a ningún hardware.
Es necesario definirle la conversión de unidades mecánicas, los limites dinámicos, configurar el contaje (lineal/rotativo)... Igual que en cualquier otro eje estándar.
 


¿PARA QUÉ SIRVE?

- Hacer pruebas de simulación sin disponer de los equipos físicos. 
Permite simular la ejecución del programa de motion en el autómata sin disponer de los servos, pudiendo confirmar de antemano que la secuencia de movimiento es correcta.

- Diagnosticar fallos en servoaccionamientos. 
Si salta algún error en un servodrive o el motor presenta problemas de dinámica, se puede substituir en programa por un eje virtual con comportamiento ideal. Esto nos permitiría ver si el fallo es de programa o está asociado a algún tema físico.

- Programar sincronismos con ejes reales.  
Un eje virtual puede representar un eje principal de máquina (o cualquier otro intermedio) y utilizarse para relaciones complejas. Puede trabajar con rol de maestro y esclavo...
Para ver alguna instrucción de sincronismo en el que se podría utilizar, hacer click aquí.


¿EJEMPLO DE APLICACIÓN?

Como se comentaba anteriormente, en aplicaciones de sincronización de múltiples ejes, las características ideales de un eje virtual lo hacen adecuado para acoplar ejes.
Se reemplaza por ejes físicos, eliminando el retraso en el sincronismo.

Planteemos, a modo de ejemplo, una aplicación vertical con dos ejes que están siempre sincronizados (MC_GearIn).
En un principio, es viable definir un eje  físico como maestro y otro como esclavo. No obstante, podemos encontrarnos con un pequeño delay entre ambos...

MOTION

Para cerciorarnos de que no habrá ningún offset de posición entre los dos ejes (lo que podría resultar crítico), hay una solución más robusta. Pasaría por trabajar con tres ejes; uno por cada servomotor y otro virtual.
La filosofía a seguir sería sincronizar los dos servos físicos (esclavos) al virtual (maestro).

A nivel de programa, se gobernaría solo el eje virtual con instrucciones de control de posición simples (p.e. MC_MoveAbsolute). Previamente, se lanzarían los sincronismos de los dos esclavos (MC_GearIn) que siguieran la secuencia del maestro virtual. 
Resumiendo, solo gobernamos el movimiento en el eje virtual. Los servos físicos únicamente siguen fielmente el perfil ideal del maestro.

lunes, 19 de abril de 2021

MOTION - Instrucciones básicas para sincronismo de ejes

En un artículo anterior, ya se han presentado las instrucciones básicas de motion para controlar un eje simple (hacer click aquí para ver). Pero podríamos decir que esto es solo la "punta del iceberg". Los servoaccionamientos han abierto muchas otras nuevas posibilidades gracias a las altas velocidades y capacidades de cálculo que admiten.
Motion control
Siendo así, una de las funcionalidades más potentes es la de sincronización e interpolación entre ejes.
Para ello, se requiere disponer de un PLC que soporte dichas funciones... No cualquiera lo admite de forma directa.

Este artículo tiene como objetivo presentar los bloques de función más básicos para sincronismos multi ejes (basados también en la norma PLCopen).
Es interesante matizar que, para este tipo de soluciones, muchos fabricantes disponen de FBs desarrollados no estándares.
 Incluso ya dedicados para aplicaciones concretas...


¿FILOSOFÍA DE ESTOS FBs?

Permiten regular dos ejes de forma simultánea, con una relación de control de movimiento especifica entre ambos.

Para ello, siempre hay un servo con el rol de maestro. Normalmente, a este se le ejecutan movimientos como eje simple (o es un encoder externo).
Luego está el eje
esclavo, sobre el que solo se ejecuta la instrucción de sincronismo. Se moverá acorde al maestro siguiendo las directrices configuradas en el FB utilizado. 
Se pueden sincronizar distintos esclavos a un mismo eje maestro simultáneamente. 

También es importante destacar que, en su gran mayoría, nos encontraremos con FBs de ejecución (se lanzan por flanco y se quedan habilitados).


¿FBs DE SINCRONISMO?

- MC_GearIn: Es un sincronismo en posición donde, por cada unidad desplazada del eje maestro, el eje esclavo se desplaza un número de unidades proporcionales (manteniendo la relación programada en la división de los ratios).
Resumiendo, establece un ratio de velocidad entre maestro y esclavo.
Motion control
Lo más habitual es ejecutarlo con los dos ejes en parado, antes de que el maestro empiece a moverse. De este modo ambos servos arrancan simultáneamente y mantienen siempre una relación de velocidad constante.
Ejemplo aplicación: Bandas transportadoras seriadas que requieren moverse a la vez.

- MC_GearInPos: Funciona de la misma forma que el MC_GearIn, con la diferencia de que el sincronismo debe empezar en una posición concreta (tanto del maestro como del esclavo).
Siendo así, se utiliza para hacer un acoplamiento "al vuelo" , no es instantáneo. Por lo tanto, es necesario definir una dinámica inicial al eje esclavo para que alcance al maestro y coincidan en el punto especificado con el ratio de velocidad deseado.
Motion control
Lo común es ejecutarlo tras haber lanzado el maestro en control de velocidad. Entonces, al ejecutar el FB, maestro y esclavo se encuentran en las posiciones programadas, a partir de las cuales se quedan sincronizados..
Ejemplo aplicación: Máquina de corte, estilo "cizalla volante".

- MC _GearOut: Instrucción que se lanza al esclavo para parar un sincronismo realizado con cualquiera de los FBs anteriores. Le desconecta del maestro, permitiéndole empezar un nuevo sincronismo (con el mismo maestro u otro) o trabajar como eje simple.
Motion control
Se presupone que este FB es previo a la ejecución instantánea de otro comando de motion. De hecho, en algunos fabricantes no existe dicha instrucción, pues al ejecutar cualquier otro FB de movimiento en el esclavo durante el sincronismo, este se deshace.


¿FBs DE INTERPOLACIÓN
?

MC_CamIn: Este bloque de función avanzado es el más flexible para sincronizar ejes. Activa el acoplamiento entre maestro y esclavo con un perfil previamente especificado.
Para cada posición de maestro, definimos la posición en la que se encontrará el esclavo. Solo damos algunos de los puntos de la trayectoria, los demás se interpolan con la curva que definamos por programa.
Motion control
Como se puede ver, admite mucha configuración para determinar la dinámica en la relación maestro-esclavo. Puede llegar a substituir cualquier otra instrucción de sincronización, pero se debe tener presente que es más compleja y consume más recursos de la CPU.
El entorno de definición de la tabla cam puede variar mucho dependiendo del software utilizado. En algunos casos, incluso se pueden definir los puntos por programa (en runtime).

Ejemplo aplicación: Leva electrónica.

MC_CamOutInstrucción que se lanza al esclavo para parar un sincronismo realizado con MC_CamIn. Trabaja con la misma filosofía que el MC_GearOut presentado anteriormente...
Motion control
En algunos fabricantes tampoco se dispone de este bloque de función, dado que cualquier instrucción de movimiento sobre el esclavo rompería el acoplamiento. 

- Muchos fabricantes admiten instrucciones específicas para grupos de ejes. Estas permiten establecer interpolaciones predefinidas (p.e. lineal y circular).
Normalmente ya no se trabaja con la filosofía maestro-esclavo en estos casos concretos...
Tanto el entorno de programación como los FBs asociados no son estándares, pueden variar 
mucho entre fabricantes.
Ejemplo aplicación: Interpolación entre ejes X-Y en robot cartesiano.

lunes, 12 de abril de 2021

MOTION - Instrucciones básicas para control de ejes

En las últimas décadas, se ha redefinido el paradigma en el diseño y programación de maquinaria industrial. Los fabricantes ya disponen de softwares de programación que integran el control de servomotores en el entorno del PLC (sin requerir unidades de control/posicionamiento adicionales).
Muchos procesos, que históricamente se solucionaban de forma mecánica, han ido virando a la electrónica (p.e. la leva). Mejorando así la eficiencia y, sobre todo, la flexibilidad de las máquinas por lo que a formatos y capacidad de producción respecta.
Motion control
Esta situación ha requerido homogeneizar la programación de motion control...Muchas de las firmas importantes se han adherido a las normas de PLCopen, basado en el estándar de programación IEC61131-3. Dejo aquí un enlace informativo de su página oficial.

El presente artículo tiene como objetivo presentar las instrucciones básicas más comúnmente utilizadas para controlar un eje simple. El formato de los bloques de función (FBs) y sus E/S puede variar algo entre fabricantes, pero la filosofía de trabajo es exactamente la misma.


¿TIPOS DE FBs EN MOTION?

Podemos dividir los bloques de función de motion en dos grupos principales, dependiendo de la gestión de los mismos:

- FBs de ejecución:
Motion control
Primeramente, es necesario asociar el eje ("Axis") al bloque de función.
Para lanzar el FB solo es necesario un flanco ascendente en la entrada "Execute", cargando así los demás valores de entrada.
Por defecto, dispone de 5 salidas booleanas que nos dan información sobre el estado de ejecución del bloque. 

- FBs de habilitación:
Motion control
En este otro caso, también es necesario asociar el eje ("Axis")  al bloque de función.
Para activarlo es necesario mantener activa la entrada booleana "Enable". De este modo, la ejecución del FB se refresca cada ciclo de scan, cargando los valores de entrada.
Por defecto, también tiene 5 salidas de estado que indican el estado de ejecución del bloque

"Status" y "Done" indican la correcta ejecución del FB, "Busy" que se está ejecutando, "Aborted" que otro FB de motion ha interrumpido la ejecución de la presente, "Error" que en algún momento ha sucedido un problema inesperado que no ha permitido finalizar la instrucción y, por último, "Active" indica que el FB tiene permiso para acceder sobre el eje instanciado.


¿FBs DE GESTIÓN
?

MC_Power da potencia al servomotor (y, por ende, par), dejándolo así preparado para operar. 

Motion control
Es necesario que este FB esté habilitado para poder ejecutar cualquier otro comando (que requiera de dinámica) al eje

MC_Stop ordena una parada controlada, manteniendo el motor con par.
Motion control
Este FB aborta cualquier ejecución de otros FBs de motion. Hasta que el motor no esté con velocidad 0, no se podrá lanzar ningún otro comando al eje

MC_Reset permite resetear los errores internos del eje (siempre que no se deban a fallos permanentes).
Motion control
Tras la ejecución exitosa de este FB, un servo con error volvería a quedar operativo para recibir nuevos comandos

MC_Home se utiliza para ejecutar una búsqueda de origen (mediante señal externa) y/o forzar una posición absoluta al eje. 
Motion control
Comúnmente utilizado para definir una posición de inicio a motores con encoder incremental. Los detalles de la secuencia de homing se especifican dependiendo de las posibilidades que presente el entorno de programación del fabricante. 


¿
FBs PARA CONTROL DE POSICIÓN?

Motion control

- MC_MoveAbsolute permite mover el eje a una posición concreta dentro de su rango de operación (con un perfil de velocidad predeterminado). Realiza el posicionado independientemente a la posición actual del servo, es decir, el eje simplemente alcanzará la consigna de posición impuesta sin importar donde se encuentre.
Motion control
El carácter absoluto del movimiento presupone el "reposo". Si se lanza este posicionado simple sin partir de una posición conocida, el recorrido variará en función de donde se inicie

MC_MoveRelative permite mover el eje un incremento de posición respecto la actual (con un perfil de velocidad predeterminado). Así pues, en este FB, la consigna no es una referencia fija, sino que cambia simultáneamente con movimiento del eje.

Motion control
Independientemente de la posición actual del eje, siempre se realizará el mismo recorrido al lanzar esta instrucción (si se cargan los mismos parámetros). 


¿FB PARA CONTROL DE VELOCIDAD
?

- MC_MoveVelocity sirve para definir un perfil de velocidad al eje y estabilizarlo a la consigna deseada.
Motion control
La ejecución de este FB solo se verá interrumpida si se lanza otro FB de motion que de una nueva consigna al equipo. 


¿FB PARA CONTROL DE PAR?

- MC_TorqueControl ejerce continuamente un par de la magnitud especificada que se alcanza mediante una rampa predefinida.
Motion control
Se trata de un control de par con límite de velocidad. No confundir con un control de velocidad con límite de par...