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.
Types de variables
#1 – #33Variables locales
Locales à 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
| Syntaxe | Opération | Exemple |
|---|---|---|
| #var = valeur | Affectation | #100 = 10.5 |
| #var = #var1 + #var2 | Addition | #100 = #100 + 1 |
| #var = #var1 - #var2 | Soustraction | #1 = #1 - 0.5 |
| #var = #var1 * #var2 | Multiplication | #2 = #1 * 3.14159 |
| #var = #var1 / #var2 | Division | #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 — saut conditionnel
IF [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 (≤).
#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
WHILE / DO / END — boucle
WHILE [condition] DO n ...
END n
Boucle tant que la condition est vraie. n = 1, 2 ou 3 (niveau d'imbrication). Maximum 3 niveaux de WHILE imbriqués.
#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)
| Arg. | Var. | Arg. | Var. |
|---|---|---|---|
| A | #1 | I | #4 |
| B | #2 | J | #5 |
| C | #3 | K | #6 |
| D | #7 | L | (répétitions) |
| E | #8 | M | #13 |
| F | #9 | Q | #17 |
| H | #11 | R | #18 |
| X | #24 | Y | #25 |
| Z | #26 | S | #19 |
Note : Les lettres G, L, N, O, P ne peuvent pas être utilisées comme arguments G65 (réservées au CN). L = nombre de répétitions de la macro (L1 à L9999).