Saltar al contenido

Programación paramétrica en Fanuc (Macro B): guía completa con ejemplos

Infografía técnica que explica la programación paramétrica en Fanuc con Macro B, mostrando variables (#100–#199), bucles WHILE, condiciones IF y ejemplos prácticos.
Aprende a usar variables, expresiones, condiciones IF/THEN, bucles WHILE, subrutinas y plantillas reutilizables con Macro B en Fanuc. Incluye ejemplos prácticos para patrones de taladros, chaflanes automáticos, familias de piezas y verificación de errores.¿Quieres entrenarte con ejercicios guiados y simulación? Empieza por el Curso de Programación CNC en Fanuc. Si además trabajas con conversacional europeo, te servirá Heidenhain. Y si diseñas trayectorias desde CAD/CAM, refuerza con Mastercam.Lecturas relacionadas:

[mailerlite_form form_id=1]

1) Qué es Macro B y por qué deberías usarlo

Macro B es la extensión de Fanuc que permite programar de forma paramétrica: usar variables, operaciones matemáticas, condiciones y bucles en tus programas. Con ello puedes convertir código rígido en plantillas reutilizables que se adaptan a medidas, número de taladros, chaflanes, etc.

  • Rapidez: un mismo programa sirve para decenas de variantes (familia de piezas).
  • Menos errores: cambias parámetros en cabecera, no 60 líneas.
  • Escalabilidad: combínalo con subrutinas (M98/M99) y polares (G16).

Importante: algunos controles requieren licencia/opción para Macro B. Si tu máquina no lo soporta, puedes replicar parte de la lógica con subrutinas y parámetros fijos.

2) Variables en Fanuc: locales, comunes y de sistema

  • Locales #1–#33: se “olvidan” al terminar el programa o subprograma.
  • Comunes #100–#199, #500–#999: persisten entre programas (útiles para valores estándar de taller).
  • De sistema (solo lectura o especiales): por ejemplo, posiciones, estados y funciones (varían por control).

Asignaciones básicas:

#100 = 60.      (radio patrón)
#101 = 8        (taladros)
#102 = 0        (ángulo inicial)
#103 = [360./#101]  (incremento angular)

Consejo: documenta tus variables con comentarios; es clave para mantenimiento.

3) Expresiones y operadores útiles

  • Operadores: +, -, *, /, ** (potencia).
  • Funciones comunes: SIN[], COS[], TAN[], ABS[], ROUND[], FIX[], FUP[], SQRT[].
  • Agrupación: usa [] para evitar ambigüedades (#10=[#11*COS[#12]]).

Ejemplo simple: de paso y diámetro a avance y rpm (ilustrativo; ajusta a tu proceso):

#200 = 2.5                (paso mm)
#201 = 20.                (Ø broca)
#202 = 60.                (% de velocidad según material)
#210 = [1000.*#202] / [PI * #201]   (rpm orientativas)
#220 = 0.15 * #201        (F mm/min orientativo)

4) Condiciones IF/THEN y saltos GOTO

Con IF decides en tiempo de ejecución. Hay dos formatos: línea única con salto (GOTO) o ejecución de un bloque.

