Códigos y lenguajes utilizados en CNC
Si bien existe un estándar para este lenguaje, que en realidad apunta a las m áquinas industriales, industriales, yo voy a tratar de describir algunos, No todos los códigos utilizados. La cuestión es que los programas que generan estos códigos pueden ser muy variados, según el tipo de trabajo que se desee realizar, por ejemplo, una perforadora necesita un programa que genere códigos de perforación, una fresadora, requiere otro que genere los códigos de desgaste, una graficadora requiere un programa que genere las coordenadas de trazado del gráfico, etc. La gran mayoría de e stos programas trabajan con los s istemas CAD (Diseño Asistido por Computadora) el favorito de todos es AutoCAD, u otro muy similar, y es aquí donde entran los formatos de los archivos utilizados, como los NC-Drill, lo GCodes, los PLT y otros más, en fin, comencemos con el primero de ellos... .: NC-Drill
Estos archivos por lo general los puedes obtener de los programas de diseño de PCB, nada impide que puedas crear tu propio programa para generar este tipo de códigos. La tabla que viene a continuación, ya te la había mostrado antes, y es una traducción de la que se encuentra en la web Computer Numerical Control for Drillers and Routers % reiniciar y detener X#Y# Mover y Perforar T# Selección de Herramienta M30 Fin de programa M00 Fin de programa M25 Inicio de Modelo M31 Inicio de Modelo M01 Fin de Modelo M02 X#Y# Repetir Modelo R#M02X#Y# Repetición Múltiple del Modelo M02 X#Y# M70 Cambio de Eje M02 X#Y# M80 Reflejar Reflejar Imagen en el Eje X M02 X#Y# M90 Reflejar Reflejar Imagen en el Eje Y M08 Fin de paso y Repetir N# Bloquear Bloquear Secuencia de Números / Eliminar Bloque R#X#Y# Repetir orificio G05, G81 Seleccionar modo de Perforación Perforaci ón G04 X# Variable Local (ignorar) G90 Modo Absoluto G91 Modo Incremental G92 X#Y# Poner a cero G93 X#Y# Poner a cero M48 Encabezado Encabezado de Programa antes de "%" M47 Operador Operador de Mensajes CRT en Pantalla M71 Modo Métrico M72 Modo Inglés-Imperial Inglés-Impe rial Snn Velocidad de husillo (RPM) Fnn Mantener velocidad en Eje z (IPM) En las pruebas que hice no me encontré con muchos de ellos, quizás quizás más adelante me anime a hacer un programa que genere todo este tipo de códigos. Bien, ahora veamos un ejemplo, para comenzar haremos un pequeño circuito en PCBWizard... Primero el esquema del circuito y luego generaremos el PCB, así...
Ahora lo vamos a exportar a formato NC-Drill, para ello ve al menú File --> Export..., en tipo de archivo seleccionamos NC Drill(*.drl) luego seleccionamos el directorio y le ponemos un nombre, por ejemplo SimpCirc.drl
Bien, ahora echemos un vistazo a este archivo, y mira lo que acabamos de obtener... M48
% T01
X+01400Y+01600 X+01800Y+01600 X+02200Y+01600 X+02300Y+01600 X+01400Y+02000 X+01800Y+02000 T02
X+02100Y+02000 X+02300Y+02000 M30
Bueno, lo pinté para poder describir el código, y veamos... Lo que está de color naranja son conocidos como Funciones de la Máquina, Definen lo que debe hacer la máquina, por ejemplo, rociar el enfriador, iniciar el giro del mandril, detenerlo, etc, lo que si debo decir es que no encontré más información respecto al M48, así que lo tome como marcadores para el Inicio del programa o del código, y al otro M30, como el Final del programa. Si miras la tabla anterior... son eso justamente... El símbolo %, por lo visto forma parte del encabezado del programa, y no se más de el, podríamos decir que... aquí comienza el código de desplazamiento y perforación...???, bueno, ahí queda... y T02, es el tipo de herramienta que se debe utilizar, para nosotros sería algo así como... el diámetro de la herramienta de perforación. T01
Si miras la cantidad de coordenadas X,Y verás que nos indica 8 perforaciones, y eso es correcto, aunque dos de ellas están separadas, y bueno es porque se trata de dos perforaciones de diámetro distinto, y sí, esas son las perforaciones para la bornera de la fuente de alimentación. Observa ahora las primeras 4 coordenadas, esas que están pintadas de rojo, por lo que se ve, están alineadas en el eje Y, lo único que cambia es la ubicación respecto del eje X, bien, en nuestro PCB serían las perforaciones para la Resistencia y el LED, y las otras dos que le siguen son para el interruptor. Hasta aquí... Las otras pruebas que hice no generaron gran variación, lo único que cambia son los diámetros de las herramientas, pero creo que es suficiente para que puedas hacer un programa de perforaciones, y a demás tienes la tabla para guiarte. El programa que hice para mi máquina fue muy sencillo, pero lo veremos en la sección de programación, ahora veamos otros códigos. Códigos para CNC
Bueno, esto ya es amplio, en realidad los códigos para el CNC fueron creados para Máquinas Industriales, los que vimos anteriormente, salieron de esta tabla, que ya está un poco más completa, y cada máquina toma la parte de código que le interesa, el resto lo deja de lado, ( si tienes una máquina que trabaja en 2D... Para qué te sirven las instrucciones de otra que trabaja en 3D? ) Comando Descripción
N G X Y Z R A I J K F S T M
Número de Secuencia Funciones Preparatorias Comando para el Eje X Comando para el Eje Y Comando para el Eje Z Radio desde el Centro Especificado Ángulo contra los Punteros del Reloj desde el Vector +X Desplazamiento del Centro del Arco del Eje X Desplazamiento del Centro del Arco del Eje Y Desplazamiento del Centro del Arco del Eje Z Tasa de Alimentación Velocidad de Giro Número de Herramienta Funciones Misceláneas
Ahora comencemos con la descripción de cada comando o instrucción. En Gris, los comandos que veremos primero, ya que son los más cortos, y a los otros les dedicaremos más tiempo, y así no nos perdemos.. .: Número de Secuencia (N)
Tal como dice el título, Es el número de secuencia que identifica una línea de código de trazado, mira como quedaría el código anterior... N0000 N0010 N0020 N0030 N0040 N0050 N0060 N0070 N0080 N0090 N0100 N0110 N0120
M48 % T01 X+01400Y+01600 X+01800Y+01600 X+02200Y+01600 X+02300Y+01600 X+01400Y+02000 X+01800Y+02000 T02 X+02100Y+02000 X+02300Y+02000 M30
Bueno, esto es sólo un ejemplo para que veas el uso que tiene. Para quienes nos dedicamos a la programación, es importante saber en que línea de código se encuentra una determinada instrucción, esto es c on el fin de no perdernos cuando se trata de un código demasiado extenso, pues esa es la única función que cumple, esto significa que no es de vital importancia para la máquina, sino para quien programa. Por otro lado, también suele utilizarse como un puntero, es decir, una vez termine el trazado puede volver a repetir una parte de éste, sólo indicándole en que línea de código debe comenzar, y hasta donde debe hacerlo, y aquí sí que cobra importancia. Por supuesto esto queda a criterio de cada uno. .: Comandos para los Ejes X,Y y Z
Los agrupé a los tres Ejes por que siguen, por así decirlo, la misma sintaxis, por ejemplo... X50 Y40 Se indica primero el eje en el cual se desplaza y luego un valor numérico, que puede indicar la cantidad de puntos a desplazarse, en nuestro caso, la orden sería... "desplázate 50 puntos hacia el lado positivo de las X, y 40 puntos hacia el lado positivo de las Y".
Pero está el otro caso, podría significar lo siguiente... "Desplázate hacia el punto X=50, Y=40" Por si no notas la diferencia, en el primer caso te indica cuantos puntos debes desplazarte, mientras que en el segundo, te indica hacia qué punto (coordenada) debes ir. El tema es, cómo saber que tipo de desplazamiento debo realizar, si el primero o el segundo, bueno, eso lo veremos luego, confía en mí... Ahora, sigamos... Mira estas 4 líneas... X50 Y40 X-110 X-130 Y60 Y-220 Estos son desplazamientos en los ejes X,Y... Debes recordar que en un sistema de ejes cartesianos, (como dicen los profes de matemáticas) tienes signos positivos y negativos, aquí los signos indican eso justamente, hacia que lado ir, Algunos máquinas requieren que se precisen los signos positivos, otras no, y como siempre, todo dependerá de la máquina. Para el eje Z ocurre lo mismo Otras observaciones, como verás, el comando para cada eje, va separado por un espacio, otros suelen utilizar una coma (,) y otros, ni si quiera eso., directamente se toma como separador, la letra que identifica a la instrucción. En la segunda línea del ejemplo anterior, se indica el comando para el eje X, pero nada para el eje Y, y es por que el eje Y debe permanecer donde está (es decir, no habrá desplazamiento en ese eje), algo muy similar ocurre en la última línea, sólo que en este caso es respecto al eje Y. Igual que antes, algunas máquinas requieren sí o sí, que se le indique el par de comandos, y en otras no es necesario. Una más... En el siguiente ejemplo, podrás ver que se indican los valores para cada comando, anteponiendo ceros a cada número, la cantidad de ceros depende de la cantidad máxima de puntos que la máquina puede trazar (sería en realidad la resolución de la máquina, algo así como... Puntos por Pulgada). X+01800 Y+00200 Otra vez, todo dependerá de la forma en que la máquina realiza la lectura de estos comandos, para algunas será necesario, para otras no. Veamos otras instrucciones. .: Tasa de Alimentación feedrate(F)
Este término podría tener varias acepciones, yo lo tomé comooooo "Mantener velocidad" en lugar de Tasa de alimentación, me pareció un poco más significativo, ya que es eso lo que hace. Algunos comandos, que luego veremos más adelante, lo utilizan sin necesidad de especificarlo, es como que la máquina tiene un registro en su memoria en donde se almacena este valor, y cuando el comando se ejecuta, automáticamente toma este valor de la memoria, y cambia o mantiene la velocidad indicada en ese registro. Esta velocidad se refiere al desplazamiento, es la velocidad con que la máquina recorrerá la Pieza que está grabando, sería más que nada respecto a los desplazamientos en los tres ejes, nada que ver con el giro de la Herramienta .: Velocidad de Giro (S)
Está referido al Husillo, la velocidad de giro de la fresadora, dependerá por lo general del material de la pieza que estés tallando, grabando o fresando, no es lo mismo calar madera que cobre o acero por ejemplo, la primera puede hacerse más rápido que la segunda y la tercera. El valor que acompañe a la instrucción S seguramente será un número entero, ahora, la cuestión es, cómo manejará la máquina estos valores...? si lo hará en revoluciones por minutos, cantidad de pasos por minuto, o por segundo, y sí, también depende de cada máquina, o del fabricante de la máquina, o sea nosotros, jejeje... Bien, eso es todo, sigamos... .: Número de Herramienta ( T)
Por lo que sé, las máquinas industriales poseen un cabezal que les permite cambiar de herramienta automáticamente, bueno según la instrucción o comando que se ejecute, el valor que acompañe a T apuntará a una Herramienta en especial, y sólo a ella, por ejemplo, podría ser algo así... T02
<-- .0394
Estos valores están dados en Pulgadas o unidades Inglesas, hay una tabla muy interesante en la Web www.apcircuits.com que puedes bajarte, incluso se encuentra la forma en que se calculan estos diámetros. Ahora, vamos a lo nuestro, podrías asignarle el dámetro que tu quieras a cada valor de por ejemplo podría ser algo así... T01 T02 T03
T,
y así tienes tu propia equivalencia,
<-- 0.50 mm <-- 0.75 mm <-- 1.00 mm
Bueno, no se... eso se me acaba de ocurrir. Algo más,
T01
sería equivalente a T1, te diste cuenta de eso verdad...?
Vamos por lo que sigue... .: Funciones Misceláneas o F unciones de la Maquina ( M)
Estos código, son utilizados para todo aquello que antes no se había tenido en cuenta, algunos códigos controlan el flujo del programa, otros sin embargo, tienen funciones muy especiales, por ejemplo, el encendido de la máquina, el calibrado cuando ésta se enciende, el sentido de giro del mandril, el inicio o la repetición de un bloque de códigos, el control del rociador para el enfriamiento de la herramienta y la pieza que se está trabajando, etc. En fin, yo aquí me encontré con algunas muy interesantes, y las separé en esta pequeña tabla... Comando Descripción
M03 M04 M05 M07
M30
M99
Inicio de la rotación del mandril en la dirección de las agujas del reloj. Inicio de la rotación del mandril en la dirección contraria a las agujas del reloj. Detención de la rotación del mandril. Conexión del aporte de rocío del enfriador. Detención y rebobinado del programa. Detención de la rotación del mandril, del movimiento de la herramienta y desconexión del flujo del enfriador; el control se prepara a comenzar la lectura del inicio del programa una vez más. Todas las funciones de la máquina (preparatorias, misceláneas, etc) vuelven a su estado por defecto (la condición en la cual se encuentra la máquina al encenderla por primera vez.) Retorno desde la subrutina al programa principal
Igual que antes, la implementación de estos códigos depende de cada fabricante, es decir, de nosotros. Bien, ahora vamos por lo más extenso... Códigos para CNC - Funciones Preparatorias (G)
Las funciones preparatorias, también conocidas como G-Codes o Códigos G, son las más importantes en la programación CNC, ya que controlan el modo en que la máquina va a realizar un trazado, o el modo en que va a desplazarse sobre la superficie de la pieza que está trabajando. Los posibles valores que acompañan a este comando, van de 00 a 99, y cada uno tiene una función determinada, no voy a describirlos a todos, sino a los más importantes, o al menos aquellos que considero de vital importancia, y que los puedes ver en esta tabla... Comando
Descripción
G00 G01
Interpolación Lineal Rápida. Interpolación lineal a la velocidad programada en el registro F.
G02 G03 G04 G17 G18 G19 G40 G41 G42 G70 G71 G90 G91
Movimiento Circular en el sentido horario Feedrate. Movimiento Circular en el sentido anti-horario Feedrate. Es una demora o una pausa con un tiempo específico. Selección del Plano X-Y Selección del Plano X-Z Selección del Plano Y-Z Compensación anulada, o al centro de la línea de desplazamiento. Compensación a la Izquierda de la línea de desplazamiento. Compensación a la Derecha de la línea de desplazamiento. Unidad de Datos expresados en Pulgadas. Unidad de Datos expresados en Milímetros. Desplazamiento en Modo Absoluto. Desplazamiento en Modo Incremental o Relativo.
Bueno, aquí podremos agrupar algunos, por ejemplo... .: Interpolaciones Lineales (G00 y G01)
Uhhh... debemos saber primero que significa interpolación, veamos, según uno de mis diccionarios de la lengua hispana... Interpolación es el proceso mediante el cual, conocidos los valores que toma una función en dos puntos (A,B), se
determina con cierto grado de exactitud los valores de u n tercer punto (C) comprendido entre A y B.
Para aquellos a quienes les cuesta un poquitín interpretar la definición anterior, dicho en entendible, sería algo así... Si conoces la ubicación del extremo (A) de una línea, y conoces la ubicación del otro extremo (B), entonces es posible conocer cada punto (C) por los cuales debes pasar para llegar desde A hasta B. Bien, ahora que ya sabemos lo que significa interpolación, podemos comenzar con la descripción de estos comandos. Si bien ambos son interpolaciones lineales o movimientos lineales, la diferencia se encuentra en la velocidad de desplazamiento. G00 es un movimiento rápido, en este caso no existe contacto entre la herramienta y la pieza de trabajo, es decir se
desplaza sin realizar corte alguno.
G01 es un movimiento lineal pero cortando el material, es decir que se está graficando, para ello utiliza la velocidad
programada en el registro F, el cual ya describimos anteriormente.
.: Interpolaciones Circulares o Movimientos Circulares (G02 y G03)
Lo único que indican estos comando es que el movimiento será circular, G02 en sentido Horario, y G03 en sentido Antihorario, y que el movimiento debe mantenerse constante a la velocidad programada en el registro F. Hay dos formas de realizar un Arco o un círculo, una es utilizando el Radio ( R ) y otra es indicando el centro u origen de la curva por las coordenadas ( I,J,K) Estos 4 comandos también figuran en la tabla que vimos en la página anterior, así que aquí las liquidamos... .: Trazado de Arcos Utilizando el R adio (R ):
Veamos la primera. Si el comando es G03 significa que el arco se trazará en sentido anti-horario, y si el centro de la c urva está dado por el Radio (R), hay dos posibilidades, -R o +R. * Si el R adio es Negativo, el centro del Radio se encuentra del lado Izquierdo de la línea imaginaria que une los puntos
Inicial y Final de la curva, o sea, se trata de esto...
(figura 1) El centro del arco está del lado izquierdo
(figura 2) La ubicación exacta se obtiene por Pitágoras
(figura 3) Animación que muestra el trazado del arco con -R
Como verás, lo único que indica el signo, es de que lado se encuentra el centro del arco
NOTA 1: En los dos ejemplos vistos anteriormente, el valor de R, es el mismo, lo único que cambia es el signo, y fíjate que
las curvas obtenidas son distintas, buena observación, no crees...?
NOTA 2: Estos Arcos fueron trazados con el comando G03, es decir, se trazó en sentido anti-horario. Si el comando fuese G02, el arco se trazaría al revés, esto es, el arco que ves en la figura 3 se trazaría para el otro lado, y quedaría un arco
similar al de la figura 4, pero al revés, y el de la figura 4 quedaría igual al de la figura 3 pero y también al revés, es sólo una cuestión de interpretación. Bien, aquí terminamos con el trazado de la curva haciendo uso del comando R , ahora vamos a ver otra forma de trazar una curva, pero con los comandos I,J y K .: Trazado de Arcos Utilizando los comando I,J y K:
El comando K se utiliza cuando tu máquina trabaja en 3D, que no es nuestro caso, pero también es válido lo que veremos para los otros dos. Si conoces la ubicación del punto inicial y el punto final, lo único que necesitas para trazar una curva es la ubicación del centro del radio, cuando utilizamos anteriormente el comando R la ubicación del centro la obtenías por cálculo. En este caso, la ubicación del radio está dada por las coordenadas I,J. El valor numérico que acompañe a la letra I será la ubicación respecto del eje X, mientras que el valor que acompañe a J será la ubicación respecto del eje Y. Como verás, en este caso te estás a horrando el cálculo para encontrar el centro de la curva, por lo que ví, esta es la más utilizada. .: Selección del Plano (G17, G18, G19)
Cuando tu máquina trabaja en 3D, es obvio que tendrás tres vistas o caras de trabajo, es decir, estás trabajando en los tres ejes, aquí es importante conocer de que lado te encuentras, en la siguiente imagen podrás verlo con más claridad...
Cuando trabajes en 2D, los planos X-Z (G18), Y-Z (G19) no existirán, sólo te quedarás con el plano X-Y (G17).