Esas funciones tan poco conocidas para diseño de perfiles CAM

Fecha de publicación
Cateogría del artículo Motion Control
Visualizaciones del artículo Leído  1421  veces
Tags del artículo

En este artículo Pere Garriga da a conocer funciones relacionadas con los perfiles CAM mostrando un ejemplo de aplicación que requiere de su utilización

Esas funciones tan poco conocidas para diseño de perfiles CAM

Hay instrucciones muy interesantes, relacionadas con los perfiles CAM, de las que pocos programadores conocen su utilidad. En este artículo se hace referencia a las de TIA Portal, pero es extensible a plataformas de control de otros fabricantes, como Rockwell Automation, Schneider Electric o Beckhoff.

Se trata de las instrucciones MC_GetCAMFollowingValue y su complementaria MC_GetCAMLeadingValue. En este artículo se da a conocer su función, mostrando un ejemplo de aplicación que requiere de su utilización. Va dirigido a personal con un nivel medio / alto en lo que se refiere a perfiles CAM.

Nomenclatura del objeto tecnológico CAM e instrucciones asociadas

Al eje maestro se le denomina X o LeadingValue.

Al eje esclavo se le denomina f(x), Y, FollowingValue o el nombre que se le haya dado al objeto tecnológico.

FirstDerivative corresponde al valor de la primera derivada de la posición, lo que es el factor para poder calcular la velocidad.

SecondDerivative corresponde al valor de la segunda derivada de la posición, lo que es el factor para poder calcular la aceleración.

Para que sirve la función MC_GetCAMFollowingValue

Esta función permite conocer el valor de posición, velocidad y aceleración en un determinado punto de X o del eje maestro en un perfil CAM.

Supongamos que en el perfil CAM de la imagen superior, definido por los puntos P1, P2, P3 y P4, necesitamos conocer la posición que tendrá el eje esclavo cuando el eje maestro este en la posición 500 [LeadingValue]. La función en cuestión nos dará el valor de posición del eje esclavo en [Value], así como el factor de velocidad o primera derivada en [FirstDerivative] y de aceleración o segunda derivada en [SecondDerivative]. En este caso el valor de posición del eje esclavo cuando el eje maestro esté a 500, será de la mitad de un paso (1/2 P).

Si necesitamos conocer si la velocidad del eje esclavo en esta posición, cuando el eje maestro va a máxima velocidad, está dentro de los límites, bastará con multiplicar el valor de velocidad del maestro por la primera derivada para obtener la velocidad en U/Seg. De la misma forma multiplicando la segunda derivada por la velocidad del maestro al cuadrado obtendremos la aceleración en U/Seg². Por tanto, con esta función podemos obtener información de cualquier punto de un perfil CAM.

Para que sirve la función MC_GetCAMLeadingValue

Esta función complementa a la anterior, en este caso se trata de obtener la posición del eje maestro (LeadingValue) para un determinado valor de la posición del eje esclavo (FollowingValue) de cualquier punto de un perfil CAM. Esta función es muy útil para crear perfiles CAM, por código, partiendo de valores dados por una receta y con el objetivo de optimizar el movimiento en busca de la máxima suavidad.

Supongamos que en el perfil CAM_S04, de la figura superior, necesitamos conocer en qué posición de X o del eje maestro el perfil pasa por el valor ZR. De entrada, podemos observar que hay tres casos en los que el perfil cruza con dicho valor. El primer caso se da a partir de la posición 480 de Xy se repite a partir de 560 de X y también coincide en el punto P10 del perfil.

Para poder seleccionar el punto buscado, [FollowingValue], el FB tiene el parámetro [Approach LeadingValue], si en este parámetro introducimos 480, 560 o 920, en el parámetro de salida [Value] nos retornará 500, 714 o 1000, según se puede ver en el gráfico.

En resumen:

Con la función MC_GetCamFollowingValue obtenemos información referida al eje esclavo en una determinada posición del eje maestro, podemos conocer la posición, la primera derivada (velocidad) y la segunda derivada (aceleración) para verificar límites del movimiento del eje esclavo.

Con la función MC_GetCamLeadingValue obtenemos la posición del eje maestro que corresponde a un determinado valor del eje esclavo, puesto que según sea la forma del perfil, el valor se puede repetir, hay que dar la posición del eje maestro a partir de la cual se inicia la búsqueda del valor del esclavo y la función retorna la primera que encuentra a partir del valor dado de inicio de búsqueda [Approach LeadingValue].

Esta función se emplea para diseñar los perfiles CAM en caso de tener que sincronizar el movimiento de varios ejes y buscando el máximo tiempo disponible posible con el objetivo de suavizar el movimiento o el de evitar colisiones. La función nos indicará en que posición de X un determinado valor de Y de un eje esclavo ha alcanzado una posición en la que ya se puede iniciar o debe finalizar algún movimiento. Esto se da en la mayoría de las aplicaciones de varios ejes en las que los perfiles CAM varían en función de una receta o de valores de coordenadas, como podría ser en una Pick & Place sincronizada en la que las trayectorias se realizan con perfiles CAM.

