CNCYRON
Connexion

Macros Fanuc — variables et structures de contrôle

Les macros Fanuc (Custom Macro B) permettent la programmation paramétrique : boucles, conditions, calculs trigonométriques, lecture des positions machine. Indispensable pour les sous-programmes génériques, les palettiseurs et les cycles de mesure — sur Fanuc 0i / 16i / 30i.

PROGRAMMATION — MACROS FANUC CUSTOM MACRO B

#500–#999 persistent après coupure d'alimentation. Un compteur en #500 non remis à zéro repart de la valeur du cycle précédent — faux comptage et cotes décalées sans alarme. #100–#199 ne se réinitialisent qu'à la mise sous tension, pas entre les pièces. Action : initialiser explicitement toute variable #100-#999 en début de programme si elle doit repartir de zéro (#500 = 0). Ne jamais assumer qu'une variable #500-#999 est à zéro au démarrage machine. Pour les arguments paramétriques : G65 (récursivité 4 niveaux, arguments A-Z → #1-#26) — pas M98 qui ne passe rien.

Types de variables Fanuc

4 plages de variables Custom Macro B — locales, communes session, communes persistantes, système read-only.
PlageTypeDescriptionExemple
#1 – #33Variables localesLocales à l'appel de macro (G65). Réinitialisées à chaque appel. #1-#26 correspondent aux arguments A-Z de G65.#1 = 25.0 ; Argument A du G65
#100 – #199Variables communes (groupe 1)Persistantes pendant toute la session. Partagées entre tous les programmes en mémoire. Remises à zéro à la mise sous tension.#100 = 0 ; Compteur pièces
#500 – #999Variables communes (groupe 2)Persistantes même après coupure d'alimentation (stockées en mémoire non volatile). Idéales pour les paramètres machine permanents.#500 = 1.5 ; Usure correcteur permanent
#1000 +Variables système (read-only)Variables machine : #1000 = DIO entrées, #2001+ = correcteurs outils (longueur), #3001 = horloge, #5001-#5005 = positions axes.#5001 = [position X courante]

Opérateurs et fonctions mathématiques

