En pocas palabras, una macro es usar fórmulas para procesar partes. Por ejemplo, elipse, si no hay macro, necesitamos calcular los puntos en la curva punto por punto y luego aproximarlos lentamente con una línea recta. Si se trata de una pieza de trabajo con altos requisitos de suavidad, entonces necesitamos calcular muchos puntos, pero después de aplicar la macro, ingresamos la fórmula de la elipse en el sistema y luego le damos la coordenada Z y agregamos una cantidad cada vez, luego la macro calculará automáticamente la coordenada X y realizará el corte. De hecho, la función principal de la macro en el programa es el cálculo.
imagen
01
Acerca de los programas de macros
¿Qué es un programa de macros?
Al programar, almacenaremos en la memoria una serie de instrucciones que pueden realizar una determinada función como una subrutina, y las llamaremos con una instrucción general. Al usarlo, solo necesitamos dar esta instrucción general para ejecutar la función almacenada. Esta serie de instrucciones se denomina cuerpo del programa macro del usuario, o programa macro para abreviar.
Este comando general se denomina comando de llamada de macro de usuario. Al programar, los programadores solo necesitan memorizar instrucciones de macro pero no programas de macro.
¿Cuándo se utilizará la programación de macros?
1) Curva de fórmula de procesamiento programada manualmente (cálculo simple, entrada rápida)
2) Ruta de corte normal (como módulo de corte)
3) Control entre programas (programación de programas)
4) Gestión de herramientas (desgaste de herramientas)
5) Medición automática (sonda en máquina)
La diferencia entre el programa macro y el programa normal
1) En el cuerpo del programa macro, se pueden usar variables, se pueden asignar valores a las variables, se pueden realizar cálculos entre variables y se pueden saltar programas.
2) En los programas ordinarios, solo se pueden especificar constantes y no se pueden realizar operaciones entre constantes. Los programas solo se pueden ejecutar secuencialmente y no se pueden saltar, por lo que las funciones son fijas y no se pueden cambiar.
3) La función macro es una función especial para que el usuario mejore el rendimiento de la máquina herramienta CNC, y el uso hábil del programa macro en el procesamiento de piezas de trabajo similares logrará el doble de resultado con la mitad del esfuerzo.
02
Variables y formatos de los programas de macro
Características de los programas de macros.
El programa macro puede usar la variable, y la variable se puede usar para realizar las operaciones correspondientes; el valor real de la variable se puede asignar a la variable mediante la instrucción del programa macro.
Tres tipos de variables
La forma de representación de las variables del sistema CNC es "#" seguida de 1 a 4 dígitos, existiendo tres tipos de variables:
(1) Variables locales: #1~#33 son variables utilizadas localmente en el programa macro, que se utilizan para la transferencia de variables independientes.
(2) Variable común: el usuario puede usarla libremente, y es común a cada subrutina y cada programa macro llamado por el programa principal. #100~#149, después de apagar la alimentación, todos los valores de las variables se borrarán, mientras que #500~#509, después de apagar la alimentación, los valores de las variables se pueden guardar.
(3) Variable del sistema: se define seguida de 4 dígitos, puede obtener información de solo lectura o de lectura/escritura contenida en el procesador de la máquina herramienta o en la memoria NC, incluidos los parámetros de intercambio relacionados con el procesador de la máquina herramienta, la adquisición del estado de la máquina herramienta parámetros, información del sistema, como parámetros de procesamiento.
Formato de llamada simple del programa macro
La simple llamada del programa macro significa que en el programa principal, el programa macro puede ser llamado por un solo bloque.
Formato de invocación:
G65 P (número de macroprograma) L (número de repeticiones) (asignación de variables).
Entre ellos: G65: comando de llamada de programa macro;
P (número de programa macro) - el código del programa macro que se llamará;
L (número de repeticiones): el número de ejecuciones repetidas del programa macro, cuando el número de repeticiones es 1, se puede omitir;
(Asignación de variables) - Asignar valores a las variables utilizadas en el programa macro.
Lo mismo entre un programa macro y una subrutina es que un programa macro puede ser llamado por otro programa macro, hasta 4 veces.
Formato de escritura de macroprograma
El formato de escritura de un programa macro es el mismo que el de una subrutina. Su formato es:
0-(0001-8999 es el número del programa macro)
Comando N10
N-M99
En el contenido del programa macro anterior, además de las instrucciones de programación comúnmente utilizadas, también se pueden usar variables, instrucciones de operaciones aritméticas y otras instrucciones de control. El valor de la variable se asigna en la instrucción de llamada del programa macro.
03
Aplicación de programa de macros del sistema FANUC
(1) Programa macro de ranurado
imagen
1) declaración MIENTRAS
G00 X52 Z2;
#2=-14;
Es el punto de inicio de la herramienta en la dirección z (debido a que el ancho de la herramienta es de 4 mm, el punto de inicio se establece en Z-14)
MIENTRAS [#2 GE -30] DO2;
Es una restricción en la dirección z. Cuando z es igual a -30, la dirección z ya no se moverá
G00 Z〔#2〕;
La posición actual en la dirección z
#2=#2-2;
El paso de movimiento en la dirección z, moviéndose 2 mm cada vez
#1=52;
es el punto de partida del cuchillo en la dirección x
MIENTRAS [#1 GE 20] DO1;
Restricciones en la dirección X, cuando el diámetro es igual a 20, ya no cortará
G01 X〔#1〕F0.2;
Profundidad de corte en dirección x
G00 X〔#1 más 1〕;
Cantidad de retracción relativa en la dirección x
#1=#1-1;
Distancia de paso en dirección x (corte 1 mm cada vez)
FIN1;
G00 X52;
FIN2;
programa completo:
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X52 Z2;
#2=-14;
MIENTRAS〔#2GE-30〕DO2; FIN1;
G00 Z〔#2〕;
#2=#2-2;
#1=52
MIENTRAS 〔#1GE20〕DO1;
G01X〔#1〕F0.2;
G00X〔#1 más 1〕;
#1=#1-1;
G00 X52;
FIN2;
G00 X150 Z150;
M30;
2) declaración SI
G00 X52 Z-2;
#1=-14;
Es el punto de inicio de la herramienta en dirección z (el ancho de la herramienta es de 4 mm)
N2 #1=#1-2;
es el paso de movimiento en la dirección z
#2=52;
es el punto inicial de la herramienta en la dirección x
N1#2=#2-1;
es la distancia de paso en la dirección x (profundidad de corte 1 mm cada vez)
G01 X〔#2〕F0.2;
Posición actual en la dirección X
G00 X〔#2 más 1〕;
Cantidad de retracción relativa en la dirección X
SI [#2 GE 21] GOTO1;
Restricciones en la dirección x (cuando el valor de x se reduce a 20, se realizará el siguiente procedimiento y no se realizará ninguna devolución)
G00 X52;
X se retrae a la posición 52
G00 Z〔#1〕;
Posición actual en dirección Z
SI [#1 GE -30] GOTO2;
Restricciones en la dirección Z, cuando z es igual a -30, la dirección z no se moverá
programa completo:
O1234;
G40G97G99;
T0101;
S1000M3;
G00 X52 Z-2;
#1=-14;
N2 #1=#1-2;
#2=52;
N1#2=#2-1;
G01 X〔#2〕F0.2;
G00 X〔#2 más 1〕;
SI 〔#2GE21〕GOTO1;
G00X52;
G00Z〔#1〕;
SI[#1GE-30]GOTO2;
G00X200;
Z200;
M5;
M30;
(2) Programación de elipse
1) El formato estándar de la declaración de elipse WHILE:
#1=a;
a: El punto de partida de la herramienta está en la dirección positiva a mm con respecto al eje Z de la elipse
MIENTRAS [#1 GE b] DO1;
b: el punto final del procesamiento de elipses está en la dirección negativa b mm en relación con el eje Z de la elipse (si se procesa una semielipse completa, entonces a y b son dos valores con el mismo valor y signos diferentes)
#2= c*SQRT[1-#1*#1/d*d];
c: el semieje menor de la elipse
d: semieje mayor de la elipse (calcule el #2 de acuerdo con la fórmula de la elipse, el semieje mayor es d, el semieje menor es c, el #2 representa el valor de X, el #1 es el valor de Z , y SQRT significa raíz cuadrada)
G01 X〔±2*#2 más e〕Z〔#1±f〕;
e: El desplazamiento (valor del diámetro) del eje X de la elipse en relación con el sistema de coordenadas de la pieza
f: El desplazamiento del eje Z de la elipse en relación con el sistema de coordenadas de la pieza
#1=#1-1; distancia de paso (moviéndose 1 mm cada vez)
FIN1;
Nota: Al girar una elipse cóncava, el "±" entre paréntesis después de X se toma como "-"; al girar una elipse convexa, el "±" entre paréntesis después de X se toma como "más".
Cuando el eje X de la elipse cambia a la dirección positiva, el "±" entre paréntesis después de Z toma "más"; cuando el eje X de la elipse cambia a la dirección negativa, el "±" entre paréntesis después de Z toma "-"
2) El formato estándar de la declaración IF elíptica
#1=a;
a: El punto de partida de la herramienta está en la dirección positiva a mm con respecto al eje Z de la elipse
N1#2=b*SQRT〔1-#1*#1/c*c〕;
b: semieje corto de la elipse c: semieje mayor de la elipse (según la fórmula de la elipse X/c más Y/b=1, SQRT significa raíz cuadrada)
G01X〔±2*#2 más d〕Z〔#1±e〕F0.2; d: el desplazamiento (valor del diámetro) del eje X de la elipse con respecto al punto cero de coordenadas e: el eje Z de la elipse con respecto al plano cero Desplazamiento
#1=#1-1;
Distancia de paso (moviéndose 1 mm cada vez)
SI [#1 GE -f] GOTO1
f: Terminación del procesamiento de elipse
Nota: Al girar una elipse cóncava, el "±" entre paréntesis después de X se toma como "-"; al girar una elipse convexa, el "±" entre paréntesis después de X se toma como "más". Cuando el eje X de la elipse se desvía hacia la dirección positiva, el "±" entre paréntesis después de Z toma "más"; cuando el eje X de la elipse se desvía hacia la dirección negativa, el "±" entre paréntesis después de Z toma "-".
imagen
MIENTRAS declaración
#1=20;
MIENTRAS〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2 más 50〕Z〔#1-25〕;
#1=#1-1;
FIN1;
declaración SI
#1=20;
N1#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2 más 50〕Z〔#1-25〕F0.2;
#1=#1-1;
SI[#1GE-20]GOTO1;
programa completo
O1234;
G40G97G99;
T0101;
S1000 M3;
G00 X50 Z2;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G0 G42 Z-5;
#1=20;
MIENTRAS〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2 más 50〕Z〔#1-25〕F0.2;
#1=#1-1;
FIN1;
G00 X50;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
Se omite el formato completo de la declaración IF (lo mismo es cierto para la declaración IF, siempre que se agregue el ciclo). En el sistema FANUC-0i, el programa macro solo se puede agregar en G73.
(3) Procesamiento de parábola
1) El formato estándar de la sentencia WHILE parabólica:
#1=a;
a: El punto de partida de la herramienta es un mm en la dirección del eje parabólico Z
MIENTRAS [#1 GE-b] DO1;
b: es la longitud de procesamiento de la elipse en la dirección z
#2=SQRT〔-#1*5/3〕;
(Según la fórmula parabólica Z=-3/5*X*X, encuentre el valor de X, que es #2, donde SQRT significa la raíz cuadrada)
G01 X〔±2*#2 más c〕Z〔#1〕;
c: es el desplazamiento (valor del diámetro) del eje X de la parábola relativo al sistema de coordenadas de la pieza, "±"
Al tomar "más", es convexa, y al tomar "-", es cóncava
#1=#1-1; Distancia de paso (moviéndose 1 mm cada vez)
FIN1;
2) El formato estándar de la declaración IF parabólica
#1=a;
a: El punto de partida de la herramienta es un mm en la dirección del eje parabólico Z
N1 #2=SQRT〔-#1*5/3〕;
(Según la fórmula parabólica Z=-3/5*X*X, encuentre el valor de X, que es #2, donde SQRT significa la raíz cuadrada)
G01 X〔±2*#2 más b〕Z〔#1〕;
b: Es el desplazamiento (valor del diámetro) del eje de dirección X de la parábola en relación con el punto cero de la coordenada. Cuando "±" toma "más", es convexa, y cuando se toma "-", es cóncava
#1=#1-1;
(distancia de paso en dirección Z, cada movimiento es de 1 mm)
SI〔#1 GE -c〕GOTO1; c: la longitud de procesamiento de la elipse en la dirección z
FI parabólica
otra forma de oración
#1=a;
N1 #2=SQRT〔( más )#1*5/3〕;
El signo "más" se puede omitir
G01 X〔2*#2 más b〕Z〔-#1〕;
#1=#1 más 1;
SI [#1 LEc] GOTO1;
Suponiendo que la parábola está en la dirección positiva de Z, utilice Z〔-#1〕; hacer la parábola simétrica a la dirección negativa
imagen
MIENTRAS declaración
#1=0;
MIENTRAS [#1 GE -15] DO1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2 más 30〕Z〔#1〕;
#1=#1-1;
FIN1;
declaración SI
#1=0;
N1 #2=SQRT〔-#1*5/3〕;
G01X〔2*#2 más 30〕Z〔#1〕;
#1=#1-1;
SI [#1 GE -15] GOTO1;
programa completo
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X42 Z1;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G00 G42 Z0;
#1=0;
MIENTRAS [#1 GE -15] DO1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2 más 30〕Z〔#1〕;
#1=#1-1;
FIN1;
G00 X42;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
(4) La diferencia entre la declaración WHILE y la declaración IF
1) Las direcciones de las dos declaraciones son diferentes
La declaración WHILE regresa al revés
Ejemplo: MIENTRAS〔#1 GE 20〕DO1;
G01 X〔#1〕F0.2;
Suponiendo que cuando la máquina herramienta ejecute esta sentencia, #1=20, seguirá ejecutándose. Después de ejecutar #1=#1-1, el valor de #1 se convierte en 19, que ya no cumple con las condiciones de restricción, por lo que no volverá. (Corte a 20 en la dirección X)
G00 X〔#1 más 1);
#1=#1-1;
FIN1;
2) La declaración IF regresa hacia adelante
Ejemplo: N1 #2=#2-1;
G01X〔#2〕F0.2; Suponiendo que #2=20 cuando la máquina herramienta ejecute esta sentencia, continuará ejecutándose hasta IF〔#2 GE 20〕GOTO1; si la condición aún se cumple, continuará volviendo a N1# 2=#2-1; y el valor actual de X se convertirá en 19, que ya no cumple con las condiciones de restricción, y luego ejecutará otro
G01X〔#2〕F0.2; Finalmente, ejecute el siguiente programa (la dirección X se ha reducido a 19)
G00X〔#2 más 1);
SI [#2 GE 20] GOTO1;
3) Como se puede ver en el programa de ranurado anterior, el número de palabras en la instrucción IF es mucho menor que el de la instrucción WHILE.
4) Debido a las diferentes direcciones de retorno, lea una oración menos para la declaración WHILE y una oración más para la declaración IF durante el procesamiento.
04
Aplicación de programa macro del sistema SIEMENS (torno)
Nota: El programa macro está programado con variables, y el número de variable del sistema Siemens está representado por R.
Por ejemplo, escrito en el método de programación común: G01X-10
El programa macro se puede expresar como:
R1=-10
G01 X=R1
Transferencia condicional:
SI GOTOB: salta hacia atrás
SI GOTOF: saltar hacia adelante
escrito en programación común
IR1X100
Las variables se pueden expresar como:
R1=0
AA: R1=R1 más 1
G01X=R1
SI R1<100 GOTOB AA
R1 es una variable independiente, el valor inicial es 0, R1=R1 más 1 significa que el valor incremental de la variable independiente es 1, cuando el programa pasa por esta línea cada vez, el valor de R1 aumenta en 1, R1<100 is a conditional expression, IF R1<100 GOTOB AA This line means that if the argument R1<100, the program jumps backward to the mark: AA
Si R1 es mayor o igual a 100, el programa se cae.
Los programas de macros se pueden usar en los modos G90 y G91, pero sus significados son diferentes, por ejemplo;
R1=0, G90R1=R1 más 1, G1X=R1, el valor de X después de la segunda pasada de este programa es 2.
R1=0, G91R1=R1 más 1, G1X=R1, el valor de X después de la segunda pasada del programa es 3. Explicación: El valor de R1 es 1 después de la primera pasada del programa, y el valor de R1 es la segunda pasada Es 2, pero en modo G91 se basa en la anterior.
(1) Ranurado
imagen
T1
CT
T1D1
G0G40X100Z100
M03S1000
G0X54Z2
llegar rápidamente al punto de partida
Z-10
R1=3
Defina el ancho de la hoja como 3 mm.
R2=-10-R1-0.2
El punto de inicio de la herramienta es -10, y el lado izquierdo de la cuchilla se usa al configurar la herramienta;
Configuración de la herramienta, por lo que se debe restar el ancho de la hoja, 0.2 es el margen de acabado
G1Z=R2F0.1
La herramienta alcanza el punto inicial del eje Z
AA:R2=R2-2.5
R3=50
El eje X de la ranura llega al punto
BB: R3=R3-2
Defina la profundidad de corte de cada cuchilla como 2 mm
G1X=R3
X=R3 más 1
0Remoción de virutas de 0,5 mm en un lado cada 2 mm de profundidad de corte
IF R3>30 más 0,4 GOTOB BB
Define the groove depth as 10mm, if R3>30mm, el programa salta hacia atrás a la marca BB, y 0,4 es la tolerancia de acabado
G0X50
La herramienta alcanza el punto inicial del eje X
G1Z=R2
IF R2>{{0}} más 0,2 GOTOB AA
Defina el ancho de la ranura como 20mm, y 0,2 es el margen de acabado
G0X50
G01Z-13
refinamiento
X30
Z-16
G0X50
Z-30
G01X30
Z-16
G0X50
Retirar
G0X100
Z100
M05
M30
(2) Elipse
1) Formato básico
R1=0
Defina la variable R1 con un valor inicial de 0
AA:R2=b×SQRT(1-R1×R1/a×a)
De acuerdo con la ecuación de la elipse, a es el semieje mayor de la elipse, b es el semieje menor de la elipse y SQRT es el símbolo de la raíz cuadrada.
G1X=±2×R2 más XZ=R1-Z
Establezca la posición y la forma de la elipse, más 2 es convexo, -2 es cóncavo, X, Z son las distancias entre el eje de la pieza de trabajo y el eje de la elipse (sistema de diámetro).
R1=R1-1
Establecer el paso de procesamiento
IF R1>=n GOTOB AA
Si la variable R1
2) Ejemplo de programación:
imagen
T1D1
G0G40X100Z100
M3S1000
G0X52Z2
Z-20
CICLO95 ( )
G42S1500
OO:
R1=20
AA:R2=5×SQRT(1-R1×R1/400)
G1X=-2×R2 más 50 Z=R1-40
R1=R1-2
IF R1>=-20 GOTOB AA
PP:X42
G0G40X100Z100
M05
M09
M30
(3) parábola
1) Formato básico:
R1=0
Establezca el valor inicial de la variable R1 en 0
AA: R2=SQRT(-R1×n)
Obtenido según el formato básico de la parábola, donde SQRT es el símbolo de la raíz cuadrada, y n es el coeficiente
G01X=2×R2 más n
Z=R1
La ruta de procesamiento, más 2 es convexa, n es el valor del punto de inicio del eje X
R1=R1-1
El valor de incremento variable es de 1 mm.
IF R1>-30 GOTOB AA
If the variable R1>-30, el programa retrocede hasta la marca: AA
2) Ejemplo de programación:
imagen
T1
tc
T1D1
G0G40X100Z100
M03S1000
G0X52Z2
CICLO95 ( )
G0G42
OO:
R1=0
AA:R2=SQRT(-R1×5/3)
G01X=2×R2 más 30 Z=R1
R1=R1-2
IF R1>-60 GOTOB AA
PP: X52
G0X100Z100
M05
M30




