jueves, 11 de noviembre de 2010

La popularización del controlador: DIY, Hobby, y CNC personal

Habiendo realizado un repaso general de los conceptos más relevantes que se destacan en la implementación y empleo de sistemas CNC profesional, no se puede dejar de mencionar los diferentes tipos de tecnologías adoptadas por unas y otras vertientes de esta tendencia tecnológica. Estas diversas corrientes de desarrollo afectan tanto a la electrónica de control, como al diseño mismo de la mecánica de la máquina herramienta. Es así que durante años esta actividad estuvo circunscripta a determinados ámbitos productivos, generalmente caracterizados por su escala de producción y especialización técnica. Aquí hicieron su debut los primeros sistemas NC y luego tuvieron lugar los más modernos Centros de Mecanizados CNC, que hasta dicho momento respondían al concepto de “tecnología propietaria” o “arquitectura cerrada”. Desde entonces compañías originarias de Alemania, Estados Unidos de Norte América, Japón, Corea de Sur y China se destacaron por sus avances y afianzaron sus marcas, entre ellas Siemens, Emco, Heidenhain, Fanuc, Hurco, Haas, Fagor, Makino, Mitsubishi, Masak, Okuma, Mori Seiki, GSK, Doosan, KND, SNK, Great, Eurotech, etc.


Pero como se mencionó en más de una oportunidad anteriormente,  queda bien claro el peso específico que tiene el microprocesador, como elemento a partir del cual, se hace posible el acceso de forma económica al desarrollo de programas informáticos destinados al control de dispositivos CNC y de otros que le dan soporte al mismo.
Es así que en la actualidad se distinguen dos filosofías, en referencia a la arquitectura lógica sobre la cual se apoyan los programas de control o controladores CNC, pero sin embargo ambas están basadas en el mismo estándar industrial, en cuanto al microprocesador se refieren. Estamos hablando de los Sistemas Operativos, basados en la plataforma UNIX o compatible con la misma, desarrollado por AT&T Corp. y los que responden a Windows, desarrollado por Microsoft Corp., a partir del Sistema Operativo DOS en su instancia inicial.

En términos generales, los primeros se ajustarían de mejor forma a los requerimientos específicos de un dispositivo robótico, a partir de la misma arquitectura lógica que le da forma y que le confiere las características funcionales adecuadas para recibir la catalogación de Real Time Operating System (RTOS o Sistema Operativo de Tiempo Real). En tanto los segundos, requieren de un algoritmo “emulador”, para poder ajustarse a las condicionalidades agrupadas dentro de la especificación. 

Un RTOS, es un sistema operativo que ha sido desarrollado para aplicaciones de tiempo real. Como tal, se le exige corrección en sus respuestas bajo ciertas restricciones de tiempo. Si no las respeta, se dirá que el sistema ha fallado. Para garantizar el comportamiento correcto en el tiempo requerido se necesita que el sistema sea predecible (determinista). 

En la actualidad hay un debate sobre qué es en verdad tiempo real. Muchos RTOS tienen un programador y diseños de controladores que minimizan los periodos, en los que las interrupciones están deshabilitadas. Muchos incluyen también formas especiales de gestión de memoria que limitan la posibilidad de fragmentación de la memoria y aseguran un límite superior mínimo, para los tiempos de asignación y refresco de la memoria.
Este tipo de sistemas operativos no es necesariamente eficiente en el sentido de tener una capacidad de procesamiento alta. El algoritmo de programación especializado y a veces una tasa de interrupción del reloj alta, pueden interferir en la capacidad de procesamiento. Aunque para propósitos generales un procesador moderno suele ser más rápido, para programación en tiempo real deben utilizarse procesadores lo más predecibles posible, es decir, sin paginación. 

Las interrupciones son la forma más común de pasar información desde el mundo exterior al programa y son, por naturaleza, impredecibles. En un sistema de tiempo real estas interrupciones pueden informar diferentes eventos como la presencia de nueva información en un puerto de comunicaciones, de una nueva muestra de audio en un equipo de sonido o de un nuevo cuadro de imagen en una videograbadora digital.
Para que el programa cumpla con su cometido de ser tiempo real es necesario que el sistema atienda la interrupción y procese la información obtenida antes de que se presente la siguiente interrupción. Como el microprocesador normalmente solo puede atender una interrupción a la vez, es necesario que los controladores de tiempo real se ejecuten en el menor tiempo posible. Esto se logra no procesando la señal dentro de la interrupción, sino enviando un mensaje a una tarea o solucionando un semáforo, que está siendo esperado por una tarea. El programador se encarga de activar la tarea y esta se encarga de adquirir la información y completar el procesamiento de la misma.

