Adaptación de un postprocesador para láseres

Introducción

El módulo Láser permite que ambos nuevos tipos de herramientas representen láseres en la base de datos de herramientas, así como nuevas estrategias específicas de láser.

El módulo Láser ahora proporciona registros y variables independientes para herramientas láser y trayectorias de herramienta. Debido a que estas salidas se han separado del control de enrutador convencional, para la mayoría de las máquinas y controladores debería ser posible crear un solo postprocesador para trabajar sin problemas con trayectorias de herramienta de enrutador o láser, pero tenga en cuenta que es posible que todavía tenga que asegurarse de que la configuración física de su máquina se cambia dependiendo del tipo de trayectoria de herramienta.

Los postprocesadores anteriores no funcionarán correctamente con el módulo láser

Tenga en cuenta que muchos fabricantes de kits de conversión proporcionaron postprocesadores Vectric antes del lanzamiento del módulo láser. Estas soluciones alternativas utilizadas para permitir que algunas estrategias de trayectoria de herramienta del router, como la generación de perfiles, se utilizara con un cabezal láser. Los postprocesadores creados sin soporte explícito para las características adicionales documentadas aquí no funcionarán correctamente.

Generalmente hay 4 áreas que necesitan ser modificadas en un Postprocesador convencional para extenderlo para el soporte de trayectoria de herramienta láser.

  • Añadir soporte para una nueva variable Power, que será utilizada por las nuevas estrategias láser.
  • Agregar nuevos bloques de postprocesador específicos del láser para formatear las trayectorias de herramienta láser correctamente para su máquina y controlador.
  • Modificar cualquier bloque de postprocesador existente para garantizar una alimentación independiente y un comportamiento específico del láser.
  • Agregar un indicador para decirle al software de Vectric que este post ahora es compatible con estrategias de trayectoria de herramienta láser.

Las secciones siguientes tratan cada área a su vez y se proporciona un ejemplo utilizando el controlador de gcode GRBL. Estos ejemplos provienen del postprocesador grbl (mm y pulgadas) proporcionado por defecto con el software de Vectric.

Variable Power

El software de Vectric enviará el ajuste de potencia para una trayectoria de herramienta láser en el rango de 1-100%. Necesitamos agregar una nueva variable para mostrar cómo formatear esta configuración para su controlador en particular. Esta es también la oportunidad de escalar el valor de porcentaje sin procesar al rango numérico que requiere el controlador.

Ejemplo

Para los controladores basados en GRBL, la configuración de potencia de un láser suele ir solapado con el comando de control de velocidad del husillo gcode 'S'. En el modo láser, el controlador responderá a un cambio de control de velocidad del husillo ajustando la potencia del láser en su lugar. Aunque se puede establecer dentro del controlador, la configuración predeterminada para el valor máximo esperado 'S' - o potencia láser - es 1000.

Para GRBL, por lo tanto, necesitamos formatear la variable POWER para que sea un comando gcode 'S' y escalar su valor de salida por un factor de diez para que esté en el rango de 1 a 1000 (en lugar del valor predeterminado 1-100).

La entrada variable en el postprocesador dice:

VAR POWER = [P|C|S|1.0|10.0]

Para dividir esta entrada en inglés simple, estamos diciendo que la salida POWER de nuestra trayectoria de herramienta debe utilizarse en cualquier lugar en nuestro archivo de definición posterior donde tenemos la variable [P]. Pero sólo debemos generar un comando a medida que cambia el valor POWER (C). Reemplazaremos las ubicaciones de la variable [P] en nuestra salida de trayectoria de herramienta con el comando 'S' (S). El valor de potencia debe formatearse como un número entero sin puntos decimales (1.0) y debe multiplicarse de su valor predeterminado por un factor de 10.

Nuevos bloques de postprocesador láser

Para permitir el control láser, hay nuevos bloques de postprocesador disponibles en el postprocesador. Estos son:

  • JET_TOOL_ON - Salida siempre que la trayectoria de herramienta necesite el láser encendido
  • JET_TOOL_POWER - Salida cada vez que la trayectoria de herramienta necesita la potencia láser para cambiar
  • JET_TOOL_OFF - Salida cada vez que la trayectoria de herramienta necesita el láser apagado

