Les cycles préprogrammés G81 à G89 sont implémentés comme décrit dans cette section.
Tous les cycles préprogrammés sont effectués dans le respect du plan de travail courant. N'importe lequel des trois plans de travail XY, YZ, ZX peut être choisi. Dans cette section, la plupart des descriptions supposeront que le plan de travail XY est le plan courant. Le comportement reste analogue pour les plans de travail YZ ou XZ.
Les mots d'axes rotatifs sont autorisés (sous conditions) dans les cycles préprogrammés, mais il est préférable de les omettre. Si les mots d'axes rotatifs sont utilisés, leurs valeurs doivent rester les mêmes que celles de la position courante, de sorte qu'ils ne tournent pas.
Tous les cycles préprogrammés utilisent X-, Y-, R-, et Z- dans le code NC. Ces valeurs sont utilisées pour déterminer les positions de X, Y, R, et Z. La position de R- (signifiant rétraction) est perpendiculaire au plan de travail courant (axe Z pour le plan XY, axe X pour le plan YZ, axe Y pour le plan XZ). Quelques cycles préprogrammés utilisent des arguments supplémentaires.
Dans les cycles préprogrammés, un nombre est appelé “sticky” (collant) si, quand le même cycle est répété sur plusieurs lignes de code en colonne, le nombre doit être indiqué la première fois, mais qu'il devient optionnel pour le reste des lignes suivantes. Les nombres “sticky” conservent leur valeur tant qu'ils ne sont pas explicitement programmés avec une nouvelle valeur. La valeur de R- est toujours “sticky”.
En mode de déplacements incrémentaux (G91): quand le plan courant est XY, les valeurs X-, Y-, est R- sont traitées comme incrémentales à partir de la position courante et Z- comme un incrément depuis la position précédent le mouvement impliquant l'axe Z. Quand le plan YZ ou XZ est le plan courant, le traitement des mots d'axes est analogue. En mode de déplacements absolus, les valeurs de X-, Y-, R-, et Z- sont des positions absolues dans le système de coordonnées courant.
La valeur L- est optionnelle, elle représente le nombre de répétitions. L=0 n'est pas permis. Si les répétitions sont utilisées, elles le sont normalement en mode de déplacements incrémentaux, de sorte que la même séquence de mouvements puisse être répétée à plusieurs endroits, égalements espacés, le long d'un ligne droite. En mode de déplacements absolus, L>1 signifie “faire le même cycle au même endroit, plusieurs fois”. L'omission du mot L revient à spécifier L=1. La valeur de L- n'est pas “sticky”.
Avec L>1 en mode incrémental et XY comme plan courant, les positions X et Y sont déterminées en ajoutant les valeurs X- et Y- de la commande à celles de la position courante, pour le premier trajet ou, ensuite, à celles de la position finale du précédent trajet, pour les répétitions. Les valeurs de R- et de Z- ne changent pas durant toutes les répétitions.
La hauteur du mouvement de retrait à la fin de chaque répétition (appellée “plan de retrait” dans les descriptions suivantes) est déterminée par le passage en mode: retrait sur la position initiale de Z, si elle est au dessus de la valeur de R- et que le mode de retrait est G98, OLD_Z, sinon, à la position de R-.
Tout au début de l'exécution d'un cycle préprogrammé, avec le plan courant XY, si la position actuelle de Z est en dessous de la position de retrait R, l'axe Z va à la position R. Ceci n'arrive qu'une fois, sans tenir compte de la valeur de L.
En plus, au début du premier cycle et à chaque répétition, un ou deux des mouvements suivants sont faits:
1. Un déplacement en ligne droite, parallèle au plan XY, vers le position programmée. 2. Un déplacement en ligne droite, de l'axe Z seul vers la position de retrait R, si il n'est pas déjà à cette position R.
Si un des plans XZ ou YZ est actif, le mouvement préliminaire et intermédiaire est analogue.
G80 Programmer G80 pour s'assurer qu'aucun mouvement d'axe ne surviendra sans G-code modal.
Dans l'interpréteur d'EMC, G80 est un code modal révoqué par tout autre g-code. Les résultats des lignes suivantes sont identiques:
N1000 G90 G81 X1 Y1 Z1.5 R2.8 (cycle préprogrammé en mode de déplacements absolus)
N1001 G80 (révoque G81)
N1002 G0 X0 Y0 Z0 (active les mouvements en vitesse rapide et déplace le mobile en X0, Y0 et Z0)
produit le même déplacement et le même état final de la machine que:
N1000 G90 G81 X1 Y1 Z1.5 R2.8 (cycle préprogrammé en mode de déplacements absolus)
N1001 G0 X0 Y0 Z0 (active les mouvements en vitesse rapide et déplace le mobile en X0, Y0 et Z0)
L'avantage du premier, la ligne du G80 révoque clairement le cycle G81. Avec ce premier programme, le programmeur doit revenir en mode mouvement avec G0, comme c'est fait sur la ligne suivante, ou tout autre mot G de mouvement.
Exemple 0: Utilisation d'un cycle préprogrammé avec un code de mouvement modal
Si un cycle préprogrammé n'est pas révoqué avec G80 ou un autre mot G de mouvement, le cycle préprogrammé attend de se répéter en utilisant le prochaine ligne de code contenant un (ou plusieurs) mot d'axe X, Y ou Z. Le fichier suivant perce (G81) un ensemble de huit trous. Noter la position de Z change après les quatre premiers trous.
N100 G90 G0 X0 Y0 Z0 (coordonnées d'origine)
N110 G1 X0 G4 P0.1
N120 G81 X1 Y0 Z0 R1 (cycle de perçage)
N130 X2
N140 X3
N150 X4
N160 Y1 Z0.5
N170 X3
N180 X2
N190 X1
N200 G80 (révocation du cycle G81)
N210 G0 X0 (mouvement en vitesse rapide)
N220 Y0
N220 Z0
N220 M2 (fin du programme)
L'utilisation de G80 à la ligne N200 est optionnel puisqu'il y a un G0 sur la ligne suivante qui révoque le cycle G81. Mais utiliser G80, comme l'exemple 1 le montre, donne une meilleure lisibilité au code du cycle préprogrammé. Sans lui, il est moins évident que les lignes entre N120 et N200 appartiennent au cycle G81.
Si vous utilisez G80 et que vous ne placez pas un code de mouvement modal juste derrière vous pourrez avoir un de ces messages:
Cannot use axis commands with G80
Coordinate setting given with G80
Ils servent à vous rappeler que vous devez écrire un nouveau mot de mouvement.
Le cycle G81 est destiné au perçage.
0. Un mouvement préliminaire, comme il a été traité ci-dessus.
1. Un déplacement de l'axe Z seul à la vitesse programmée, vers la position Z programmée.
2. Retrait de l'axe Z en vitesse rapide jusqu'au plan de retrait R.
Exemple 1: G81 en position absolue
Supposons que la position courante soit, X1, Y2, Z3 dans le plan XY, la ligne de codes suivante est interprétée:
G90 G81 G98 X4 Y5 Z1.5 R2.8
Le mode de déplacements absolus est appelé (G90), le plan de retrait est positionné sur OLD_Z (G98), l'appel du cycle de perçage G81 va lancer ce cycle une fois. La position X deviendra celle demandée, X4. La position de Y deviendra celle demandée, Y5. La position de Z deviendra celle demandée, Z1.5. La valeur de R fixe le plan de retrait de Z à 2.8. La valeur de OLD_Z est 3. Les mouvements suivants vont se produire:
1. Un mouvement en vitesse rapide, parallèle au plan XY vers X4, Y5, Z3
2. Un mouvement en vitesse rapide, parallèle à l'axe Z vers X4, Y5, Z2.8
3. Un mouvement en vitesse travail, parallèle à l'axe Z vers X4, Y5, Z1.5
4. Un mouvement en vitesse rapide, parallèle à l'axe Z vers X4, Y5, Z3
Exemple 2: Supposons que la position courante soit, X1, Y2, Z3 dans le plan XY, la ligne de codes suivante est interprétée:
G91 G81 G98 X4 Y5 Z-0.6 R1.8 L3
Le mode de déplacements incrémentaux est appelé (G91), le plan de retrait est positionné sur OLD_Z (G98), l'appel du cycle de perçage G81 demande 3 répétitions du cycle. La valeur demandée de X est 4, la valeur demandée de Y est 5, la valeur demandée de Z est -0.6 et le retrait R est à 1.8. La position initiale de X sera 5 (1+4), la position initiale de Y sera 7 (2+5), le plan de retrait sera positionné sur 4.8 (1.8+3) et Z positionné sur 4.2 (4.8-0.6). OLD_Z est à 3.
Le premier mouvement en vitesse rapide le long de l'axe Z vers X1, Y2, Z4.8), puisque OLD_Z est inférieur au plan de retrait.
La première répétition produira 3 mouvements.
1. Un déplacement en vitesse rapide, parallèle au plan XY vers X5, Y7, Z4.8
2. Un déplacement en vitesse travail, parallèle à l'axe Z vers X5, Y7, Z4.2
3. Un déplacement en vitesse rapide, parallèle à l'axe Z vers X5, Y7, Z4.8
La deuxième répétition produira 3 mouvements. La position de X est augmentée de 4 et passe à 9, la position de Y est augmentée de 5 et passe à 12.
1. Un déplacement en vitesse rapide, parallèle au plan XY vers X9, Y12, Z4.8
2. Un déplacement en vitesse travail, parallèle à l'axe Z vers X9, Y12, Z4.2
3. Un déplacement en vitesse rapide, parallèle à l'axe Z vers X9, Y12, Z4.8
La troisième répétition produira 3 mouvements. La position de X est augmentée de 4 et passe à 13, la position de Y est augmentée de 5 et passe à 17.
1. Un déplacement en vitesse rapide, parallèle au plan XY vers X13, Y17, Z4.8
2. Un déplacement en vitesse travail, parallèle à l'axe Z vers X13, Y17, Z4.2
3. Un déplacement en vitesse rapide, parallèle à l'axe Z vers X13, Y17, Z4.8
Exemple 3 - G81 en position relative
Supposons maintenant que vous exécutez le premier g81 de la ligne de code, mais de (0, 0, 0) plutôt que de (1, 2, 3). G90 G81 G98 X4 Y5 Z1.5 R2.8 Depuis OLD_Z est inférieur à la valeur de R, il n'ajoute rien au mouvement, mais puisque la valeur initiale de Z est inférieure à la valeur spécifiée dans R, un premier mouvement de Z sera effectué durant le mouvement préliminaire.
Exemple 4 - G81 en absolu avec R > Z
Il s'agit de la trajectoire pour le second block de code de g81.
G91 G81 G98 X4 Y5 Z-0.6 R1.8 L3
Cette trajectoire commence en (0, 0, 0), l'interpréteur ajoute les valeurs initiales Z0 et R 1.8 et déplace le mobile en vitesse rapide vers cet emplacement. Après ce premier déplacement initial de Z, la répétition fonctionne de manière identique à celle de l'exemple 3 avec le mouvement final de Z à 0.6 en dessous de la valeur de R.
Exemple 5 - Position relative R > Z
Le cycle G82 est destiné au perçage.
0. Un mouvement préliminaire, comme il a été traité ci-dessus.
1. Un déplacement de l'axe Z seul en vitesse programmée, vers la position Z programmée.
2. Une temporisation de P secondes.
3. Retrait de l'axe Z en vitesse rapide jusqu'au plan de retrait R.
Les mouvements du cycle G82 ressemblent à ceux de g81 avec une temporisation supplémentaire en fin de mouvement Z. La longueur de cette temporisation, exprimée en secondes, est spécifiée par un mot P# sur la ligne du G82.
G90 G82 G98 X4 Y5 Z1.5 R2.8 P2
Sera équivalent à l'exemple 3 ci-dessus mais avec une temporisation de 2 secondes en fond de trou.
Le cycle G83 est destiné au perçage profond ou au fraisage avec brise-copeaux. Les retraits, au cours de ce cycle, dégagent les copeaux du trou et fragmentent les copeaux longs (qui sont fréquents lors du perçage dans l'aluminum). Ce cycle utilise la valeur Q qui représente un incrément “delta” le long de l'axe Z.
0. Un mouvement préliminaire, comme décrit précédemment.
1. Un mouvement de l'axe Z seul, en vitesse travail, sur la position la moins profonde entre, un incrément delta, ou la position de Z programmée.
2. Un mouvement en vitesse rapide au plan de retrait.
3. Une plongée en vitesse rapide dans le même trou, presque jusqu'au fond.
3. Répétition des étapes 2, 3 et 4 jusqu'à ce que la position programmée de Z soit atteinte à l'étape 2.
4. Un mouvement de l'axe Z en vitesse rapide vers le plan de retrait.
Ce code n'est pas encore implémenté dans EMC2. Il est accepté mais son comportement n'est pas défini. Voir G33.1
The G84 cycle is intended for right-hand tapping.
0. Preliminary motion, as described above.
1. Start speed-feed synchronization.
2. Move the Z-axis only at the current feed rate to the Z position.
3. Stop the spindle.
4. Start the spindle counterclockwise.
5. Retract the Z-axis at the current feed rate to clear Z.
6. If speed-feed synch was not on before the cycle started, stop it.
7. Stop the spindle.
8. Start the spindle clockwise.
Le cycle G85 est destiné à l'alésage, mais peut être utilisé pour le perçage ou le fraisage.
0. Un mouvement préliminaire, comme décrit précédemment.
1. Un déplacement de l'axe Z seul en vitesse travail, vers la position Z programmée.
2. Retrait de l'axe Z en vitesse travail vers le plan de retrait.
Le cycle G86 est destiné à l'alésage. Ce cycle utilise la valeur P pour une temporisation en secondes.
0. Un mouvement préliminaire, comme décrit précédemment.
1. Un déplacement de l'axe Z seul en vitesse travail, vers la position Z programmée.
2. Une temporisation de P secondes.
3. L'arrêt de rotation de la broche.
4. Retrait de l'axe Z en vitesse rapide vers le plan de retrait.
5. Reprise de la rotation de la broche dans la même direction que précédemment.
Ce code n'est pas encore implémenté dans EMC2. Il est accepté mais son comportement n'est pas défini.
The G87 cycle is intended for back boring.
The situation is that you have a through hole and you want to counter bore the bottom of hole. To do this you put an L-shaped tool in the spindle with a cutting surface on the UPPER side of its base. You stick it carefully through the hole when it is not spinning and is oriented so it fits through the hole, then you move it so the stem of the L is on the axis of the hole, start the spindle, and feed the tool upward to make the counter bore. Then you stop the tool, get it out of the hole, and restart it.
This cycle uses I and J values to indicate the position for inserting and removing the tool. I and J will always be increments from the X position and the Y position, regardless of the distance mode setting. This cycle also uses a K value to specify the position along the Z-axis of the top of counterbore. The K value is an absolute Z-value in absolute distance mode, and an increment (from the Z position) in incremental distance mode.
0. Preliminary motion, as described above.
1. Move at traverse rate parallel to the XY-plane to the point indicated by I and J.
2. Stop the spindle in a specific orientation.
3. Move the Z-axis only at traverse rate downward to the Z position.
4. Move at traverse rate parallel to the XY-plane to the X,Y location.
5. Start the spindle in the direction it was going before.
6. Move the Z-axis only at the given feed rate upward to the position indicated by K.
7. Move the Z-axis only at the given feed rate back down to the Z position.
8. Stop the spindle in the same orientation as before.
9. Move at traverse rate parallel to the XY-plane to the point indicated by I and J.
10. Move the Z-axis only at traverse rate to the clear Z.
11. Move at traverse rate parallel to the XY-plane to the specified X,Y location.
12. Restart the spindle in the direction it was going before.
Exemple 6 - Backbore
Example six uses a incremental distances from (0, 0, 0) so the preliminary moves look much like those in example five but they are done using the G87 backbore canned cycle.
G91 G87 M3 S1000 X1 Y1 Z-0.4 R1.4 I-0.1 J-0.1 K-0.1
You will notice that the preliminary moves shift the tool to directly above the center axis of the existing bore.
Next it increments that location by the I and J values. I offsets X with a plus value being added to the current X. J does the same for the Y axis.
For our example block both I and J are negative so they move back from the hole axis along the path just made by the tool. The amount of offset required should be just enough that the tool tip will slide down through the bore.
Next the canned cycle moves the tool down in z and at the bottom location represented in the block by the Z 0.4 value it moves the tool back to the center of the bore.
Now the g87 canned cycle turns the spindle on and moves back up into the bore at the programmed feed rate. This is the real cutting action of this canned cycle. With the proper tool in a boring bar this cycle will produce a chamfer on the bottom side of the bore. G87 can also be used to produce a larger diameter bore on the bottom side of the bore.
When the tool has reached the K position it is returned to the bottom location, the spindle is stopped and oriented and follows the earlier path back out of the bore to the initial position above.
This canned cycle assumes spindle orientation which has not been implemented in the EMC to date. The proper alignment of the tool tip to the oriented spindle is critical to the successful insertion of the tool through the hole to be backbored.
Ce code n'est pas encore implémenté dans EMC2. Il est accepté mais son comportement n'est pas défini.
The G88 cycle is intended for boring. This cycle uses a P value, where P specifies the number of seconds to dwell.
0. Preliminary motion, as described above.
1. Move the Z-axis only at the current feed rate to the Z position.
2. Dwell for the given number of seconds.
3. Stop the spindle turning.
4. Stop the program so the operator can retract the spindle manually.
5. Restart the spindle in the direction it was going. It is unclear how the operator is to manually move the tool because a change to manual mode resets the program to the top. We will attempt to clarify that step in this procedure.
Le cycle G89 est destiné à l'alésage. Il utilise la valeur de P pour une temporisation en secondes.
0. Un mouvement préliminaire, comme décrit précédemment.
1. Un déplacement de l'axe Z seul en vitesse travail, vers la position Z programmée.
2. Temporisation de P secondes.
3. Retrait de l'axe Z en vitesse travail vers le plan de retrait.
Quand la broche se rétracte pendant les cycles préprogrammés, il existe deux options pour indiquer comment elle se rétracte: (1) Retrait perpendiculaire au plan de travail courant jusqu'à la position indiquée par le mot R, ou (2) Retrait perpendiculaire au plan de travail courant jusqu'à la position qui était celle de cet axe juste avant le début du cycle préprogrammé (à moins que cette position ne soit inférieure à celle indiquée par le mot R, auquel cas, c'est cette dernière qui serait utilisée.
Pour utiliser l'option (1), programmer G99. Pour utiliser l'option (2), programmer G98. Ne pas oublier que le mot R a différentes significations en mode de déplacement absolu et en mode de déplacement incrémental.
Utilisation de G98
Utilisation de G99
Il y a au moins deux raisons, la première est l'économie de code. Un simple trou demande plusieurs lignes de code pour être exécuté.
Exemple 7: Nous avons montré plus haut, comment les cycles préprogrammés peuvent être utilisés pour produire 8 trous avec dix lignes de code. Le programme ci-dessous permet de produire le même jeu de 8 trous en utilisant cinq lignes pour le cycle préprogrammé. Il ne suit pas exactement le même parcours et ne perce pas dans le même ordre que l'exemple précédent, mais le programme a été écrit de manière économique, une bonne pratique qui devrait être courante avec les cycles préprogrammés.
Exemple 7 - perçage de huit trous, réécrit.
n100 g90 g0 x0 y0 z0 (coordonnées d'origine)
n110 g1 f10 x0 g4 p0.1
n120 g91 g81 x1 y0 z-1 r1 l4(cycle de perçage)
n130 g90 g0 x0 y1
n140 z0
n150 g91 g81 x1 y0 z-.5 r1 l4(cycle de perçage)
n160 g80 (révocation du cycle G81)
n170 m2 (fin du programme)
Exemple 8 - Douze trous dans un carré
Cet exemple montre l'utilisation du mot L pour répéter une série incrémentale de cycles de perçage pour des blocks de code successifs dans le même mode mouvements G81. Ici, nous produisons 12 trous au moyen de cinq lignes de code dans le mouvement modal.
N1000 G90 G0 X0 Y0 Z0 (coordinées d'origine)
N1010 G1 F50 X0 G4 P0.1
N1020 G91 G81 X1 Y0 Z-0.5 R1 L4 (cycle de perçage)
N1030 X0 Y1 R0 L3 (répétition)
N1040 X-1 Y0 L3 (répétition)
N1050 X0 Y-1 L2 (répétition)
N1060 G80 (révocation du cycle G81)
N1070 G90 G0 X0 (retour vers l'origine en vitesse rapide)
N1080 Y0
N1090 Z0
N1100 M2 (fin du programme)
La deuxième raison d'utiliser les cycles préprogrammés, c'est qu'il produisent un mouvement préliminaire et retournent à une position prévisible et contrôlable, quel que soit le point de départ du cycle.