El tiempo que transcurre entre la generación de la interrupción y el momento en el cual esta es atendida se llama “latencia de interrupción”. El inverso de esta latencia es una frecuencia llamada “frecuencia de saturación”, si las señales que están siendo procesadas tienen una frecuencia mayor a la de saturación, el sistema será físicamente incapaz de procesarlas. En todo caso la mayor frecuencia que puede procesarse es mucho menor que la frecuencia de saturación y depende de las operaciones que deban realizarse sobre la información recibida.

En cambio, los sistemas operativos que responden a un tipo de diseño típico, una tarea en particular tiene tres posibles estados: “ejecución”, “preparación” y “bloqueo”. La mayoría de las tareas están bloqueadas casi todo el tiempo. Solamente se ejecuta una tarea por CPU (Central Procesing Unit o Unidad Central de Procesamiento). La lista de tareas preparadas suele ser corta, de dos o tres tareas como mucho.  

Usualmente, la estructura de datos de la lista de tareas preparadas en el programador está diseñada para que cada búsqueda, inserción y eliminación necesiten interrupciones de cierre, solamente durante un período muy pequeño, cuando se buscan partes de la lista muy definidas.
Esto significa que otras tareas pueden operar en la lista asincrónicamente, mientras que el sistema realiza su búsqueda. Una buena programación típica es una lista conectada bidireccional de tareas preparadas, ordenadas por orden de prioridad. Hay que tener en cuenta, que no es rápido de buscar sino determinista. La mayoría de las listas de tareas preparadas sólo tienen dos o tres entradas, por lo que una búsqueda secuencial es usualmente la más rápida, porque requiere muy poco tiempo de instalación. El tiempo de respuesta crítico es el tiempo que necesita para poner en la cola una nueva tarea preparada y restaurar el estado de la tarea de más alta prioridad. 

En un sistema operativo en tiempo real bien diseñado, preparar una nueva tarea necesita de 3 a 20 instrucciones por cada entrada en la cola y la restauración de la tarea preparada de máxima prioridad de 5 a 30 instrucciones. Por ejemplo, en un procesador tipo 68000 de 20MHz, los tiempos de cambio de tarea son de 20 microsegundos con dos tareas preparadas. Cientos de CPU tipo MIP ARM pueden cambiar en unos pocos microsegundos.

Es así que se puede afirmar que el sistema operativo Windows, compatible con el microprocesador x86 de Intel, se ajusta más a un tipo de diseño típico, de acuerdo a lo descripto hasta aquí y por lo tanto carece de las prestaciones adecuadas para administrar en “tiempo real” un programa CNC ejecutado en el modo “usuario normal”. Sin embargo, las notables mejoras en el diseño y por lo tanto de rendimientos, que han experimentado los microprocesadores de esta serie, han dado lugar para que los sistemas operativos compatibles con esta arquitectura lógica alcancen niveles de respuesta adecuadas para automatismos, a pesar de su clara orientación generalista. Más aún, existen diversos desarrollos, que han logrado suplir este “flanco débil”, que presentan los sistemas operativos Windows y que “corrigen” ciertos aspectos de los algoritmos que limitan su capacidad de respuesta en tiempo real. Estos desarrollos tienen la forma de extensiones de aplicación general, tal es el caso del Ardance RTX, adoptado en el proyecto llevado adelante por NC System, con su controlador integrado WinPCNC o de otros de tecnología propietaria, como el desarrollado por Artsoft Corp., para su controlador CNC Mach3.

Los ejemplos mencionados tienen en común, diseños que responden al concepto de arquitectura abierta. En cambio se pueden citar muchos más, que en cambio adoptaron una arquitectura cerrada, tales son los propuestos por PlanetCNC, con su producto CNC USB, CamSoft, Flashcut, Win-PCNC, de la firma Heiz CNC Technik, MicroKinetics MillMaster Pro, EdingCNC, USBCNC, ProNC, de ISEL Germany, WinCNC, de la compañía MicroSystems, y varios otros más. Arquitectura abierta es un tipo de arquitectura de computadoras o arquitectura de software, que permite añadir, modernizar y cambiar sus componentes.