11 opérateurs et fonctions Custom Macro B — affectation, arithmétique, trigonométrie (degrés), valeur absolue, arrondi, partie entière.
SyntaxeOpérationExemple
#var = valeurAffectation#100 = 10.5
#var = #var1 + #var2Addition#100 = #100 + 1
#var = #var1 - #var2Soustraction#1 = #1 - 0.5
#var = #var1 * #var2Multiplication#2 = #1 * 3.14159
#var = #var1 / #var2Division#3 = #1 / #2
SIN[#var]Sinus (degrés)#4 = SIN[45] ; → 0.707
COS[#var]Cosinus (degrés)#4 = COS[60] ; → 0.5
SQRT[#var]Racine carrée#4 = SQRT[2] ; → 1.414
ABS[#var]Valeur absolue#4 = ABS[-5.2] ; → 5.2
ROUND[#var]Arrondi#4 = ROUND[3.7] ; → 4
FIX[#var]Partie entière (floor)#4 = FIX[3.9] ; → 3

Structures de contrôle — IF/GOTO et WHILE/DO/END

2 structures de contrôle Custom Macro B — saut conditionnel IF/GOTO et boucle structurée WHILE/DO/END.
StructureSyntaxeDescription
IF / GOTO — saut conditionnelIF [condition] GOTO N___Si la condition est vraie, saute au bloc N. Sinon, continue au bloc suivant. Opérateurs : EQ (=), NE (≠), GT (>), GE (≥), LT (<), LE (≤).
WHILE / DO / END — boucleWHILE [condition] DO n / … / END nBoucle tant que la condition est vraie. n = 1, 2 ou 3 (niveau d'imbrication). Maximum 3 niveaux de WHILE imbriqués.

Exemple IF / GOTO — saut conditionnel

#100 = 0
N10 IF [#100 GE 10] GOTO N99   ; Sauter si #100 ≥ 10
#100 = #100 + 1                ; Incrémenter
G01 X[#100 * 5] F200           ; Déplacement variable
GOTO N10                       ; Boucle
N99 G00 Z100.                  ; Fin

Exemple WHILE / DO / END — boucle structurée

#1 = 1                         ; Compteur
WHILE [#1 LE 5] DO 1           ; Répéter 5 fois
  G91 G01 Z-2. F150            ; Descente 2mm
  G04 P500                     ; Pause 0.5s
  #1 = #1 + 1                  ; Incrémenter
END 1                          ; Fin boucle
G90 G00 Z100.

Appel macro G65 — correspondance arguments / variables

G65 P9001 A25. B10. R5. F200.  ; Appel O9001 avec arguments
; Dans O9001 :  #1 = 25. (A),  #2 = 10. (B),  #18 = 5. (R),  #9 = 200. (F)
Mapping lettre d'argument G65 → variable Fanuc #1-#26. 9 lignes (A-Z + I-K + L répétitions + M Q R S X Y Z).
Arg.Var.Arg.Var.
A#1I#4
B#2J#5
C#3K#6
D#7L(répétitions)
E#8M#13
F#9Q#17
H#11R#18
X#24Y#25
Z#26S#19

Pièges atelier et conseils terrain

DANGER
Variables #500-#999 persistent après coupure — initialiser explicitement
#500-#999 sont stockées en mémoire non volatile et persistent après coupure d'alimentation. Un compteur en #500 non remis à zéro repart de la valeur du cycle précédent — faux comptage et cotes décalées sans alarme. Toujours initialiser explicitement (#500 = 0) en début de programme.
ATTENTION
G65 vs M98 — passage d'arguments
M98 P__ = appel sous-programme simple, aucun argument transmis. G65 P__ = appel macro avec arguments (A=, B=, X=, Y=, Z=…) mappés sur #1-#26 dans la macro. G65 permet aussi la récursivité (4 niveaux). Utiliser G65 quand le sous-programme doit recevoir des paramètres variables.
INFO
WHILE/DO/END vs IF/GOTO — préférer WHILE pour lisibilité
WHILE/DO/END = boucle structurée, plus lisible, moins sujet aux erreurs. IF/GOTO = saut flexible (sauts complexes, sorties anticipées). Sur vieilles CNC (0M/6M), seul IF/GOTO disponible. Sur Fanuc modernes (0i/30i), préférer WHILE pour les boucles simples.
INFO
#5001-#5005 lecture position WCS / #5021-#5025 lecture MCS
Variables système read-only : #5001=X WCS · #5002=Y WCS · #5003=Z WCS (repère pièce G54-G59). #5021=X MCS · #5022=Y MCS · #5023=Z MCS (machine, indépendant décalages). Exemple : IF [#5003 GT -100] GOTO N10 — continue si Z au-dessus de -100.
ATTENTION
WHILE imbrication max 3 niveaux — G65 récursivité 4 niveaux
WHILE/DO/END supporte max 3 niveaux d'imbrication (DO 1 / DO 2 / DO 3). G65 appel macro supporte 4 niveaux de récursivité. Au-delà : alarme Fanuc P/S 005. Limiter pour la lisibilité du programme.
DANGER
Lettres G / L / N / O / P réservées — non utilisables comme arguments G65
Les lettres G, L, N, O, P ne peuvent pas être utilisées comme arguments G65 (réservées au CN pour codes G, répétitions, numéros de bloc, numéros de programme et paramètres internes). L = nombre de répétitions de la macro (L1 à L9999, optionnel — défaut = 1). Utiliser A-F, H, I-K, M, Q, R, S, X, Y, Z pour passer des paramètres.
📄 OUTIL ATELIER — PDF À IMPRIMER

Mémo Atelier CNC — Paramètres de coupe par matière

Vc, fz, Ra pour 10 matières (acier, inox, alu, titane, Inconel...) + 7 formules essentielles + checklist 16 points. 2 pages, format A4, à imprimer et garder près de la machine.

Aucun spam. Désabonnement en 1 clic. Données utilisées uniquement pour l'envoi de ressources CNCYRON, conformément à notre politique de confidentialité.

Questions fréquentes

Aller plus loin — calculateurs et ressources

Sous-programmes CNC — M98 / M99/programmation-cnc/g-code/sous-programmes/M98 P__ + M99 retour, comparaison Fanuc/Siemens/Heidenhain, imbrication.G31 — Cycle palpeur/programmation-cnc/g-code/cycles-palpeur/G31 + variables système #5021-#5025 → macros de palpage automatique.Décalages d'origine G54-G59/programmation-cnc/g-code/decalages-origine/Variables système #5221-#5324 — écriture programmable des décalages.Codes G et M — référence/programmation-cnc/g-code/codes-g-m/Liste complète Fanuc/Siemens avec modalité et famille.Cycles fixes de perçage/programmation-cnc/g-code/cycles-percage/G81-G85 + macros pattern polaire avec G68 incrémental + WHILE.Côtes hors tolérances/problemes-usinage/cotes-hors-tolerances/Compteur #500 non remis à zéro = cotes décalées sans alarme.