Ejemplo de una posible aplicación

La aplicación que se describe a continuación se ha pensado para ver la utilidad de estas funciones. Casos reales como una Pick & Place habría sido excesivo para entender la razón de estas instrucciones.

Se dispone de una cinta de cangilones, accionada por el servomotor S01_Cangilones, por la que se transportan unos productos, hay tres tipos, A, B y C, la diferencia está en la longitud de estos. La cinta avanza paso a paso o producto a producto y se trata de extraer el producto de su alojamiento al llegar a la zona de descarga en la que hay un eje lineal, accionado por el servomotor S02_Extractor, que realiza un movimiento continuo de vaivén de forma que desplaza el producto de la cinta de cangilones a la cinta de descarga. Cuando el gripper (cuadrado amarillo) se sitúa sobre el producto hay un sistema de vacío que agarra el producto y lo suelta al llegar al otro extremo del recorrido, estas posiciones se definen como Pos_Carga y Pos_Descarga.

El avance de la cinta y el movimiento continuo de vaivén del extractor están sincronizados mediante perfiles CAM con el eje maestro que marcará el ritmo, o la velocidad de funcionamiento del sistema.

Para generar los perfiles CAM mediante código, se parte de los siguientes parámetros:

[Vel_ProdMin]: Número de productos por minuto. (35)

[Long_Paso]: Longitud de un paso en milímetros. (100)

[Pos_Carga]: Posición de carga del producto en milímetros. (480)

[Pos_Descarga]: Posición de descarga del producto en milímetros. (14)

[Ret_GripperON]: Retardo para agarrar el producto, en 1/1000 Seg. (40)

[Long_Prod]: Longitud del producto en milímetros. (110)

Los valores entre () son los que empleamos en este ejemplo.

Diseño del perfil CAM -Eje Maestro

Partimos de un eje maestro que girará en continuo a una velocidad de (Vel_ProdMin / 60 Seg/Min) * 1000 Unidades/Prod. A de 35 Prod/Min su velocidad será de 35/60*1000 = 583 u/Seg.

Todos los perfiles CAM se sincronizarán con este maestro. Una revolución del eje maestro son 1000 unidades, por tanto, su posición en el tiempo describirá un diente de sierra como el que muestra el gráfico.

Diseño del perfil CAM -Eje Extractor

El movimiento del S02_Extractor debe realizar un vaivén continuo, de la posición Pos_Carga (PC) a la posición Pos_Descarga (PD) con un retardo para agarrar el producto Ret_GripperON que se reparte mitad y mitad al principio y al final del ciclo para que el perfil sea simétrico y otro retardo para soltar el producto en la posición de descarga Ret_GripperOFF puesto que en el caso de perfiles CAM solo se puede considerar la posición de los ejes, la forma de introducir un retardo es con un segmento que no produzca movimiento y de la longitud adecuada para que a una velocidad conocida del eje maestro dure el tiempo deseado.

El segmento formado por los puntos P3-P4 corresponde a Ret_GripperOFF y para que a una velocidad de Vel_ProdMin produzca el retardo deseado, se calcula como (Vel_ProdMin / 60 Seg/Min) * Ret_GripperOFF. En este caso (35/60)*50 = 29.2 U.

Realizamos el mismo cálculo para determinar las unidades de posición del eje maestro para conseguir un retardo de Ret_GripperON a la misma velocidad, lo que da un valor de (35/60)*40 = 23.3 U, que repartimos entre el segmento formado por P1 y P2 y el formado por P5 y P6, por lo que cada uno de dichos segmentos tendrá una longitud de 23.3 * 0.5 = 11.65 U.

Con esto ya podemos fijar los valores X,Y de cada punto:

P1(0, PC), P2(11,65, PC), P6(1000, PC), P5(1000-11.65, PC); Puesto que deseamos un movimiento de vaivén simétrico establecemos el punto central del segmento formado por P3 y P4 a 500 U de posición del maestro, por lo que P3(500-(29.2*0.5), PD) y P4(500+(29.2*0.5), PD). Con esto ya hemos finalizado el perfil del extractor, que queda de la siguiente forma:

Para verificar que la velocidad y aceleración resultante para el eje S02_Extractor está dentro de límites emplearemos la función MC_GetCamFollowingValue. Puesto que se trata de una interpolación polinómica de 5° grado podemos conocer fácilmente el punto de máxima velocidad y de máxima aceleración, en el gráfico se muestra la forma que tendrá la velocidad y la aceleración, sus valores absolutos dependerán de la velocidad del eje maestro.

La posición del eje maestro donde se da el punto de máxima velocidad (punto azul) es a mitad del punto P2 y P3, por tanto (P2+P3)/2; (485.4 + 11.7) / 2 = 248.55 u.

La posición del eje maestro donde se da el punto de máxima aceleración / deceleración (punto verde) es al 21 % del punto P2 y P3, por tanto P2+(0.21*(P3-P2)); 11.7 +(0.21*(485.4-11.7)) = 111.17 u.

