Articulo de referencia

LinuxCNC

{{cite web | url=https://github.com/LinuxCNC/linuxcnc/blob/2.9/COPYING.more | title=Linuxcnc/COPYING.more at 2.9 · LinuxCNC/Linuxcnc | website=[[GitHub]] }} "},"alexa":{"wt":""}...

LinuxCNC (anteriormente Enhanced Machine Controller o EMC2 ) es un sistema de software Linux gratuito y de código abierto que implementa la capacidad de control numérico computarizado (CNC) utilizando computadoras de propósito general para controlar máquinas CNC. Está diseñado principalmente para ejecutarse en sistemas PC AMD x86-64 . Desarrollado por varios programadores voluntarios en linuxcnc.org, generalmente se distribuye como un archivo ISO con una versión modificada de Debian Linux que proporciona el núcleo en tiempo real necesario .

Debido a la estrecha integración con el sistema operativo en tiempo real , un ordenador de sobremesa Linux estándar sin el núcleo en tiempo real solo ejecutará el paquete en modo de demostración.

Objetivo

LinuxCNC es un sistema de software para el control numérico de máquinas como fresadoras , tornos , cortadoras de plasma , routers , máquinas de corte , robots y hexápodos . Puede controlar hasta 9 ejes o articulaciones de una máquina CNC mediante código G (RS-274NGC). Cuenta con varias interfaces gráficas de usuario (GUI) adaptadas a usos específicos (pantalla táctil, desarrollo interactivo).

Actualmente se utiliza casi exclusivamente en plataformas de PC x86 , pero se ha adaptado a otras arquitecturas. Hace un uso extensivo de un núcleo modificado en tiempo real y admite controladores de tipo paso a paso y servo .

No ofrece funciones de dibujo (CAD - Diseño Asistido por Ordenador) ni de generación de código G a partir del dibujo (CAM - Fabricación Automatizada por Ordenador).

Historia

El sistema de software de dominio público EMC fue desarrollado originalmente por NIST , como el siguiente paso más allá del Programa de Controladores de Próxima Generación (NGC, 1989) patrocinado por el Centro Nacional de Ciencias de la Manufactura y la Fuerza Aérea, así como de la Especificación para una Arquitectura de Sistemas Abiertos (SOSAS). Se denominó EMC (Enhanced Machine Controller Architecture, 1993). Los sistemas de software de dominio público patrocinados por el gobierno para el control de fresadoras fueron algunos de los primeros proyectos desarrollados con la computadora digital en la década de 1950. Su objetivo era ser una implementación de referencia "independiente del proveedor" del lenguaje estándar de la industria para el control numérico de operaciones de mecanizado, RS-274D ( código G ).

El software incluía el intérprete RS274 que controlaba el planificador de trayectorias de movimiento, controladores de motor/actuador en tiempo real y una interfaz de usuario. Demostró la viabilidad de un sistema de control numérico avanzado utilizando hardware de PC comercial con FreeBSD o Linux , con interfaz para diversos sistemas de control de movimiento. El desarrollo continúa utilizando arquitecturas actuales y adicionales (por ejemplo, dispositivos con arquitectura ARM ).

El proyecto de demostración fue un gran éxito y creó una comunidad de usuarios y colaboradores voluntarios. Alrededor de junio de 2000, el NIST trasladó el código fuente a SourceForge bajo la licencia de dominio público para permitir que colaboradores externos realizaran modificaciones. En 2003, la comunidad reescribió algunas partes, reorganizó y simplificó otras, y le dio el nuevo nombre de EMC2. EMC2 continúa desarrollándose activamente. Actualmente, se rige por la Licencia Pública General de GNU .

La adopción del nuevo nombre EMC2 se debió a varios cambios importantes. Principalmente, se introdujo una nueva capa conocida como HAL ( Hardware Abstraction Layer ) para interconectar funciones fácilmente sin modificar el código C ni recompilarlo. Esto separó la planificación de trayectorias y movimientos del hardware de movimiento, lo que facilitó la generación de programas de control para máquinas pórtico , roscado y roscado rígido en tornos , brazos robóticos SCARA y diversas adaptaciones. HAL incluye herramientas interactivas para examinar señales y conectar y eliminar enlaces. También incluye un osciloscopio virtual para examinar señales en tiempo real. Otro cambio en EMC2 es Classic Ladder (una implementación de lógica de escalera de código abierto ) adaptada al entorno de tiempo real para configurar dispositivos auxiliares complejos como cambiadores automáticos de herramientas.

Alrededor de 2011, el nombre cambió de EMC2 a LinuxCNC, debido a un conflicto de marcas registradas con EMC Corporation , que posee las marcas registradas 'EMC' y 'EMC 2 '. LinuxCNC recibió una licencia para la marca registrada 'Linux' de la Linux Foundation . [ 2 ]

Plataformas

Debido a la necesidad de un control preciso y detallado de las máquinas en tiempo real, LinuxCNC requiere una plataforma con capacidades de computación en tiempo real . Las primeras versiones de EMC se ejecutaban bajo una versión en tiempo real de Windows NT , pero las versiones posteriores de Windows no tenían un buen soporte en tiempo real, por lo que Linux con extensiones en tiempo real se convirtió en la plataforma preferida. [ 2 ] Actualmente, LinuxCNC utiliza el kernel RTAI o PREEMPT-RT con la variante 'uspace' de LinuxCNC de la RTAPI.

Instalar LinuxCNC y los parches del kernel en tiempo real subyacentes en un sistema Linux base puede ser una tarea desalentadora. Paul Corner acudió al rescate con BDI (Brain Dead Install), un CD desde el cual se podía instalar un sistema completo y funcional (Linux, parches en tiempo real y LinuxCNC). [ 3 ] Esto hizo que LinuxCNC fuera accesible a una comunidad de usuarios mucho más amplia. Hoy en día, el BDI de Paul ha evolucionado hasta convertirse en una ISO de arranque (en vivo) que se puede grabar en un CD o USB y ejecutar en casi cualquier ordenador tipo PC para probar LinuxCNC sin tener que instalar el sistema. Las ISO de arranque de LinuxCNC están disponibles para Debian Bookworm y Trixie con el kernel RT-PREEMPT, y aún se ofrece soporte para los kernels RTAI y Xenomai.

La política de LinuxCNC es crear paquetes y ofrecer soporte para Debian , pero también hay paquetes binarios precompilados disponibles para otros sistemas y arquitecturas Linux. [ 4 ]

Diseño

LinuxCNC utiliza el modelo de "detectar, planificar, actuar" en sus interacciones con el hardware. [ 5 ] Por ejemplo, lee la posición actual del eje, calcula una nueva posición/voltaje objetivo y luego la escribe en el hardware. No hay almacenamiento en búfer de comandos ni se permiten lecturas o escrituras iniciadas externamente. Este enfoque sin búfer ofrece la mayor libertad para agregar o modificar capacidades de LinuxCNC. Al utilizar hardware externo relativamente "sencillo" y programar las capacidades en la computadora anfitriona, LinuxCNC no está limitado a ningún componente de hardware en particular. También permite que un usuario interesado modifique fácilmente el comportamiento, las capacidades o el hardware.

Este modelo suele prestarse a tipos específicos de interfaces externas: PCI, PCIe, puerto paralelo (en modo SPP o EPP), ISA y Ethernet se han utilizado para el control de motores. USB y la comunicación serie RS232 no son buenas opciones; USB tiene capacidades de tiempo real deficientes y RS232 es demasiado lento para el control de motores.

LinuxCNC tiene requisitos básicos de "tiempo real" debido a este modelo. El intervalo entre lectura y escritura debe ser constante y razonablemente rápido. Una máquina típica realiza cálculos en tiempo real en un hilo repetitivo de 1 milisegundo. La lectura y escritura en el hardware debe ocupar una pequeña parte de este tiempo, por ejemplo, 200 microsegundos; de lo contrario, el desfase dificulta la optimización y hay menos tiempo disponible para los programas que no son en tiempo real, lo que puede hacer que los controles de la pantalla respondan con menos rapidez.

LinuxCNC "emplea un generador de perfil de velocidad trapezoidal". [ 6 ]

Configuración

LinuxCNC utiliza una capa de software llamada HAL (Hardware Abstraction Layer). [ 7 ]

HAL permite construir multitud de configuraciones [ 8 ] a la vez que es flexible: se pueden mezclar y combinar varias placas de control de hardware, emitir señales de control a través del puerto paralelo o el puerto serie , mientras se controlan motores paso a paso o servomotores , solenoides y otros actuadores .

LinuxCNC también incluye un controlador lógico programable (PLC) por software, que se suele utilizar en configuraciones extensas (como centros de mecanizado complejos). El PLC por software se basa en el proyecto de código abierto Classicladder [ 9 ] y se ejecuta en un entorno de tiempo real.

Véase también

Referencias

Notas
  1. "Linuxcnc/COPYING.more en 2.9 · LinuxCNC/Linuxcnc" . GitHub .
  2. 1 2 "Historia de EMC" . Junta Directiva de Linuxcnc. 12 de septiembre de 2018. Recuperado el 14 de septiembre de 2018 .
  3. "Historia de EMC" . Junta Directiva de Linuxcnc. 12 de septiembre de 2018. Consultado el 14 de septiembre de 2018 .
  4. "Obteniendo LinuxCNC" . linuxcnc.org. 19 de febrero de 2018. Consultado el 14 de septiembre de 2018 .
  5. "Requisitos de diseño de hardware de LinuxCNC" .
  6. "Notas sencillas para TP" .
  7. "Capa de abstracción de hardware de EMC2" . Junta Directiva de Linuxcnc . Consultado el 30 de septiembre de 2010 .
  8. "Un par de estudios de caso" . Consultado el 30 de septiembre de 2010 .
  9. "ClassicLadder" . Consultado el 6 de marzo de 2014 .
Bibliografía
  • Proctor, FM y Michaloski, J., «Descripción general de la arquitectura mejorada del controlador de máquina», Informe interno 5331 del NIST, diciembre de 1993. Disponible en línea en https://web.archive.org/web/20201208080506/https://nvlpubs.nist.gov/nistpubs/Legacy/IR/nistir5331.pdf
  • Albus, JS; Lumia, R. (1994). "El controlador de máquina mejorado (EMC): un controlador de arquitectura abierta para máquinas herramienta". Journal of Manufacturing Review . 7 (3): 278– 280.
  • Lumia, "The Enhanced Machine Controller Architecture", 5º Simposio Internacional sobre Robótica y Fabricación, Maui, HI, 14-18 de agosto de 1994, https://www.nist.gov/customcf/get_pdf.cfm?pub_id=820483
  • Fred Proctor et al., "Simulación e implementación de un controlador de arquitectura abierta", Tecnologías de simulación y control para la fabricación, Volumen 2596, Actas de la SPIE, octubre de 1995, https://web.archive.org/web/20100527174141/http://www.isd.mel.nist.gov/documents/proctor/sim/sim.html
  • Fred Proctor, John Michaloski, Will Shackleford y Sandor Szabo, "Validación de interfaces estándar para el control de máquinas", Automatización inteligente y computación blanda: tendencias en investigación, desarrollo y aplicaciones, volumen 2, TSI Press, Albuquerque, NM, 1996, https://web.archive.org/web/20100527165142/http://www.isd.mel.nist.gov/documents/proctor/isram96/isram96.html
  • Shackleford y Proctor, «Uso de distribución de código abierto para un controlador de máquina herramienta», Sensores y controles para la fabricación inteligente. Conferencia, Boston, MA, 2001, vol. 4191, pp.  19–30, https://web.archive.org/web/20100820224129/http://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf o doi : 10.1117/12.417244
  • Morar et al., "Sobre la posibilidad de mejorar los generadores eólicos", Conferencia Internacional sobre Ingeniería Económica y Sistemas de Fabricación, Brasov, 25-26 de octubre de 2007, https://web.archive.org/web/20120313054238/http://www.recentonline.ro/021/Morar_L_01a.pdf
  • Zhang et al., "Desarrollo de EMC2 CNC basado en Qt", Manufacturing Technology & Machine Tool, 2008, http://en.cnki.com.cn/Article_en/CJFDTOTAL-ZJYC200802046.htm Archivado el 3 de marzo de 2016 en Wayback Machine
  • Leto et al., "Integración CAD/CAM para interpolación de trayectorias NURBS en control numérico en tiempo real basado en PC", 8.ª Conferencia Internacional sobre Sistemas y Tecnologías Avanzadas de Fabricación, 12-13 de junio de 2008, Universidad de Udine, Italia, https://web.archive.org/web/20110703113248/http://158.110.28.100/amst08/papers/art837759.pdf
  • Xu et al., "Mecanismo y aplicación de HAL en el EMC2", Modern Manufacturing Technology and Equipment 2009–05, http://en.cnki.com.cn/Article_en/CJFDTOTAL-SDJI200905037.htm Archivado el 3 de marzo de 2016 en Wayback Machine
  • Zivanovic et al., "Metodología para la configuración de una máquina cinemática paralela de 3 ejes de escritorio" , FME Transactions (2009) 37, 107–115, https://www.researchgate.net/publication/268357920_Methodology_for_Configuring_Desktop_3-axis_Parallel_Kinematic_Machine
  • Glavonjic; et  al. (2009). "Fresadora cinemática paralela de 3 ejes de sobremesa". The International Journal of Advanced Manufacturing Technology . 46 ( 1– 4): 51– 60. doi : 10.1007/s00170-009-2070-3 . S2CID 60640709 . 
  • Staroveski et al., "Implementación de un sistema de control abierto CNC basado en Linux" , 12.ª Conferencia Científica Internacional sobre Ingeniería de Producción – CIM2009, Asociación Croata de Ingeniería de Producción, Zagreb 2009,
  • Li et al., "Diseño y simulación del sistema de control de una máquina cinemática paralela basada en EMC2", Machinery Design & Manufacture 2010–08, http://en.cnki.com.cn/Article_en/CJFDTOTAL-JSYZ201008074.htm Archivado el 3 de marzo de 2016 en Wayback Machine
  • Li; et  al. (2010). "Análisis cinemático y diseño de sistema de control de una máquina cinemática paralela de 6 grados de libertad con Matlab y EMC2" . Advanced Materials Research . 102–104 : 363–367 . doi : 10.4028/www.scientific.net/AMR.102-104.363 . S2CID 62700779 . 
  • Klancnik et al., "Detección de piezas de trabajo basada en computadora en máquinas herramienta de fresado CNC utilizando cámara óptica y redes neuronales", Advances in Production Engineering & Management 5 (2010) 1, 59–68,
  • Milutinovic; et  al. (2010). "Sistema de mecanizado robótico reconfigurable controlado y programado como una máquina herramienta". The International Journal of Advanced Manufacturing Technology . 55 ( 9– 12): 555. doi : 10.1007/s00170-010-2888-8 . S2CID 109149203 . 
  • Wiki del proyecto LinuxCNC
  • El estándar NIST RS274NGC - Versión 3, agosto de 2000, también está disponible en formato PDF.
  • La página principal del controlador de máquina mejorado en NIST
  • Machinekit es un proyecto de código abierto para portar y extender EMC2/LinuxCNC para que funcione de manera eficiente en BeagleBone y hardware relacionado.