CNCYRON
PROGRAMMATION9 min de lecture

Macros Fanuc B — variables, conditions et boucles

Les macros Fanuc Custom B permettent de programmer des cycles utilisateurs, des boucles, des conditions et de la mesure en cours. Ce guide couvre les variables système, les fonctions arithmétiques et 3 exemples concrets d'application.

Activation : Les macros Custom B nécessitent l'option Fanuc "Custom Macro B" (paramètre 6001#0 = 1). Vérifier auprès du constructeur machine si l'option est active.

Types de variables

PlageTypePersistanceUtilisationExemple
#1–#33LocalesEffacées fin appel macroArguments transmis par G65 (A=#1, B=#2, D=#7…)#1 = valeur arg. A
#100–#199CommunesJusqu'au reset/M30Variables de calcul dans programme principal#100 = [#1 * 2]
#500–#599PersistantesPermanentes (SRAM)Paramètres atelier, offsets correcteurs outils#500 = décalage zéro pièce
#1000–#1999Système E/STemps réelLecture entrées/sorties numériques, capteurs#1000 = état entrée DI[0]
#2001–#2999Correcteurs outilPermanentesLire/écrire correcteurs H et D depuis programme#2001 = correction H1 longueur
#5001–#5999Positions machineTemps réelPosition axe en cours, positions SKIP G31#5001 = pos. X actuelle

Fonctions arithmétiques

FonctionDescriptionExemple
ABS[#x]Valeur absolue#100 = ABS[#1]
INT[#x]Partie entière (troncature vers zéro)#100 = INT[3.7] → 3
ROUND[#x]Arrondi au plus proche#100 = ROUND[3.5] → 4
SQRT[#x]Racine carrée#100 = SQRT[4] → 2.0
SIN[#x] / COS[#x] / TAN[#x]Trigonométrie (degrés)#100 = SIN[30] → 0.5
ATAN[#y]/[#x]Arc tangente (résultat 0–360°)#100 = ATAN[1.0]/[1.0] → 45
LN[#x] / EXP[#x]Logarithme naturel / exponentielle#100 = EXP[1] → 2.718
#0 (null)Variable non définie — génère erreur si utilisée sans initialisationIF [#1 EQ #0] THEN ...

Structures de contrôle

(Condition simple — IF/THEN)
IF [#1 GT 50.0] THEN #100 = 1
IF [#2 EQ #0] GOTO 999 (variable non définie)

(Boucle WHILE — itérations)
WHILE [#100 LT 10] DO1
G01 X[#100 * 5] F200
#100 = #100 + 1
END1

(Opérateurs de comparaison)
EQ = égal | NE = différent | GT = > | GE = >=
LT = < | LE = <= | AND / OR / XOR (logique)

3 exemples concrets

Boucle FOR — perçage réseau de trous

O0100 (MACRO - PERCAGE RESEAU)
#100 = 0              (compteur)
#101 = 10.0           (X debut)
#102 = 25.0           (pas X)
WHILE [#100 LT 5] DO1
  G81 X[#101 + #100 * #102] Y50. Z-20. R5. F120
  #100 = #100 + 1
END1
G80
M30

Perce 5 trous espacés de 25 mm à partir de X10.

IF/GOTO — saut conditionnel

O0200 (MACRO - CYCLE CONDITIONNEL)
#1 = 10.0   (profondeur A)
#2 = 0.5    (avance B)
IF [#1 GT 30.0] GOTO 100
  G01 Z-[#1] F[#2]
  GOTO 200
N100 (trou profond - debourrage)
  G83 Z-[#1] Q5. R2. F[#2]
N200
G80 M99

Utilise G83 (débourrage) si profondeur > 30 mm, sinon G01 direct.

Macro mesure en cours (palpeur sur table)

O0300 (MESURE DIAMETRE ALESAGE)
G65 P9810 Z5. F500    (descente palpeur)
G31 X[#5001+10] F100  (palpage droit)
#110 = #5061          (pos. X skip)
G31 X[#5001-10] F100  (palpage gauche)
#111 = #5061
#112 = ABS[#110 - #111]  (diametre mesure)
IF [#112 LT 29.95] GOTO 999  (hors tol.)
IF [#112 GT 30.05] GOTO 999
GOTO 998
N999 #3000 = 1 (COTE HORS TOLERANCE)
N998 G65 P9811 (retractation palpeur)
M99

Mesure le diamètre d'un alésage et déclenche alarme si hors tolérance ±0,05.

📖 Voir aussi : Sous-programmes M98/M99 — guide complet · Référence codes G et M

← Blog CNC