Cette section donne une brève description des interactions entre les organes d'un centre d'usinage et son interpréteur de commandes. Le lecteur est sensé être déjà familier avec les centres d'usinage.
Le langage RS274/NGC et les fonctions d'usinage standards qui en découlent permettent d'envisager un centre d'usinage sous deux points de vue:
(1) les composants mécaniques de la machine.
(2) les composants de contrôle et les données utilisées pour le contrôle de la machine.
Un centre d'usinage dispose de beaucoup de composants mécaniques pouvant être contrôlés ou qui peuvent avoir une incidence sur la façon dont le contrôle de la machine s'effectue. Cette section décrit les composants qui interagissent avec l'interpréteur. Les composants mécaniques, qui n'interagissent pas avec l'interpréteur, comme les boutons du jog, ne seront pas décrits ici, même si ils affectent le contrôle.
Tout centre d'usinage dispose d'un ou de plusieurs axes. Les différents types de machines ont différentes combinaisons d'axes. Par exemple, une fraiseuse 4 axes peut avoir la combinaison d'axes XYZA ou XYZB. Un tour classique aura les axes XZ. Une machine de découpe à fil chaud aura les axes XYUZ.12
Les axes X, Y et Z produisent des mouvements linéaires dans trois directions, mutuellement orthogonales.
Les axes U, V et W produisent des mouvements linéaires dans trois directions mutuellement orthogonales. Habituellement, X et U sont parallèles, Y et V sont parallèles et Z et W sont parallèles.
Les axes A, B et C produisent des mouvements angulaires (rotations). Habituellement, l'axe de rotation de A est parallèle à X, l'axe de rotation de B est parallèle à Y et l'axe de rotation de C est parallèle à Z.
Un centre d'usinage est équipé d'une broche qui maintient l'outil coupant, la sonde de mesure et d'autres outils. La broche peut tourner dans les deux sens. Elle peut être conçue pour tourner à vitesse constante mais réglable. Excepté sur les machines dont la broche est montée sur un axe rotatif, l'axe de la broche est maintenu parallèle à l'axe Z et il est coïncident avec l'axe Z quand X et Y sont à zéro. La broche peut être stoppée sur une position fixée ou non.
Un centre d'usinage peut être équipé d'un composant fournissant l'arrosage fuide ou en brouillard.
Un centre d'usinage peut être équipé d'un système de chargement des pièces. Le système se compose de deux porte-pièces sur lesquels sont fixés les bruts des pièces à usiner. Un seul porte-pièce à la fois est en position d'usinage.
Un centre d'usinage peut être équipé d'un carrousel d'outils dans lequel sont rangés les outils déjà montés dans leurs porte-outils.
Un centre d'usinage peut être équipé d'un mécanisme de changement d'outils (fixés dans les porte-outils) entre le carrousel d'outils et la broche.
Un centre d'usinage est équipé d'une visualisation capable d'afficher les messages pour l'opérateur.
Un centre d'usinage est équipé de boutons de réglage de la vitesse d'avance et de la vitesse de rotation de la broche, ils laissent l'opérateur corriger les vitesses nécessaires pour la broche et l'avance travail, il peut ainsi augmenter ou réduire les vitesses programmées. Voir la section [.].
Un centre d'usinage peut être équipé d'un bouton d'effacement de block. Voir la section [.].
Un centre d'usinage peut être équipé d'un bouton d'arrêt du programme. Voir la section [.].
Les axes X, Y et Z forment un système de coordonnées orthogonales standard. La position d'un axe s'exprime en utilisant ses coordonnées.
Les axes U, V et W forment également un système de coordonnées standard. X et U sont parallèles, Y et V sont parallèles enfin Z et W sont parallèles.
Les axes rotatifs se mesurent en degrés. Leur sens de rotation positif est le sens anti-horaire quand l'observateur est placé face à l'axe. 3
Le point contrôlé est le point dont la position et la vitesse de déplacement sont contrôlés. Quand la compensation de longueur d'outil est zéro (valeur par défaut), c'est un point situé sur l'axe de la broche et proche de la fin de celle-ci. Cette position peut être déplacée le long de l'axe de la broche en spécifiant une compensation de longueur d'outil. Cette compensation correspond généralement à la longueur de l'outil coupant courant. Ainsi, le point contrôlé est à la pointe de l'outil. Sur un tour, les correcteurs d'outil peuvent être spécifiés pour les axes X et Z, le point contrôlé est à la pointe de l'outil ou (correction du rayon de bec) légèrement en retrait du point d'intersection des droites perpendiculaires formées par l'axe des points de tangence à la pièce, de face et sur le côté de l'outil.
Pour mener un outil sur une trajectoire spécifiée, un centre d'usinage doit coordonner les mouvements de plusieurs axes. Nous utilisons le terme “mouvement linéaire coordonné” pour décrire une situation dans laquelle, nominalement, chacun des axes se déplace à vitesse constante et tous les axes se déplacent de leur point de départ à leur point d'arrivée en même temps. Si deux des axes X, Y, Z (ou les trois) se déplacent, ceci produit un mouvement en ligne droite, d'où le mot “linéaire” dans le terme. Dans les véritables mouvements, ce n'est souvent pas possible de maintenir la vitesse constante à cause des accélérations et décélérations nécessaires en début et fin de mouvement. C'est faisable, cependant, de contrôler les axes ainsi, chaque axe doit en permanence faire la même fraction du mouvement requis que les autres axes. Ceci déplace l'outil le long du même parcours et nous appelons aussi ce genre de mouvement, mouvement linéaire coordonné.
Un mouvement linéaire coordonné peut être exécuté soit en vitesse travail, soit en vitesse rapide, ou il peut être synchronisé à la rotation de la broche. Si les limites physique de l'axe rendent le déplacement impossible, tous les axes seront ralentis pour maintenir le chemin prévu.
La vitesse à laquelle le point contrôlé se déplace est ajustable par l'opérateur. Sauf cas particulier, (vitesse inverse du temps, vitesse par tour, voir la section [.]) , dans l'interpréteur, l'interprétation des vitesses est la suivante:
Arrosage fluide ou brouillard (gouttelettes) peuvent être activés séparément. Le langage RS274/NGC les arrête ensemble (voir la section [.]).
Une temporisation peut être commandée (ex: pour immobiliser tous les axes) pendant une durée spécifique. La broche n'est pas arrêtée pendant une temporisation! Sans s'occuper du mode de contrôle de trajectoire (voir la section [.]) la machine s'arrêtera exactement à la fin du dernier mouvement avant la temporisation.
Les unités utilisées pour les distances le long des axes X, Y et Z peuvent être les pouces ou les millimètres. La vitesse de rotation de la broche est en tours par minute. Les positions des axes rotatifs sont exprimées en degrés. Les vitesses d'avance sont exprimées en unités machine par minute ou en degrés par minute ou en unités de longueur par tour de broche, comme décrit dans la section [.].
Le point contrôlé est toujours à un emplacement appelé la "position courante,'' et le contrôleur sait toujours où est cette position. Les valeurs représentant la position courante doivent être ajustées en l'absence de tout mouvement des axes si un de ces événements a lieu:
Il y a toujours un plan sélectionné, qui doit être le plan XY, le plan YZ, ou le plan XZ de la machine. L'axe Z est, bien sûr, perpendiculaire au plan XY, l'axe X perpendiculaire au plan YZ et l'axe Y perpendiculaire au plan XZ.
Aucun ou un outil est assigné à chaque emplacement dans le carrousel.
Un centre d'usinage peut commander un changeur d'outils.
Les deux porte-pièces peuvent être intervertis par commande.
Les boutons des correcteurs de vitesses peuvent être activés (ils fonctionnent normalement) ou rendus inopérents (Ils n'ont plus aucun effet). Le langage RS274/NGC dispose d'une commande qui active tous les boutons et une autre qui les désactive (voir la section [.]). Voir la section [.] pour d'autres détails.
La machine peut être placée dans un de ces trois modes de contrôle de trajectoire: (1) mode arrêt exact, (2) mode trajectoire exacte ou (3) mode trajectoire continue avec tolérance optionnelle. En mode arrêt exact, le mobile s'arrête brièvement à la fin de chaque mouvement programmé. En mode trajectoire exacte, le mobile suit la trajectoire programmée aussi précisément que possible, ralentissant ou s'arrêtant si nécessaire aux angles vifs du parcours. En mode trajectoire continue, les angles vifs du parcours peuvent être légèrement arrondis pour que la vitesse soit maintenue (sans dépasser la tolérance, si elle est spécifiée). Voir la section [.].
L'interpréteur interagit avec plusieurs boutons de commande. Cette section décrit ces interactions plus en détail. En aucun cas l'interpréteur ne connait ce que sont les réglages de ces boutons.
L'interpréteur de commande RS274/NGC autorise (M48) ou interdit (M49) l'action des boutons d'ajustement des vitesses. Pour certains mouvements, tels que la sortie de filet à la fin d'un cycle de filetage, les boutons sont neutralisés automatiquement.
EMC2 réagit aux réglages de ces boutons seulement quand ils sont autorisés.
Si le bouton “Effacement de block” est actif, les lignes de code RS274/NGC commençant par le caractère barre de fraction (caractère d'effacement de block) ne sont pas interprétées. Si le bouton est désactivé, ces mêmes lignes sont interprétées. Normalement le bouton d'effacement de block doit être positionné avant de lancer le programme NGC.
Si ce bouton est actif et qu'un code M1 est rencontré, le programme est mis en pause.
Un fichier d'outils est requis par l'interpréteur. Le fichier indique dans quels emplacements du carrousel sont placés les outils, la longueur et le diamètre de chacun des outils.
Le fichier est composé d'un certain nombre de lignes d'en-tête, suivies par une ligne vide, suivie d'un nombre quelconque de lignes de données. Les lignes d'en-tête sont ignorées par l'interpréteur. Il est important qu'il y ait une ligne vide (sans espace ni tabulation), avant les données. La ligne d'en-tête montrée dans ce tableau[.], décrit les colonnes de données, il est donc proposé (mais pas obligatoire) que cette ligne soit toujours présente.
Chaque ligne de données du fichier contient les données d'un outil. La ligne peut contenir 4 ou 5 éléments (“format fraiseuse”) ou 8 ou 9 éléments (“format tour”).
Les unités utilisées pour la longueur et le diamètre sont en unités machine.
Les lignes n'ont pas à être dans un ordre particulier. Permuter l'ordre des lignes est sans effet, sauf si le même numéro d'emplacement est utilisé sur deux ou plusieurs lignes, ce qui ne devrait normalement pas être fait, dans ce cas, seules les données de la dernière de ces lignes seront utilisées.
Dans emc2, l'emplacement du fichier d'outil est spécifié dans le fichier ini. Voir la section [->] pour d'autres détails.
Un fichier d'outils peut être un mélange de lignes au “format fraiseuse” et au “format tour”, bien que généralement les lignes du style “format tour” soient seulement requises pour les outils de tour.
Le “format fraiseuse” d'un fichier d'outils est visible dans le tableau [.].
Slot | FMS | TLO | Diamètre | Commentaire |
1 | 1 | 2.0 | 1.0 | |
2 | 2 | 1.0 | 0.2 | |
5 | 5 | 1.5 | 0.25 | coupe en bout |
10 | 10 | 2.4 | -0.3 | à tester |
Chaque ligne comporte 5 éléments. Les quatre premiers éléments sont obligatoires. Le commentaire, placé en cinquième est facultatif. La lecture est rendue plus facile si les éléments sont disposés en colonnes, comme dans le tableau ci-dessus, mais la seule exigence de forme, c'est qu'il y ait au moins un espace ou une tabulation après chacun des trois premiers éléments d'une ligne, et une tabulation ou un saut de ligne à la fin des cinq éléments. La signification des colonnes et le type de données à mettre dans chacune sont les suivants:
La colonne “Slot” contient un entier non signé représentant le numéro d'emplacement dans le carrousel d'outils (numéro de slot) dans lequel cet outil est placé. Les éléments de cette colonne doivent être tous différents.
La colonne “FMS” contient un entier non signé représentant le numéro de code de l'outil. L'utilisateur peut y placer n'importe quel code pour tous les outils, tant que les codes sont des entiers non signés. C'est en général le même que celui de l'emplacement.
La colonne “TLO” contient un nombre réel représentant l'offset de longueur d'outil. Cette valeur sera utilisée si la compensation de longueur d'outil est activée et que ce numéro d'emplacement est choisi. C'est normalement un nombre réel positif, mais il peut être mis à zéro ou tout autre valeur si il n'a pas à être utilisé.
La colonne “Diamètre” contient un nombre réel. Cette valeur est utilisée seulement si la compensation de rayon d'outil est activée et que ce numéro d'emplacement est choisi. Si la trajectoire programmée avec la compensation est le bord du matériau à usiner, ce devrait être un nombre réel positif représentant le diamètre mesuré de l'outil. Si la trajectoire programmée pendant la compensation est la trajectoire d'un outil dont le diamètre est nominal, ce nombre devrait être petit (positif, négatif ou nul) et représenter la différence entre le diamètre mesuré de l'outil et le diamètre nominal. Si la compensation de rayon d'outil n'est pas utilisée avec un outil, le contenu de cette colonne est sans effet.
La colonne “Commentaire” est optionnelle, elle peut être utilisée pour décrire l'outil. Tout type de description convient. Cette colonne améliore la lisibilité du fichier.
Le “format tour” d'un fichier d'outil est visible dans le tableau[.].
Slot | FMS | ZOFFSET | XOFFSET | DIA | FRONTANGLE | BACKANGLE | ORIENTATION | Commentaire |
1 | 1 | 0.0 | 0.0 | 0.1 | 95.0 | 155.0 | 1 | |
2 | 2 | 0.5 | 0.5 | 0.1 | 120 | 60 | 6 |
Les champs Slot, FMS, DIA et Commentaire sont les mêmes que dans un fichier d'outils de fraiseuse. La colonne ZOFFSET est la même que la colonne TLO d'un fichier d'outil de fraiseuse; offset de longueur d'outil.
La colonne XOFFSET fournit l'offset pour la coordonnée X quand la compensation de longueur d'outil est active.
La colonne ORIENTATION donne l'orientation de l'outil de tour, comme illustré sur [.]. La croix rouge correspond au point contrôlé. Voir [.].
Les colonnes FRONTANGLE et BACKANGLE sont utilisées par certaines interfaces utilisateur pour afficher une représentation de l'outil de tour.
Dans le language RS274/NGC, le centre d'usinage maintient un tableau de 5400 paramètres numériques. La plupart d'entre eux ont un usage spécifique. Le tableau de paramètres est persistant, même quand la machine est mise hors tension. EMC2 utilise un fichier de paramètres et assure sa persistance, il donne à l'interpréteur la responsabilité d'actualiser le fichier. L'interpréteur lit le fichier quand il démarre et l'écrit juste avant de s'arrêter.
Numéros de paramètre | Signification |
5061-5070 | Résultats des mesures “G38.2” |
5161-5169 | “G28” Origines machine |
5181-5189 | “G30” Origines pièce |
5211-5219 | “G92” Décalages d'origines |
5220 | Numéro du système de coordonnées |
5221-5229 | Système de coordonnées 1 |
5241-5249 | Système de coordonnées 2 |
5261-5269 | Système de coordonnées 3 |
5281-5289 | Système de coordonnées 4 |
5301-5309 | Système de coordonnées 5 |
5321-5329 | Système de coordonnées 6 |
5341-5349 | Système de coordonnées 7 |
5361-5369 | Système de coordonnées 8 |
5381-5389 | Système de coordonnées 9 |
5399 | Résultat de M66 - Surveillance d'entrée |
Le format d'un fichier de paramètres est visible dans la table [.]. Le fichier est composé d'un certain nombre de lignes d'en-tête, suivie par une ligne vide, suivie d'un nombre quelconque de lignes de données. Les lignes d'en-tête sont ignorées par l'interpréteur. Il est important qu'il y ait une ligne vide (sans espace ni tabulation), avant les données. La ligne d'en-tête montrée dans ce tableau [.], décrit les colonnes de données, il est donc proposé (mais pas obligatoire) que cette ligne soit toujours présente.
L'interpréteur lit seulement les deux premières colonnes du tableau. Il ignore la troisième colonne, Commentaire.
Chaque ligne du fichier contient le numéro d'index d'un paramètre dans la première colonne et la valeur attribuée à ce paramètre, dans la deuxième colonne. La valeur est représentée par une nombre flottant en double précision à l'intérieur de l'interpréteur, mais le point décimal n'est pas exigé dans le fichier. Le format des paramètres visible dans le tableau [.] est obligatoire et doit être utilisé pour tous les fichiers de paramètres, à l'exception des paramètres représentant une valeur sur un axe rotatif inutilisé, qui peuvent être omis. Une erreur sera signalée si un paramètre requis est absent. Un fichier de paramètres peut inclure tout autre paramètre, tant que son numéro est compris dans une fourchette de 1 à 5400. Les numéros de paramètre doivent être disposés dans l'ordre croîssant. Sinon, une erreur sera signalée. Le fichier original est copié comme fichier de sauvegarde lorsque le nouveau fichier est écrit. Les commentaires ne sont pas conservés lorsque le fichier est écrit.
Numéro de paramètre | Valeur du paramètre | Commentaire |
5161 | 0.0 | G28 pom X |
5162 | 0.0 | G28 pom Y |
Dans le langage RS274/NGC, un centre d'usinage dispose d'un système de coordonnées machine (absolues) et de 9 systèmes de coordonnées programme (relatives).
Vous pouvez définir le décalage d'origine de neuf systèmes de coordonnées programme en utilisant G10 L2 Pn (n étant le numéro du système de coordonnées), avec des valeurs pour les axes en coordonnées absolues. Voir la section [.].
Vous pouvez choisir un des neuf systèmes en utilisant G54, G55, G56, G57, G58, G59, G59.1, G59.2, ou G59.3 (Voir la section [.]). Il n'est pas possible de choisir directement le système de coordonnées machine.
Vous pouvez décaler l'origine du système de coordonnées actuel en utilisant G92 ou G92.3. Ce décalage s'appliquera alors à l'ensemble des neuf systèmes de coordonnées programme. Ce décalage peut être annulé avec G92.1 ou G92.2. Voir la section [.].
Vous pouvez faire des mouvements dans le système de coordonnées machine absolues en utilisant G53 avec G0 ou G1. Voir la section [.].
Les données des systèmes de coordonnées sont enregistrées dans les paramètres.
Lors de l'initialisation, le système de coordonnées choisi est celui spécifié par le paramètre 5220. Une valeur de 1 signifie le premier système de coordonnées (celui qu'active G54), une valeur de 2 signifie le deuxième système de coordonnées (celui qu'active G55), et ainsi de suite. Il y a erreur si la valeur du paramètre 5220 n'est pas un nombre entier compris entre 1 et 9.
Le langage RS274/NGC est basé sur des lignes de code. Chaque ligne (également appelée un “block”) peut inclure des commandes pour faire produire diverses actions au centre d'usinage. Plusieurs lignes de code peuvent être regroupées dans un fichier pour créer un programme.
Une ligne de code typique commence par un numéro de ligne optionnel suivi par un ou plusieurs “mots”. Un mot commence par une lettre suivie d'un nombre (ou quelque chose qui permet d'évaluer un nombre). Un mot peut, soit donner une commande, soit fournir un argument à une commande. Par exemple, “G1 X3” est une ligne de code valide avec deux mots. “G1” est une commande qui signifie “déplaces toi en ligne droite à la vitesse programmée” et “X3” fournit la valeur d'argument (la valeur de X doit être 3 à la fin du mouvement). La plupart des commandes RS274/NGC commencent avec G ou M (G pour Général et M pour Miscellaneous (auxiliaire)). Les termes pour ces commandes sont “G codes” et “M codes.”
Le langage RS274/NGC n'a pas d'indicateur de début et de fin de programme. L'interpréteur cependant traite les fichiers. Un programme simple peut être en un seul fichier, mais il peut aussi être partagé sur plusieurs fichiers. Un fichier peut être délimité par le signe pourcent de la manière suivante. La première ligne non vide d'un fichier peut contenir un signe “%” seul, éventuellement encadré d'espaces blancs, ensuite, à la fin du fichier on doit trouver une ligne similaire. Délimiter un fichier avec des % est facultatif si le fichier comporte un M2 ou un M30, mais est requis sinon. Une erreur sera signalée si un fichier a une ligne pourcent au début, mais pas à la fin. Le contenu utile d'un fichier délimité par pourcent s'arrête après la seconde ligne pourcent. Tout le reste est ignoré.
Le langage RS274/NGC prévoit les deux commandes (M2 ou M30) pour finir un programme. Le programme peut se terminer avant la fin du fichier. Les lignes placées après la fin d'un programme ne seront pas exécutées. L'interpréteur ne les lit même pas.
Une ligne de code permise par la norme RS274/NGC est construite de la façon suivante, dans l'ordre avec la restriction à un maximum de 256 caractères sur la même ligne.
Toute entrée non explicitement permise est illégale, elle provoquera un message d'erreur de l'interpréteur.
Les espaces sont permis ainsi que les tabulations dans une ligne de code dont ils ne changent pas la signification, excepté dans les commentaires. Ceci peut donner d'étranges lignes, mais elles sont autorisées. La ligne “g0x +0. 12 34y 7” est équivalente à“g0 x+0.1234 y7”, par exemple.
Les lignes vides sont permises, elles seront ignorées.
La casse des caractères est ignorée, excepté dans les commentaires. Toutes les lettres en dehors des commentaires peuvent être, indifféremment des majuscules ou des minuscules sans changer la signification de la ligne.
Un numéro de ligne commence par la lettre N suivie d'un nombre entier non signé compris entre 0 et 99999 écrit avec moins de six caractères (par exemple: 000009 est interdit). Les numéros de ligne peuvent se suivre ou être dans le désordre, bien qu'une pratique normale évite ce genre d'usage. Les numéros de ligne peuvent être sautés, c'est une pratique normale. L'utilisation d'un numéro de ligne n'est pas obligatoire, mais si il est utilisé, il doit être à sa place.
Un mot est une lettre, autre que N, suivie d'un nombre réel.
Les mots peuvent commencer avec l'une ou l'autre des lettres indiquées dans le tableau [.]. Le tableau inclus N pour être complet, même si, comme défini précédemment, les numéros de lignes ne sont pas des mots. Plusieurs lettres (I, J, K, L, P, R) peuvent avoir différentes significations dans des contextes différents. Les lettres qui se réfèrent aux noms d'axes ne sont pas valides sur une machine n'ayant pas les axes correspondants.
Lettre | Signification |
A | Axe A de la machine |
B | Axe B de la machine |
C | Axe C de la machine |
D | Valeur de la compensation de rayon d'outil |
F | Vitesse d'avance travail |
G | Fonction Générale (voir la table 5) |
H | Index d'offset de longueur d'outil |
I | Décalage en X pour les arcs et dans les cycles préprogrammés G87 |
J | Décalage en Y pour les arcs et dans les cycles préprogrammés G87 |
K | Décalage en Z pour les arcs et dans les cycles préprogrammés G87 |
Distance de déplacement par tour de broche avec G33 | |
M | Fonction auxiliaire (voir la table 7) |
N | Numéro de ligne |
P | Temporisation utilisée dans les cycles préprogrammés et avec G4. |
Mot clé utilisé avec G10. | |
Q | Incrément Delta en Z dans un cycle préprogrammé G83 |
R | Rayon d'arc ou plan de retrait dans un cycle préprogrammé |
S | Vitesse de rotation de la broche |
T | Numéro d'outil |
U | Axe U de la machine |
V | Axe V de la machine |
W | Axe W de la machine |
X | Axe X de la machine |
Y | Axe Y de la machine |
Z | Axe Z de la machine |
Les règles suivantes sont employées pour des nombres (explicites). Dans ces règles un chiffre est un caractère simple entre 0 et 9.
Les zéros non significatifs, ne sont pas nécessaires.
Si un nombre utilisé dans le langage RS274/NGC est proche d'une valeur entière à moins de quatre décimales, il est considéré comme entier, par exemple 0.9999.
Un paramètre numéroté commence par le caractère # suivi par un entier compris entre 1 et 5399. Le paramètre est référencé par cet entier, sa valeur est la valeur stockée dans le paramètre.
Une valeur est stockée dans un paramètre avec l'opérateur = par exemple "#3 = 15" signifie que la valeur 15 est stockée dans le paramètre numéro 3.
Le caractère # a une précédence supérieure à celle des autres opérations, ainsi par exemple, “#1+2” signifie la valeur trouvée en ajoutant 2 à la valeur contenue dans le paramètre 1 et non la valeur trouvée dans le paramètre 3. Bien sûr, #[1+2] signifie la valeur trouvée dans le paramètre 3. Le caractère # peut être répété, par exemple ##2 signifie le paramètre dont le numéro est égal à la valeur entière trouvée dans le paramètre 2.
Les paramètres nommés fonctionnent comme les paramètres numérotés mais sont plus faciles à lire. Les paramètres nommés sont convertis en minuscules, les espaces et tabulations sont supprimés. Les paramètres nommés doivent être encadrés des signes < et >.
#<Un paramètre nommé> est un paramètre nommé local. Par défaut, un paramètre nommé est local à l'étendue dans laquelle il est assigné. L'accès à un paramètre local, en dehors de son sous-programme est impossible, de sorte que deux sous-programmes puissent utiliser le même nom de paramètre sans craindre qu'un des deux n'écrase la valeur de l'autre.
#<_un paramètre global> est un paramètre nommé global. Ils sont accessibles depuis des sous-programmes appelés et peuvent placer des valeurs dans tous les sous-programmes accessibles à l'appelant. En ce qui concerne la portée, ils agissent comme des paramètres numérotés. Ils ne sont pas enregistrés dans des fichiers.
Exemples:
#<_troisdents_dia> = 10.00
#<_troisdents_rayon> = [#<_troisdents_dia>/2.0]
o100 call [0.0] [0.0] [#<_interieur_decoupe>-#<_troisdents_dia>] [#<_Zprofondeur>] [#<_vitesse>]
Notes:
Les paramètres globaux _a, _b, _c, ... _z sont réservés pour une utilisation spéciale. Dans le futur, ils pourront fournir l'accès aux derniers Aword, Bword, Cword, ... Zword etc.
Une expression est un groupe de caractères commençant avec le crochet gauche [ et se terminant avec le crocher droit ]. Entre les crochets, on trouve des nombres, des valeurs de paramètre, des opérations mathématiques et d'autres expressions. Une expression est évaluée pour produire un nombre. Les expressions sur une ligne sont évaluées quand la ligne est lue et avant que quoi que ce soit ne soit éxécuté sur cette ligne. Un exemple d'expression: [1 + acos[0] - [#3 ** [4.0/2]]].
Les opérateurs binaires ne se rencontrent que dans les expressions. Il y a quatre opérateurs mathématiques de base: addition (+), soustraction (-), multiplication (*) et division (/). Il y a trois opérateurs logiques: ou (OR), ou exclusif (XOR) et logique (AND). Le huitième opérateur est le modulo (MOD). Le neuvième opérateur est l'élévation à la puissance (**) qui éléve le nombre situé à sa gauche à la puissance du nombre situé à sa droite. Les opérateurs de relation sont: égalité (EQ), non égalité (NE), strictement supérieur (GT), supérieur ou égal (GE), strictement inférieur (LT) et inférieur ou égal (LE).
Les opérations binaires sont divisées en plusieurs groupes selon leur précédence. (voir la table [.]) Si dans une opération se trouvent différents groupes de précédence (par exemple dans l'expression [2.0 / 3 * 1.5 - 5.5 / 11.0]), les opérations du groupe supérieur seront effectuées avant celles des groupes inférieurs. Si une expression contient plusieurs opérations du même groupe (comme les premiers / et * dans l'exemple), l'opération de gauche est effectuée en premier. Notre exemple est équivalent à: [[[2.0 / 3] * 1.5] - [5.5 / 11.0]] , qui est équivalent à [1.0 - 0.5] , le résultat est: 0.5 .
Les opérations logiques et le modulo sont exécutés sur des nombres réels et non pas seulement sur des entiers. Le zéro est équivalent à un état logique faux (FALSE), tout nombre différent de zéro est équivalent à un état logique vrai (TRUE).
Opérateurs | Précédence |
** | haute |
* / MOD | |
+ - | |
EQ NE GT GE LT LE | |
AND OR XOR | basse |
Une fonction commence par son nom, ex: “ATAN” suivi par une expression divisée par une autre expression (par exemple “ATAN[2]/[1+3]”) ou tout autre nom de fonction suivi par une expression (par exemple “SIN[90]”). Les fonctions disponibles sont visibles dans le tableau [.]. Les arguments pour les opérations unaires sur des angles (COS, SIN et TAN) sont en degrés. Les valeurs retournées par les opérations sur les angles (ACOS, ASIN et ATAN) sont également en degrés.
L'opérateur FIX arrondi vers la gauche (moins positif ou plus négatif), par exemple: FIX[2.8] =2 et FIX[-2.8] = -3 . L'opérateur FUP arrondi vers la droite (plus positif ou moins négatif), par exemple: FUP[2.8] = 3 et FUP[-2.8] = -2 .
Nom de fonction | Fonction |
ATAN[Y]/[X] | Tangente quatre quadrants |
ATAN[arg] | Arc tangente |
ABS[arg] | Valeur absolue |
ACOS[arg] | Arc cosinus |
ASIN[arg] | Arc sinus |
ATAN[arg] | Arc tangente |
COS[arg] | Cosinus |
EXP[arg] | Exposant |
FIX[arg] | Arrondi à l'entier immédiatement inférieur |
FUP[arg] | Arrondi à l'entier immédiatement supérieur |
ROUND[arg] | Arrondi à l'entier le plus proche |
LN[arg] | Logarithme Néperien |
SIN[arg] | Sinus |
SQRT[arg] | Racine carrée |
TAN[arg] | Tangente |
Un ensemble de caractères et espaces blancs entre parenthèses est un commentaire. Une parenthèse ouvrante débute toujours un commentaire. Le commentaire se termine à la première parenthèse fermante trouvée. Si une parenthèse ouvrante est trouvée sur une ligne, une parenthèse fermante doit être également rencontrée avant la fin de la ligne. Les commentaires ne peuvent pas être imbriqués, une erreur sera signalée si une parenthèse ouvrante est rencontrée après le début d'un commentaire et avant la fin d'un commentaire. Voici un exemple de ligne de commentaire: “G80 M5 (arret du mouvement)”. Les commentaires sont seulement informatifs, ils n'ont aucune influence sur la machine.
Un commentaire contient un message si `` MSG'' apparaît après la parenthèse ouvrante, et avant tout autre caractère. Les variantes de “MSG” qui incluent un espace blanc et des minuscules sont autorisées. Le reste du texte avant la parenthèse fermante est considéré comme le message. Les messages sont affichés sur la visu de l'interface utilisateur. Les commentaires ne contenant pas de message ne sont pas affichés.
Un commentaire peut aussi être utilisé pour spécifier le fichier de log des résultats des mesures faites avec G38.x . Voir la section [.].
Ouvre le fichier de log “filename”. Si le fichier existe déjà, il sera tronqué.
Si le fichier est ouvert, il sera fermé.
Le message “…” est étendu comme décrit plus loin, il est écrit dans le fichier de log si il est ouvert.
Les commentaires comme: (debug, reste du commentaire) sont traités de la même façon que ceux avec (msg, reste du commentaire) avec l'ajout de possibilités spéciales pour les paramètres.
Les commentaires comme: (print, reste du commentaire) vont directement sur la sortie stderr avec des possibilités spéciales pour les paramètres.
Dans les commentaires avec DEBUG, PRINT et LOG, les valeurs des paramètres dans le message sont étendues.
Par exemple: pour afficher une variable nommée globale sur la sortie stderr (la fenêtre de la console par défaut) ajouter une ligne au g-code comme:
(print,diamètre fraise 3 dents = #<_troisdents_dia>)
À l'intérieur de ces types de commentaires, les séquences comme #123 sont remplacées par la valeur du paramètre 123. Les séquences comme #<paramètre nommé> sont remplacées par la valeur du paramètre nommé. Rappelez vous que les espaces dans les noms des paramètres nommés sont supprimés, #<parametre nomme> est équivalent à #<parametrenomme>.
Une ligne peut contenir autant de mots G que voulu, mais seulement deux mots G du même groupe modal peuvent apparaître sur la même ligne. (voir la section [.])
Une ligne peut avoir de zéro à quatre mots M. Mais pas deux mots M du même groupe modal.
Pour toutes les autres lettres légales, un seul mot commençant par cette lettre peut se trouver sur la même ligne.
Si plusieurs valeurs de paramètre se répétent sur la même ligne, par exemple: “#3=15 #3=6”, seule la dernière valeur prendra effet. Il est absurde, mais pas illégal, de fixer le même paramètre deux fois sur la même ligne.
Si plus d'un commentaire apparaît sur la même ligne, seul le dernier sera utilisé, chacun des autres sera lu et son format vérifié, mais il sera ignoré. Placer plusieurs commentaires sur la même ligne est très rare.
Les trois types d'item dont la commande peut varier sur une ligne (comme indiqué au début de cette section) sont les mots, les paramètres et les commentaires. Imaginez que ces trois types d'éléments sont divisés en trois groupes selon leur type.
Dans le premier groupe les mots, peuvent être arrangés dans n'importe quel ordre sans changer la signification de la ligne.
Dans le second groupe les valeurs de paramètre, quelque soit leur arrangement, il n'y aura pas de changement dans la signification de la ligne sauf si le même paramètre est présent plusieurs fois. Dans ce cas, seule la valeur du dernier paramètre prendra effet. Par exemple, quand la ligne “#3=15 #3=6” aura été interprétée, la valeur du paramètre 3 vaudra 6. Si l'ordre est inversé, “#3=6 #3=15” après interprétation, la valeur du paramètre 3 vaudra 15.
Enfin dans le troisième groupe les commentaires, si plusieurs commentaires sont présents sur une ligne, seul le dernier commentaire sera utilisé.
Si chaque groupe est laissé, ou réordonné, dans l'ordre recommandé, la signification de la ligne ne changera pas, alors les trois groupes peuvent être entrecroisés n'importe comment sans changer la signification de la ligne. Par exemple, la ligne “g40 g1 #3=15 (foo) #4=-7.0” à cinq items est signifiera exactement la même chose dans les 120 ordres d'arrangement possibles des cinq items comme “#4=-7.0 g1 #3=15 g40 (foo)”.
En RS274/NGC, de nombreuses commandes produisent, d'un mode à un autre, quelque chose de différent au niveau de la machine, le mode reste actif jusqu'à ce qu'une autre commande ne le révoque, implicitement ou explicitement. Ces commandes sont appelées “modales”. Par exemple, si l'arrosage est mis en marche, il y reste jusqu'à ce qu'il soit explicitement arrêté. Les G-codes pour les mouvements sont également modaux. Si, par exemple, une commande G1 (déplacement linéaire) se trouve sur une ligne, elle peut être utilisée sur la ligne suivante avec seulement un mot d'axe, tant qu'une commande explicite est donnée sur la ligne suivante en utilisant des axes ou un arrêt de mouvement.
Les codes “non modaux” n'ont d'effet que sur la ligne ou ils se présentent. Par exemple, G4 (tempo) est non modale.
Les commandes modales sont arrangées par lots appelés “groupes modaux”, à tout moment, un seul membre d'un groupe modal peut être actif. En général, un groupe modal contient des commandes pour lesquelles il est logiquement impossible que deux membres soient actifs simultanément, comme les unités en pouces et les unités en millimètres. Un centre d'usinage peut être dans plusieurs modes simultanément, si seulement un mode pour chaque groupe est actif. Les groupes modaux sont visibles dans le tableau [.].
Pour plusieurs groupes modaux, quand la machine est prête à accepter des commandes, un membre du groupe doit être en vigueur. Il y a des paramètres par défaut pour ces groupes modaux. Lorsque la machine est mise en marche ou ré-initialisées, les valeurs par défaut sont automatiquement actives.
Groupe 1, le premier groupe du tableau, est un groupe de G-codes pour les mouvements. À tout moment, un seul d'entre eux est actif. Il est appelé le mode de mouvement courant.
C'est une erreur que de mettre un G-code du groupe 1 et un G-code du groupe 0 sur la même ligne si les deux utilisent les mêmes axes. Si un mot d'axe utilisant un G-code du groupe 1 est implicitement actif sur la ligne (en ayant été activé sur une ancienne ligne) et qu'un G-code du groupe 0 utilisant des mots d'axes apparaît sur la même ligne, l'activité du G-code du groupe 1 est révoquée pour le reste de la ligne. Les mots d'axes utilisant des G-codes du groupe 0 sont G10, G28, G30 et G92.
C'est une erreur d'inclure des mots sans rapport sur une ligne avec le contrôle de flux O.
Les G-codes du langage RS274/NGC sont décrits ci-dessous.
Dans une commande type, le tiret (-) signifie une valeur réelle. Comme décrite précédemment, une valeur réelle peut être (1) un nombre explicite, 4 par exemple, (2) une expression, [2+2] par exemple, (3) une valeur de paramètre, #88 par exemple, ou (4) une fonction unaire de la valeur acos [0], par exemple.
Dans la plupart des cas, si des mots d'axes sont donnés, parmi X, Y, Z, A, B, C, U, V, W, ils spécifient le point de destination. Les axes sont donnés dans le système de coordonnées courant, à moins qu'explicitement décrit comme étant dans le système de coordonnées absolues (machine). Où les axes sont optionnels, tout axe omis gardera sa valeur courante. Tout item dans une commande non explicitement décrit comme optionnel sera requis. Une erreur sera signalée si un item requis est omis.
Dans les commandes, les valeurs suivant les lettres sont souvent données comme des nombres explicites. Sauf indication contraire, les nombres explicites peuvent être des valeurs réelles. Par exemple, G10 L2 pourrait aussi bien être écrite G [2 * 5] L [1 +1]. Si la valeur du paramètre 100 étaient 2, G10 L#100 signifierait également la même chose. L'utilisation de valeurs réelles qui ne sont pas des nombres explicites, comme indiqué dans les exemples sont rarement utiles.
Si L- est écrit dans une commande le “-” fera référence à “L nombre”. De la même manière, le “-” dans H- peut être appelé le “H nombre” et ainsi de suite pour les autres lettres.
Pour un mouvement linéaire en vitesse rapide, programmer G0 axes, au moins un mot d'axe doit être présent, les autres sont optionnels. Le G0 est optionnel si le mode mouvement courant est déjà G0. Cela produira un mouvement linéaire vers le point de destination à la vitesse rapide courante (ou moins vite si la machine n'atteint pas cette vitesse). Il n'est pas prévu d'usiner la matière quand une commande G0 est exécutée.
C'est une erreur si:
Si la compensation de rayon d'outil est active, le mouvement sera différent de celui décrit ci-dessus, voir la section [.]. Si G53 est programmé sur la même ligne, le mouvement sera également différent, voir la section [.].
Si un mouvement G0 déplace seulement des axes rotatifs et que la position de la cible pour ces axes est dans une échelle de -360 à 360 degrés, le mouvement sera organisé pour que chaque axe rotatif fasse moins d'un tour complet. Exemple:
N1 G0 X1 A[20*360]
N2 G0 A0
Après la ligne N1, la position de l'axe A sera 7200 degrés. 7200 degrés est égal à zéro degré sur un axe rotatif, de sorte que le mouvement linéaire rapide spécifié en ligne N2 ne produira aucun mouvement.
Pour un mouvement linéaire en vitesse travail, programmer G1 axes, au moins un mot d'axe doit être présent, les autres sont optionnels. Le G1 est optionnel si le mode mouvement courant est déjà G1. Cela produira un mouvement linéaire vers le point de destination à la vitesse de travail courante (ou moins vite si la machine n'atteint pas cette vitesse).
C'est une erreur si:
Si la compensation de rayon d'outil est active, le mouvement sera différent de celui décrit ci-dessus, voir la section [.]. Si G53 est programmé sur la même ligne, le mouvement sera également différent, voir la section [.].
Un mouvement circulaire ou hélicoïdal est spécifié en sens horaire avec G2 ou en sens anti-horaire avec G3. Les axes du cercle ou de l'hélicoïde, doivent être parallèles aux axes X, Y, ou Z du système de coordonnées machine. Les axes (ou, leurs équivalents, les plans perpendiculaires aux axes) sont sélectionnés avec G17 (axe Z, plan XY), G18 (axe Y, plan XZ), ou G19 (axe X, plan YZ). Si l'arc est circulaire, il se trouve dans un plan parallèle au plan sélectionné.
Si une ligne de code RS274/NGC forme un arc et inclu le mouvement d'un axe rotatif, l'axe rotatif tournera à vitesse constante, de sorte que le mouvement de l'axe rotatif commence et se termine en même temps que les autres axes XYZ. De telles lignes ne sont pratiquement jamais programmées.
Si la compensation de rayon d'outil est active, le mouvement sera différent de celui décrit ci-dessus, voir la section [.].
Deux formats sont autorisés pour spécifier un arc: le format centre et le format rayon.
Dans le format centre, les coordonnées du point final de l'arc, dans le plan choisi, sont spécifiées par décalage du centre de l'arc depuis le point courant. Dans ce format, il est permis d'avoir le point final de l'arc identique au point courant. C'est une erreur si:
Lorsque le plan XY est sélectionné, programmer G2 Axe I- J- (ou utiliser G3 au lieu de G2). Les mots d'axes sont tous facultatifs sauf au moins un entre X et Y qui doit être utilisé. I et J sont les décalages du centre de l'arc, par rapport au point actuel (dans le sens X et Y, respectivement). I et J sont facultatifs, sauf qu'au moins un des deux doit être utilisé. C'est une erreur si:
Lorsque le plan XZ est sélectionné, programmer G2 axes I- K- (ou utiliser G3 au lieu de G2). Les mots d'axes sont tous facultatifs sauf au moins un entre X et Z qui doit être utilisé. I et K sont les décalages du centre de l'arc, par rapport au point actuel (dans le sens X et Z , respectivement). I et K sont facultatifs, sauf qu'au moins un des deux doit être utilisé. C'est une erreur si:
Lorsque le plan YZ est sélectionné, programmer G2 axes J- K- (ou utiliser G3 au lieu de G2). Les mots d'axes sont tous facultatifs sauf au moins un entre Y et Z qui doit être utilisé. J et K sont les décalages du centre de l'arc, par rapport au point actuel (dans le sens Y et Z , respectivement). J et K sont facultatifs, sauf qu'au moins un des deux doit être utilisé. C'est une erreur si:
Voici un exemple de commande pour usiner un arc au format centre: G17 G2 x10 y16 i3 j4 z9.
Cela signifie faire un mouvement en arc ou hélicoïdal en sens horaire (vu du côté positif de l'axe Z), se terminant en X=10, Y=16 et Z=9, avec son centre décalé du point actuel de 3 unités en X et de 4 unités en Y. Si la position courante est X=7, Y=7 au final, le centre sera en X=10, Y=11. Si la position de départ de l'axe Z est 9, ce sera un arc circulaire, autrement ce sera un arc hélicoïdal. Le rayon de l'arc sera de 5.
Dans le format centre, le rayon de l'arc n'est pas spécifié, mais il peut facilement être trouvé comme étant la distance entre le centre de l'arc et soit, son point d'arrivée soit, le point courant.
Dans le format rayon, les coordonnées du point final de l'arc, dans le plan choisi, sont spécifiées en même temps que le rayon de l'arc. Programmer G2 axes R- (ou utiliser G3 au lieu de G2). R est le rayon. Les mots d'axes sont facultatifs sauf au moins un des deux du plan choisi, qui doit être utilisé. Un rayon positif indique que l'arc fait moins de 180 degrés, alors qu'un rayon négatif indique un arc supérieur à 180 degrés. Si l'arc est hélicoïdal, la valeur du point d'arrivée de l'arc dans les coordonnées de l'axe perpendiculaire au plan choisi sera également spécifiée.
C'est une erreur si:
Ce n'est pas une bonne pratique de programmer au format rayon, des arcs qui sont presque des cercles entiers ou des demi-cercles, car un changement minime dans l'emplacement du point d'arrivée va produire un changement beaucoup plus grand dans l'emplacement du centre du cercle (et donc, du milieu de l'arc). L'effet de grossissement est tellement important, qu'une erreur d'arrondi peut facilement produire un usinage hors tolérance. Par exemple, 1% de déplacement de l'extrémité d'un arc de 180 degrés produit 7% de déplacement du point situé à 90 degrés le long de l'arc. Les cercles presque complets sont encore pires. Autrement l'usinage d'arcs dans une gamme de petits à 165 degrés ou de 195 à 345 degrés sera bon.
Voici un exemple de commande pour usiner un arc au format rayon: G17 G2 x 10 y 15 r 20 z 5.
Cela signifie faire un mouvement en arc ou hélicoïdal en sens horaire (vu du côté positif de l'axe Z), se terminant en X=10, Y=15 et Z=5, avec un rayon de 20. Si la valeur de départ de Z est 5, Ce sera un arc de cercle parallèle au plan XY sinon, ce sera un arc hélicoïdal.
Pour un mouvement avec broche synchronisée dans une direction, programmer G33 X- Y- Z- K- où K donne la longueur du mouvement en XYZ pour chaque tour de broche. Par exemple, il commence à Z=0, G33 Z-1 K.0625 produira un mouvement d'un pouce de long en Z, et en même temps 16 tours de broche. Cette commande pourrait être la base d'un programme pour faire un filetage de 16 filets par pouce. Un autre exemple en métrique, G33 Z-15 K1.5 produira un mouvement de 15mm de long pendant que la broche fera 10 tours soit un pas de 1.5mm.
Pour un taraudage rigide avec broche synchronisée et mouvement de retour, programmer G33.1 X- Y- Z- K- où K- donne la longueur du mouvement pour chaque tour de broche. Un mouvement de taraudage rigide suit cette séquence:
Tous les mouvements avec broche synchronisée ont besoin d'un index de broche, pour conserver la trajectoire prévue. Un mouvement avec G33 se termine au point final programmé, un mouvement avec G33.1 se termine aux coordonnées initiales.
Les mots d'axes sont facultatifs, sauf au moins un qui doit être utilisé.
C'est une erreur si:
Pour une tempo, programmer G4 P- . Les axes s'immobiliseront pour une durée de P secondes. C'est une erreur si:
Le langage RS274/NGC utilise les systèmes de coordonnées décrits à la section[.].
Pour définir les coordonnées de l'origine d'un système de coordonnées pièce, programmer G10 L2 P- axes, où l'entier P, compris entre 1 et 9 (correspondance de G54 à G59.3) et tous les mots d'axes, sont optionnels. Les coordonnées de l'origine du système de coordonnées, spécifié par le nombre P, sont remplacées par les coordonnées des valeurs indiquées (en termes de coordonnées absolues). Seules, les coordonnées pour lesquelles un mot d'axe est inclu sur la ligne, seront remplacées.
C'est une erreur si:
Si des décalages d'origine (créés avec G92 ou G92.3) sont actifs avant l'utilisation de G10, ils restent actifs après.
Le système de coordonnées dont l'origine est définie par la commande G10 peut être actif ou non au moment de l'exécution de G10.
Exemple: G10 L2 P1 x 3.5 y 17.2 place l'origine du premier système de coordonnées (celui selectionné par G54) au point où X vaut 3.5 et Y vaut 17.2 (en coordonnées absolues). La coordonnée Z de l'origine, ainsi que les coordonnées de tous les axes rotatifs, restent celles qu'elles étaient avant l'exécution de la ligne.
Programmer G17 pour choisir le plan de travail XY, G18 pour choisir le plan de travail XZ, ou G19 pour choisir le plan de travail YZ. Les effets provoqués par un changement de plan de travail sont expliqués dans les sections [.] et [.]
Programmer G20 pour utiliser le pouce comme unité de longueur. Programmer G21 pour utiliser le millimètre.
C'est toujours une bonne pratique de programmer soit G20, soit G21, au début d'un programme, avant tout mouvement et de ne plus en changer ailleurs dans le programme. C'est la responsabilité de l'opérateur d'être sûr que toutes les longueurs sont appropriées pour l'utilisation des unités actuelles.
Deux positions sont définies, une par les paramètres 5161-5166 pour G28 et une par les paramètres 5181-5186 pour G30. Les valeurs de ces paramètres sont en coordonnées absolues et en coordonnées machine.
Les commandes G28 et G30 n'utilisent pas de contact d'origine machine pour trouver la position prédéfinie, elles se bornent à effectuer un mouvement en vitesse rapide à la position définie dans les paramètres, ce qui suppose que la prise d'origine machine a déjà été réalisée.
Pour le retour d'un ou plusieurs axes sur une position prédéfinie par le biais de la position programmée, programmer G28 axes (ou utiliser G30). La trajectoire est faite par un mouvement rapide depuis la position courante jusqu'à la position programmée, suivi d'un mouvement rapide des axes nommés à la position prédéfinie.
Pour le retour de tous les axes à la position prédéfinie sans la position intermédiaire, programmer G28 ou G30 sans mot d'axe.
C'est une erreur si:
Programmer G38.2 axes, pour effectuer une mesure à la sonde. Au moins un mot d'axe est obligatoire, les autres sont optionnels. L'outil dans la broche doit être une sonde.
C'est une erreur si:
En réponse à cette commande, la machine déplace le point contrôlé (qui est la pointe de la sonde), en ligne droite, à la vitesse actuelle, vers le point programmé, en mode vitesse inverse du temps; la vitesse est telle, que le mouvement depuis le point courant jusqu'au point programmé, prendra le temps spécifié. Le mouvement s'arrête lorsque le point programmé est atteint, ou quand l'entrée de la sonde bascule dans l'état attendu4.
Pour désactiver la compensation de rayon d'outil, programmer G40. Ce n'est pas une erreur de désactiver la compensation quand elle est déjà inactive.
La compensation de rayon d'outil ne peut être activée que si le plan de travail courant est le plan XY.
Le comportement du centre d'usinage quand la compensation de rayon d'outil est active est décrit dans la section [.]
Pour activer la compensation de rayon d'outil à gauche du profil, c'est à dire, la fraise reste à gauche de la trajectoire programmée quand le rayon d'outil est positif, programmer G41 D- . Pour activer la compensation de rayon d'outil à droite du profil, c'est à dire, la fraise reste à droite de la trajectoire programmée quand le rayon d'outil est positif, programmer G42 D- . Le mot D est optionnel, si il n'y a pas de mot D, le rayon de l'outil monté actuellement dans la broche est utilisé. Si D est utilisé, sa valeur devrait être le numéro de l'outil monté dans la broche, cependant, ce n'est pas obligatoire. Ce n'est pas une erreur d'avoir D à zéro, le rayon utilisé sera de zéro.
C'est une erreur si:
Pour activer la compensation dynamique de rayon d'outil à gauche du profil, programmer G41.1 D- L-. Pour activer la compensation dynamique de rayon d'outil à droite du profil, programmer G42.1 D- L-. Le mot D spécifie le diamètre de l'outil. Le mot L spécifie l'orientation des arêtes de l'outil, et par défaut 0 si non spécifié.
C'est une erreur si:
G43 et G43.1 modifient les mouvements ultérieurs en décalant, de la longueur de l'outil, les coordonnées de Z et/ou de X. G43 et G43.1 ne provoquent aucun mouvement. L'effet de la compensation ne se produira qu'au prochain mouvement de l'axe compensé.
Pour utiliser la compensation de longueur d'outil depuis une table d'outils, programmer G43 H- , où la valeur de H est l'index souhaîté dans la table d'outils. La valeur de H n'est pas obligatoirement la même que celle du numéro d'outil monté dans la broche. Ce n'est pas une erreur d'avoir la valeur de H à zéro, une compensation de zéro sera utilisée.
C'est une erreur si:
Pour utiliser la compensation dynamique de longueur d'outil depuis un programme, utiliser G43.1 I- K-, où I- donne la compensation de longueur d'outil en X (pour les tours) et K- donne la compensation de longueur en Z (pour les tours et les fraiseuses).
C'est une erreur si:
Pour annuler la compensation de longueur d'outil, programmer G49.
Ce n'est pas une erreur de programmer une compensation qui est déjà utilisée. Ce n'est pas non plus une erreur d'annuler la compensation de longueur d'outil alors qu'aucune n'est couramment utilisée.
Pour un déplacement à un point exprimé en coordonnées absolues, programmer G1 G53 X- Y- Z- A- B- C- (ou utiliser G0 à la place de G1), au moins un mot d'axe est obligatoire, les autres sont optionnels. Le G0 ou le G1 est optionnel si il est déjà le mode de mouvement courant. G53 n'est pas modal, il doit être programmé sur chaque ligne où il doit être actif. Il produit un mouvement linéaire coordonné au point programmé. Si G1 est actif, la vitesse travail courante est utilisée si la machine est assez rapide. Si G0 est actif, la vitesse rapide courante sera utilisée si la machine est assez rapide.
C'est une erreur si:
Voir la section [.] pour une vue complète des systèmes de coordonnées.
Le code G54 est apparié avec le système de coordonnées pièce N°1, pour le choisir programmer G54 et ainsi de suite pour les autres systèmes. Les systèmes de coordonnées appariés à un G-code sont les suivants: (1 avec G54), (2 avec G55), (3 avec G56), (4 avec G57), (5 avec G58), (6 avec G59), (7 avec G59.1), (8 avec G59.2) et (9 avec G59.3).
C'est une erreur si:
Voir la section [.] pour une vue complète des systèmes de coordonnées.
Programmer G61 pour passer la machine en mode de trajectoire exacte, G61.1 pour la passer en mode arrêt exact, ou G64 P- pour le mode trajectoire continue avec tolérance optionnelle. Ce n'est pas une erreur de programmer un mode déjà actif. Voir la section [.] pour une discussion de ces modes.
Programmer G80 pour s'assurer qu'aucun mouvement d'axe ne surviendra sans G-code modal. C'est une erreur si:
Programmer G76 P- Z- I- J- R- K- Q- H- E- L- pour produire un cycle de filetage multi-passes. C'est une erreur si:
La ligne pilote (drive line) est une ligne imaginaire, parallèle à l'axe de la broche, située en sécurité à l'extérieur du matériau à fileter. La ligne pilote va du point initial en Z jusqu'à la fin du filetage donnée par la valeur de Z- dans la commande.
Le pas du filet, ou la longueur du déplacement par tour est donné par la valeur de P-.
La crête du filet est donnée par la valeur de I- , c'est une cote entre la ligne pilote et la surface de la pièce. Une valeur négative de I-, indique un filetage externe et une valeur positive, indique un filetage interne. C'est généralement à ce diamètre nominal que le matériau est cylindré avant de commencer le cycle G76.
La profondeur de la passe initiale est donnée par la valeur de J-. La première passe sera à J- au delà de la crête du filet. J- est positif, même quand I- est négatif.
La profondeur du filet est donnée par la valeur de K-. La dernière passe du filetage sera à K- au delà de la crête du filet. K- est positif, même quand I- est négatif.
La dégressivité de la profondeur de passe est donnée par la valeur de R-. R1.0 sélectionne une profondeur de passe constante pour les passes successives du filetage. R2.0 sélectionne une surface constante. Les valeurs comprises entre 1.0 et 2.0 sélectionnent une profondeur décroîssante mais une surface croîssante. Enfin, les valeurs supérieures à 2.0 sélectionnent une surface décroîssante. Attention: les valeurs inutilement hautes de dégression, demanderont un nombre inutilement important de passes.
L'angle de pénétration oblique est donné par la valeur de Q- c'est l'angle (en degrés) décrivant de combien les passes successives doivent être décalées le long de l'axe. C'est utilisé pour faire enlever plus de matériau d'un côté de l'outil que de l'autre. Une valeur positive de Q fait couper d'avantage le bord principal de l'outil. Typiquement, les valeurs sont 29, 29.5 ou 30 degrés.
Le nombre de passes de finition est donné par la valeur de H-. Les passes de finition sont des passes additionnelles en fond de filet. Pour ne pas faire de passe de finition, programmer H0.
Les entrées et sorties de filetage peuvent être programmées côniques avec les valeurs de E- et L-. E- donne la longueur de la partie cônique le long de l'axe. E0.2 donnera un cône pour le premier et le dernier filet, de 0.2 unités dans le sens du filetage. L- est utilisé pour spécifier quelles extrémités du filetage doivent être côniques. Programmer L0 pour aucune (par défaut), L1 pour une entrée cônique, L2 pour une sortie cônique, ou L3 pour l'entrée et la sortie côniques.
L'outil fera une brève pause pour la synchronisation avant chaque passe de filetage, ainsi une gorge de dégagement sera requise à l'entrée, à moins que le début du filetage ne soit après l'extrémité de la pièce ou qu'un cône d'entrée soit utilisé.
À moins d'utiliser un cône de sortie, le mouvement de sortie (retour rapide sur X d'origine) n'est pas synchronisé sur la vitesse de broche. Avec une broche lente, la sortie pourrait se faire sur une petite fraction de tour. Si la vitesse de broche est augmentée après qu'un certain nombre de passes ne soient déjà faites, la sortie va prendre une plus grande fraction de tour, il en résultera un usinage très brutal pendant ce nouveau mouvement de sortie. Ceci peut être évité en prévoyant une gorge de sortie, ou en ne changeant pas la vitesse de broche pendant le filetage.
Un exemple de programme, g76.ngc montre l'utilisation d'un cycle de filetage G76, il peut être visualisé et exécuté sur n'importe quelle machine utilisant la configuration sim/lathe.ini.
Les cycles préprogrammés G81 à G89 sont implémentés comme décrit dans cette section. Deux exemples sont donnés avec la description de G81.
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 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-. Voir la section [.]
C'est une erreur si:
Quand le plan XY est actif, la valeur de Z est “sticky”, et c'est une erreur si:
Quand le plan XZ est actif, la valeur de Y est “sticky”, et c'est une erreur si:
Quand le plan YZ est actif, la valeur de X est “sticky”, et c'est une erreur si:
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:
Si un des plans XZ ou YZ est actif, le mouvement préliminaire et intermédiaire est analogue.
Le cycle G81 est destiné au perçage. Programmer G81 X- Y- Z- A- B- C- R- L- donnera:
Exemple 1. 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.
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.
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.
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.
Le cycle G82 est destiné au perçage. Programmer G82 X- Y- Z- A- B- C- R- L- P-
donnera:
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. Programmer G83 X- Y- Z- A- B- C- R- L- Q-
donnera:
C'est une erreur si:
Ce code n'est pas encore implémenté dans EMC2. Il est accepté mais son comportement n'est pas défini. Voir G33.1
Le cycle G85 est destiné à l'alésage, mais peut être utilisé pour le perçage ou le fraisage. Programmer G85 X- Y- Z- A- B- C- R- L- donnera:
Le cycle G86 est destiné à l'alésage. Ce cycle utilise la valeur P pour une temporisation en secondes. Programmer G86 X- Y- Z- A- B- C- R- L- P-
donnera:
La broche doit tourner avant le lancement de ce cycle. C'est une erreur si:
Ce code n'est pas encore implémenté dans EMC2. Il est accepté mais son comportement n'est pas défini.
Ce code n'est pas encore implémenté dans EMC2. Il est accepté mais son comportement n'est pas défini.
Le cycle G89 est destiné à l'alésage. Il utilise la valeur de P pour une temporisation en secondes. Programmer G89 X- Y- Z- A- B- C- R- L- P-
donnera:
L'interprétation du code RS274/NGC peut se faire dans deux modes de déplacements: absolu ou incrémental.
Pour se déplacer en mode absolu, programmer G90. En mode absolu, les valeurs d'axes X, Y, Z, A, B, C représentent les positions dans le système de coordonnées courant. Les exceptions à cette règle sont décrites dans la section [.].
Pour se déplacer en mode incrémental, programmer G91. En mode incrémental, les valeurs d'axes X, Y, Z, A, B, C représentent une valeur à ajouter à la position courante.
Les valeurs I et J représentent toujours des incréments, quel que soit le mode de déplacement actif. La valeur de K représente un incrément à ajouter dans tous les cas sauf un (voir la section [.]), dans lequel la signification du mode de déplacement change.
Voir la section [.] pour une vue générale des systèmes de coordonnées.
Pour donner au point actuel de nouvelles valeurs de coordonnées (sans faire de mouvement), programmer G92 X- Y- Z- A- B- C- , où les mots d'axes contiennent les valeurs souhaîtées. Au moins un mot d'axe est obligatoire, les autres sont optionnels. Si il n'y a pas de mot d'axe pour un axe donné, les coordonnées de cet axe resteront inchangées. C'est une erreur si:
Quand G92 est exécuté, l'origine du système de coordonnées courant est déplacée. Pour ce faire, les décalages d'origine sont calculés de sorte que les coordonnées du point courant concordent avec l'origine déplacée comme spécifié dans la ligne du G92. En plus, les paramètres 5211 à 5216 sont positionnés sur le décalage des axes X, Y, Z, A, B et C. Le décalage d'un axe correspond à la distance dont l'origine doit être déplacée afin que la coordonnée du point contrôlé, sur cet axe, ait la valeur spécifiée.
Voici un exemple: Supposons que le point courant soit X=4 dans le système de coordonnées courant et que le décalage actuel de l'axe X soit à zéro, alors G92 x7 passe le décalage de l'axe X à -3, positionne le paramètre 5211 à -3 et positionne la coordonnée en X du point courant à 7.
Les décalages d'axes sont toujours utilisés quand un mouvement est spécifié en mode de déplacement absolu, en utilisant un des neuf systèmes de coordonnées (ceux désignés par G54 - G59.3). Ainsi, les neuf systèmes de coordonnées sont affectés par G92.
Le fait d'être en mode de déplacement incrémental est sans effet sur l'action de G92.
Des décalages non nuls peuvent déjà être actifs quand G92 est appelé. Si c'est le cas, la nouvelle valeur de chaque décalage devient A+B, où A est le décalage voulu si l'ancien avait été nul, et B est l'ancien décalage. Par exemple, après le précédent exemple, la valeur de X au point courant est 7. Si G92 x9 est alors programmé, le nouveau décalage de l'axe X devient -5, qui est calculé par [[7-9] + -3].
Pour repasser un décalage d'axe à zéro, programmer G92.1 ou G92.2. G92.1 positionne les paramètres 5211 à 5216 à zéro, tandis que G92.2 conserve leurs valeurs courantes inchangées.
Pour positionner des valeurs de décalage d'axes aux valeurs données dans les paramètres 5211 à 5216, programmer G92.3.
Vous pouvez positionner les décalages d'axes dans un programme et ré-utiliser les mêmes dans un autre programme. Programmer G92 dans le premier programme, ce qui positionnera les paramètres 5211 à 5216. Ne pas utiliser G92.1 dans la suite du premier programme. Les valeurs des paramètres seront enregistrées lors de la sortie du premier programme et rétablies au chargement du second programme. Utiliser G92.3 vers le début du deuxième programme, ce qui restaurera les décalages d'axes enregistrés dans le premier. Si d'autres programmes sont lancés entre le programme qui enregistre les décalages et celui qui les restaure, faire une copie du fichier de paramètres écrit par le premier programme et l'utiliser comme fichier de paramètres pour le deuxième programme.
Trois modes de vitesse sont reconnus: unités par minute, inverse du temps et unités par tour. Programmer G94 pour passer en mode unités par minute. Programmer G93 pour passer en mode inverse du temps. Programmer G95 pour passer en mode unités par tour.
Dans le mode vitesse en unités par minute, le mot F est interprété pour indiquer que le point contrôlé doit se déplacer à un certain nombre de pouces par minute, de millimètres par minute, ou de degrés par minute, selon l'unité de longueur choisie pour les axes et quels types d'axes doivent se déplacer.
Dans le mode vitesse en unités par tour, le mot F est interprété pour indiquer que le point contrôlé doit se déplacer à un certain nombre de pouces par tour de broche, de millimètres par tour, selon l'unité de longueur utilisée et quels axes doivent être déplacés.
Dans le mode vitesse inverse du temps, le mot F signifie que le mouvement doit être terminé en [1 divisé par la valeur de F] minutes. Par exemple, si la valeur de F est 2.0, les mouvements doivent être terminés en 1/2 minute.
Quand le mode vitesse inverse du temps est actif, le mot F doit apparaître sur chaque ligne contenant un mouvement G1, G2, ou G3. Les mots F qui sont sur des lignes sans G1, G2, ou G3 sont ignorés. Être en mode vitesse inverse du temps est sans effet sur les mouvements G0 (vitesse rapide). C'est une erreur si:
Deux modes de contrôle de la broche sont reconnus: tours par minute, et vitesse de coupe constante. Programmer G96 D- S- pour valider une vitesse de coupe constante de S pieds par minute si G20 est actif, ou mètres par minute si G21 est actif. La vitesse de rotation maximale est indiquée par la valeur de D- en tours par minute.
Programmer G97 pour activer le mode vitesse en tours par minute.
C'est une erreur si:
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.
Pour stopper temporairement un programme en cours (quelle que soit la position du bouton d'arrêt facultatif), programmer M0.
Pour stopper temporairement un programme en cours (mais seulement si le bouton d'arrêt optionnel est activé), programmer M1.
Il est permis de programmer M0 et M1 en mode données manuelles (MDI), mais l'effet ne sera probablement pas perceptible, puisque le comportement normal en mode MDI est de s'arrêter, de toute façon, à la fin de chaque ligne.
Pour procéder à l'échange de porte-pièce avec le chargeur de pièces et stopper temporairement un programme en cours (quel que soit le réglage du bouton d'arrêt facultatif), programmer M60.
Si un programme est stoppé par M0, M1, ou M60, en appuyant sur le bouton de départ cycle, le programme reprend à la ligne suivante.
Pour finir un programme, programmer M2. Pour changer le porte-pièce du chargeur et finir un programme, programmer M30. Ces deux commandes produisent les effets suivants:
Plus aucune ligne de code RS274/NGC ne sera exécutée après exécution de la commande M2 ou M30. Presser le départ cycle relance le programme au début du fichier.
Pour démarrer la rotation de la broche en sens horaire à la vitesse programmée courante, programmer M3.
Pour démarrer la rotation de la broche en sens anti-horaire à la vitesse programmée courante, programmer M4.
Pour arrêter la rotation de la broche, programmer M5.
Il est permis d'utiliser M3 ou M4 si la vitesse de broche est à zéro. Si cela est fait (ou si le bouton de correction de vitesse est activé mais mis à zéro), la broche ne tournera pas, si, plus tard la vitesse de broche est augmentée (ou que le correcteur de vitesse est augmenté), la broche va se mettre en rotation. Il est permis d'utiliser M3 ou M4 quand la broche est déjà en rotation ou d'utiliser M5 quand la broche est déjà arrêtée.
Pour changer l'outil actuellement dans la broche par un autre, nouvellement sélectionné en utilisant le mot T, voir la section [.]), programmer M6. Un changement d'outil complet donnera:
Le changement d'outil peut inclure des mouvements d'axes pendant son exécution. Il est permis, mais pas utile, de programmer un changement d'outil avec le même outil que celui qui est déjà dans la broche. Il est permis également, si il n'y a pas d'outil dans le slot sélectionné, dans ce cas, la broche sera vide après le changement d'outil. Si le slot zéro a été le dernier sélectionné, il n'y aura pas d'outil dans la broche après le changement.
Pour activer l'arrosage par brouillard (gouttelettes), programmer M7.
Pour activer l'arrosage fluide, programmer M8.
Pour arrêter tous les arrosages, programmer M9.
Il est toujours permis d'utiliser une de ces commandes, que les arrosages soient arrêtés ou non.
Pour autoriser les potentiomètres de corrections de vitesses de broche et celui de vitesse travail, programmer M48. Pour les inhiber tous les deux, programmer M49. Voir la section [.] pour plus de détails. Il est permis d'autoriser ou d'inhiber ces potentiomètres quand ils sont déjà autorisés ou inhibés. Ces potentiomètres peuvent aussi être activés individuellement en utilisant les commandes M50 et M51 comme décrit dans les sections [.] et [.].
Pour autoriser le potentiomètre de correction de vitesse travail, programmer M50 ou M50 P1. Pour inhiber ce potentiomètre, programmer M50 P0. Quand il est inhibé, le potentiomètre de correction de vitesse n'a plus aucune influence et les mouvements seront exécutés à la vitesse de travail programmée. (à moins que ne soit actif un correcteur de vitesse adaptative).
Pour autoriser le potentiomètre de correction de vitesse de la broche, programmer M51 ou M51 P1. Pour inhiber ce potentiomètre programmer M51 P0. Quand il est inhibé, le potentiomètre de correction de vitesse de broche n'a plus aucune influence et la broche tournera à la vitesse programmée, en utilisant le mot S comme décrit dans la section [.].
Pour utiliser une vitesse adaptative, programmer M52 ou M52 P1. Pour stopper l'utilisation d'une vitesse adaptative, programmer M52 P0. Quand la vitesse adaptative est utilisée, certaines valeurs externes sont utilisées avec les correcteurs de vitesse de l'interface utilisateur et les vitesses programmées pour obtenir la vitesse travail. Dans EMC2, la HAL pin motion.adaptive-feed est utilisée dans ce but. Les valeurs de motion.adaptive-feed doivent être dans une échelle comprise entre 0 (pas de vitesse) et 1 (pleine vitesse).
Pour autoriser le bouton de coupure de vitesse, programmer M53 ou M53 P1. Pour inhiber ce bouton programmer M53 P0. Autoriser la coupure de vitesse permet d'interrompre les mouvements par le biais d'une coupure de vitesse. Dans EMC2, la HAL pin motion.feed-hold est utilisée pour cette fonctionnalité. Une valeur de 1 provoque un arrêt des mouvements (si M53 est actif).
Pour contrôler un bit de sortie digitale, programmer M- P-, où le mot M doit être compris entre 62 et 65, et le mot P compris entre 0 et un maximum défini selon l'implémentation.
Pour contrôler un bit d'entrée digitale, programmer M66 P- E- L- Q- , où le mot P et le mot E doivent être compris entre 0 et un maximum défini selon l'implémentation. Un seul des mots P ou E doit être présent. C'est une erreur si ils sont présents tous les deux.
M66 attends un nouvel événement sur l'entrée ou l'arrêt de l'exécution du programme, jusqu'à ce que l'événement sélectionné (ou le timeout programmé) ne survienne. C'est une erreur de programmer une valeur de timeout à 0 dans tous les types, sauf le type 0.
C'est également une erreur de programmer M66 avec les deux mots, un mot P et un mot E (ce qui reviendrait à sélectionner à la fois une entrée analogique et une digitale).
Pour invoquer une commande définie par l'utilisateur, programmer M- P- Q- où P et Q sont facultatifs. Le programme externe `` Mnnn'' dans le répertoire [DISPLAY] PROGRAM_PREFIX est exécuté avec les valeurs P et Q comme étant ses deux arguments. L'exécution du fichier RS274NGC passe en pause jusqu'à ce que le programme invoqué ne se termine.
C'est une erreur si:
Les O-codes permettent le contrôle de flux dans les programmes NC. Chaque block est associé à une adresse, qui est la valeur utilisée après le O. Il faut prendre soin de bien faire correspondre les adresses des codes O.
Le comportement est indéfini si:
Les sous-programmes s'étendent d'un O- sub à un O- endsub. Les lignes, à l'intérieur du sous-programme (le corps du sous-programme), ne sont pas exécutées dans l'ordre, mais elles sont exécutées à chaque fois que le sous-programme est appelé avec un O- call.
O100 sub (sous-programme pour aller à l'origine programme)
G0 X0 Y0 Z0
O100 endsub
(plusieurs lignes)
O100 call
À l'intérieur d'un sous-programme, O- return peut être exécuté, pour retourner immédiatement au code appelant, comme si O- endsub avait été rencontré.
O- call peut prendre jusqu'à 30 arguments optionnels, qui sont passés au sous-programme comme #1, #2, ..., #N. Les paramètres de #N+1 à #30 ont la même valeur dans le contexte de l'appel. Au retour du sous-programme, les valeurs des paramètres #1 jusqu'à #30 (quel que soit le nombre d'arguments) sont restaurés aux valeurs qu'ils avaient avant l'appel.
Parce que `` 1 2 3'' est analysé comme le nombre 123, les paramètres doivent être placés entre crochets. L'appel de sous-programme suivant, s'effectue avec 3 arguments:
O200 call [1] [2] [3]
Les corps de sous-programme ne peuvent pas être imbriqués. Ils ne peuvent être appelés qu'après avoit été définis. Ils peuvent être appelés depuis d'autres fonctions et peuvent s'appeler eux même récursivement, s'il est judicieux de le faire. Le niveau maximum d'imbrication des sous-programmes est de 10.
Les sous-programmes n'ont pas de “valeur de retour”, mais ils peuvent changer la valeur des paramètres au dessus de #30 et ces changements sont visibles depuis le code appelant. Les sous-programmes peuvent aussi changer la valeur des paramètres nommés globaux.
La boucle while a deux structures possibles: while/endwhile et do/while. Dans chaque cas, la boucle est quittée quand la condition du “while” devient fausse.
(dessine la forme d'une dent de scie)
F100
#1 = 0
O101 while [#1 lt 10]
G1 X0
G1 Y[#1/10] X1
#1 = [#1+1]
O101 endwhile
À l'intérieur d'une boucle while, O- break, quitte immédiatement la boucle et O- continue, saute immédiatement à la prochaine évaluation de la condition du while. Si elle est vraie, la boucle recommence au début. Si elle est fausse, la boucle est quittée.
Le if conditionnel exécute un groupe d'instructions si sa condition est vraie et un autre groupe si elle est fausse.
(Ajuste la vitesse travail en fonction d'une variable)
O102 if [#2 GT 5]
F100
O102 else
F200
O102 endif
L'adresse de O- peut être donnée par un paramètre ou un calcul.
O[#101+2] call
Dans les mots O-, les paramètres (section [.]), les expressions (section [.]), les opérateurs binaires (section [.]) et les fonctions (tableau [.]), sont particulièrement intéressants.
Pour régler la vitesse d'avance, programmer F- . L'application de la vitesse est telle que décrite dans la section [.], à moins que le mode vitesse inverse du temps ne soit actif, dans ce cas, la vitesse est telle que décrite dans la section [.].
Pour régler la vitesse en tours par minute (tr/mn) de la broche, programmer S- . La broche va tourner à cette vitesse quand elle sera programmée pour tourner. Il est permis de programmer un mot S que la broche tourne ou non. Si le potentiomètre de correction de vitesse broche est autorisé et n'est pas positionné sur 100%, la vitesse de broche sera différente de celle programmée. Il est permis de programmer S0, la broche ne tournera pas. C'est une erreur si:
Comme décrit dans la section [.], si un cycle préprogrammé G84 (taraudage) est actif et que les potentiomètres de vitesse et d'avance sont autorisés, celui qui a le réglage le plus bas sera utilisé. La vitesse de rotation et d'avance resterons synchronisées. Dans ce cas, la vitesse peut différer de celle programmée, même si le potentiomètre de correction de vitesse travail est sur 100%.
Pour sélectionner un outil, programmer T-, où la valeur de T correspond au numéro du slot d'outil dans le carrousel. L'outil ne sera appelé et changé que quand un M6 sera programmé (voir la section [.]). Le mot T peut apparaitre sur la même ligne que le M6 ou sur une ligne précédente. Il est permis, mais normalement inutile, qu'un mot T apparaisse à plus de deux lignes avant, sans changement d'outil. Le carrousel peut bouger, seulement le plus récent mot T ne prendra effet qu'au prochain changement d'outil. Il est permis de programmer T0, aucun outil ne sera sélectionné. C'est utile pour avoir la broche vide. C'est une erreur si:
Sur certaines machines, le carrousel se déplace lorsque le mot T est programmé, avec l'usinage en cours. Sur ces machines, programmer T plusieurs lignes de texte avant le changement d'outil permet de gagner du temps. Une pratique de programmation courante pour ces types de machines, consiste à placer le mot T pour le prochain outil sur la ligne suivant le changement d'outil. Cela laisse au carrousel tout le temps pour se positionner.
L'ordre d'exécution des éléments d'une ligne est essentielle à la sécurité et l'efficacité d'une machine. Les éléments sont exécutés dans l'ordre indiqué ci-dessous, si ils se trouvent sur la même ligne.
Utilisez au plus 3 chiffres après la virgule pour l'usinage en millimètres et au plus 4 chiffres après la virgule pour l'usinage en pouces. En particulier, les contrôles de tolérance des arcs sont faits pour .001 et .0001 selon les unités actives.
Le G-code est plus lisible quand au moins un espace apparaît avant les mots. S'il est permis d' insérer des espaces blancs au milieu des chiffres, il faut éviter de le faire.
Les arcs en format centre (qui utilisent I- J- K- au lieu de R-) se comportent de façon plus précise que ceux en format rayon, particulièrement pour des angles proche de 180 et 360 degrés.
Lorsque l'exécution correcte de votre programme dépend de paramètres modaux, n'oubliez pas de les mettre au début du programme. Des modes incorrects peuvent provenir d'un programme précédent ou depuis des entrées manuelles.
Une bonne mesure préventive consiste à placer la ligne suivante au début de tous les programmes:
G17 G21 G40 G49 G54 G80 G90 G94
(plan XY, mode mm, annulation de la compensation de rayon, et de longueur, sytème de coordonnées numéro 1, arrêt des mouvements, déplacements absolus, mode vitesse/minute)
Peut-être que le code modal le plus important est le réglage des unités machine. Si les codes G20 ou G21, ne sont pas inclus, selon les machines l'échelle d'usinage sera différente. D'autres valeurs comme le plan de retrait des cycles préprogrammés peuvent être importantes.
Ignorer le contenu de la section [.] et ne pas écrire de ligne de code qui laisse la moindre ambiguïté. De même, ne pas régler un paramètre et l'utiliser sur la même ligne, même si la sémantique est bien définie. (Exception: Mise à jour d'une variable à une nouvelle valeur, comme #1=[#1+#2])
Les numéros de ligne n'apportent rien. Quand des numéros de ligne sont rapportés dans les messages d'erreur, ces numéros font référence aux numéros de lignes à l'intérieur du programme, pas aux valeurs des mots N.
Parce que la signification d'un mot F en mètres par minute varie selon les axes à déplacer et parce que la quantité de matière enlevée ne dépend pas que de la vitesse travail, il peut être plus simple d'utiliser G93, vitesse inverse du temps pour atteindre l'enlévement de matière souhaîté.
Les longueurs et diamètres d'outils peuvent être lus dans un fichier d'outils (voir la section [.]) ou provenir d'un mot spécifié pour activer la compensation d'outil.
La compensation d'outil peut causer beaucoup de problèmes aux meilleurs programmeurs de code nc. Mais elle peut aussi être une aide puissante quand elle est utilisée pour aider un opérateur à obtenir une pièce à la cote. En réglant la longueur et le diamètre des outils dans une table d'outils, les décalages peuvent être utilisés pendant un cycle d'usinage qui tient compte des variations de taille de l'outil, ou pour des déviations mineures des trajectoires programmées. Et ces changements peuvent être faits sans que l'opérateur n'ait à changer quoi que ce soit dans le programme.
Tout au long de ce module, vous trouverez occasionnellement des références à des fonctions canoniques, là où il est nécessaire pour le lecteur de comprendre comment fonctionne une compensation d'outil dans une situation spécifique. Ces références ont pour but de donner au lecteur une idée de la séquences plutôt que d'exiger qu'il comprenne la façon dont les fonctions canoniques elles-mêmes fonctionnent dans EMC.
Les compensations de longueur d'outil sont données comme des nombres positifs dans la table d'outils. Une compensation d'outil est programmée en utilisant G43 Hn, où n est le numéro d'index de l'outil souhaité dans la table d'outil. Il est prévu que toutes les entrées dans la table d'outils soit positives. La valeur de H est vérifiée, elle doit être un entier non négatif quand elle est lue. L'interprèteur se comporte comme suit:
1. Si G43 Hn est programmé, un appel à la fonction USE_TOOL_LENGTH_OFFSET(longueur) est fait (où longueur est l'écart de longueur, lu dans la table d'outils, de l'outil indexé n), tool_length_offset est repositionné dans le modèle de réglages de la machine et la valeur de current_z dans le modèle est ajustée. Noter que n n'a pas besoin d'être le même que le numéro de slot de l'outil actuellement dans la broche.
2. Si G49 est programmé, USE_TOOL_LENGTH_OFFSET(0.0) est appelée, tool_length_offset est remis à 0.0 dans le modèle de règlages de la machine et la valeur courante de current_z dans le modèle est ajustée. L'effet de la compensation de longueur d'outil est illustrée dans la capture ci-dessous. Noter que la longueur de l'outil est soustraite de Z pour que le point contrôlé programmé corresponde à la pointe de l'outil. Il faut également noter que l'effet de la compensation de longueur est immédiat quand on voit la position de Z comme une coordonnée relative mais il est sans effet sur la position actuelle de la machine jusqu'à ce qu'un mouvement en Z soit programmé.
Programme de test de longueur d'outil.
Tool #1 is 1 inch long.
N01 G1 F15 X0 Y0 Z0
N02 G43 H1 Z0 X1
N03 G49 X0 Z0
N04 G0 X2
N05 G1 G43 H1 G4 P10 Z0 X3
N06 G49 X2 Z0
N07 G0 X0
Avec ce programme, dans la plupart des cas, la machine va appliquer le décalage sous forme d'une rampe pendant le mouvement en xyz suivant le mot G43.
La compensation de rayon d'outil (également appelée compensation de diamètre d'outil) à été ajoutée aux spécifications RS-274D à la demande d'utilisateurs, car elle est extrêmement utile, mais son implémentation a été assez mal pensée. L'objectif de cette fonctionnalité est de permettre aux programmeurs de “virtualiser” la trajectoire de l'outil, de sorte que la machine puisse pendant toute l'exécution, déterminer la bon décalage a apporter à la position de l'outil pour respecter les cotes, en s'appuyant sur les diamètres d'outils existants. Si un outil est réaffuté, son diamètre sera légérement plus petit que celui d'origine, il faudra également en tenir compte.
Le problème est pour donner à la machine la trajectoire exacte où l'outil doit usiner, sur le côté intérieur d'un chemin imaginaire, ou sur le côté extérieur. Comme ces trajectoires ne sont pas nécessairement fermées (même si elles peuvent l'être), il est quasiment impossible à la machine de connaître de quel côté du profil elle doit compenser l'outil. Il a été décidé qu'il n'y aurait que deux choix possibles, outil à “gauche” du profil à usiner et outil à “droite” du profil à usiner. Ce qui doit être interprété à gauche ou à droite du profil à usiner en suivant l'outil le long du profil.
Les possibilités de compensation de rayon d'outil de l'interpréteur, autorise le programmeur à spécifier si l'outil doit passer à gauche ou à droite du profil à usiner. Ce profil peut être un contour ouvert ou fermé, dans le plan XY composé de segments en arcs de cercles et en lignes droites. Le contour peut être le pourtour d'une pièce brute ou, il peut être une trajectoire exacte suivie par un outil mesuré avec précision. La figure ci-dessous, montre deux exemples de trajectoires d'usinage d'une pièce triangulaire, utilisant la compensation de rayon d'outil.
Dans les deux exemples, le triangle gris représente le matériau restant après usinage et la ligne extérieure représente le chemin suivi par le centre de l'outil. Dans les deux cas le triangle gris est conservé. Le parcour de gauche (avec les coins arrondis) est le chemin généralement interprété. Dans la méthode de droite (celle marquée Not this way), l'outil ne reste pas en contact avec les angles vifs du triangle gris.
Des mouvements sur l'axe Z peuvent avoir lieu pendant que le contour est suivi dans le plan XY. Des portions du contour peuvent être franchies avec l'axe Z en retrait au dessus de la pièce pendant la poursuite du parcour et jusqu'au point où l'usinage doit reprendre, l'axe Z plongera de nouveau en position. Ces dégagement de zones non usinées peuvent être faits en vitesse travail (G1), en rapide (G0), en vitesse inverse du temps (G93) ou en avance en unités par minute (G94) toutes peuvent être utilisées avec la compensation de rayon d'outil. Sous G94, la vitesse sera appliquée à la pointe de l'outil coupant, non au contour programmé.
L'interpréteur actuel requiert une valeur D sur chaque ligne contenant un mot G41 ou G42. La nombre D doit être un entier positif. Il représente le numéro de slot de l'outil, dont le rayon (la moitié du diamètre d'outil indiqué dans la table d'outils) sera compensé. Il peut aussi être égal à zéro, dans ce cas, la valeur du rayon sera aussi égale à zéro. Tous les slots de la table d'outils peuvent être sélectionnés de cette façon. Le nombre D n'est pas nécessairement le même que le numéro de slot de l'outil monté dans la broche.
La compensation de rayon d'outil utilise les données fournies par la table d'outils de la machine. Pour chaque slot d'outil dans le carrousel, la table d'outils contient le diamètre de l'outil rangé à cet emplacement (ou la différence entre le diamètre nominal de l'outil placé dans ce slot et son diamètre actuel). La table d'outils est indexée par les numéros de slot. Reportez vous à la page des “Fichiers d'outils” pour savoir comment remplir ces fichiers.
L'interpréteur contrôle la compensation pour deux types de contour:
L'interpréteur ne dispose d'aucun paramètre pour déterminer quel type de contour est utilisé, mais la description des contours est différente (pour la même géométrie de pièce) entre les deux types, les valeurs des diamètres dans la table d'outils seront également différentes pour les deux types.
Lorsque le contour est sur le profil du matériau, c'est ce tracé qui est décrit dans le programme NC. Pour un contour sur le profil du matériau, la valeur du diamètre dans la table d'outils correspond au diamètre réel de l'outil courant. Cette valeur dans la table doit être positive. Le code NC pour ce type de contour reste toujours le même à l'excéption du diamètre de l'outil (actuel ou nominal).
Exemple 1 :
Voici un programme NC qui usine le matériau en suivant le profil d'un des triangles de la figure précédente. Dans cet exemple, la compensation de rayon est celle du rayon actuel de l'outil, soit 0.5 . La valeur pour le diamètre dans la table d'outil est de 1.0 .
N0010 G41 G1 X2 Y2 (active la compensation et fait le mouvement d'entrée)
N0020 Y-1 (suit la face droite du triangle)
N0030 X-2 (suit la base du triangle)
N0040 X2 Y2 (suit l'hypoténuse du triangle)
N0050 G40 (désactive la compensation)
Avec ce programme, l'outil suit cette trajectoire: un mouvement d'entrée, puis la trajectoire montrée dans la partie gauche de la figure, avec un déplacement de l'outil en sens horaire autour du triangle. Noter que les coordonnées du triangle de matériau apparaissent dans le code NC. Noter aussi que la trajectoire inclus trois arcs qui ne sont pas explicitement programmés, ils sont générés automatiquement.
Lorsque le contour est sur le chemin d'outil, la trajectoire décrite dans le programme correspond au chemin que devra suivre le centre de l'outil. Le bord de l'outil, à un rayon de là, (excepté durant les mouvements d'entrée) suivra la géométrie de la pièce. La trajectoire peut être créée manuellement ou par un post-processeur, selon la pièce qui doit être réalisée. Pour l'interpréteur, le chemin d'outil doit être tel que le bord de l'outil reste en contact avec la géométrie de la pièce, comme montré à gauche de la figure 7. Si une trajectoire du genre de celle montrée sur la droite de la figure 7 est utilisée, dans laquelle l'outil ne reste pas en permanence au contact avec la géométrie de la pièce, l'interpréteur ne pourra pas compenser correctement si un outil en dessous de son diamètre nominal est utilisé.
Pour un contour sur le chemin d'outil, la valeur pour le diamètre de l'outil dans la table d'outils devra être un petit nombre positif si l'outil sélectionné est légérement surdimensionné. La valeur du diamètre sera un petit nombre négatif si l'outil est légérement sous-dimensionné. Si un diamètre d'outil est négatif, l'interpréteur compense de l'autre côté du contour programmé et utilise la valeur absolue donnée au diamètre. Si l'outil courant est à son diamètre nominal, la valeur dans la table d'outil doit être à zéro.
Exemple de contour sur le chemin d'outil
Supposons que le diamètre de l'outil courant monté dans la broche est de 0.97 et le diamètre utilisé en générant le chemin d'outil a été de 1.0 . Alors la valeur de diamètre dans la table d'outils pour cet outil est de -0.03. Voici un programme NC qui va usiner l'extérieur d'un triangle de la figure 7.
N0010 G1 X1 Y4.5 (mouvement d'alignement)
N0020 G41 G1 Y3.5 (active la compensation et premier mouvement d'entrée)
N0030 G3 X2 Y2.5 I1 (deuxième mouvement d'entrée)
N0040 G2 X2.5 Y2 J-0.5 (usinage le long de l'arc en haut du chemin d'outil)
N0050 G1 Y-1 (usinage le long du côté droit du chemin d'outil)
N0060 G2 X2 Y-1.5 I-0.5 (usinage de l'arc en bas à droite)
N0070 G1 X-2 (usinage de la base du chemin d'outil)
N0080 G2 X-2.3 Y-0.6 J0.5 (usinage de l'arc en bas à gauche)
N0090 G1 X1.7 Y2.4 (usinage de l'hypoténuse)
N0100 G2 X2 Y2.5 I0.3 J-0.4 (usinage de l'arc en haut à droite)
N0110 G40 (désactive la compensation)
Avec ce programme, l'outil suit cette trajectoire: un mouvement d'alignement, deux mouvements d'entrée, puis il suit une trajectoire légérement intérieure au chemin d'outil montré sur la figure 7 en tournant en sens horaire autour de la pièce. Cette compensation est à droite de la trajectoire programmée, même si c'est G41 qui est programmé, en raison de la valeur négative du diamètre.
Les messages en rapport avec la compensation de rayon d'outil, délivrés par l'interpréteur sont les suivants:
Pour certains de ces messages, des explications sont données plus loin.
Changer d'outil alors que la compensation de rayon d'outil est active n'est pas considéré comme une erreur, mais il est peu probable que cela soit fait intentionnellement. Le rayon d'outil utilisé lors de l'établissement de la compensation continuera à être utilisé jusqu'à la désactivation de la compensation, même si un nouvel outil est effectivement utilisé.
Quand la compensation de rayon d'outil est active, il est physiquement possible de faire un cercle, dont le rayon est la moitié du diamètre de l'outil donné dans la table d'outils, il sera tangent avec l'outil en tout point de son contour.
En particulier, l'interpréteur traite les coins concaves et les arcs concaves plus petits que l'outil, comme des erreurs, le cercle ne peut pas être maintenu tangent avec le contour dans ces situations. Cette détection de défaut, ne limite pas les formes qui peuvent être usinées, mais elle requiert que le programmeur précise la forme exacte à usiner (ou le chemin d'outil qui doit être suivi) et non une approximation. A cet égart, l'interpréteur utilisé par EMC diffère des interpréteurs utilisés dans beaucoup d'autres contrôleurs, qui passent ces erreurs sous silence et laissent l'outil interférer avec la partie finie de la pièce (gouging) ou arrondissent des angles qui devraient être vifs. Il n'est pas nécessaire, de déplacer l'outil entre la désactivation de la compensation et sa réactivation, mais le premier mouvement suivant la réactivation sera considéré comme premier mouvement, comme déjà décrit plus tôt.
Il n'est pas possible de passer d'un index de rayon d'outil à un autre alors que la compensation est active. Il est également impossible de basculer la compensation d'un côté à l'autre avec la compensation active. Si le prochain point de destination XY est déjà dans le périmètre d'action de l'outil quand la compensation est activée, le message indiquant une interférence outil/surface finie, s'affichera quand la ligne du programme qui donne cette destination sera atteinte. Dans ce cas, l'outil a déjà usiné dans le matériau, là où il n'aurait pas dû...
Si le numéro de slot programmé par le mot D est supérieur au nombre d'emplacements disponibles dans le carrousel, un message d'erreur sera affiché. Dans l'implémentation actuelle, le nombre d'emplacements maximum est de 68.
Le message d'erreur "Deux G-codes du même groupe modal sont utilisés" est un message générique utilisé pour plusieurs jeux de G-codes. Il s'applique à la compensation de rayon d'outil, il signifie que plus d'un code G40, G41 ou G42 apparaît sur la même ligne de progamme NC, ce qui n'est pas permis.
L'algorithme utilisé lors du premier déplacement, quand c'est une ligne droite, consiste à tracer une droite, depuis le point d'arrivée, tangente à un cercle dont le centre est le point actuel, et le rayon, celui de l'outil. Le point de destination de la pointe de l'outil se trouve alors au centre d'un cercle de même rayon, tangeant à la ligne droite tracée précédemment. C'est montré sur la figure 9. Si le point programmé est situé à l'intérieur de la première section d'outil (le cercle de gauche), une erreur sera signalée.
Si le premier mouvement après que la compensation de rayon d'outil a été activée est un arc, l'arc qui sera généré est dérivé d'un arc auxiliaire qui, a son centre identique à celui du point central programmé, passe par le point final de l'arc programmé et, est tangent à l'outil à son emplacement courant. Si l'arc auxiliaire ne peut pas être construit, une erreur sera signalée. L'arc généré déplacera l'outil pour qu'il reste tangeant à l'arc auxiliaire pendant tout le mouvement. C'est montré sur la figure 10.
Indépendamment du fait que le premier déplacement est une droite ou un arc, l'axe Z peut aussi se déplacer en même temps. Il se déplacera linéairement, comme c'est le cas quand la compensation de rayon n'est pas utilisée. Les mouvements des axes rotatifs (A, B et C) sont autorisés avec la compensation de rayon d'outil, mais leur utilisation serait vraiment très inhabituelle.
Après les mouvements d'entrée en compensation de rayon d'outil, l'interpréteur maintiendra l'outil tangent au contour programmé et du côté approprié. Si un angle aigü se trouve dans le chemin, un arc est inséré pour tourner autour de l'angle. Le rayon de cet arc sera de la moitiè du diamètre de l'outil donné dans la table d'outils.
Quand la compensation de rayon est désactivée, aucun mouvement de sortie particulier n'est fait. Le mouvement suivant sera ce qu'il aurait été si la compensation n'avait jamais été activée et que le mouvement précédent ait placé l'outil à sa position actuelle.
En général, un mouvement d'alignement et deux mouvements d'entrée sont demandés pour commencer la compensation correctement. Cependant, si le contour programmé comporte des pointes et des angles aigüs, un seul mouvement d'entré (plus, éventuellement, un mouvement de pré-entrée) est demandé. La méthode générale, qui fonctionne dans toutes les situations, est décrite en premier. Elle suppose que le programmeur connait déjà le contour et son but est d'ajouter le mouvement d'entrée.
La méthode générale de programmation comprend un mouvement d'alignement et deux mouvements d'entrée. Les mouvements d'entrée expliqués ci-dessus, seront repris comme exemple. Voici le code correspondant:
N0010 G1 X1 Y4.5 (mouvement d'alignement vers le point C)
N0020 G41 G1 Y3.5 (active la compensation et fait le premier mouvement d'entrée vers le point B)
N0030 G3 X2 Y2.5 I1 (fait le second mouvement d'entrée vers le point A)
Voir la figure 11. La figure montre les deux mouvements d'entrée mais pas le mouvement d'alignement.
En premier, choisir un point A sur le contour où il convient d'attacher un arc d'entrée. Spécifier un arc à l'extérieur du contour qui commence au point B et s'achève au point A, tangent au contour (et aller dans la même direction que celle prévue pour tourner autour du contour). Le rayon doit être supérieur à la moitié du diamètre donné dans la table d'outils. Ensuite, tirer une ligne tangente à l'arc, du point B au point C, placé de telle sorte que la ligne BC fasse plus d'un rayon de long.
Après que la construction soit terminée, le code est écrit dans l'ordre inverse de celui de la construction. La compensation de rayon d'outil est activée après le mouvement d'alignement et avant le premier mouvement d'entrée. Dans le code précédent, la ligne N0010 fait le mouvement d'alignement, la ligne N0020 active la compensation et fait le premier mouvement d'entrée et la ligne N0030 fait le second mouvement d'entrée.
Dans cet exemple, l'arc AB et la ligne BC sont très larges, ce n'est pas nécessaire. Pour un contour sur chemin d'outil, le rayon de l'arc AB demande juste à être légérement plus grand que la variation maximale du rayon de l'outil par rapport à son rayon nominal. Egalement, pour un contour sur chemin d'outil, le côté choisi pour la compensation doit être celui utilisé si l'outil est surdimensionné. Comme mentionné précédemment, si l'outil est sousdimensionné, l'interpréteur basculera de l'autre côté.
Si le contour est sur le profil du matériau et qu'il comprends des angles aigüs quelque part sur le contour, une méthode simple pour faire l'entrée est possible. Voir la figure 12.
Premièrement, choisir un angle aigü, par exemple D. Ensuite, décider comment on va tourner autour du matériau depuis le point D. Dans notre exemple nous maintiendrons l'outil à gauche du profil et nous avancerons vers F. Prolonger la ligne FD (si le segment suivant du contour est un arc, prolonger la tangente à l'arc FD depuis D) pour diviser la surface extérieure au contour proche de D en deux parties. S'assurer que le centre de l'outil est actuellement dans la partie du même côté de la ligne prolongée que le matériau. Sinon, déplacer l'outil dans cette partie. Par exemple, le point E représente la position courante du centre de l'outil. Comme il est du même côté de la ligne FD prolongée que le triangle gris du matériau, aucun mouvement supplémentaire n'est nécessaire. Maintenant écrire la ligne de code NC qui active la compensation et faire le mouvement vers le point D
N0010 G41 G1 X2 Y2 (active la compensation et fait le mouvement d'entrée)
Cette méthode fonctionnera également avec avec un angle aigü sur un contour sur chemin d'outil, si l'outil est surdimensionné, mais elle échouera si il est sousdimensionné.
Le jeu complet de fonctions canoniques comprend des fonctions qui activent et désactivent la compensation de rayon d'outil, de sorte qu'elle puisse être activée quand le contrôleur exécute une de ces fonctions. Dans l'interpréteur, cependant, ces commandes ne sont pas utilisées. La compensation est assurée par l'interpréteur et reflétée dans les sorties des commandes, c'est l'interpréteur qui continuera à diriger les mouvements du centre de l'outil. Cela simplifie le travail du contrôleur de mouvement tout en rendant le travail de l'interpréteur un peu plus difficile.
L'interpréteur permet que les mouvements d'entrée et de sortie soient des arcs. Le comportement pour les mouvements intermédiaires est le même, excepté que certaines situations sont traitées comme des erreurs par l'interpréteur alors qu'elles ne le sont pas sur d'autres contrôleurs de machine.
Données relatives à la compensation de rayon d'outil:
L'interpréteur du modèle de machine conserve trois données pour la compensation de rayon d'outil: Le réglage lui même (gauche, droite ou arrêt), program_x, et program_y. Les deux dernières représentent les positions en X et en Y données dans le code NC quand la compensation est active. Quand elle est désactivée, les deux entrées sont fixées à de très petites valeurs (10 e-20 ) dont la valeur symbolique (dans un #define) est "unknown". L'interpréteur du modèle de machine utilise, les items current_x et current_y qui représentent, le centre de la pointe de l'outil (dans le système de coordonnées courant), à tous moments.
Toutes les informations spécifiques au système se réfèrent au programme EMC du NIST, mais doit aussi s'appliquer aux plus modernes contrôleurs CNC. Ma méthode de vérification de ces programmes est d'abord de sélectionner l'outil zéro, de sorte que les commandes de compensation soient ignorées. Ensuite, je colle une feuille de papier sur une plaque tenue de niveau dans l'étau, une sorte de platine. J'installe une recharge de stylo à ressort dans la broche. C'est une recharge standard de stylo à bille en métal avec un ressort, dans un emballage de 1/2" de diamètre. Elle à un ressort pour la faire rentrer dans le corps du stylo, et un 'collet' à l'arrière qui permet à la pointe de se rétracter malgrès le ressort, mais qui la laisse centrée à quelques centièmes de pouce près. Je charge le programme avec l'outil zéro sélectionné, et il trace une ligne à l'extérieur de la pièce. (voir la figure suivante) Alors, je sélectionne un outil avec le diamètre de l'outil que j'envisage d'utiliser et je lance le programme une nouvelle fois. (Noter que la coordonnée Z dans le programme ne doit pas être changée pour éviter de plonger le stylo au travers du plateau;-) Maintenant, je dois voir si la compensation G41 ou G42 que je spécifie passe sur le côté voulu de la pièce. Sinon, je modifie avec la compensation du côté opposé, et j'édite la compensation opposée dans le programme, puis j'essaye à nouveau. Maintenant, avec l'outil sur le côté correct de la pièce, je peut vérifier si quelque part sur le parcours l'outil est 'trop gros' pour usiner les surfaces concaves. Ma vieille Allen-Bradley 7320 était très indulgente sur ce point, mais EMC ne tolère rien. Si vous avez la moindre concavité où deux lignes se rencontrent à moins de 180 degrés avec un outil de taille définies, EMC va s'arrêter là, avec un message d'erreur. Même si le gougeage est de .0001" de profondeur. Alors, je fais toujours l'approche sur le mouvement d'entrée et le mouvement de sortie juste sur un coin de la pièce, en fournissant un angle de plus de 180 degrés, afin qu'EMC ne hurle pas. Cela exige une grande attention lors de l'ajustement des points de départ et de sortie, qui ne sont pas compensés par le rayon d'outil, mais ils doivent être choisis avec un rayon approximatif bien réfléchi.
Les commandes sont:
G40 - Annuler la compensation de rayon d'outil
G41 - Activer la compensation, outil à gauche du profil
G42 - Activer la compensation, outil à droite du profil
Voici un petit fichier qui usine le côté d'une pièce avec de multiples arcs convexes et concaves et plusieurs lignes droites. La plupart de ces commandes ont été tracées depuis Bobcad/CAM, mais les lignes N15 et N110 ont été ajoutées par moi et certaines coordonnées dans ce contour ont été bricolées un peu par moi.
N10 G01 G40 X-1.3531 Y3.4
N15 F10 G17 G41 D4 X-0.7 Y3.1875 (ligne d'entrée)
N20 X0. Y3.1875
N40 X0.5667 F10
N50 G03 X0.8225 Y3.3307 R0.3
N60 G02 X2.9728 Y4.3563 R2.1875
N70 G01 X7.212 Y3.7986
N80 G02 X8.1985 Y3.2849 R1.625
N90 G03 X8.4197 Y3.1875 R0.3
N100 G01 X9.
N110 G40 X10.1972 Y3.432 (ligne de sortie)
N220 M02
La ligne 15 contient G41 D4, qui signifie que le diamètre de l'outil est celui de l'outil #4 dans la table d'outils, il sera utilisé pour décaler la broche de 1/2 diamètre, qui est, bien sûr, le rayon d'outil. Noter que la ligne avec la commande G41 contient le point final du mouvement dans lequel la compensation de rayon est interpolée. Cela signifie qu'au début de ce mouvement, il n'y a aucun effet de compensation et à la fin, l'outil est décalé de 100% du rayon de l'outil sélectionné. Immédiatement après le G41 il y a D4, signifiant que le décalage sera le rayon de l'outil N°4 dans la table d'outils. Noter que les DIAMETRES d'outil sont entrés dans la table d'outils. (le diamètre de l'outil de Jon est de 0.4890)
Mais, noter qu'à la ligne 110, où il y a la commande G40, l'interpolation de la compensation d'outil est en dehors de ce mouvement. La manière d'obtenir ce réglage, les mouvements des lignes 15 et 110 sont presque exactement parallèles à l'axe X et la différence dans les coordonnées Y est à la ligne où l'outil est appelé, en dehors de la compensation d'outil.
Certaines autres choses sont à noter, le programme commence avec G40, pour désactiver les compensations éventuellement actives. Cela évite un tas d'ennuis quand le programme s'arrête à cause d'une erreur de concavité, mais laisse la compensation désactivée. Noter aussi, en ligne 15, G17 est utilisé pour spécifier le plan de travail XY pour les interpolations circulaires. J'ai utilisé le format rayon pour les spécifications des arcs plutôt que la forme I, J. EMC est trés pointilleux au sujet des rayons qu'il calcule à partir du format des coordonnées I, J et il doit trouver le début et la fin du mouvement avec 10^-11 unités internes, de sorte qu'il y a beaucoup de problèmes avec des arcs arbitraires. Normalement, si vous avez un arc de 90 degrés, centré sur (1.0,1.0) avec un rayon de 1", tout ira bien, mais si le rayon ne peut pas être exprimé exactement et avec juste le nombre de chiffres significatifs, ou si l'arc à un nombre étrange de degrès, alors les problèmes commencent avec EMC. Le mot R supprime tous ce désordre et il est beaucoup plus facile de travailler avec lui, de toute façon. Si l'arc est de plus de 180 degrés, R doit être négatif.
This unit borrows heavily from the published works of Tom Kramer and Fred Proctor at NIST and the cutter compensation web page of Jon Elson.
Papers by Tom Kramer and Fred Proctor
http://www.isd.mel.nist.gov/personnel/kramer/publications.html
http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274NGC_22.pdf
http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274VGER_11.pdf
Pages by Jon Elson
http://artsci.wustl.edu/~jmelson/
http://206.19.206.56/diacomp.htm
http://206.19.206.56/lencomp.htm
Dans EMC2, la machine ne revient pas à sa position initiale après un changement d'outil. Ce choix a été fait parce que le nouvel outil pourrait être plus long que l'ancien, rendant le retour de la machine à sa position initiale, impossible sans heurter la pièce.
Dans EMC2, les valeurs stockées dans les paramètres des points d'origine G28 et G30, des systèmes de coordonnées P1…P9 et du décalage G92 sont dans les unités définies dans le fichier ini. Cette différence existe parce que, sinon, la signification d'un emplacement changeait selon que G20 ou G21 était actif lorsque G28, G30, G10, L2, ou G92.3 était programmé.
Dans EMC2, les longueurs (compensation) et diamètres de la table d'outils sont seulement dans les unités du fichier ini. Cette différence existe parce que autrement, la longueur d'un outil et son diamètre aurait changé selon que G20 ou G21 aurait été actif dans les modes G43, G41, G42. Ce qui aurait rendu impossible, sans modification de la table d'outils, l'exécution de g-code avec la machine en unités non natives, même pour un g-code bien écrit (ligne en début avec G20 ou G21 et mêmes unités tout au long du programme).
G84 et G87 ne sont pas actuellement implémentés, mais serons peut être ajoutés à de futures versions d'emc2.
Quand G28 ou G30 est programmé avec un mot d'axe présent, EMC2 déplace cet axe seul. Il est commun sur les autres contrôles machine. Pour déplacer certains axes vers un point intermédiaire puis les déplacer tous vers un point pré-défini, écrire deux lignes de gcode:
G0 X- Y- (Les axes se déplacent vers le point intermédiaire)
G28 (Les axes se déplacent vers leurs origines)
M62 et M63 ne sont pas encore implémentés, mais serons peut être ajoutés à de futures versions d'emc2..
Comme décrit précédemment, G0 réduit les mouvements angulaires à moins d'un tour. Ce qui peut produire des trajectoires différentes de celles produites avec RS274NGC.
Ces codes ne sont pas définis dans RS274NGC.
La pointe de la sonde n'est pas rétractée après un mouvement G38.2. Ce mouvement de retrait sera peut être ajouté dans de futures versions d'emc2.
Ces codes ne sont pas définis dans RS274NGC
Ces codes ne sont pas définis dans RS274NGC
Ces codes ne sont pas définis dans RS274NGC
Les spécifications du RS274NGC disent “il est prévu que” toutes les longueurs d'outils soient positives. Toutefois, G43 fonctionne aussi avec des longueurs d'outils négatives.
La compensation de longueur d'outil G43 peut décaler l'outil dans les deux dimensions X et Z. Cette fonctionnalité est très utile sur les tours.
EMC2 permet la spécification d'une longueur d'outil calculée par G43.1 I K.
EMC2 permet la spécification dans le gcode d'un diamètre d'outil et sur un tour, de son orientation. Le format est G41.1/G42.1 D- L-, où D est le diamètre et L (si spécifié) est l'orientation de l'outil de tour.
Dans ngc, cela n'est pas permis. Dans EMC2, il règle la cote de longueur du décalage pour l'outil courant. Si aucun outil n'est chargé actuellement, c'est une erreur. Cette différence a été apportée pour que l'utilisateur n'ait pas à spécifier le numéro d'outil à deux endroits pour chaque changement d'outil et parce que c'est plus cohérent avec la manière de travailler de G41/G42 quand le mot D n'est pas spécifié.
EMC2 gère des machines avec un maximum de 9 axes en définissant un jeu supplémentaire de 3 axes linéaires nommés U, V et W.
1 Si le mouvement des composants mécaniques n'est pas indépendant, comme sur une machine hexapode, le langage RS274/NGC et les fonctions standards seront quand même utilisables, tant que le contrôle de bas niveau sait comment contrôler les mécanismes actuels pour produire le mouvement relatif de l'outil et de la pièce qui auraient été produits par des axes indépendants. C'est appelé, la cinématique. Retour
2 Avec EMC, le cas de la machine à portique XYYZ avec deux moteurs pour un axe est mieux traité par la cinématique que par un axe linéaire supplémentaire. Retour
3 Si les parallèlismes sont particuliers, le constructeur du système devra indiquer à quels sens de rotation correspondent horaire et anti-horaire. Retour
4 En réalité, le mouvement continue légérement après que l'état de la sonde ait basculé, à cause des contraintes d'accélération/décélération de la machine. Retour
5 Le terme anglais “gouging” indique une interférence entre l'outil et une partie finie de la pièce ou la paroi d'une cavité. Par extension, le terme est parfois repris pour une interférence entre le porte-outil ou la broche et la pièce. Retour