#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass book \begin_preamble \usepackage{a4} \end_preamble \language frenchb \inputencoding default \fontscheme bookman \graphics default \float_placement h \paperfontsize 10 \spacing single \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Fichier d'outils et compensations \layout Section Fichier d'outils \layout Standard Les longueurs et diamètres d'outils peuvent être lus dans un fichier d'outils (voir la section \begin_inset LatexCommand \ref{sub:-Fichier-d'outils} \end_inset ) ou provenir d'un mot spécifié pour activer la compensation d'outil. \layout Section Compensation d'outil \layout Standard 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. \layout Standard 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. \layout Section Compensation de longueur d'outil \begin_inset LatexCommand \label{sec:Compensation-longueur-d'outil} \end_inset \layout Standard 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: \layout Standard 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. \layout Standard 2. Si G49 est programmé, USE_TOOL_LENGTH_OFFSET(0.0) est appelée, tool_length_offse t 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é. \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 1 height "1pt" width "60col%" collapsed false \layout Standard Programme de test de longueur d'outil. \layout Standard Tool #1 is 1 inch long. \layout Standard \family typewriter N01 G1 F15 X0 Y0 Z0 \newline N02 G43 H1 Z0 X1 \newline N03 G49 X0 Z0 \newline N04 G0 X2 \newline N05 G1 G43 H1 G4 P10 Z0 X3 \newline N06 G49 X2 Z0 \newline N07 G0 X0 \end_inset \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename length1.png width 2in subcaptionText "Length Offset" \end_inset \end_inset \layout Standard 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. \layout Section Compensation de rayon d'outil \begin_inset LatexCommand \label{sec:Compensation-rayon-d'outil} \end_inset \layout Standard \begin_inset Note collapsed true \layout Standard By Jon Elson \end_inset \layout Standard 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 \begin_inset Quotes eld \end_inset virtualiser \begin_inset Quotes erd \end_inset 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. \layout Standard 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 à \begin_inset Quotes eld \end_inset gauche \begin_inset Quotes erd \end_inset du profil à usiner et outil à \begin_inset Quotes eld \end_inset droite \begin_inset Quotes erd \end_inset du profil à usiner. Ce qui doit être interprété à gauche ou à droite du profil à usiner en suivant l'outil le long du profil. \layout Subsection Compensation de rayon d'outil, détails \layout Standard \begin_inset Note collapsed true \layout Standard By Tom Kramer and Fred Proctor \end_inset \layout Standard 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. \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 1 height "1pt" width "50col%" collapsed false \layout Standard 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. \end_inset \layout Standard \added_space_bottom 0.3cm \align left \begin_inset LatexCommand \label{figure:7} \end_inset \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename radius_comp.png width 2.5in \end_inset \end_inset \layout Standard 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é. \layout Subsubsection* Instructions de programmation \layout Itemize Pour activer la compensation de rayon d'outil, programmer soit, G41 (pour maintenir l'outil à gauche du profil à usiner) soit, G42 (pour maintenir l'outil à droite du profil). Dans la figure \begin_inset LatexCommand \ref{figure:7} \end_inset , par exemple, si G41 était programmé, l'outil devrait tourner en sens horaire autour du triangle et dans le sens contraire si G42 était programmé. \layout Itemize Pour désactiver la compensation de rayon d'outil, programmer G40. \layout Itemize Si G40, G41, ou G42 est programmé dans la même ligne qu'un mouvement d'axe, la compensation de rayon sera activée ou désactivée avant que le mouvement ne soit fait. Pour que le mouvement s'effectue en premier, il doit être programmé séparément et avant. \layout Subsubsection* La valeur de D \layout Standard 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. \layout Subsubsection* Table d'outils \layout Standard 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 \begin_inset Quotes eld \end_inset Fichiers d'outils \begin_inset Quotes erd \end_inset pour savoir comment remplir ces fichiers. \layout Subsubsection* Deux type de contour \layout Standard L'interpréteur contrôle la compensation pour deux types de contour: \layout Itemize 1) Le contour donné dans le code NC correspond au bord extérieur du matériau après usinage. Nous l'appellerons "contour sur le profil du matériau". \layout Itemize 2) Le contour donné dans le code NC correspond à la trajectoire suivie par le centre d'un outil de rayon nominal. Nous l'appellerons "contour sur le chemin d'outil". \layout Standard 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. \layout Subsubsection* Contour sur le profil du matériau \layout Standard 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). \layout Standard Exemple 1 : \layout Standard 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 . \layout Standard \family typewriter N0010 G41 G1 X2 Y2 (active la compensation et fait le mouvement d'entrée) \layout Standard \family typewriter N0020 Y-1 (suit la face droite du triangle) \layout Standard \family typewriter N0030 X-2 (suit la base du triangle) \layout Standard \family typewriter N0040 X2 Y2 (suit l'hypoténuse du triangle) \layout Standard \family typewriter N0050 G40 (désactive la compensation) \layout Standard 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. \layout Subsubsection* Contour sur le chemin d'outil \layout Standard 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 correctem ent si un outil en dessous de son diamètre nominal est utilisé. \layout Standard 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. \layout Standard Exemple de contour sur le chemin d'outil \layout Standard 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. \layout Standard \family typewriter \size small N0010 G1 X1 Y4.5 (mouvement d'alignement) \newline N0020 G41 G1 Y3.5 (active la compensation et premier mouvement d'entrée) \newline N0030 G3 X2 Y2.5 I1 (deuxième mouvement d'entrée) \newline N0040 G2 X2.5 Y2 J-0.5 (usinage le long de l'arc en haut du chemin d'outil) \newline N0050 G1 Y-1 (usinage le long du côté droit du chemin d'outil) \newline N0060 G2 X2 Y-1.5 I-0.5 (usinage de l'arc en bas à droite) \newline N0070 G1 X-2 (usinage de la base du chemin d'outil) \newline N0080 G2 X-2.3 Y-0.6 J0.5 (usinage de l'arc en bas à gauche) \newline N0090 G1 X1.7 Y2.4 (usinage de l'hypoténuse) \newline N0100 G2 X2 Y2.5 I0.3 J-0.4 (usinage de l'arc en haut à droite) \newline N0110 G40 (désactive la compensation) \layout Standard 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. \layout Subsubsection* Erreurs de programmation et limitations \layout Standard Les messages en rapport avec la compensation de rayon d'outil, délivrés par l'interpréteur sont les suivants: \layout Enumerate Impossible de changer les décalages d'axes avec la compensation de rayon d'outil \layout Enumerate Impossible de changer d'unité avec la compensation de rayon d'outil \layout Enumerate Impossible d'activer la compensation de rayon d'outil en dehors du plan XY \layout Enumerate Action impossible, la compensation de rayon d'outil est déjà active \layout Enumerate Impossible d'utiliser G28 ou G30 avec la compensation de rayon d'outil \layout Enumerate Impossible d'utiliser G53 avec la compensation de rayon d'outil \layout Enumerate Impossible d'utiliser le plan XZ avec la compensation de rayon d'outil \layout Enumerate Impossible d'utiliser le plan YZ avec la compensation de rayon d'outil \layout Enumerate Coin concave avec la compensation de rayon d'outil \layout Enumerate Interférence de l'outil avec une partie finie de la pièce avec la compensation de rayon d'outil \begin_inset Foot collapsed true \layout Standard Le terme anglais \begin_inset Quotes eld \end_inset gouging \begin_inset Quotes erd \end_inset 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. \end_inset \layout Enumerate Mot D sur une ligne sans mot de commande G41 ni G42 \layout Enumerate Index de rayon d'outil trop grand \layout Enumerate Le rayon de l'outil n'est pas inférieur au rayon de l'arc avec la compensation de rayon \layout Enumerate Deux G-codes du même groupe modal sont utilisés. \layout Standard Pour certains de ces messages, des explications sont données plus loin. \layout Standard 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é. \layout Standard \begin_inset Minipage position 1 inner_position 1 height "1pt" width "40col%" collapsed false \layout Standard \align left 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. \end_inset \layout Standard \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename radius_comp_error.png width 3in \end_inset \end_inset \layout Standard 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. \layout Standard 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û... \layout Standard Si le numéro de slot programmé par le mot D est supérieur au nombre d'emplacemen ts disponibles dans le carrousel, un message d'erreur sera affiché. Dans l'implémentation actuelle, le nombre d'emplacements maximum est de 68. \layout Standard 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. \layout Subsection* Premier mouvement \layout Standard \added_space_top 0.3cm \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 1 height "1pt" width "40col%" collapsed false \layout Standard 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. \end_inset \layout Standard \added_space_top 0.3cm \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename radius_comp_straight.png width 3in \end_inset \end_inset \layout Standard \added_space_top 0.3cm \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename radius_comp_arc.png width 3in \end_inset \end_inset \layout Standard 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. \layout Standard 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 compensatio n de rayon d'outil, mais leur utilisation serait vraiment très inhabituelle. \layout Standard 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. \layout Standard 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. \layout Subsubsection* Programmation des mouvements d'entrée \layout Standard 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. \layout Subsubsection* Méthode générale \layout Standard 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: \layout Standard \family typewriter \size small N0010 G1 X1 Y4.5 (mouvement d'alignement vers le point C) \newline N0020 G41 G1 Y3.5 (active la compensation et fait le premier mouvement d'entrée vers le point B) \newline N0030 G3 X2 Y2.5 I1 (fait le second mouvement d'entrée vers le point A) \layout Standard Voir la figure 11. La figure montre les deux mouvements d'entrée mais pas le mouvement d'alignemen t. \layout Standard 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. \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 1 height "1pt" width "40col%" collapsed false \layout Standard 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. \end_inset \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename radius_comp_entry.png width 3in \end_inset \end_inset \layout Standard 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 compensat ion 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é. \layout Subsubsection* Méthode simple \layout Standard 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. \layout Standard 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 \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 1 height "1pt" width "40col%" collapsed false \layout Standard \family typewriter \size small N0010 G41 G1 X2 Y2 (active la compensation et fait le mouvement d'entrée) \layout Standard 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é. \end_inset \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename radius_comp_entry_simple.png width 3in \end_inset \end_inset \layout Subsubsection* Autres points où est exécutée la compensation de rayon d'outil \layout Standard 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. \layout Subsubsection* Algorithmes pour compensation de rayon d'outil \layout Standard 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. \layout Standard Données relatives à la compensation de rayon d'outil: \layout Standard 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. \layout Subsection* Exemples de Jon Elson \layout Standard 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 compensati on 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. \layout Standard Les commandes sont: \layout Standard G40 - Annuler la compensation de rayon d'outil \newline G41 - Activer la compensation, outil à gauche du profil \newline G42 - Activer la compensation, outil à droite du profil \layout Standard 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. \layout Standard \family typewriter \size small N10 G01 G40 X-1.3531 Y3.4 \newline N15 F10 G17 G41 D4 X-0.7 Y3.1875 (ligne d'entrée) \newline N20 X0. Y3.1875 \newline N40 X0.5667 F10 \newline N50 G03 X0.8225 Y3.3307 R0.3 \newline N60 G02 X2.9728 Y4.3563 R2.1875 \newline N70 G01 X7.212 Y3.7986 \newline N80 G02 X8.1985 Y3.2849 R1.625 \newline N90 G03 X8.4197 Y3.1875 R0.3 \newline N100 G01 X9. \newline N110 G40 X10.1972 Y3.432 (ligne de sortie) \newline N220 M02 \layout Standard 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) \layout Standard \added_space_bottom 0.3cm \align left 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. \layout Standard \added_space_bottom 0.3cm \align left \begin_inset Minipage position 1 inner_position 0 height "0pt" width "50col%" collapsed false \layout Standard \begin_inset Graphics filename partdraw1.png width 5in \end_inset \end_inset \layout Standard 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. \layout Section Source d'informations à propos de la compensation d'outil \layout Standard 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. \layout Standard Papers by Tom Kramer and Fred Proctor \newline http://www.isd.mel.nist.gov/personnel/kramer/publications.html \newline http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274NGC_22.pdf \newline http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274VGER_11.pdf \layout Standard Pages by Jon Elson \newline http://artsci.wustl.edu/~jmelson/ \newline http://206.19.206.56/diacomp.htm \newline http://206.19.206.56/lencomp.htm \the_end