Ideas Capacitación

Ventajas de la programación basada en una plantilla, para aplicaciones de Motion Control

Este articulo pretende dar una visión general de lo que supone el empleo de una plantilla o Template para el desarrollo de aplicaciones de control de movimiento

Muchos programadores son reacios a emplear un programa base que ha sido realizado por otro técnico porque pretenden entender cada línea de código, lo cual no es en absoluto necesario. Lo importante es saber cómo utilizar dicho Template. El articulo muestra un ejemplo de cómo resultaría el proceso de configuración de una plantilla / Template, en este caso empleando la de PacDrive 3 de Schneider Electric y que es lo que ofrece.

¿Porque emplear una plantilla?

Su empleo nos permitirá desarrollar la aplicación de forma mucho más rápida y con un código perfectamente estructurado y prácticamente libre de bugs, por el empleo de un programa más que reutilizado y modular.  Además, nos podremos focalizar totalmente en el funcionamiento de la máquina y olvidarnos de todas las tareas de “gestión” como fallos de los ejes, la programación de los movimientos en modo manual, el control de los modos de funcionamiento, la gestión del paro de emergencia, etc.

Figura 1: Arquitectura de una máquina para configurar una plantilla de 2 niveles

Todas aquellas funciones que son comunes en todas las aplicaciones. Por otra parte, puesto que todas las aplicaciones tienen un alto porcentaje del programa en común, cualquier técnico podrá entender fácilmente un programa realizado por otro.

En resumen, la plantilla nos permite hacer programas de aplicación modulares, perfectamente estructurados y robustos, en un tiempo récord

Tipos de plantilla.

Se dispone de dos tipos de plantilla, la de dos niveles y la de un nivel. La de dos niveles se emplea en máquinas de una cierta complejidad, en las que podemos estructurar la máquina como un conjunto de pequeñas máquinas, que denominamos EMs (Equipement Modules), cada EM controla sus ejes como si de una pequeña máquina se tratase.

En la figura 1 se muestra la arquitectura de una máquina formada por varios EMs. El EM02_P&P_1, un pick & place compuesto por dos ejes M_Z1-movimiento vertical- y M_C1 -movimiento rotacional-. Otro módulo idéntico a nivel de hardware el EM3_P&P_2 y otros EMs con distinta funcionalidad.

Figura 2: Plantilla de 1 nivel           

De esta forma se obtiene un programa muy bien estructurado y modular, de forma que, si se elimina, por ejemplo, el EM3_P&P_2, no tendrá ninguna repercusión en el resto

En el caso de máquinas más simples, como la que se muestra en la figura 2, donde no tendría sentido “trocear” la aplicación en diversos EMs, se emplea la plantilla de un solo nivel, en la que todos los ejes son controlados directamente desde el nivel de máquina

Ejemplo de configuración de la plantilla a un nivel.

En este ejemplo configuraremos la arquitectura mostrada en la figura 2. Hay que decir que la plantilla no es más que un programa que emplea las mejores técnicas de programación y que dispone de unos bloques de función diseñados con interfases modulares para poderlos “conectar” a todos los tipos de plantilla y de aplicaciones. Para el caso de aplicaciones de propósito general el [FB_AxisModule]realiza todo lo necesario para el movimiento del eje, en el caso de una aplicación de robótica, el [FB_RoboticModule] se encarga de controlar el robot.

Cada bloque de función emplea cuatro estructuras de datos, una para los comandos y estados, otra de configuración y parámetros, otra de data logger y otra para la gestión de excepciones. Los comandos y parámetros serán distintos en cada caso, pero se mantiene la estructura del programa.

Filosofía de funcionamiento del FB_AxisModule

Para cada eje a controlar se instancia un [FB_AxisModule], en lugar de instanciar un FB para cada movimiento que se necesite realizar, como ocurre en la mayoría de sistemas. En el caso de PLCopen hay que instanciar un MC_Power para habilitar el eje, un MC_MoveAbsolute para llevar el eje a una posición absoluta, un MC_MoveVelocity para movimientos en manual, un MC_GetPosition para ver el valor de posición, MC_GetStatus, MC_GetError, etc. Para “no hacer nada” hay que escribir bastantes líneas de código.

Figura 3: Una instancia del FB_AxisModule por cada eje a controlar

El AxisModule incorpora toda la funcionalidad de control de movimiento, más la gestión de excepciones -fallos-, más un data logger de todos los comandos que se han enviado al eje.

En este caso el programa de aplicación envía comandos numéricos al AxisModule (en adelante AXM) del eje y este retorna estados. P.ej. para iniciar un posicionado se envía un comando 102, cuando se alcanza la posición el AXM retorna a TRUE el bit [q_xCmdDone]. Se suele emplear una máquina de estados para gestionar el handshake.

