Foro MetalAficion

CAD - CAM - CNC => CNC (Control Numérico por Ordenador) - Software => Mensaje iniciado por: carpin en 24 Febrero 2016, 21:23

Título: CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 24 Febrero 2016, 21:23
Tal y como se comentó en este tema hace unos días:
http://foro.metalaficion.com/index.php?topic=23668.msg269109#msg269109
el compañero Ingolf, usuario TecnoWorld se ofreció a hacer un cursillo de código G, pero como aunque habla bien español, no es su lengua materna, me ofrecí yo a revisar los textos.
Iré poniendo en este tema lo que Ingolf me va enviando después de revisarlo y comprobado. Pero para que quede más claro y limpio el tema, no se podrá publicar aquí ninguna respuesta, he creado un tema específico para cualquier duda o comentario que pueda surgir:
 Tema para dudas y comentarios (http://foro.metalaficion.com/index.php?topic=23828.msg270311#msg270311)
 
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 24 Febrero 2016, 21:36
Cursillo de código G

Prólogo

Vale, he pensado mucho como empezar el curso.
Como muchos han mencionado en el hilo de G-Code, hay un montón de programas en ingles, además cada participante del curso tiene su máquina propia, o por el contrario, otros todavía no tienen máquina CNC. También era muy peligroso de escribir un programa para todas las máquinas, porque en algún caso puede fallar y romper la máquina o al menos hacer cosas indeseadas.
Tampoco el código G está igual en todas las máquinas/programas y esto puede llevar a confusión en el curso.
Creo que para que funcione mejor el curso todos los participantes deberían tener los mismos requisitos.

Si usamos un software independiente, tenemos unas ventajas:
-El programa no está conectado a una máquina real, así no se pueden generar daños
-La gente que todavía no tienen una máquina pueden participar igualmente
-El efecto del código G se puede ver bien en la pantalla de simulación.
-El programa está en castellano (y en ingles o alemán, pueden elegir)
-El programa tiene editor de código G, el cual marca los comandos y ordenes (la sintaxis) en colores y así se pueden detectar errores mientras se escribe el programa
-cada participante tiene las mismas extensiones de código G y no se confunde con problemas de su propia máquina.

Después del cursillo, cada uno de los participantes sabe las peculiaridades de su máquina y puede adaptar los programas sin peligro.
Creo que así tenemos una buena y sencilla base para el curso.

Preparaciones

Para empezar descargamos el programa para Windows (http://benezan-electronics.de/downloads/Beamicon2_setup.exe) o bien para Linux (Debian) (http://benezan-electronics.de/downloads/http://www.benezan-electronics.de/downloads/beamicon2-i386.deb).
Además descargamos este fichero de configuración para el cursillo:  Configuración (http://tecno-world.com/Forum/cursilloGCode/foro_metal.ini).
La instalación es fácil:
Después de la instalación, el programa pregunta el idioma y un modelo de una máquina. No importa cual elegimos.
Con el programa abierto, vamos al Menú->Archivo->Importación Configuración e importamos el fichero de configuración que hemos descargado antes. El nombre de este archivo es foro_metall.ini

Ahora todos tenemos una máquina virtual con las siguiente especificaciones:
-tipo: fresadora con 3 ejes,
-X: de 0mm - 500mm
-Y: de 0mm - 300mm
-Z: de 0mm - 200mm, (200mm está arriba, 0mm = la mesa).

Debido a que no tenemos una máquina real, no podemos referenciar la máquina, en nuestro caso, después de iniciar el programa todos los ejes están a "0".

Nosotros necesitamos sólo la primera pantalla "Programa", el resto no interesa y podemos olvidarlo.

En la ventana del centro arriba tenemos todavía un logotipo. En el teclado numérico pulsamos  la tecla "6" (flecha a derecha), el logotipo desaparece y las coordenadas  muestran en X algo diferente de "0".
Este es el movimiento manual, así podemos mover nuestra máquina virtual.

Con la tecla izquierda del ratón haciendo clic en la ventana gráfica podemos mover la misma. Con la tecla derecha podemos girar. Con la rueda del ratón hacemos el Zoom.

Las líneas externas muestran el espacio útil de nuestra máquina virtual. El símbolo de 3 flechas en colores indica el punto cero de la máquina.
Y la fresa estará con su punta en el punto que indican las coordenadas que se muestran en la ventana de coordenadas de la derecha. (Si no vemos la fresa es porque todavía no la hemos seleccionado, mas tarde lo veremos)

Ya podemos probar a mover la máquina a cualquier punto dentro del espacio de la máquina.

Ahora estamos preparados para escribir el primer programa.


Inicio del cursillo

Creamos un fichero nuevo: Menú->Archivo->Crear fichero NC nuevo...
Se abre un diálogo, donde escribimos un nombre de un archivo, en ejemplo "mi_primer_test.nc" y guardamos.

Ya estamos en el editor de código.
Las primeras líneas han sido añadidas automáticamente por el sistema.

El editor del código G y la sintaxis

Jugamos un poco con el editor para entender cómo funciona.
Las primeras dos líneas en color gris, son un comentario que no afecta a nada - solo para la documentación.
En la tercera línea encontramos un símbolo %, este indica que ahí empieza el programa CNC. Todas las líneas anteriores a este símbolo se tratan como comentarios.
Esto puede ser muy útil para la documentación de programas y subprogramas, por ejemplo si después de un año, queramos fabricar la misma pieza, sabemos datos como que fresa hemos usado, etc...

Vamos con el cursor a la línea debajo del símbolo %.
Y empezamos de escribir
G0 X100
Al escribir el comando, este cambia de color, cada tipo de comando tiene un color específico. Así es más fácil de encontrar errores al escribir el programa.
En ejemplo:
G77 X20
El color de G77 no se cambia – esto indica, que no es un comando correcto.
Vale, probamos más:
G0 G43 M99 M3 X100.0 #33=5
Ya podemos comprobar que cada comando específico tiene su color.
Para la documentación podemos escribir un comentario en cada línea entre paréntesis:
G0 X100 (mi primer movimiento)

Vale, ya hemos jugado suficiente y creo que está claro para todos como funciona más o menos.
Pulsamos ya al botón "Cancelar" para cerrar la ventana del editor.

Creo que ya podemos hacer el primer programa.

Mi primer programa

Siempre es mejor usar algún ejemplo para las explicaciones.
En la foto puedes ver un interruptor y dos LEDs con su montura.
Vamos a usar como ejemplo la fabricación de una placa frontal con un interruptor, 2 LED y 4 agujeros en las esquinas para fijación.
Disponemos para ello de un resto de chapa de duraluminio de 1.5mm de grosor.
Como hemos decidido trabajar sin CAD/CAM dibujamos rápido en un papelito la forma que queramos.
Así nos hacemos una idea de cómo queda la pieza.

Piezas que tenemos (http://tecno-world.com/Forum/cursilloGCode/placa_frontal_piezas.png).

(http://imagizer.imageshack.us/v2/800x600q90/921/iM39sw.png)

boceto de la placa (http://tecno-world.com/Forum/cursilloGCode/placa_frontal.png).

(http://imagizer.imageshack.us/v2/640x480q90/921/5nwRsY.jpg)

Para explicarlo mejor y que sea más fácil de entender, por ahora NO tenemos en cuenta el diámetro de la herramienta, lo digo solo para que la gente más avanzada no piense que nos estamos dejando algo importante. Más tarde solucionaremos también este problema.


Desplazamiento de la pieza (Traslado de origen absoluto)

Cómo podemos ver, la máquina tiene su origen en la esquina inferior izquierda. Si ponemos la pieza a mecanizar ahí, no podremos fijarla bien en la mesa. Además tal vez no podamos cortar bien el perímetro.
Tenemos que poner la pieza más centrada en la mesa, dónde podamos fijarla de manera cómoda y segura.
Aunque estamos usando una máquina virtual, podemos simularlo.
Con las flechas del teclado numérico dirigimos la máquina a un punto cerca de X=50, Y=50.
Ahí estará situada la esquina izquierda inferior de al pieza que hemos puesto dentro de la máquina.

Si miramos el dibujo que hemos hecho antes, veremos que todas las medidas están tomadas a partir del mismo punto (esquina inferior izquierda). Por lo tanto sería el lugar adecuado fijar el punto cero ahí.
Para hacer esto elegimos en el menú desplegable, situado debajo de las coordenadas, G54 (desplazamiento de la pieza). Una vez elegido hacemos clic en la tecla "Reset" de las coordenadas "X" e "Y".
El símbolo de tres flechas de colores se colocara en la punta de la fresa.

Si cambiamos en la lista de desplazamientos entre G53 y G54, vemos que el símbolo de flechas también cambia su posición.

Ya hemos aprendido la primera cosa de código G: El punto cero, o desplazamiento.
Si queramos usar las coordenadas de la máquina, escribimos en una línea:
G53 (usar las coordenadas reales de la máquina)
o bien las coordenadas de la pieza:
G54 (usar las coordenadas de la pieza)

Estos ajustes se guardan si apagas y enciendes de nuevo la máquina.
Así, si has montado una mordaza en la máquina y encuentras la esquina de ella, el G54 está guardado y siempre sabes su posición.
Hay más de estas memorias, para guardar una posición. Por ejemplo G55, G56 - hasta G59.

Las coordenadas que programamos en un programa siempre se refieran a este punto cero que hemos elegido.

Vamos a comprobar que todos entienden bien que quiero decir.

Abrimos un nuevo programa mediante Menú->Archivo->Crear fichero NC nuevo...

Escribimos debajo del símbolo % estas líneas:

G53
G0 X0 Y0
G0 X100
G54
G0 X0 Y0
G0 X100
M30

Después de guardar visualizamos el programa en la ventana central inferior y arriba, en la ventana gráfica podemos ver unas líneas de trazos en rojo.
Ahora iniciamos el programa con el botón "Inicio programa".
La fresa se mueve según las coordenadas que hemos programado.
Después del terminar se rebobina el programa y podemos hacer clic múltiple veces a "Inicio programa" para verlo bien.

¿Pero que hemos hecho en realidad?

Vale, en el programa hemos dicho a la máquina que tiene que usar las coordenadas reales de la máquina.
Esto lo hemos hecho con G53.
Después con el comando G0 hemos dicho a la máquina que se tiene que mover con la máxima velocidad, avance rápido, al punto X0Y0 y después al punto X100.
La máquina mueve sólo los ejes que indicamos. En la línea G0 X100 no indicamos el eje Y, por eso se queda en 0.
Después decimos a la máquina que tiene que usar las coordenadas de la pieza, el desplazamiento G54, que hemos guardado antes.
G54
G0 X0Y0
Y la máquina no se mueve a su punto real de X=0, Y=0, entonces se mueve al punto aproximadamente X50, Y50, es el punto dónde hemos encontrado la esquina del material.
Pero las coordenadas ya muestran X=0, Y=0 y el siguiente comando
G0 X100
Mueve la herramienta con relación a este punto, 100mm a la derecha.
La herramienta ya está en la posición aproximadamente X=150, Y=50, pero en las coordenadas encontramos exactamente X=100, Y=0.

Entender esto es muy muy importante, porque es la base de todos los comandos de movimiento en la máquina.


Los primeros movimientos

A la izquierda inferior tenemos un botón "Editar programa".
Con este abrimos el editor, borramos todas líneas detrás del símbolo % y escribimos:

G54
G0 Z20
X0 Y0
Z2
G1 Z0 F100
X90 F800
Y60
X0
Y0
G0 Z20
M30


Ahora guardamos y reiniciamos el programa, podemos hacerlo varias veces y miramos bien que pasa.
Lo primero la fresa se mueve hacia arriba. Esto es importante para que no haya ninguna colisión con el material en la mesa.
En la segunda línea hay solo coordenadas. ¿Por qué sabe la máquina lo que tiene que hacer?
El comando G0 que hemos dicho antes (y que ya conocemos) está activo hasta que lo cambiemos. La máquina memoriza el último comando y no hace falta escribirlo de nuevo. Muchos comandos se guardan también si apagamos y volvemos a encender la maquina. Pero Cuidado con esto, ya que la máquina memoriza la última orden y nosotros tal vez no estemos seguros de cual era. Por ejemplo, en un programa al inicio no sabemos seguro su estado, que código G era el último que estaba en el programa anterior. Así que tendremos que poner la orden de nuevo, para estar seguros.

Después hablamos más ampliamente sobre estas cosas.
Pero ya vamos a la línea: La fresa se mueve a la posición X=0, Y=0, que es la esquina del material.
Con el comando Z2 la fresa se queda 0,5mm encima del material (porque hemos dicho, que tenemos material de 1.5mm de grosor).
Ahora tenemos una nueva orden, el G1.
Con la línea G1 Z0 F100 la fresa baja dentro del material, pero lentamente. El avance es 100mm/min y tarda un poco hasta llega la mesa a Z=0mm.
En la próxima línea X90 F800 la orden G1 está todavía activa y la máquina se mueve sólo con el eje X hasta la posición 90mm con una velocidad de 800mm/min, que hemos indicado ya con el parámetro F.
Después siguen las coordenadas del rectángulo, siempre con la misma orden de G1 y con la misma velocidad de avance de 800mm/min.
Al llegar el punto X=0, Y=0 cambiamos la orden a avance rápido con G0 y subimos la fresa a posición segura de 20mm.

En la última línea encontramos un comando nuevo: M30.
Los órdenes  Mxx son macros.
Una Macro es un programa guardado en el sistema. Es un programa de unas líneas del código, que hacen algo dentro del sistema de la máquina.
Unos de estos macros son M2 y M30. Con estas dos Macros terminamos el programa.
M2 solo termina el programa y M30 rebobina el programa.
No es estrictamente necesario terminar un programa con M2 o M30. Si no hay más líneas la máquina se para. Pero es un buen estilo de programación poner siempre en la última línea la orden M30. Puede ser, que algunas máquinas no apaguen de modo automático todas las salidas. Y en futuro empezaremos a programar con sub programas. Y en este caso es necesario de usar el M30 al fin de programa. Así que es mejor desde un principio escribirlo aunque no sea siempre necesario.

 
Resumen del primer capítulo

En este punto ya sabemos poner la pieza en la máquina y sabemos definir el punto cero por el desplazamiento de la pieza, modificar la velocidad de desplazamiento, mover con avance rápido y avance de trabajo, podemos hacer agujeros mediante un ciclo y sabemos terminar el programa.
Conocemos:
G0 - avance rápido
G1 - avance de trabajo, definido por el parámetro F
F  - velocidad de avance en mm/min
G53 - coordenadas en sistema de la máquina (coordenadas con respecto al cero maquina)
G54-G59 - coordenadas de desplazamiento de la pieza (coordenadas con respecto al cero pieza)
M2 - fin de programa
M30 - fin de programa con rebobinar.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 24 Febrero 2016, 21:47
Corrección del diámetro de la herramienta.


Volvemos al programa del rectángulo de arriba. Realmente hemos cortado el material directamente "por la línea".
Suponiendo que tenemos una fresa de 3mm de diámetro, la pieza que queda será más pequeña de lo que hemos dicho. Claro, cortamos con la fresa por la línea y la mitad de la fresa esta dentro del material.
Para solucionar esto hay dos posibilidades. Podemos "reprogramar" el programa teniendo en cuenta el diámetro conocido de la fresa y escribimos:
G54
G0 Z20
X-1.5 Y-1.5
Z2
G1 Z0 F100
X91.5 F800
Y61.5
X-1.5
Y-1.5
G0 Z20
M30


Ya tendremos el corte correcto. Pero de esta manera tenemos que hacer un montón de cálculos en los cuales podemos equivocarnos y no vemos el error directamente por tantas coordenadas raras.
¿Qué otra solución hay?
El código G tiene la posibilidad de corregir el diámetro de la herramienta automáticamente.
De nuevo abrimos el programa en el editor y borramos todas las líneas detrás del símbolo %.
Y escribimos:

N100 G54
N110 G40
N120 G0 Z20
N130 G0 Y-1.6 X0
N140 Z2
N150 G1 Z0 F100
N160 G42
N170 G1 Y0
N180 X90 F800
N190 Y60
N200 X0
N210 Y0
N220 G40
N230 Y-1.6
N240 G0 Z20
N250 M30


¿Que vemos ahora? Al principio tenemos en la segunda línea N110 G40.
N110 es la numeración de las líneas y podemos usarla para organizar el programa. No tiene ninguna influencia en el programa, sólo sirve para saber en qué posición estamos dentro
de un programa, si este es más largo.
Y encontramos una orden nueva: G40
Este comando desactiva la compensación automática del diámetro de la herramienta. En este caso lo ponemos, para tener claro que todavía no está activado para los movimientos de aproximación.

En la línea N130 vamos con la máquina no al punto X=0, Y=0, porque si fuéramos ahí cortaríamos el material. Tenemos que quedarnos un poco más lejos que la mitad de la fresa.
La distancia no es importante, puede ser también -10mm. Pero siempre más que la mitad del diámetro.
Una vez dentro en el material hacemos un movimiento diferente:
N160 G42
N170 G1 Y0.

Con G42 activamos la compensación automática del diámetro de la fresa.
Con el movimiento G1 Y0, en nuestro ejemplo, la maquina solo se moverá 0,1mm en dirección Y positiva. Ahí estamos exactamente al borde de la pieza. 
En la ventana gráfica vemos una línea gris. Esta es la pieza de verdad, y la línea en verde es el camino de la herramienta.
Ahora estamos en un sistema de coordenadas virtual y podemos usar las coordenadas reales de la pieza sin tener que en cuenta el diámetro de la herramienta.

Vamos a jugar un poco con las líneas, cabíamos esta:
N130 G0Y-10X0
Y probamos otra vez.

Ahora cambiamos:
N160 G41
Y probamos.


Vale - jugando con estos parámetros puede ser que encontremos una cosa rara: ¿Como sabe el programa el diámetro de la fresa? En ninguna línea se lo hemos dicho!
Vamos al Menú->Configuración->Herramientas.
Ahí encontramos una lista de herramientas conocidas. Podemos editar la lista y cambiar el diámetro de la herramienta no. 1.
Si salimos de este diálogo nos fijamos en la parte izquierda de la pantalla principal. Hay un campo azul con Letras amarillas que dice T1. Esta es la herramienta que actualmente está en uso.

Pero hay una cosa interesante:
Los programas CAM normalmente hacen la compensación de la fresa directamente en las coordenadas. Si hemos fresado la pieza y encontramos que la medida no queda a 90mm exactamente, sino 90,2mm, tendríamos que hacer de nuevo el programa de código G con el CAM.
Pero si vamos a la lista de herramientas y cambiamos el diámetro de la fresa de 3mm a 2.6mm, esta cortara 2 décimas más cerca del material y la medida quedará correcta.
También importante, si usamos un programa una vez hecho y guardado y no encontramos una fresa correcta.

Otra cosa es la diferencia entre G41 y G42. Con estas órdenes cambiamos el lado de la fresa con respecto la dirección del camino. Con G42 la fresa esta siempre al lado derecha, en G41 siempre al lado izquierdo.


Ya sabemos corregir el diámetro de una fresa y lo usamos directamente para empezar con la pieza que queramos fabricar.

Otra vez abrimos el programa en el editor y borramos todas líneas detrás del símbolo %.
Ya escribimos:
G54
G40  (corrección radio desactivado)
G0 Z20
(agujero pequeño)
G0 Y26 X27 (dentro del agujero)
Z2
G1 Z0 F100
G41  (corrección al izquierda)
G1 Y24 X25 F800
X=X+11
Y=Y+12.2
X25
Y24
G40
G1 Y26 X27
G0 Z20
(contorno fuera)
G0 X0 Y-2
G0 Z2
G1 Z0 F100
G42
G1 Y0 F800
X90
Y60
X0
Y0
G40
G1 Y-1.6
G0 Z20
M30

Si miramos la ventana grafica vemos líneas en gris y en verde. Las grises son el contorno de la pieza, y las verdes indican el camino de la herramienta.
¿Pero qué pasa en estas líneas?
X=X+11
Y=Y+12.2
Es una forma de calcular en código G. Si! El código G puede calcular - +-*/, sin, cos, sqrt.
Pero por ahora miramos solo estas dos líneas: En nuestro dibujo tenemos el rectángulo de 11x12,2 mm.
Claro podríamos escribir:
X36
Y36.2
Pero si lo hacemos de esta manera lo visualizamos peor, es mejor que anotemos las coordenadas directamente con las operaciones, como hemos hecho, así es mucho más fácil de corregir si fuera necesario y más tarde enseñare una forma más sencilla de adaptar los programas.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 26 Febrero 2016, 22:03
Los primeros agujeros G81

Con lo que hemos aprendido ya sabemos mover la máquina a un punto determinado por lo tanto ya podemos hacer los agujeros en las esquinas.
Otra vez abrimos el programa y lo editamos,  borramos todas líneas detrás del símbolo %.
Y escribimos:
G54
G0 Z20
X10 Y10
Z2
G1 Z0 F100
G0 Z2
X80
Z2
G1 Z0 F100
G0 Z2
Y50
Z2
G1 Z0 F100
G0Z2
X10
Z2
G1 Z0 F100
G0 Z20
M30

Vale , con los conocimientos que tenemos podemos hacerlo así y funciona. La herramienta va a las 4 esquinas, se mueve rápido por encima del material y taladra lentamente hasta la mesa, la coordenada Z=0.
Pero si tenemos muchos agujeros la cosa se complica y no es fácil programar así.

Vamos a un comando nuevo: G81.
G81 es un ciclo de taladrar. ¿Qué es un ciclo? Es un programa, escrito en código, guardado en el sistema de la máquina.
Nos ayuda mucho, solo tenemos que decir la orden G81 y las coordenadas de agujeros.
De nuevo abrimos el programa en el editor y borramos todas líneas detrás del símbolo %.
Y escribimos:
G54
G0 Z20
X10 Y10
G81 Z0 R2 F100
X80
Y50
X10
G0 Z20
M30

Mucho más corto y fácil de escribir, pero que pasa en detalle:
En la tercera línea estamos encima del primer agujero. El ciclo G81 tiene algunos parámetros a su lado.
El primero es la profundidad Z a que queramos taladrar, en nuestro caso Z=0. El segundo parámetro es la altura a la que queramos retirar la herramienta después de hacer el agujero y el parámetro F ya lo conocemos, es la velocidad de avance con que bajamos la herramienta en el material.
Como cada orden en código G, también este comando es modal, quiere decir que estará activo hasta que lo cambiemos.
Así en la línea X80 la máquina se mueve a este posición pero no se detiene ahí - la orden G81 está activa todavía y la máquina repite esta orden y hace un agujero y la herramienta vuelve a una altura de 2mm.
Esto se repite hasta cambiamos la orden. Lo podemos hacer por ejemplo con G0Z20. Con esto cambiamos a avance rápido y subimos la herramienta a una altura de seguridad.

Para agujeros más profundos hay otros ciclos, con rompe virutas por ejemplo. Pero esto por ahora queda fuera de alcance, lo discutimos más tarde.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 29 Febrero 2016, 23:56
Pero vamos a hacer virutas

Hasta ahora no hemos dicho a la máquina que tiene que sacar virutas.
Cada máquina tiene cabezal diferente, pero en el código G hay unos comandos que son siempre iguales.
M3 encender normal (arranque del cabezal a derechas)
M4 encender cabezal en sentido anti-horario (a izquierdas)
M5 apagar husillo (parada de cabezal)
S  velocidad, que se gira el husillo.
Los comandos M3-M5 son macros, guardado en la máquina. El fabricante de la máquina o un usuario avanzado puede cambiar estas macros.
Puede ser útil, si en ejemplo hay un cambiador automático y no se puede encender el husillo sin herramienta dentro.
Pero vamos a ver, como lo ponemos en el programa.

Abrimos el programa con el editor y cambiamos unas líneas:
Ya escribimos:
G54
G40    (corrección radio desactivado)
G0 Z20
(agujero pequeño)
G0 Y26 X27 (dentro del agujero)
Z2
M3 S1000 (Husillo dirección normal, 1000rev/min)
G1 Z0 F100
G41    (corrección a la izquierda)
G1 Y24 F800 (movimiento > mitad de diámetro de la fresa)
X36
Y36.2
X25
Y24
X27
G40    (corrección radio desactivado)
G1 Y26 (movimiento > mitad de diámetro de la fresa)
G0 Z20
M5
(contorno de fuera)
G0 X0Y-2
G0 Z2
M3 S1000
G1 Z0 F100
G42    (corrección al derecha)
G1 Y0 F800
X90
Y60
X0
Y0
G40
G1 Y-2 (movimiento > mitad de diámetro de la fresa)
G0 Z20
M5
M30

Encontráis las líneas que hemos tenido que añadir para encender y apagar el husillo? Lo veremos más claro si iniciamos el programa y miramos la ventana gráfica. Siempre si ponemos M3 la fresa gira, con un M5 se para.
Si la simulación está demasiado rápida pueden regular la velocidad con el regulador de avance F% de 150% hasta 0%.

Al fin de programa no era necesario de poner un M5, porque un M2 o M30 apaga siempre todo. Pero es un buen estilo de escribirlo, así está mejor sobre todo si lo tiene que leer otra persona.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 01 Marzo 2016, 21:49
Círculos y curvas G2/G3

Hasta ahora sólo podemos hacer movimientos lineales. Es decir, que no podemos redondear una esquina o hacer un fresado circular.
En nuestro ejemplo de la placa frontal queremos hacer los agujeros de 4,2mm y de 6,5mm.
Como ya sabemos, podemos hacer agujeros con el ciclo de taladrar, pero para eso tenemos que poner una broca del diámetro exacto como herramienta. Y esto para cada agujero que queramos hacer.
En nuestro caso serian 2 brocas diferentes, de 4.2 y de 6.5mm. Hay fresadoras que no cuentan con un cambiador de herramientas automático, también hay husillos en los que no caben brocas más grandes que de 6mm.
¿Y cómo lo solucionamos? Hacemos los agujeros con la fresa.

Antes de seguir con la placa, vamos a aclarar bien algunos conceptos. Otra vez abrimos el programa en el editor y borramos todas las líneas detrás del símbolo %.
Y escribimos:

N100 G54
N110 G0 Z20
N120 G0 X15 Y10
N130 Z2
N140 M3
N150 G1 Z0 F100
N160 G2 X10 Y15 I-5 J0 F800
N170 G0 Z20
N180 Y20
N190 Z2
N200 G1 Z0 F100
N210 G3 X10 Y30 I0 J5 F800
N220 G0 Z20
N230 M5
N240 M30

En la ventana gráfica del programa se muestran dos arcos en trazo verde. Si iniciamos el programa la fresa sigue estas curvas haciendo el de ¾ en sentido de las agujas del reloj y el de 180º en sentido inverso.
Miramos más en detalle qué pasa, para eso tenemos aquí un boceto:

 Curvas (http://tecno-world.com/Forum/cursilloGCode/G2G3.png)

(http://imagizer.imageshack.us/v2/640x480q90/921/NwJqoI.png)


En la línea N120 vamos a las coordenadas X15, Y10. Este es el punto de inicio P1 del primer arco. En la línea N160 tenemos la primera orden de arcos, el G2.
Como hemos visto, el G2 hace siempre arcos en el sentido del reloj. El G3 en sentido contrario. Vamos a ver cómo funciona:
1. Ir al punto de inicio P1 con cualquier orden. Lo importante solo es, que estamos ahí.
2. escribimos: G2 coordenadas del punto final P2, coordenadas del centro de la curva (punto Center)
3. Acabamos el primer arco en el punto P2.

Hay una cosa a tener en cuenta: Las coordenadas del centro las tenemos que poner en el formato que quiere la máquina. Hay dos formas. Especificar el punto de centro en forma absoluta o relativa.
Nuestro caso es la forma relativa, que dice, no las coordenadas reales absolutas que serian en este ejemplo X10 Y10. Nosotros ponemos las coordenadas relativas con respecto al punto P1, punto de inicio.
P1=X15 Y10
Centro=X10 Y10
I=X=(10-15)=-5
J=Y=(10-10)=0
La letra I es siempre la coordenada X y la letra J siempre la coordenada Y. Tenemos que usar dos letras diferentes, porque no podemos escribir dos veces X, para el punto P2 y para el centro. Así en código G para el centro será X=I, Y=J.

Vale, volvemos otra vez para el siguiente arco. Miramos al croquis y vemos:
1. Estamos al punto de inicio P1, que es X=10, Y=20
2. Queramos llegar al punto final P2, que es X=10, Y=30
3. El punto del centro es X=10, Y=25
4. Calculamos las coordenadas I(X) y J(Y) del centro:
P1=X10 Y20
C= X10 Y25 => I=0, J=5

Una cosa que es muy muy importante de saber: El radio del arco tiene que ser igual en el punto de inicio P1 y el punto de salida P2.
Que dice, el radio no se puede cambiar.
Cambiamos la línea N210 G3 X10 Y30 I0 J5 F800 por
N210 G3 X10 Y30 I0 J4 F800

así el radio en el punto de inicio seria 4mm y al final 6mm. Si guardamos los cambios el programa no se puede ejecutar, porque hay un error.
El programa Beamicon tiene un ajuste en la configuración dónde se puede decir la tolerancia que es aceptada, normalmente 0,001mm.
Programas de CAM de poca calidad, puede generar un código G con estos errores, y en algunos casos tal vez sea necesario aumentar esta tolerancia.

Vale - para practicar dibujamos unos círculos en papel y calculamos las coordenadas para el G2 y G3.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 04 Marzo 2016, 08:50
Exact Stop G61(modo de parada exacta) y modo de velocidad constante G62/G64

Si un eje de la máquina está en movimiento queda claro que necesita un cierto tiempo hasta que para. Es una rampa, que no puede ser cero. Una máquina no puede frenar en 0 segundos. El tiempo de frenar depende de muchas cosas, por ejemplo del peso movido, la velocidad, la estructura de la máquina, etc. Por eso el fabricante de la máquina ha puesto un valor de aceleración para cada eje.
Miramos de nuevo al croquis de nuestra placa frontal. Fuera tenemos un rectángulo. Las esquinas son de 90° - y la máquina no puede cambiar su dirección en 0 segundos. Es como en un coche, si tenemos una carretera recta podemos ir a mucha velocidad, pero antes de la próxima curva tenemos que frenar hasta una velocidad con la que podamos tomar la curva sin peligro. Igual en la máquina. Si queramos que la curva sea a 90° y las medidas queden 100% exactas, tenemos que parar y acelerar de nuevo en la otra dirección. Esto produce algunas vibraciones en la máquina y tarda mucho tiempo. Pero el camino de la herramienta está al 100% como en el archivo NC. Este es el modo "Exact Stop" y nos activamos con la orden G61.
En caso que no necesitemos tanta perfección, por ejemplo si trabajamos con madera, o materiales/piezas que no necesitan una precisión tan alta podemos cambiar al modo velocidad constante. Esto lo activamos con la orden G62 o G64 (por cosa de compatibilidad entre diferente máquinas hay dos órdenes, que hacen la misma cosa, son iguales).

¿Pero qué ocurre con esta orden? En este modo la máquina no llega a detenerse. Es como en un coche - o mejor con una moto. En curvas muy cerradas no frenamos a cero - cortamos
la curva por el interior y así podemos tomarla más rápido. La máquina hace lo mismo. En una curva o esquina no va al 100% por el camino dibujado. La máquina corta el camino y así no necesita frenar tanto. De esta manera podemos evitar tantas frenadas y pausas, la máquina va mucho más suave y termina más rápido. Pero tendremos una diferencia entre el camino en el archivo NC y la pieza real. Esta diferencia que permitimos podemos indicarla en la configuración de la máquina.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 06 Marzo 2016, 21:29
Modo absoluto/ modo incremental  G90/G91

Cuando estuvimos haciendo arcos/círculos con las ordenes G2/G3 utilizamos por primera vez coordenadas relativas.
Normalmente trabajamos en coordenadas absolutas G90, los puntos van referidos al origen de la maquina, o al de la pieza, según lo tengamos establecido. Pero también podemos trabajar en modo incremental G91 y en este caso las coordenadas van referidas al punto en que nos encontramos, por lo tanto para desplazarnos a un nuevo punto introduciremos los valores de X,Y y Z de ese punto con respecto al punto actual
Un ejemplo:
G90
G0 X20 Y20
G91
G0 X5 Y10

¿Después de estas órdenes dónde estamos? Si, exacto. Estamos en X25, Y30.
Las ordenes G90 Y G91 son modales, es decir, una vez que se han programado, permanecerán activas hasta que se de la orden contraria.
El modo incremental G91 se usa muchas veces en subprogramas, más tarde lo usamos también.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 06 Marzo 2016, 21:49
El inicio de un programa NC

Como hemos aprendido, el código G es una idioma modal, esto quiere decir que el estado de las ordenes no cambia hasta ponemos una orden nueva.
Saber esto es muy importante, porque al inicio de un programa no sabemos el estado de la máquina. Por eso siempre es muy importante de escribir una cabecera con las ordenas más importantes para crear un estado conocido.
Por ejemplo es mejor de saber al inicio que estamos en el modo absoluto y que todas las correcciones están desactivadas.

(Mi definición de inicio) =>unos comentarios delante te ayudan si necesitas el programa más tarde otra vez.
% => el símbolo de inicio
G54   => el desplazamiento que usamos (puede ser G53 hasta G59)
G40 G80 => apagar modo G41/G42, salida de un ciclo.
G90 =>modo absoluto
G61 =>exact Stop

A partir de esto tenemos la máquina "configurada", y sabemos el estado de las cosas más importantes.
Siempre es mejor añadir estas líneas delante de un programa. Claro tenemos que cambiar las líneas según la configuración deseada. Por ejemplo quien quiera trabajar cosas con una máquina de láser normalmente usara G62, y depende del origen que usamos cambiamos el G54.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 06 Marzo 2016, 22:03
Nuestro trabajo completo - la placa frontal

Croquis de la placa frontal

(http://imagizer.imageshack.us/v2/640x480q90/921/5nwRsY.jpg)

Si queremos hacer esta placa frontal tenemos que pensar antes un poco:
-¿Que herramientas tenemos?
-¿Que elemento fresamos primero, que al final?

Vale - yo digo que solo tenemos una fresa de 3mm de diámetro, nada más.
Y, claro, si hemos fijado una chapa en la mesa de la fresadora tenemos que cortar antes los elementos interiores y al final cortamos el exterior.

Empezamos con el programa NC, paso por paso:

(placa frontal)
%
G54
G40 G80 G90 G61
G0 Z40
(cambiamos la herramienta)
M6 T1
(encendemos el husillo a 3000 rpm)
M3 S3000
(vamos a la altura Z segura)
G0 Z40
(cortamos el rectángulo interior)
G0 X27 Y26
G0 Z2
G1 Z0 F30
G41 G1 Y24 F800
G1 X36
G1 Y36.2
G1 X25
G1 Y24
G1 X27
G40 G1 Y26
G0 Z40
(vamos al centro del primer agujero)
G0 X65 Y20
G0 Z2
G1 Z0 F30
G42 G1 X68.25 F800
G2 X68.25 Y20 I-3.25 J0
G40 G1 X65
G0 Z40
G0 X65 Y40
G0 Z2
G1 Z0 F30
G42 G1 X68.25 F800
G2 X68.25 Y40 I-3.25 J0
G40 G1 X65
G0 Z40
(cortamos los 4 agujeros del exterior)
G0 X80 Y10
G0 Z2
G1 Z0 F30
G42 G1 X82.1 F800
G2 X82.1 Y10 I-2.1 J0
G40 G1 X80
G0 Z40
G0 X80 Y50
G0 Z2
G1 Z0 F30
G42 G1 X82.1 F800
G2 X82.1 Y50 I-2.1 J0
G40 G1 X80
G0 Z40
G0 X10 Y50
G0 Z2
G1 Z0 F30
G42 G1 X12.1 F800
G2 X12.1 Y50 I-2.1 J0
G40 G1 X10
G0 Z40
G0 X10 Y10
G0 Z2
G1 Z0 F30
G42 G1 X12.1 F800
G2 X12.1 Y10 I-2.1 J0
G40 G1 X10
G0 Z40
(finalmente cortamos la placa al exterior)
G0 X-2 Y-2
G0 Z2
G1 Z0 F30
G42 G1 X0 Y0 F800
G1 X90
G1 Y60
G1 X0
G1 Y0
G40 G1 X-2 Y-2
G0 Z40
M5
M2

Con lo aprendido hasta ahora somos capaces de escribir programas del código G para hacer casi todas las formas.
Con este programa podemos jugar un poquito. Añadir más agujeros, cambiar la forma de la placa, etc.
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 08 Marzo 2016, 22:05
(Índice compendio)

Elementos de lenguaje código G


%   Inicio del programa. Todo lo que va delante se trata como comentario

(   abre un comentario
)   cierre un comentario
""   String

0.1234   número

N   Número de la línea
O   Número de un subprograma
P   Número del programa o parámetro
F   Velocidad de avance de trabajo
S   Velocidad de husillo
T   Número de la herramienta
D   Parámetro para corrección del radio
H   Tiempo de espera

A   eje rotativo paralelo a X
B   eje rotativo paralelo a Y
C   eje rotativo paralelo a Z
U   segundo eje X
V   segundo eje Y
W   segundo eje Z
X   eje X
Y   eje Y
Z   eje Z
I   Parámetro
J   Parámetro
K   Parámetro
R   Parámetro

//Código G sin movimiento
G17-19   Selección del plano de trabajo (G17=XY, G18=XZ, G19=YZ)
G21   Coordenadas métricas (mm)
G40   desactivar corrección del radio
G41   corrección del radio(mano derecha)
G42   corrección del radio(mano izquierda)
G43   activar compensación de longitud
G49   desactivar compensación de longitud
G50   desactivar cambio de la escala
G53   desactivar desplazamiento (activar coordenadas de la máquina)
G54-59   activar desplazamiento de la memoria G54-G59)
G61   Exact Stop (modo de parada exacta)
G62,G64   modo de velocidad constante
G69   Girar sistema de coordenadas
G92   


//Código G de movimiento
G0   posicionamiento rápido
G1   interpolación lineal (avance de trabajo)
G2   interpolación circular en la dirección de reloj
G3   interpolación circular en dirección contraria de reloj
G4   Pausa (en s)
G52   Ir al punto de referencia (como G74)
G73   Taladrar con rompe virutas
G74   Ir al punto de referencia (como G52)
G79   medición de longitud de la herramienta
G81   Taladro simple
G82   Taladro con tiempo de espera en el fondo
G83   taladrar profundo (en varias fases)
G84   roscar (con macho)
G85   Escariado
G86   ciclo de mandrinado
G87   ciclo fijo de cajera rectangular
G88   ciclo nr. 8
G89   ciclo nr. 9


//M controlar la marcha del programa
M1   Parada programada (esperar, continuar)
M2   Fin del programa (todo apagado)
M30   Fin del programa (todo apagado y reactivar o rebobinar)
M98   Subrutina (P=número)
M99   Salida en subprograma

//M funciones auxiliares para activar algo de la maquina
M3   encender husillo giro a derechas
M4   encender husillo giro a izquierdas
M5   parar husillo
M6   Cambio de herramienta automático
M7   activar refrigeración por niebla
M8   activar refrigeración por líquido
M9   desactivar refrigeración
M10  abrir mordaza o bloquear husillo o fijar/bloquear eje rotativo
M11   cerrar mordaza
M14   bajar cuchillo tangencial (Pen down)
M15   subir cuchillo tangencial (Pen up)
M41   etapa de reductora 1
M42   etapa de reductora  2
M43   etapa de reductora  3
M44   etapa de reductora  4
M60   Cambio de la pieza (cambiador automático de piezas en plantilla)
M66   Cambio de la herramienta manual



+-*/=   Operadores
<   Operador
>   Operador
&   Operador
!   Operador
|   Operador

(   
)   

#   Variable
#I   Entrada
#O   Salida

L51   
L52   
L53   

//Palabras claves lenguaje macro
SQRT
SIN
COS
IF
THEN
ELSE
ENDIF
PRINT
RETURN
CALL
QUITE
SKIP
REWIND
REPEAT
NEXT   
UNTIL
ASKBOOL
ASKINT
ASKFLT
Título: Re:CURSILLO DE CODIGO G por TecnoWorld
Publicado por: carpin en 08 Marzo 2016, 22:08
Programación avanzada

Pero si miramos el programa que hemos escrito un poco más al detalle:

(cortamos los 4 agujeros del exterior)
G0 X80 Y10
G0 Z2
G1 Z0 F30
G42 G1 X82.1 F800
G2 X82.1 Y10 I-2.1 J0
G40 G1 X80
G0 Z40

G0 X80 Y50
G0 Z2
G1 Z0 F30
G42 G1 X82.1 F800
G2 X82.1 Y50 I-2.1 J0
G40 G1 X80
G0 Z40

Estás líneas se repiten siempre manera similar, son muy parecidas. Y solo tenemos 4 agujeros, imagina que hay 100 agujeros - tenemos que escribir un montón de estas líneas siempre iguales. Es un trabajo aburrido y con tantas cifras podemos hacer errores.

También en otras partes del programa podemos facilitar las cosas.
Pero empezamos de cero.
El lenguaje de código G nos permite hacer cálculos.
Probamos el siguiente código:
G0 X20 Y20
G0 X=X+10 Y=Y +20

Exactamente. Podemos calcular en todos los valores. Podemos usar  ,-,*,/ y más SIN(), COS() SQRT().
Podemos escribir fórmulas como G1 X=SIN(Y*20) por ejemplo.
Para completar esto, tenemos también variables.
¿Y que es una variable?
Es una memoria para almacenar un valor numérico.
Las variables tienen un nombre, por ejemplo #5.
Si queramos guardar en una variable algo, escribimos #5=10.
A partir de ahora y hasta que cambiemos la variable #5 tiene el valor 10.

Vamos al ejemplo de agujeros de arriba. Escribimos una cosa así:
%
#0=80
#1=10
#2=4.2
#3=0
G0 X=#0 Y=#1
G0 Z=#3
G1 Z=#3 F30
G42 G1 X=X (#2/2) F800
G2 X=#0 (#2/2) Y=#1 I=-1*(#2/2) J0
G40 G1 X=#0
G0 Z40

A la primera vista mucho más complicado que lo anterior. Pero solo a la primera vista. Explicamos la cosa paso por paso:
Para un círculo el punto P1 y el Punto P2 de un arco son iguales, punto de inicio y punto final. En el variable #0 guardamos la coordenada X y en el variable #1 la coordenada Y de este punto.
El radio no es muy fácil de manejar, así guardamos en el variable #2 el diámetro del circulo.
Y al final en la variable #3 la profundidad, a que queramos hacer el agujero.

En la primera línea vamos al centro del circulo,
G0 X=#0 Y=#1 es igual que G0 X80 Y10
En la próxima línea vamos a la altura 2mm más alto que la profundidad, para no tocar el material, que sea 1mm.
En la línea después pasamos dentro del material:
G1 Z=#3 F30 es igual que G1 Z0 F30
La línea G42 G1 X=X (#2/2) F800 es igual que G42 G1 X82.1 F800.
Y la línea G2 X=#0 (#2/2) Y=#1 I=-1*(#2/2) J0 es igual que G2 X82.1 Y10 I-2.1 J0
Al final G40 G1 X80
 - y miramos, es el mismo código como en el ejemplo anterior.
¿Pero para que necesitamos una cosa tan complicada?


Escribimos un programa así:


%
G40 G54
#2=4.2
#3=0
#0=10
#1=10
M6 T1
M3 S30
M98 P1000
#0=80
M98 P1000
#1=50
M98 P1000
#0=10
M98 P1000
M5
M2

O1000 (Agujeros)
(in: #0=X, #1=Y)
(    #2=diámetro)
(    #3=profundidad)
G0 X=#0 Y=#1
G0 Z=#3
G1 Z=#3 F30
G42 G1 X=X (#2/2) F800
G2 X=#0 (#2/2) Y=#1 I=-1*(#2/2) J0
G40 G1 X=#0
G0 Z40
M99

Guardamos y miramos a la pantalla. Vemos 4 agujeros, con corrección de radio, perfectamente en las esquinas.
El programa ya está mucho más claro. Podemos añadir muchos agujeros más y todavía está muy claro escrito.

En detalle:
Al inicio del programa ponemos a la variable #2 el diámetro de los agujeros y a la variable #3 la profundidad. Como todos los agujeros son iguales no cambiamos estos valores en el programa.
Empezamos con el primer agujero en la esquina inferior izquierda. X=10, Y=10 y por esto ponemos a la variable #0=10 y #1=10.
Ya tenemos una orden nueva. El Subprograma. Con M98 P1000
llamamos al subprograma con el número 1000.
El subprograma es exactamente el programa que hemos escrito antes. Solo que ya no hace falta asignar valores a las variables, porque ya lo hemos hecho en el programa principal.

Un subprograma tiene esta forma:
O1000 => O indica que es un Subprograma, 1000 es un número de identificación, que podemos elegir como nos guste.
M99 => Es el salto al programa principal, fin de subprograma.

En la línea M98 O1000 saltamos directamente a la primera línea del subprograma G0 X=#0 Y=#1 y cuando llegamos a la línea M99 saltamos al programa principal a la línea después de la llamada del subprograma, que esta #0=80.

Es importante que terminemos el programa principal con M2 o M30, para que no lleguemos de manera indeseada al subprograma después del fin del programa principal.

¿Que ventajas tiene este tipo de programación?

1. Como vemos, es mucho más fácil en el programa principal.
2. Los subprogramas podemos guardarlos para la próxima vez.
3. Si cambiamos la herramienta no pasa nada - la corrección del radio se hará automáticamente.
4. Si necesitamos agujeros más grandes/pequeñas cambiamos solo una línea: #2=4.2 => #2=5.0 por ejemplo.
5. Si necesitamos más agujeros solo hace falta añadir al programa principal las coordenadas de los centros.