Ejemplo

En nuestro ejemplo GRBL hemos añadido los 3 nuevos tipos de bloques. Para encender el láser, GRBL hace uso del comando gcode M4 (normalmente diseñado para la dirección del husillo, pero 'reutilizado' por GRBL para soporte láser). Ahora podemos hacer uso de nuestra variable POWER, definida anteriormente como [P], para proporcionar el valor de potencia requerido. El bloque JET_TOOL_ON es así:

+---------------------------------------------------

+ Los comandos se emiten cuando el chorro está encendido

+---------------------------------------------------

begin JET_TOOL_ON

"M4[P]"

Para desactivar el láser, GRBL hace uso del comando gcode M5:

+---------------------------------------------------

+ Salida de comandos cuando el chorro está apagado

+---------------------------------------------------

begin JET_TOOL_OFF

"M5"

Finalmente para ajustar la alimentación en sí, entonces GRBL envía la alimentación:

+---------------------------------------------------

+ Los comandos emiten cuándo se cambia la potencia del chorro

+---------------------------------------------------

begin JET_TOOL_POWER

"[P]"

Modificar bloques existentes

También queremos que sea el caso de que cuando realizamos un movimiento de alimentación también generamos la potencia, por lo que para ello actualizamos los bloques FEED_MOVE para incluir [P].

Tenemos que hacer eso para todos los diferentes tipos de movimiento de alimentación.

Además, tenemos que evitar movimientos de inmersión que ocurren cuando el láser está encendido. Para el fresado o enrutamiento convencional, necesitamos que el husillo esté encendido antes de un movimiento de inmersión, pero para un láser es crucial que solo lo encendamos después de que nos hayamos movido al nivel Z correcto (este problema se manifiesta como "sobrequemación" al principio de cada segmento de trayectoria de herramienta). Para asegurarnos de que podemos separar correctamente estos requisitos, es posible que necesitemos eliminar cualquier comando de husillo de los movimientos de inmersión, u otros tipos de bloques (algunos pueden tenerlos en el encabezado, por ejemplo) y dividirlos en bloques SPINDLE_ON y PLUNGE_MOVE explícitos. Esto asegurará que estos movimientos solo se realicen para estrategias de trayectoria de herramienta no láser y en la secuencia correcta.

Ejemplo

Para GRBL esto es una simple adición al final de la sentencia de movimiento de avance:

+---------------------------------------------------

+ Salida de comandos para movimientos de velocidad de avance

+---------------------------------------------------

begin FEED_MOVE

"G1[X][Y][Z][P]"

Recuerde que establecemos nuestra variable POWER para que solo emita en el cambio (C) de modo que tenga en cuenta que en la salida para los movimientos de avance a potencia constante, solo se incluirá un comando de encendido inicial, cambiante. Para algunos controladores, el número de comandos que se pueden procesar es un factor limitante en la velocidad de la trayectoria de herramienta y para las imágenes láser, en particular, esto se puede mitigar un poco al no enviar comandos innecesarios siempre que sea posible.

Para el husillo GRBL separado y el control de inmersión, los bloques son:

+---------------------------------------------------

+ Salida de comando después del encabezado para encender el husillo

+---------------------------------------------------

begin SPINDLE_ON

"[s]M3"

+---------------------------------------------------

+ Salida de comandos para el movimiento de inmersión

+---------------------------------------------------

begin PLUNGE_MOVE

"G1[X][Y][Z][F]"

Observará que GRBL utiliza el M3 para controlar el router o el torno. También tenga en cuenta que el movimiento de inmersión requiere la capacidad de mover la máquina en X e Y con el fin de apoyar la rampa.

Marcar explícitamente el postprocesador como compatible con láser

Por último, un PostProcesador requerirá que la nueva Declaración global de archivos LASER_SUPPORT "YES" agregada esté disponible para su selección como un postprocesador láser dentro del software.

Esto sólo se agrega a postprocesadores para uso general una vez que el postprocesador ha recibido pruebas completas por el creador.

Ejemplo

LASER_SUPPORT "YES"