El AXM ahorra muchas líneas de código y ofrece mucha más funcionalidad. La plantilla / template para aplicaciones de propósito general está construida alrededor del AXM. Desde las pantallas de visualización del template, desde el programa de usuario y desde las tablas de comandos se envian comandos al AXM y se reciben estados para realizar el handshake, de cada uno de los ejes configurados.

Configuración de la plantilla a un nivel. Declaración de constantes y variables.

El primer paso es indicar la cantidad de ejes a controlar y asignarles un número a cada uno, ver Fig. 4. Seguidamente hay que declarar una instancia de FB_AXM, por cada eje a controlar, y las estructuras de datos para pasar los parámetros, más las de los comandos, que en este caso están contenidas en un array. 
Ver Fig. 5.

Figura 5: Declaración de instancias y estructuras de los AXM

Cada eje precisa de un programa de inicialización que establece los valores por defecto de todos los parámetros de movimiento y de configuración, para vincular cada instancia de los AXM al hardware, en este caso a los servodrives. A base de copiar, pegar y renombrar, se crean las acciones [Init_A1InFeed, Init_A2Filler, Init_A3Pusher, Init_A4Cutter y Init_OutFeed]. Ver Fig. 6.

Figura 6: Inicializaciones

A nivel de hardware hay que añadir cada uno de los servodrives y renombrar adecuadamente. Como muestra la figura 7. Prácticamente solo queda realizar la llamada a cada una de las instancias de los AXM de cada eje.  Según muestra la figura 8

Figura 7: Dispositivos en el bus SERCOS III

Figura 8: Llamadas a las instancias del AXM de cada eje

Hay que señalar que este apartado no es una guía para la configuración del template y obvia algunos detalles, el objetivo es dar una idea de cómo se realiza el proceso.

Configuración del bus SERCOS III.

Cuando se añaden nuevos ejes al bus S3, por defecto están en modo virtual, por lo que será necesario ir a la tabla de configuración y fijar en modo real aquellos de los que dispongamos físicamente, en este ejemplo, la fuente del bus DC, más el eje [DRV_InFeed] y el [DRV_Filler]. A partir de este instante descargamos la aplicación y ponemos en marcha el programa.

Pantallas HMI para el desarrollo.

La plantilla incluye una serie de visualizaciones que permiten el control de los modos de funcionamiento, el control de los movimientos de los ejes mediante comandos directos, la gestión de excepciones y más.

Estas visualizaciones se crean de forma totalmente automática según se haya configurado la plantilla, si una aplicación tiene cuatro ejes, aparecerán cuatro botones para seleccionar el eje sobre el que queremos actuar; si la aplicación tiene 46 ejes aparecerán 46 botones, y unos cursores para navegar y seleccionar el eje deseado.

Pantalla Machine Control:

En esta pantalla se selecciona el modo de funcionamiento y de marcha / paro, también se visualiza la posible excepción que haya causado un paro de máquina y en caso emplear las tablas de comandos se muestra cada uno de los pasos que se han ejecutado. Con los botones de la parte inferior navegaremos por otras opciones, que se muestran más adelante

Pantalla Modules:

En esta pantalla se accede a cada uno de los ejes configurados, en este caso del 101 al 105, caso de haber más ejes se habilitarían los botones de cursor para navegar por el resto. A la derecha se dispone del panel de control para seleccionar el modo de funcionamiento, arrancar / parar y paro de emergencia.

Desde esta pantalla se tiene el control de todos los movimientos del eje seleccionado, mediante comandos directos al AXM y se visualizan los estados del eje en forma de texto, en este caso el eje está en [EndlessRunning] y se muestra también la posición del eje, entre otras cosas.

En la parte inferior derecha se observan tres pestañas [Interface, Manual y AxisModule] la última, que veremos más adelante, es la que más facilidad nos ofrece para dar comandos en modo directo y ajustar todos los parámetros del movimiento seleccionado desde la misma pantalla.

Pantalla Exception List:

En cualquier momento que se produzca una excepción, se puede acceder al listado con el boton Exception List, en esta pantalla se muestra con todo detalle lo que ha provocado la excepción. En el ejemplo, en el eje [102- Filler] se ha intentado acoplar un perfil CAM con el número de puntos igual a cero.

Pantalla Modules -> AxisModule:

Desde esta pantalla accedemos al interior del AXM, basta con pulsar el botón correspondiente a cada función de movimiento, en el ejemplo está activo el modo[Endless], fijar sus parámetros, velocidad, aceleración, etc. Y pulsar el botón [Send StartCMD] para que el eje se ponga a girar a la velocidad fijada, en este caso 10 u/Seg. De la misma forma se puede mover el eje en manual, realizar posicionados, desbloquear frenos, sincronizar ejes mediante perfiles CAM, etc. Y todo ello sin haber escrito una sola línea de código.