Con esto ya podemos emplear la función MC_GetCamFollowingValue a la que le pasaremos un valor de posición del maestro de 248.55 y nos retornará 1.84, que corresponde a la derivada de la posición o la pendiente en este punto. Multiplicando este valor por la velocidad del eje maestro, 583 u, da una velocidad de 1.84*583 = 1072 u/Seg.

Volvemos a llamar a la función, pero ahora con un valor de posición del eje maestro de 111.17, con lo que nos retornará 0.0123, el valor de la segunda derivada que corresponde a la aceleración, multiplicando este valor por la velocidad de maestro al cuadrado obtenemos la aceleración, que será de 583² * 0,0123 = 4180.18 u/Seg². Ahora habría que ver que el S02_Extractor pueda alcanzar estos valores. Se supone que se ha dimensionado correctamente y que no debiera de haber ninguna limitación. El objetivo era mostrar el proceso.

Diseño del perfil CAM -Eje Cangilones:

El movimiento del S01_Cangilones debe realizar un avance del paso de un producto Long_Paso cada vez que el extractor descarga un producto, por lo que en este caso avanzará 100 mm, iniciando el movimiento justo en el instante en que el producto ha salido del cangilón, en P2, y ya no interfiere con el avance de la cinta. Tiene que haber finalizado justo cuando el gripper vuelve a posicionarse encima del siguiente producto, en P3. De esta forma dedicamos todo el tiempo posible para la realización del avance y conseguimos la máxima suavidad de movimiento, lo que no es sinónimo de baja velocidad.

Para ello solo tenemos un valor que no conocemos, se trata de la posición de X de P2, que depende de la longitud del producto.

Hay que superponer el perfil de ambos ejes para poder observar cuál es la posición del eje S02_Extractor, de la que tenemos que encontrar su correspondiente posición de X.

Para ello, en este caso con una longitud de producto Long_Prod de 110 mm y partiendo de una posición de descarga de 480 mm, vemos que cuando el extractor pase por la posición FP (Fin Producto), 370 mm, se puede iniciar el avance de la cinta.

¿Y cómo obtenemos el valor de X que corresponde a un valor de Y de 370 en el perfil CAM del S02_Extractor?

Pues aquí está la utilidad de la función MC_GetCAMLeadingValue. En este caso llamamos a la función pasando el valor de 370 mm como FollowingValue o posición del esclavo y un valor de Approach LeadingValue de cero para que inicie la búsqueda desde el principio del perfil. Con lo que en Value nos devolverá un valor de 177.75 unidades del eje maestro. El perfil quedará pues de la siguiente forma:

Y el movimiento sincronizado de todos los ejes será el que se muestra en el siguiente gráfico:

Movimiento sincronizado de ambos ejes con el maestro

Lo podemos observar en el siguiente gráfico, para una longitud de producto de 110 mm.

Curvas de Pos / Vel / Acel y Jerk del S02_Extractor

Este es el resultado de introducir los valores obtenidos en el editor gráfico de perfiles CAM del objeto tecnológico. En rojo se muestra la posición, en azul la velocidad, en verde la aceleración y en marrón el Jerk

Se puede apreciar la forma resultante de la velocidad, de la aceleración y del Jerk.

Curvas de Pos / Vel / Acel y Jerk del S01_Cangilones

Este es el resultado de introducir los valores obtenidos en el editor gráfico de perfiles CAM del objeto tecnológico. En rojo se muestra la posición, en azul la velocidad, en verde la aceleración y en marrón el Jerk.

Se puede apreciar la forma resultante de la velocidad, de la aceleración y el dJerk En ambos perfiles se ha especificado la condición de que tanto la velocidad como la aceleración sean =0, al principio y al final de la interpolación, por ello la aceleración tiene forma casi senoidal y la velocidad se parece a un seno redondeado en sus extremos.

El objeto tecnológico CAM ofrece muchas opciones para interpolar los puntos de un perfil CAM, tantos que sería tema para todo un artículo.

En Resumen

• Los perfiles CAM son de gran utilidad a la hora de sincronizar el movimiento de múltiples ejes, pero requieren un cierto conocimiento, de forma especial si varían en función de parámetros provenientes del HMI o de una receta.

• En este articulo hemos visto la utilidad de las instrucciones para escanear y poder analizar los valores de un perfil CAM en función de la posición de X [MC_GetCAMFollowingValue] y su “opuesta” [MC_GetCAMLeadingValue] que nos dará el valor de X en el que se encuentra un valor de Y.

• Con dichas funciones podremos crear perfiles CAM por código partiendo de unos parámetros de entrada y con la intención de optimizar los movimientos para conseguir el máximo tiempo disponible para su realización, conociendo las posiciones de X en las que los movimientos de Y se deben iniciar y/o deben finalizar.

Linkedin Pere Garriga

/blogs-automatizacion/marcas/498-motion-control

Motion Control

Blog dedicado a la introducción en los conceptos de Motion Control (Control de movimiento) en sistemas de automatización




Descargas