Pero no es la intensión del presente artículo profundizar en este aspecto técnico en particular, de los programas controladores CNC y de los sistemas operativos, que en muchos casos le dan soporte, sino más bien dar una idea general del estado actual de los avances en el ámbito que nos ocupa y sus alcances. Existe una notable profusión de información relacionada a las arquitecturas lógicas de los sistemas operativos, que recomendamos consultar, para indagar en mayor profundidad sobre el tema.

No obstante, las diferencias que prevalecen hoy en día entre una y otra corriente de desarrollo, la notable mejora de las prestaciones que ofrecen los microprocesadores de uso corriente en ámbitos laborales, tanto así como domésticos, hacen posible la implementación de sistemas de automación de pequeña escala, tales como controlar un pequeño torno o fresadora de mesa, con una computadora personal.
Los desarrollos recientes en la técnica del CNC en pequeña escala son posibles, en gran parte debido al proyecto conocido como Enhanced Machine Controller, (EMC o Controlador de Máquina Mejorado), llevado adelante por el National Institute of Standards and Technology (NIST o Instituto Nacional e Tecnología y Estándares), una agencia del Departamento de Comercio de los Estados Unidos de Norte América.


EMC es un programa de dominio público que opera dentro el sistema operativo Linux y que trabaja basado en hardware de PC, vale decir microprocesadores compatibles con el estándar x86 de Intel o compatibles con el mismo, como son los productos de AMD entre otros. Una vez concluido el proyecto EMC del NIST, el desarrollo continuó, dando lugar al EMC2, el cual está licenciado bajo la GNU / GLP Licencia Pública General, creada por la Free Software Foundation. 
De esta forma y siguiendo la misma filosofía que le da existencia al sistema operativo Linux, se hizo disponible un programa de control CNC de arquitectura abierta, con todas las mejores prestaciones de uno de arquitectura cerrada o tecnología propietaria. 
Una descripción detallada del proyecto EMC se puede acceder mediante en el siguiente enlace: The NIST RS274NGC Interpreter - Version 3

Sin embargo sería injusto no mencionar otras aproximaciones al diseño de un controlador CNC basado en la plataforma PC. Estas a diferencia de las anteriores se asentaron sobre el sistema operativo DOS, optando de esta forma, por dejar a un lado las ventajas que otorgan una mayor y mejor disponibilidad de recursos gráficos, pero evitando las complejidades técnicas de los anteriores. Así se hicieron populares controladores como el CNCPro, Turbo CNC, Zeus CNC.


La disponibilidad de estos programas de control basados en formato PC ha llevado al desarrollo del DIY CNC (Do It Yourself o Hazlo Tu Mismo), permitiendo que los aficionados puedan construir sus propias máquinas herramientas utilizando en sus diseños, kits de retrofiting o componentes de libre disponibilidad, que no responden a tecnologías propietarias.

La misma arquitectura básica ha permitido a los fabricantes de pequeñas máquinas herramientas, como Sherline, Taig y MaxNC, Sieg, proveer llave en mano sus productos, ya sean estos máquinas de fresado o torneado ligero de escritorio, para los aficionados. Finalmente, la arquitectura abierta permitió la proliferación de muchos más emprendimientos productivos y comerciales, a partir de su utilización para crear las partes componentes y máquinas herramientas adecuadas para aplicaciones comerciales e industriales. Esta clase de equipo ha sido referido en diversos ámbitos como CNC Personal.

Paralelamente a la evolución de las computadoras personales, el CNC Personal tiene sus raíces en el proyecto EMC, de controlador CNC basado en PC, pero ha evolucionado hasta el punto en que puede sustituir a grandes equipos convencionales, en muchos casos. Al igual que con la computadora personal , el CNC Personal se caracteriza por un equipo cuyo tamaño, capacidad y precio de venta, lo hacen especialmente accesible para un gran cantidad de personas y está destinado a ser operado directamente por el usuario final, muchas veces sin formación profesional en tecnología de CNC.



Robaq Automación. Buenos Aires. Argentina. 
E-Mail: info.robaq.@gmail.com





Para saber más acerca de nuestros servicios relacionados, selecciona el siguiente enlace:



Folleto en formato JPG











Folleto en formato PDF

No hay comentarios:

Publicar un comentario