Pantalla Modules -> LogDataList:

En caso de que los movimientos no sean los esperados, en este data logger podemos visualizar los comandos que han recibido cada uno de los AXMs, de forma que pude ser de gran ayuda para la depuración del programa de usuario

Integración del programa de usuario.

Se puede decir que con la adaptación de la plantilla al hardware de la máquina hemos construido una base sólida, perfectamente estructurada y modular sobre la que desarrollar el programa de la máquina. Ya nos podemos olvidar de la programación de la gestión de excepciones, y de muchas otras tareas que se repiten en todas las aplicaciones y centrarnos totalmente en integrar el programa de aplicación.

Figura 9: Grafcet del programa principal

Para ello la plantilla ya dispone de un bloque donde añadir las acciones para tal efecto. Dentro del bloque Logic es donde se llamará a las acciones del programa de aplicación. P.ej una acción podría ser ControlPLC(), en la que se programaría todo el control de E/S, lazo de regulación PID, etc.; otra ControlMotion(), para todo lo referido a los movimientos de los eje y otra ControlComs(), para las comunicaciones con otros equipos. Dichas acciones se podrán programar en el lenguaje preferido por cada programador dentro del estándar IEC 61131-3. lo más habitual es una combinación de los mismos según la funcionalidad de cada acción.

Básicamente el programa de usuario se puede valer del secuenciador de pasos (tablas de comandos) de la plantilla o bien de una máquina de estados programada por el usuario, la que básicamente enviará comandos al AXM y esperará señales de estados.

Consideraciones sobre el uso de una plantilla / Template.

Como ya se ha mencionado al principio, el artículo hace referencia específica a la plantilla para la programación de PacDrive 3 de Schneider Electric. Aunque, en general, los beneficios de utilizar una plantilla se pueden aplicar a cualquier otra que esté bien resuelta.

En el caso de PacDrive la plantilla está incorporada en las librerías del producto desde su lanzamiento, no se trata de un programa realizado por un técnico de aplicaciones y que otros utilizan.

No hay que intentar entender el código de la plantilla más allá de lo suficiente para su adaptación a cada aplicación, solo hay que saber cómo utilizarla.

Su configuración para adaptarla a cada máquina es un proceso totalmente mecánico y repetitivo que no presenta ninguna dificultad.

Su utilización es fácil, pero requiere unas horas de formación, que se recuperan con creces al realizar las primeras aplicaciones, especialmente si se trata de máquinas con un cierto número de ejes.

Para programadores que no están acostumbrados a emplear estructuras de datos ni a programar en ST (Structured Text), de entrada, puede parecer un poco complicado, pero después de unas horas de formación se le ven las ventajas y enriquece al programador.

Todas las pantallas que se han descrito en el artículo se pueden publicar con el WebServer para que puedan ser accesibles desde una Tablet o Smartphone y ser utilizadas como herramienta de mantenimiento avanzada.

Resumen / conclusiones.

El empleo de la plantilla reduce, de forma espectacular, el tiempo necesario para el desarrollo del programa, más cuando se trata de máquinas de una cierta complejidad, como la etiquetadora de altas prestaciones mostrada en la figura 10. Por tanto, el bebeficio que se obtiene de su utilización es la  reducción  del tiempo de acceso al mercado

Por el hecho de reutilizar un código, más que probado en miles de máquinas, se obtiene un programa “robusto” y libre de bugs.

Figura 10: Etiquetadora de altas prestaciones programada con la plantilla de PacDrive 3

Basta con publicar las pantallas, descritas en el articulo, en el WebServer, para que el personal de mantenimiento disponga de herramientas avanzadas en cualquier dispositivo que disponga de un explorador, lo que maximiza la producción

Todos los programas realizados con la plantilla son iguales en un alto porcentaje, por lo que todos los técnicos que conozcan el template, pueden modificar, diagnosticar, mejorar, etc. los programas de forma casi inmediata.

La programación con la plantilla es altamente recomendable, más contra más ejes tenga la máquina y solo hay que invertir unas veinte horas para ganar centenares. Menuda inversión!

Autor: Pere Garriga – Motion Control business development en Schneider Electric

Ingeniero Electrónico y con especialidad en ingeniería y optimización de hidrocarburos. Especializado en sistemas de gestión de energía (Colombia), Drives (Perú), PLCs (Perú), HMI (Perú) y SCADA (Argentina). Mucha experiencia en instalación de BT, MT y Automatización de máquinas y procesos industriales. Gerente general de la empresa Ideas Automation. Complementarias: Diseño Gráfico y multimedia. Desarrollador WordPress. Desarrollador de ERP Dolibarr. busway certification
busway certification
busway certification
busway certification
busway certification
busway certification
busway certification
busway certification