Optimización de avances para operaciones circulares G-code
Previamente, esta columna discutió un problema relacionado con la velocidad de avance requerida para hacer movimientos circulares al apuntar a una velocidad de contorneado constante —específicamente, con arcos internos o externos cuando el material removido está balanceado alrededor de un contorno mecanizado (fresado de acabado y near-net-shapes, por ejemplo). La diferencia de tamaño entre la trayectoria de la línea central de una fresa y la trayectoria de la superficie de trabajo requiere aumentar la velocidad de avance de movimiento lineal para movimientos circulares externos y disminuirla para internos para lograr una velocidad de contorneado constante.
Demostré un método para determinar la velocidad de avance modificada requerida para movimientos circulares el mes pasado. Pero hacer manualmente los cálculos relacionados es tedioso, especialmente al usar esta técnica regularmente o para una variedad de tamaños de radio de superficie de trabajo. Mientras se use compensación de radio de cortador, y mientras las coordenadas programadas reflejen la trayectoria de la superficie de trabajo, el operador puede ingresar el radio de la fresa en un registro de offset de compensación de radio.
Al usar fresas de mano derecha, el estado de compensación de radio (G41-herramienta izquierda, G42-herramienta derecha) ayuda a determinar si un comando circular dado está mecanizando un radio interno o externo. Cualquier G02 (arco horario) cuando la herramienta está en el lado izquierdo de superficies mecanizadas (G41) será un arco externo. Cualquier G03 (antihorario) será un arco interno. Lo inverso es cierto cuando la herramienta está en el lado derecho (G42). Con Macro Personalizada FANUC, un programa puede acceder al valor del radio de la herramienta desde su registro de offset y acceder al estado actual de compensación de radio (G41 o G42).
He creado dos macros personalizadas G-code definidas por usuario que hacen movimientos circulares con la velocidad de avance ajustada, nombrándolas G102 (horario) y G103 (antihorario). Las programé de la misma manera que G02 y G03 (aunque no serán modales). Cada una comparará el radio de superficie de trabajo (especificado por la palabra R en el comando G102 o G103) con el radio de la trayectoria de línea central de la herramienta (calculado usando el radio de la herramienta del registro de offset y el radio de superficie de trabajo). Luego calcularán la velocidad de avance modificada basada en el método mostrado previamente y harán el comando circular usando G02 y G03 con la velocidad modificada.
¿Qué son los programas G-code definidos por usuario?
Aquí están los dos programas G-code definidos por usuario:
- O9010 (G102, programa de arco horario)
- #1=#4109 (Retener F-word actual)
- IF[#9NE#0]THEN#1=#9 (Probar si nueva velocidad de avance)
- IF[#9EQ#0]THEN #9=#1 (Si no hay nueva velocidad, retener actual)
- #2=[#_OFSDG[#4107]] (Acceder valor de offset)
- IF[#4007EQ41]GOTO5 (Condición G41, arco externo)
- IF[#4007EQ42]GOTO10 (Condición G42, arco interno)
- #3000=100 (CRC COMP MUST BE USED)
- N5 (Externo)
- #3=#9*[#18+#2]/#18 (Velocidad de avance externo)
- GOTO75
- N10 (Interno)
- #3=#9*[#18-#2]/#18 (Velocidad de avance interno)
- N75 G02 X#24 Y#25 R#18 F#3
- F#1
- M99
- O9011 (G103, programa de arco antihorario)
- #1=#4109 (Retener F-word actual)
- IF[#9NE#0]THEN#1=#9
- IF[#9EQ#0]THEN #9=#1
- #2=[#_OFSDG[#4107]]
- IF[#4007EQ41]GOTO5
- IF[#4007EQ42]GOTO10
- #3000=100 (CRC COMP MUST BE USED)
- N5 (Arco interno)
- #3=#9*[#18-#2]/#18 (Velocidad de avance externo)
- GOTO75
- N10 (Arco externo)
- #3=#9*[#2+#18]/#18 (Velocidad de avance interno)
- N75 G03 X#24 Y#25 R#18 F#3
- F#1
- M99
Para hacer que estos programas funcionen como G-codes definidos por usuario, cambie dos parámetros FANUC (con CNCs FANUC actuales, son parámetros 6051 y 6052 para nuestro ejemplo). Tras establecer parámetro 6051 a valor 102 y 6052 a 103, el CNC ejecutará programa O9010 cuando vea G102 y programa O9011 cuando vea G103.
Aquí hay un programa de ejemplo que puede usarse para propósitos de prueba. También es un programa de macro personalizada, así que las variables relacionadas pueden modificarse fácilmente. Antes de correr este programa, también se debe establecer el valor en el offset de geometría de compensación de radio (registro D para offset 1 en este ejemplo) al radio de la fresa.
Por cierto, si el valor del registro de offset de compensación de radio se establece a cero, la máquina usará la trayectoria de la superficie de trabajo. El tiempo de ciclo entonces saldrá casi igual que cuando se ingresa un valor para el radio en el offset. La única vez que la distancia se relaciona con la longitud del movimiento es durante el comando de instauración de compensación de radio. Esto confirma que la velocidad de contorneado constante funciona como debe.
- O0041
- (G41 / G102, Arcos externos)
- #100=0.25 (Radio de esquina)
- #101=10.0 (velocidad de avance)
- #102=1.5 (longitud X)
- #103=1.5 (longitud Y)
- T01 M06
- G40 G00 X-1.5 Y-.5
- G43 H01 Z-0.5
- G01 G41 D01 X0 F10.0
- G01 Y[#103-#100] F#101
- G102 X#100 Y#103 R#100
- G01 X[#102-#100]
- G102 X#102 Y[#103-#100] R#100
- G01 Y#100
- G102 X[#102-#100] Y0 R#100
- G01 X#100
- G102 X0 Y#100 R#100
- G00 G40 X-1.5 Y-0.8
- M30
Note que G102 se programa igual que G02: con X, Y y R. Las variables locales #24 (X), #25 (Y) y #18 (R) se establecerán en consecuencia. Llama al programa O9010, que:
- Establece variable local #1 a la velocidad de avance actualmente activa (para resetearla tras el movimiento circular)
- Si se especifica velocidad en el comando G102, establece #1 en consecuencia
- Asegura que la velocidad (si incluida en G102) se retenga
- Almacena el valor actual de offset de compensación de radio en variable local #2
- Ejecuta desde línea N5 si existe condición G41 (arco externo)
- Ejecuta desde línea N10 si existe condición G42 (arco interno)
- Genera alarma si compensación de radio no está actualmente instaurada
- Calcula velocidad de avance de arco externo si aplica
- Calcula velocidad de avance de arco interno si aplica
- Hace el comando circular usando G02
- Resetea la velocidad a la que era antes del movimiento circular
Técnicas casi idénticas se usan con programa O9011.
Equipo industrial
- Domina GPIO de Raspberry Pi: interfaz sensor PIR movimiento en B+/Model 2
- Cómo Conectar, Calibrar y Programar el Sensor PIR HC‑SR501 con Raspberry Pi
- Construye un Monitor de Frecuencia Cardíaca Preciso con Fotoresistencia y Arduino
- Integración del Módulo GPRS SIM800L con Arduino mediante Comandos AT
- Cámara con Detección de Movimiento para Android Controlada por Arduino MCU
- Basil Street Pizza Vending se alía con Arcus Servo Motion para acelerar su expansión nacional
- Avance vs. velocidad de corte: Dominando los parámetros clave del mecanizado CNC
- Fortune International Vturn-40: torno potente con alta velocidad de avance para corte pesado
- Tecnología de Movimiento Lineal: Soluciones de Precisión para Automatización
- Ineos Styrolution y Polystyvert Unen Fuerzas para Avanzar Economía Circular del Poliestireno
- Presentamos el TPE Dryflex Circular de Hexpol: Soluciones sostenibles para interiores automotrices