La programación con macros permite repetir operaciones sin tener que volver a programarlas enteras. Frente a los subprogramas, las macros tienen la ventaja de ser parametrizables, es decir, programadas con variables que en cada llamada de la macro adquieren un valor diferente.
Las macros se llaman desde el programa principal con la orden G65 seguido del número de macro al que queramos llamar (por ejemplo P8000 si queremos llamar al programa O8000) y los parámetros que sean necesarios para cada subprograma (A, B, C...). Los parámetros pueden ser los siguientes -aparecen junto a la variable local con la que pasará su valor al subprograma (parámetro - #variable):
A - #1 ; B - #2 ; C - #3 ; D - #7 ; E - #8 ; F - #9 ; H - #11 ; I - #4 ; J - #5 ; K - #6 ; M - #13 ; Q - #17 ; R - #18 ; S - #19 ; T - #20 ; U - #21 ; V - #22 ; W - #23 ; X - #24 ; Y - #25 ; Z - #26 ;
El argumento P se reserva para el número de macro y el L para el número de repeticiones de la macro.
La macro debe guardarse como un programa (en el ejemplo que haremos a continuación supongamos que la denominamos O8000).
Imaginemos que queremos preparar una macro para realizar una ranura con posibilidad de cilindrar o no, una vez clavada la herramienta. Primero debemos pensar que variables utilizaremos. En nuestro caso:
A = ø inicial previo a la ranura - Pasará a la macro como #1
B = ø de fondo de la ranura - Pasará a la macro como #2
C = Z inicial de la ranura - Pasará a la macro como #3
D = Desplazamiento en Z de la herramienta clavada (si no lo hay, será 0) - Pasará a la macro como #7
E = Avance en X - Pasará a la macro como #8
F = Avance en Z - Pasará a la macro como #9
H = Temporizaciones en el mecanizado - Pasará a la macro como #11
I = ø para retiradas de herramientas - Pasará a la macro como #4
Una vez definidas las variables, la macro sería algo así:
O8000
G0 X#4 Y0 (Posicionamiento rápido en el diámetro especificado en I y en Y=0)
G0 Z#3 (Posicionamiento rápido al inicio de la ranura)
G0 X[#1+0.5] (Posicionamiento rápido en X en el diámetro inicial A más margen de seguridad)
IF [#7EQ0] GOTO 2 (Si la variable D vale 0 no hay desplazamiento en Z y salta a la línea 2)
G1 X#2 F#8 (Clava hasta el diámetro B con el avance marcado en E)
G4 X#11 (Temporiza la variable H)
G1 Z[#3-#7] F#9 (Desplazamiento en Z de la carrera indicada en D con el avance indicado en F)
G4 X#11
G1 X[#1+0.5] F0.3
GOTO 3 (Salta a la línea 3)
N2
G1 X#2 F#8
G4 X#11
G1 X[#1+0.5] F0.3
N3
G0 X#4
M99 (Final de macro)
Supongamos en este ejemplo que queremos llamar la macro para mecanizar una ranura que empieza en Z-6 hasta Z-12, partiendo de un torneado ø16 con una barra ø20 (queremos retirar la herramienta a ø22) y la herramienta tiene un ancho de 2 mm (por tanto se desplazará 4 mm). La profundidad de la entalla será ø14. Utilizaremos una temporización de 0.1 seg y unos avances de 0.05 mm/vuelta. La llamada quedaría así:
G65 P8000 A16 B14 C-6 D4 E0.05 F0.05 H0.1 I22
Evidentemente esto es sólo un ejemplo para abrir el apetito y en un próximo post repasaremos diferentes operadores que pueden resultar útiles en una macro...
(Nota: Este post hace referencia a máquinas con control numérico-CNC Fanuc)
Este comentario ha sido eliminado por el autor.
ResponderEliminar