G31 — Cycle palpeur (Skip cycle)
G31 arrête un déplacement dès la réception d'un signal externe (contact palpeur) et mémorise la position dans les variables système #5021–#5025. Utilisé pour la mesure longueur outil, la prise d'origine pièce automatique, le contrôle en cours et la détection de bris outil.
Codes G31 — référence Fanuc
| Code | Fonction | Groupe | Note |
|---|---|---|---|
| G31 | Skip cycle — déplacement jusqu'au contact palpeur (saut de bloc) | 1 | Non-modal : actif seulement sur le bloc où il est programmé |
| G31 P1 | Skip cycle avec signal discret 1 (Fanuc 30i/31i/32i) | 1 | Permet multi-palpeurs sur la même CN |
| G31 P2 | Skip cycle avec signal discret 2 | 1 | Palpeur broche + palpeur table simultanément possibles |
| G04 | Temporisation (souvent associé à G31 pour laisser le palpeur se stabiliser) | — | G04 P100 = 100 ms |
Syntaxe G31
G31 X__ Y__ Z__ F__ ; Déplacement jusqu'au contact palpeur
; X Y Z = position cible (si pas de contact)
; F = vitesse d'approche (100–300 mm/min recommandé)
; Position capturée dans #5021 (X), #5022 (Y), #5023 (Z)
; Si le palpeur touche avant X Y Z : arrêt et saut du bloc suivant
; Si pas de contact : le déplacement s'arrête à X Y Z programmé4 applications de G31 en atelier
📏 Mesure longueur outil (TLM)
L'outil descend sur un palpeur fixe sur la table. G31 arrête le déplacement dès le contact. La position Z (#5023) est lue et stockée dans la table des correcteurs (H).
🎯 Prise d'origine pièce (WPS)
Un palpeur de broche (Renishaw, Marposs) palpe les faces de la pièce. G31 capture les positions X/Y/Z et les macro calculent et écrivent le décalage G54.
✅ Contrôle dimensionnel en cours (in-process)
Après usinage, le palpeur vérifie une cote critique. Si hors tolérance, la macro corrige le correcteur outil et relance la passe de finition.
🚨 Détection de bris outil (TBC)
G31 vérifie que l'outil touche bien le palpeur à la hauteur attendue. Si pas de contact avant Z_limite → macro alarme "BRIS OUTIL" et arrêt programme.
Variables système — positions au contact
| Variable | Axe | Contenu | Note |
|---|---|---|---|
| #5021 | X | Position X au moment du contact (skip signal) | Coordonnée pièce (WCS G54/G55…) |
| #5022 | Y | Position Y au moment du contact | Coordonnée pièce |
| #5023 | Z | Position Z au moment du contact | La plus utilisée pour la longueur outil |
| #5024 | A / 4e axe | Position A au moment du contact | Si 4e axe configuré |
| #5025 | B / 5e axe | Position B au moment du contact | Si 5e axe configuré |
| #5061–#5065 | X→5e | Position machine (MCS) au skip — précision maximale | Coordonnée machine, indépendante des décalages |
Exemple 1 — Macro mesure longueur outil (TLM)
Le palpeur fixe est à Z = −200.000 mm (coordonnée pièce, G54). Longueur outil = position Z palpeur − position Z contact.
O0100 (MACRO MESURE LONGUEUR OUTIL)
#500 = -200.0 ; Z référence palpeur table (coordonnée pièce)
#501 = 1 ; Numéro correcteur H à écrire
G90 G54 ; Mode absolu, origine G54
G43 H#501 Z50.0 ; Approche sécurité avec correcteur actuel (peut être 0)
G04 P200 ; Attente stabilisation broche à l'arrêt (M05 avant)
G31 Z-210.0 F120 ; Descente vers palpeur — F lente pour précision
; Z-210 = course maxi (sécurité sous palpeur)
#502 = #5023 ; Capture position Z au contact
#503 = #502 - #500 ; Longueur = Z_contact - Z_ref_palpeur
IF [#503 LT 0.0] GOTO 99 ; Sécurité : valeur incohérente → alarme
#[2000 + #501] = #503 ; Écriture dans table H (#2001 = H1, #2002 = H2…)
G0 Z50.0 ; Dégagement sécurité
M99 ; Fin sous-programme
N99 ; Alarme longueur incohérente
#3000 = 101 (LONGUEUR OUTIL INVALIDE)
M30Exemple 2 — Prise d'origine pièce (WPS) en X
Palpage face gauche + face droite → calcul centre → écriture décalage G54 X.
O0200 (PRISE ORIGINE PIECE — CENTRE EN X)
G90 G54 G00 Z50.0 ; Dégagement Z avant palpage
; --- Palpage face gauche ---
G00 X-80.0 Y0 ; Approche côté gauche (pièce ≈ 120 mm large)
G00 Z5.0 ; Descente rapide au niveau palpage
G31 X-30.0 F150 ; Palpage vers X+ jusqu'à contact face gauche
#510 = #5021 ; Mémorise X_gauche
G00 X-80.0 ; Dégagement
; --- Palpage face droite ---
G00 X80.0 ; Approche côté droit
G31 X30.0 F150 ; Palpage vers X- jusqu'à contact face droite
#511 = #5021 ; Mémorise X_droite
G00 X0 Z50.0 ; Dégagement
; --- Calcul centre et écriture G54 ---
#512 = [#510 + #511] / 2 ; Centre pièce en X
#5221 = #5221 - #512 ; Correction décalage G54 X
; #5221 = valeur X de G54 (variable système)
M99Équivalents Siemens 840D — MEAS / MEASA
; Siemens 840D / 828D — skip cycle = MEAS ou MEASA MEAS=1 X__ Y__ Z__ F__ ; Mesure sur 1 signal (équiv. G31) MEASA=1 X__ Y__ Z__ F__ ; Mesure toutes directions simultanées ; Position capturée dans : $AA_IW[X] ; équiv. #5021 Fanuc $AA_IW[Y] ; équiv. #5022 Fanuc $AA_IW[Z] ; équiv. #5023 Fanuc ; Exemple mesure longueur outil sur Siemens : MEAS=1 Z=-210 F=120 R10 = $AA_IW[Z] ; Capture position Z R11 = R10 - (-200) ; Longueur = Z_contact - Z_ref
Bonnes pratiques et sécurités
Vitesse d'approche F = 100–300 mm/min
Trop rapide → la CN ne freine pas assez vite → rebond et erreur. Trop lent → temps cycle. Idéal : 2 passes (F=500 dégrossie, F=100 précision).
Toujours vérifier #5023 après G31
Si le palpeur n'a pas été touché, #5023 contiendra la position de fin de course (Z programmé). Tester : IF [#5023 EQ Z_cible] → alarme.
Utiliser G91 pour les approches relatives
G91 G31 Z-30.0 F120 : descend de 30 mm depuis la position courante. Plus sûr quand la position absolue de la pièce est inconnue.
M05 avant palpage broche en rotation
Palpeur Renishaw à contact : nécessite broche arrêtée. Exception : palpeurs laser (Blum) fonctionnent broche en rotation (avec outil en rotation pour contrôle outil tournant).
Répétabilité : toujours faire 2 mesures
Moyenne de 2 palpage G31 consécutifs → élimine les valeurs aberrantes. Comparer : si [ABS[#5023_meas1 - #5023_meas2] GT 0.005] → alarme "PALPEUR INSTABLE".