Además, ¿hay alguna forma de insertar un código antes de 'M00' para hacer sonar un timbre y avisar al operador que es hora de voltear una pieza o limpiar los cortes antes de la siguiente operación?
Respuestas del foro
(Foro CNC)
Del colaborador G:
Una subrutina paramétrica es perfecta para esta aplicación. Trabajo con controladores Fagor, por lo que mi código real es diferente, pero deberías poder descifrarlo y aplicarlo. Funciona así. Vaya a la ubicación de su primer círculo u otro elemento y luego marque este lugar como el comienzo de su subrutina. El fogor usa esto:
G23N8
(G23 es el comienzo de la rutina y N8 es el nombre de la subrutina; puede ser entre N0 y N99)
Luego cambie a programación incremental (G91) y produzca una pieza.
Señale el final de la subrutina con G24.
Vuelva a absoluto (g90).
Si la forma de tu pieza es extensa, esto funciona de maravilla. También funciona bien si tienes que hacer varias pasadas por la misma parte.
En total, se ve así:
(MOVER A LA 1.ª UBICACIÓN)
G23N8
G91
(AQUÍ ESTÁN TUS LÍNEAS DE CÓDIGO)
G24
G90
(MOVER A UNA NUEVA UBICACIÓN)
G21N8.1
(MOVER A UNA NUEVA UBICACIÓN)
G21N8.1
(MOVER A NUEVO....ETC.)
Sin embargo, tengo algunas preguntas. Supongo que un diseño estándar de fila/columna no es aceptable, ya que seguramente no ofrece un rendimiento muy bueno. (¿Quieres filas escalonadas?)
¿Cómo sueles sujetar las piezas? ¿Aspirar solo?
Aquí también ejecutamos un Andi/Fanuc 11/AlphaCAM.
Lo que necesito saber es cómo hacer algo como la publicación anterior. Un procedimiento de 'repetición en x##,y##'. La razón de todo esto es que podríamos economizar la memoria de nuestro controlador ya que mantenemos una cantidad de programas diarios en la máquina y aún tenemos espacio para especiales.
El primer bucle...
ContarA=0
Lo principal a tener en cuenta es que cuando vayas a repetir este bucle, *no* debes repetir la línea que pone el contador a cero. Obviamente, la condición que estableciste para salir del bucle nunca se cumplirá si cometes este error. Aquí hay un código:
N1
CONTADOR=0
N2
G52 X-(CONTADOR*200)
*cortar caminos*
N3
SI CONTADOR=5 IR AL FINAL
CONTADOR=CONTADOR+1
IR A 2
FIN
Este bucle simple ejecutará su programa seis veces (nunca olvide el momento en que la máquina corta cuando el contador está configurado en 0), desplazando 200 mm al negativo en x cada vez. Tenga en cuenta que cuando el programa se repite, *no* repite el paso de poner el contador a cero.
Dejaré que eso se asimile y haré el doble bucle en otra publicación, luego intentaré un doble bucle real en mi máquina ya que el código debería ser casi idéntico.
El programa principal va a cada punto de inicio en sucesión, trabajando de izquierda a derecha y de atrás hacia adelante. En cada punto inicial, se llama al subprograma (M98) y se ejecuta. Al final del subprograma, el control regresa al principal (M99), que avanza al siguiente punto de inicio.
Este es el estilo de programación manual básico que utilizamos durante años antes del software CAM. El uso de subprogramas puede ahorrar mucho espacio cuando tienes varias piezas sobre la mesa, especialmente si las formas son complejas. También simplifica los ajustes, ya que solo tiene que tratar con un subprograma en lugar de múltiples apariciones dentro del principal. Si tiene Macro-B (opción Fanuc) habilitada en su control, puede hacer que este programa sea más corto y paramétrico. ¡De hecho, podría hacer que el programa calcule cuántos círculos caben según el diámetro del círculo y el tamaño de la hoja utilizada!
Hoy en día utilizamos principalmente programas CAM, ya que son mucho más rápidos y precisos (¡sin errores matemáticos ni tipográficos!). La memoria también es barata, por lo que el tamaño del programa no es realmente un factor.
De todos modos, prueba esto y ve si funciona para ti.
O100(18 EN CÍRCULOS - PRINCIPAL)
(HERRAMIENTA 1 - 1/2 RECTA -G54-H11-D1)
-
-
BLOQUE DE SEGURIDAD
Y
SELECCIÓN DE HUSILLO, INICIO, ETC.
-
-
G54G90G0X-7.25Y-.25 (PUNTO DE INICIO DE LA FILA SUPERIOR DEL PRIMER CÍRCULO)
G1G43H11Z.50F200.(ACTIVAR LA COMPENSACIÓN DE ALTURA - LLEVAR AL PLANO DE SEGURIDAD .500)
M98P105(LLAMADA SUBPROGRAMA)
G90G0X-26.Y-.25
M98P105
G90G0X-44.75Y-.25
M98P105
G90G0X-63.5Y-.25
M98P105
G90G0X-82.25Y-.25
M98P105
G90G0X-82.25Y-19.(PRIMER CÍRCULO SEGUNDA FILA)
M98P105
G90G0X-63.5Y-19.
M98P105
G90G0X-44.75Y-19.
M98P105
G90G0X-26.Y-19.
M98P105
G90G0X-7.25Y-19.
M98P105
G90G0X-7.25Y-37.75(PRIMER CÍRCULO TERCERA FILA)
M98P105
G90G0X-26.Y-37.75
M98P105
G90G0X-44.75Y-37.75
M98P105
G90G0X-63.5Y-37.75
M98P105
G90G0X-82.25Y-37.75
M98P105
-
-
APAGAR - IR A CASA
-
-
M30
O105(18 EN CÍRCULOS - SUBPROGRAMA)
G91G1G42D1X-1.Z-1.30F200.(COMP ON - RAMPA DE ABAJO)
(EL VALOR Z REPRESENTA EL PLANO DE SEGURIDAD Y LA TABLA DE 3/4 Y EL CORTE PASANTE - .50+.75+.05=1.30)
X-1.F400.
G02J-9.(CÍRCULO COMPLETO - EL VALOR J DEFINE LA UBICACIÓN RELATIVA DEL PUNTO CENTRAL)
G01X-1.
G40X-1.Z1.30(COMP OFF - RAMPA HACIA EL PLANO DE SEGURIDAD)
M99(REGRESAR AL PROGRAMA PRINCIPAL)
Sólo por diversión, aquí hay una macro antigua (tenga en cuenta la fecha) que solíamos dejar residente en el control y que fue utilizada por muchos de nuestros programas antiguos. Se le pasaron variables al llamar desde el programa principal:
G65P4028A0D2.25F200.H1R.5T3.Z.50
No preguntes cómo se me ocurrió 4028 como número de programa. ¡No tengo idea!
O4028 (PERFORACIÓN DE AGUJEROS)
(VERSIÓN 1.2 - 19/08/89 - CERDOS FUERA DEL CENTRO DEL CÍRCULO)
(PARA SACAR EL CENTRO DEL AGUJERO, ESTABLEZCA H EN 1 AL LLAMADA A LA MACRO)
(LA POS DE INICIO DEBE ESTAR SOBRE EL CENTRO DEL AGUJERO)
(A=#1=AJUSTE DE DIÁMETRO)
(D=#7=DIÁMETRO DEL AGUJERO)
(F=#9=AVANCE)
(H=#11=ESTABLECER EN 1 AL CENTRO DE CERDO)
(R=#18=DISTANCIA DE VIAJE RÁPIDO A LA SUPERFICIE DE TRABAJO)
(T=#20=N° DE COMPENSACIÓN PARA EL RADIO DE LA HERRAMIENTA)
(Z=#26=PROFUNDIDAD DEL AGUJERO DESDE LA SUPERFICIE DE TRABAJO)
#2=#5001(X POS INICIO)
#3=#5002(X POS INICIO)
#4=#5003(X POS INICIO)
#12=#[2000.+#20](LEER COMPENSACIÓN DE DIÁMETRO)
#10=[#7/2-#12]+[#1/2](CALC RAD Y AGREGAR AJUSTE)
IF[#11EQ1.]GOTO100(¿CENTRO DEL CERDO?)
G91G00X[#10-.03]Z-[ABS[#18]]
G02I-[#10-.03]Z-[ABS[#26]]F#9
G01X.03
G02I-#10
X-[#10*2]I-#10Z[ABS[#26]]
G90G01Z#4
X#2Y#3
GOTO500
N100#21=[#12*.9]
G91G00X#21Z-[ABS[#18]]
G02I-#21Z-[ABS[#26]]FA#9
I-#21
#23=#21
#22=#21*2
MIENTRAS[#22LT#10]HAGA1
G01X#21
G02I-#22
#23=#22
#22=#22+#21
FIN1
G01X-[#10-#23]
G02I-#10
X-#10Y#10I-#10
X-[#10*.9]Y-[#10*.9]J-[#10*.9]Z[ABS[#26]]
G90G01X#2Y#3Z#4
N500M99
Aquí está el primer bucle nuevamente:
N10
CONTADOR=0
N20
G52 X-(CONTADOR*200)
*cortar caminos*
N30
SI CONTADOR=5 IR AL FINAL
CONTADOR=CONTADOR+1
IR A 2
FIN
Voy a cambiar los números de línea solo agregando ceros para poder agregar el segundo bucle.
Lo que debes recordar sobre el segundo ciclo es que deseas repetir el primer proceso *completo*. Nuevamente, observe dónde envía el programa para que los contadores se restablezcan correctamente. Para el siguiente bucle, que hará las columnas, *quieres* que el contador del primer bucle se restablezca a cero para obtener todas las filas.
CONTADOR1=1
N10
CONTADOR=0
N20
G52 X-(CONTADOR*200)
*cortar caminos*
N30
SI CONTADOR=5 IR A 40
CONTADOR=CONTADOR+1
IR A 2
N40
G52 Y(CONTADOR1*200)
SI CONTADOR1=3 IR AL FINAL
CONTADOR1=CONTADOR1+1
IR A 10
FIN
Es difícil verlo correctamente en esta pequeña ventana, así que escribiré el código de un programa real y lo probaré. ¿Puedes proporcionar el código de corte que tienes ahora?
Creo que podrás ver una vez que aprendas a programar bucles que puedes hacer muchas cosas con programas cortos. Mucho mejor que un programa de subrutina como se publicó anteriormente. Una de las razones es que al editar (o convertirlos en variables) los dos números que gobiernan las filas y columnas, puedes cambiar esas cantidades fácilmente. Para piezas más pequeñas, hay muchas menos líneas cuando se usan bucles.
Se veía así:
G65H02P#102Q#101R.500
Significa agregar .500 a la var #101 y almacenar en la var #102
G65 = Esta es una declaración macro:
cada línea macro comienza con esto
H02 = La operación es suma:
cada operación tenía su propio código H
P = Dónde almacenar el resultado
Q = Primer número a sumar
R = Segundo número a sumar
¡Me alegro de que ya no tengamos que hacer eso!
PD:
Es mucho más fácil escribir tu mensaje en el Bloc de notas que pegarlo en la pequeña ventana de mensajes.
TEN CUIDADO SI PRUEBAS ESTO SIN EDITAR---> ¡PRUEBA PRUEBA PRUEBA! él él
Espero que esto ayude:
COMENZAR
'(HOJADE15CÍRCULOS)
%
O3333 (HOJA DE 15 CÍRCULOS)
G17 G90 G21 G40 G80
M68
G08 P1
M06
'(OP 1 FINALIZAR PASAR HERRAMIENTA 101 1_2 COMP)
'(DIÁMETRO EFECTIVO 12.7)
N1 (HERRAMIENTA #101)
(1_2 COMP - PASE DE FINALIZACIÓN)
T101
M5
M11
#111=1 (CONTADOR DE FILAS)
N2
#122=0 (CONTADOR DE COLUMNAS)
N3
G52 X-[#122*395]
G0 G90 G54 X-130.157 Y-1160.915 M13 S18
G0 G43 H1 Z100.
G0 Z40.
X-130.157 Y-1160.915
Z25.
G1 G42 D33 X-193.137 Y-1133.124 F1500. Z0.
G3 X-304.675 Y-1098.475 R196.85 F6000.
X-501.525 Y-1295.325 R196.85
X-304.675 Y-1492.175 R196.85
X-107.825 Y-1295.325 R196.85
X-193.137 Y-1133.124 R196.85
G0 Z40.
SI [#122EQ5] IR A 4 (EL NÚMERO 5 ES EL CONTROL DE FILA)
#122=#122+1
IR A 3
N4
G52 Y+[#111*395]
#111=#111+1
SI [#111EQ4] IR A 5 (EL NÚMERO 4 ES EL CONTROL DE COLUMNA)
IR A 2
N5
G17 G91 G28 Z0 M95
M92
G08 P0
M07
M69
G91 G28 Z0
G28 X0Y0
G52 X0 Y0 Z0
M30
%
Viajo a 40 mm por encima de la mesa y rápido a 25 mm cuando la hoja es de 19 mm como estaba programado aquí.
¡No asumo ninguna responsabilidad por accidentes! Pruebe esto primero, utilice el bloqueo z, etc.
COMENZAR
O0001
G91 G28 X0 Y0 Z0
G90 G40 G49 G17 M92
M06
M13 S18(12MM PLANO)
M11
G90 G54
G0 G43 H1 Z70.
X2222.4 Y415.5
M98 P2
G0 X2222.4 Y837.
G52X0. Y421.5
M98 P2
G52X0Y0
G0 X2005.95 Y1183.5
G52X-216.45Y768.
M98 P2
G52X0Y0
G0 X1872.6 Y625.65
G52 X-349.8 Y210.15
M98 P2
G52X0Y0
G0 X1768.05 Y1515.
G52 X-454.35 Y1099.5
M98 P2
G52X0Y0
G0 X1656.9 Y972.
G52 X-565.5 Y556.5
M98 P2
G52X0Y0
G0 X1522.8 Y415.5
G52 X-699.6 Y0.
M98 P2
G52X0Y0
G0X1419. Y1303.5
G52 X-803.4 Y888.
M98 P2
G52X0Y0
G0 X1306.5 Y762.
G52 X-915.9 Y346.5
M98 P2
G52X0Y0
G0 X1093.35 Y414.
G52 X-1129.05 Y-1.5
M98 P2
G52X0Y0
G0 X1068.6 Y1093.5
G52 X-1153.8 Y678.
M98 P2
G52X0Y0
G0 X1069.95 Y1515.
G52 X-1152.45 Y1099.5
M98 P2
G52X0Y0
G0 X855.45 Y745.5
G52X-1366.95Y330.
M98 P2
G52X0Y0
G0 X719.7 Y1305.15
G52 X-1502.7 Y889.65
M98 P2
G52X0Y0
G0 X617.55 Y414.
G52 X-1604.85 Y-1.5
M98 P2
G52X0Y0
G0X506.4Y957.
G52X-1716. Y541.5
M98 P2
G52X0Y0
G0 X369.75 Y1515.15
G52 X-1852.65 Y1099.65
M98 P2
G52X0Y0
G0 X268.5 Y625.5
G52 X-1953.9 Y210.
M98 P2
G52X0Y0
M92 G0 G49 H0 Z0.
M95
G91 G28 Z0
M07
G91 G28 X0Y0
M30
O2
G0 Z20.
G1 Z-12. F3600
G3 X2234.4 Y403.5 R12. F5000
G2 X2404.595 Y108.786 R196.5
X2064.205 R196.5
X2234.4 Y403.5 R196.5
G3 X2246.4 Y415.5 R12.
G0 Z30.
M99 (FIN DEL SUB 2 )
%
Puedes comprar un detector sensible (la gente lo usa para su gato o visitante) en Walmart o K-Mart. Colóquelo en el punto cero de la máquina. ¡Barato y fácil!
Comment from contributor T:
¡Demasiado trabajo manual! Prueba esto:
Escriba un programa que inicie la boquilla en la esquina de su material y ubique todos los ejes menos X e Y, luego llame a otro programa y luego ubique la máquina nuevamente. Este será su programa principal.
O1513(PRINCIPAL)
N0001 G91 G28 Z0.0
N0002 G28 A0.0 B0.0
G90
G92 X9.25 Y.25 Z11.5 A0.0 B0.0
(EN LA SIGUIENTE LÍNEA VERÁS P51514)
(LOS PRIMEROS 5 DICEN A SU SISTEMA CUÁNTOS)
(HORAS PARA LLAMAR PROGRAMA # 1514)
M98 P51514
N0003 G91 G28 Z0.0
N0004 G28 A0.0 B0.0
N0005 G28 X0.0 Y0.0
M30
Escriba un programa de movimiento de filas que indique su programa de pieza y establezca los movimientos de filas.
O1514 (MOVIMIENTO DE FILA)
(LLAMA PRIMERO AL PROGRAMA DE PIEZA X NÚMERO DE VECES)
(EN ESTE CASO SON 3 VECES)
M98P31515
G91
G28 Z0.0
G28 A0.0 B0.0
G91
G00 X-18.0 Y54.625
G92 X0.0 Y0.0
M21
M99
Ahora escriba su programa de pieza.
O1515(PROGRAMA DE PIEZAS)
G90
G52 X0.0 Y0.0 Z0.0
N0006 G00 X0.0 Y0.0
N0007 G00 Z0.0
(INICIAR LA ENTRADA)
G90
G01 Y-0,125
G02 J-9.0
(APAGADO)
M98P8000
N0008 G00 Z0.0
(LA SIGUIENTE LÍNEA ES UN MOVER AL PUNTO DE INICIO DE LA SIGUIENTE PARTE)
N0009 G00 Y-18.125
N0010 G00 A0.0 B0.0
N0011 G92 X0.0 Y0.0
M99
Cuando finalice el programa de pieza, se repetirá la cantidad de veces que especificó moviéndose a la ubicación de la siguiente pieza, que también especificó al final del programa de pieza. Luego, el programa de pieza volverá al programa de filas y terminará de ejecutarse allí, lo que moverá su herramienta a la parte superior de la siguiente fila. El programa de fila finaliza y se ejecuta nuevamente porque le indicó que se ejecutara 5 veces en el programa principal. Lo primero en el programa de fila es una llamada al programa de pieza que nuevamente se ejecuta 3 veces. El ciclo completo se repite hasta que se hayan realizado todas las repeticiones y el programa principal finalice y salga.