
[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
#3000para parar si un parámetro es inválido (radio ≤ 0, N ≤ 0). - Retornos limpios: cierra ciclos con
G80, vuelve a G90, retira conG53 Z0si 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
WHILEpara un patrón sencillo (4–6 taladros).
31–60 días (productividad):
- Combina Macro B con
G16y subrutinasM98/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
%
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.
- Curso de Programación CNC en Fanuc — Macro B desde cero a productivo.
- Heidenhain — equivalentes TNC y buenas prácticas.
- Mastercam — postprocesado con subprogramas y parámetros.