#300 = 0  (bandera de error)
IF [#101 LE 0] THEN #300 = 1
IF [#300 EQ 1] THEN #3000 = 1 (NUMERO DE TALADROS INVALIDO)

#3000 activa una alarma de usuario con número y detiene el programa; útil para validación.

5) Bucles WHILE/DO y contadores

El corazón de Macro B para repetir acciones:

#101 = 8          (n taladros)
#102 = 0          (ángulo actual)
#103 = [360./#101]

WHILE [#102 LT 360.] DO1
  (aquí tu operación: taladro en #102 grados)
  #102 = #102 + #103
END1

Recomendación: usa variables con nombres lógicos (en comentarios) y evita dependencias ocultas.

6) Ejemplo 1 — Círculo de taladros paramétrico (con polares G16)

Origen G54 en el centro del patrón. Parar si el número de taladros es 0 o el radio no es positivo.

% 
O8000 (CIRCULO TALADROS MACRO-B + G16)
(Parametros de cabecera)
#100 = 60.      (radio mm)
#101 = 8        (n taladros)
#102 = 0.       (angulo inicial)
#103 = [360./#101]
#110 = -12.     (Z final)
#111 = 2.       (R retract)
#112 = 250.     (feed)

(Validaciones)
IF [#101 LE 0] THEN #3000 = 1 (N TALADROS INVALIDO)
IF [#100 LE 0] THEN #3000 = 2 (RADIO INVALIDO)

(Estado seguro)
G21 G90 G17 G40 G49 G80
G54
T2 M06
S2800 M03
M08
G43 H02 Z5

(Entrada polar)
G16

(Loop)
#120 = #102
WHILE [#120 LT [360.+#102-0.0001]] DO1
  G00 X#120 Y#100 Z5
  G81 Z#110 R#111 F#112
  G80
  #120 = #120 + #103
END1

G15
G00 Z50
M09 M05
G49
G00 X0 Y0
M30
%

¿Te gustaría que el postprocesador de Mastercam te genere automáticamente este patrón en Macro B? Se puede, y acelera montones de familias.

7) Ejemplo 2 — Chaflán automático en contorno 2D

Parámetros: profundidad de chaflán, longitud de entrada/salida y corrector D. La macro ajusta la salida tangencial para evitar alarmas con G41/G42.

% 
O8100 (CHAFLAN AUTOMATICO 2D - G41/G42)
#200 = 0.8     (prof. chaflan)
#201 = 3.      (lead-in/out)
#202 = 1       (D=1 corrector radio)
#210 = 600.    (feed)

G21 G90 G17 G40 G49 G80
G54
T1 M06
S3500 M03
M08
G00 X-10 Y-10 Z50
G43 H01 Z5

(Entrada tangencial)
G01 G41 D#202 X0 Y[#201] F#210

; --- contorno rectangular 80x60 con chaflan en las esquinas ---
X80
Y60
X0
Y0
; ------------------------- fin contorno ------------------------

(Salida)
G40 X-5 Y-5
G00 Z50
M09 M05
G49
G00 X0 Y0
M30
%

Amplía sobre compensación en nuestra guía de G41/G42.

8) Ejemplo 3 — Subprograma paramétrico reusable (M98/M99)

Macro para una matriz 3×N con paso configurable. Úsala en varias zonas cambiando solo el punto de partida.

; --- Principal ---
%
O8200 (MATRIZ PARAMETRICA)
G21 G90 G17 G40 G49 G80
G54
T2 M06 S2800 M03 M08
G43 H02 Z5

(Primera zona)
#300 = 40.   (paso X)
#301 = 30.   (paso Y)
#302 = 3     (columnas)
#303 = 2     (filas)
G00 X20 Y20 Z5
M98 P9200

(Segunda zona)
G00 X100 Y50 Z5
M98 P9200

G00 Z50
M09 M05
G49
M30
%

; --- Subprograma O9200 usa #300..#303 ---
O9200
#I = 1
WHILE [#I LE #303] DO1
  #J = 1
  G81 Z-12 R2 F250
  WHILE [#J LE #302] DO2
    IF [#J GT 1] THEN G91 X#300
    IF [#J EQ 1] THEN G90
    #J = #J + 1
  END2
  G80
  G90
  IF [#I LT #303] THEN G91 Y#301 X[-#300*[#302-1]]
  G90
  #I = #I + 1
END1
M99

Esta estructura mezcla G90/G91 controlado con bucles y evita duplicar 20 líneas. Si estás empezando con subrutinas, pasa por M98/M99 en Fanuc.

9) Buenas prácticas de seguridad y mantenimiento

  • Estado seguro al inicio: G21 G90 G17 G40 G49 G80 + origen (G54).
  • Validaciones: usa #3000 para parar si un parámetro es inválido (radio ≤ 0, N ≤ 0).
  • Retornos limpios: cierra ciclos con G80, vuelve a G90, retira con G53 Z0 si aplica.
  • Documentación: comenta variables y fórmulas; guarda una copia “maestra” de macros en la red del taller.
  • Pruebas en material de descarte y simulación/backplot antes de producción.

10) Diagnóstico de errores típicos con Macro B

Síntoma Causa probable Solución
Bucle infinito Condición WHILE nunca se cumple Revisa incremento del contador y límites
Posiciones “se van” Quedaste en G91 Fuerza G90 al finalizar la macro/sub
Taladro choca Olvidaste G80 o R inadecuado Cancela ciclo y baja R a lo necesario
Ángulos erráticos Convención polar no verificada Comprueba G16 (X=ángulo/Y=radio) y ensaya al aire
Alarma en arcos Plano incorrecto o I/J incoherentes Fija G17 y usa I/J

Para una lista más amplia de causas/soluciones, revisa cómo evitar alarmas.

11) Integración con CAM (Mastercam) y postprocesador

Dos caminos:

  • CAM emite G-code “plano” y tú envuelves en Macro B solo lo necesario (ideal para iniciar).
  • CAM emite llamadas a macros (subprogramas O####) con parámetros (#) — requiere ajustar el post. Beneficio: programas muy cortos y mantenibles.

En el curso de Mastercam te enseño a activar “Output as subprogram” y a pasar parámetros entre operaciones.

12) Itinerario 30/60/90 para dominar Macro B

0–30 días (fundamentos):

  • Variables, asignaciones y expresiones; validaciones con #3000.
  • Un primer bucle WHILE para un patrón sencillo (4–6 taladros).

31–60 días (productividad):

  • Combina Macro B con G16 y subrutinas M98/M99.
  • Plantilla paramétrica para matriz 3×N y cavidades estándar.

61–90 días (robustez):

  • Biblioteca corporativa de macros (O8xxx/O9xxx) con control de versiones.
  • Integración con CAM para emitir llamadas paramétricas y reducir líneas un 60–80%.

¿Quieres acelerar este plan con ejercicios guiados? Empieza aquí: Fanuc · Mastercam.

13) Plantilla base de macro paramétrica (lista para copiar)

% 
O8999 (PLANTILLA BASE MACRO B)
(--- PARAMETROS USUARIO ---)
#100 = 0     (param1: descripcion)
#101 = 0     (param2: descripcion)
#102 = 0
#110 = 0
#111 = 0
(--- VALIDACIONES ---)
IF [#100 EQ 0] THEN #3000 = 10 (PARAMETRO #100 SIN DEFINIR)
(--- ESTADO SEGURO ---)
G21 G90 G17 G40 G49 G80
G54
(--- LOGICA PRINCIPAL ---)
; WHILE / IF / CALCULOS
(--- SALIDA SEGURA ---)
G80
G90
G00 Z50
M30
%
[mailerlite_form form_id=1]

14) Conclusión: de código rígido a plantillas inteligentes

La programación paramétrica con Macro B convierte tus programas de Fanuc en herramientas inteligentes: menos líneas, menos errores, más reutilización. Con variables bien nombradas, validaciones, bucles controlados y retornos limpios (G80/G90/G53), obtendrás procesos más rápidos y piezas más consistentes.

Siguiente paso: toma un programa real de tu taller y transpórtalo a una macro con 3–5 parámetros (#). Mide el tiempo de ajuste al cambiar dimensiones y compáralo con tu flujo anterior.

¿Quieres que convirtamos tus programas actuales en una biblioteca de macros reutilizables para tu taller? Envíame un caso desde la página de contacto y te preparo una propuesta paso a paso.