Parcours d’outil (CNC-3)

image_pdf

On parle de parcours d’outil dans ce troisième article qui fait partie d’un ensemble d’article décrivant les commandes de machines-outil, les CNC.

      1. Régulation de mouvement en machine-outil.
      2. Présentation de trois systèmes de pilotage (un ancien, un astucieux et un open source).
      3. Le parcours d’outil, le générateur de trajectoire.
      4. Les correcteurs et les ajustements.

Rappel

Rapide retour sur les articles précédents, surtout pour ceux qui arrivent ici sans les avoir parcourus. On y parle de régulation de position et de systèmes de pilotage, le but est de contrôler le déplacement d’un chariot sans que la position finale (le but, la consigne) ne soit dépassée. Pour ce faire, on dispose d’un système qui a, au minimum, un retour d’information sur la position réelle du chariot et qui, de plus, travaille en temps réel. Voici comment nous avons un peu arbitrairement séparé les éléments constitutifs d’une régulation de position, deux schémas résumant les notions entrevues précédemment.

système de pilotage, schéma général

Et maintenant une représentation de ce que pourrait être un système de pilotage temps réel pour une régulation de position.

Parcours outil, résumé précédent article


Le parcours d’outil

Sur une machine-outil, nous avons toujours un déplacement relatif d’un outil par rapport à un objet à façonner (ou l’inverse). Quelle que soit la technique, laser, coupe, soudure, ajout, etc., on retrouve ce couple objet/outil avec leurs déplacements relatifs. Le document servant à définir ce mouvement est très souvent appelé “parcours d’outil” sans que cela induise immanquablement que l’outil se déplace effectivement. Le terme de “document de commande” ou “fichier de commande” serait, à mon avis, plus approprié, mais l’habitude ………

Le terme d’outil est aussi un peu trompeur, mais il faut le comprendre comme l’élément effectuant le travail effectif (rayon laser, couteau, arc électrique, dépose, etc.) sur l’objet souhaité (la pièce).

De quoi se compose une machine-outil ? Fondamentalement de trois éléments : la machine, l’outil et la pièce (l’objet).

Parcours d'outil, schéma CNC

Ne pensez pas uniquement aux mouvements rectilignes d’une coulisse de fraiseuse, prenez un bras robotique avec un arc de soudure, une plieuse de tôle, etc. Vous aurez toujours cette configuration machine/pièce/outil, j’ai mis pièce et outil au singulier, mais ce n’est pas toujours le cas. Notez aussi, que souvent, l’outil est changeable, mais pas dans l’exemple ci-dessous (0’47), ça c’est juste pour me contredire 😆

Parcours d'outil, schéma CNCMaintenant que signifie un parcours d’outil ? Comme nous l’avons vu c’est le mouvement relatif de l’outil par rapport à la pièce (ou l’inverse), ce déplacement relatif (point 3) dépend évidemment de l’outil et de la pièce. Mais essayons d’imaginer que nous n’avons aucun renseignement à leurs sujets. Cela veut dire que nous allons décrire le mouvement que fera le point 1 par rapport au point 2 (ou l’inverse).

On comprend qu’à ce stade le parcours d’outil est complètement dépendant de l’architecture, de la géométrie de la machine-outil. Donc, un premier fait s’impose, un parcours d’outil n’a de sens que pour une machine-outil particulière !

Remarque : Comment passer d’une étude de fabrication depuis un modèle 3D (CAOFAO) à un parcours d’outil dédié à une machine-outil spécifique ? Il est nécessaire d’avoir un traducteur, FAO ⇒ parcours d’outil, que les professionnels appellent un post-processeurs. Je ne m’étends pas plus sur le sujet qui mérite au minimum un article !

Parcours d'outil, schéma CAO-CNC

Il y a parcours et parcours ?

Regardons ce document, le fichier d’instruction, le “parcours d’outil” que la CNC, plus exactement le système de pilotage, va recevoir, que contient-il ? Uniquement les mouvements de la machine ? Non, bien évidemment, par une simple observation de la vidéo de soudure ci-dessus, vous remarquez qu’au minimum il faut enclencher et déclencher la soudure à des endroits précis, donc il faut le signaler à la machine ! Comment ? Par le document “parcours d’outil” avec un code spécifique indiquant par exemple : “en telle position/enclencher”, “en telle position/déclencher”. Deuxième élément à retenir :

Le document “parcours d’outil” contient, outre les mouvements nécessaires, beaucoup d’autres instructions et paramètres nécessaire aux travaux souhaités.

Les mouvements

Laissons de côté les instructions spécifiques et intéressons nous aux trajectoires proprement dites. Entre l’outil fabriquant une pièce et l’objet en question, il y a souvent (presque toujours) un déplacement relatif entre ces deux éléments. Pour effectuer ce mouvement relatif chaque machine “bouge” différemment et ce qui lui est transmis, via le parcours d’outil, doit permettre ce mouvement relatif.machine 2 axes Pour être clair et simplifier cette analyse prenons le cas d’une machine avec deux axes orthogonaux (perpendiculaires), voyons comment ce mouvement relatif peut être réalisé. Prenons le cas ou la pièce est fixée sur le plateau gris et l’outil sera lui fixe, Le plateau gris peut se déplacer verticalement (axe Y) et la pièce verte qui porte le plateau gris, elle peut se déplacer horizontalement (axe X). Ce type de montage est classique en machine-outil mais c’est un choix totalement arbitraire, ce qui compte pour nous ce sont les instructions de déplacement.

parcours d'outil, exemple basique

Donc pour notre exemple le déplacement du point 1 au point 2, représentera ce déplacement relatif outil/pièce

On image que le système de pilotage connaît le point de départ, le point 1. Ce qui est donc attendu c’est les valeurs “distance X” et “distance Y” et également la vitesse de ce déplacement. Dans le cas de notre machine nous (le parcours d’outil en fait) aurons trois valeurs à définir pour que le système de pilotage puisse faire effectuer cette trajectoire.

Donc une information de type : “distance X” , “distance Y”, “vitesse déplacement” devra se trouver dans le document parcours d’outil.

Un mouvement relatif c’est deux types de paramètres, position et vitesse ! Attention, soyons clair, c’est une assertion valable que dans la très grande majorité des cas de machines-outils industrielles.

Pour la suite de l’article, nous admettrons que le parcours d’outil est généré par un ordinateur avec un logiciel de FAO, même si d’autres voies sont possibles (manuelles, la CNC,  des modules spécialisés,….)

La FAO permet de définir ces mouvements relatifs, on pourrait penser que c’est cela qui est envoyé à la machine. Mais, pour des raisons historiques, techniques ou autres que je connais pas, les éléments transmis à la machine (au système de pilotage) ne sont pas complètement adapté à la machine et à sa technologie. Donc, la FAO génère des documents qui tiennent compte de la machine, mais en partie seulement. C’est le troisième point d’un parcours d’outil. Prenons un exemple : la vitesse que l’on fixe quelle est elle ? 

La vitesse

Reprenons le déplacement précédent et regardons ce qui est transmis par le parcours d’outil : “distance X” , “distance Y”, “vitesse déplacement”.

générateur de trajectoire, exemple

Pour le système de pilotage, il va y avoir un problème, car il doit envoyer aux amplificateurs des moteurs X et Y la consigne et fixer la vitesse, mais il ne connaît que la vitesse globale, ce qui normal car ce nous voulons c’est le mouvement relatif entre l’outil et la pièce, la géométrie et les axes de la machine ne sont pas de notre ressort !

générateur trajectoire, schémaSans faire de savants calculs, on comprend instinctivement que l’axe X va devoir se déplacer plus rapidement que l’axe Y, car la distance X est plus grande que celle de l’axe Y. Le système de pilotage doit donc immanquablement calculer les consignes de vitesses pour chaque amplificateur/variateur en tenant du paramètre vitesse transmis par le parcours d’outil.

Autre exemple, une courbe

Si la trajectoire entre l’outil et la pièce, dite de forme, est définie par une courbe spécifique (spline, courbe de Bezier  ou NURBS) qu’en est-il en réalité ? Généralement la FAO coupe la courbe souhaitée en petits bouts et transmet les points à suivre à la machine. Cette dernière n’a aucune vision de la forme souhaitée, mais va essayer de définir une “trajectoire idéale” (surtout pour maintenir la vitesse) qui englobera les points transmis. Certains pilotes de machine peuvent accepter des définitions de courbes, mais cela est rare, généralement les éléments de base d’une trajectoire sont la ligne droite et l’arc de cercle, pour les machines outils industrielles. Essayons au travers d’un exemple de comprendre le problème :

CAO-FAO-CNC

parcours d'outil, courbure

Voilà ce que va recevoir le système de pilotage de la CNC. Pour pouvoir maintenir une vitesse le long de cette trajectoire, il est nécessaire de connaître, pour le système de pilotage, la position de plusieurs points après le prochain point à atteindre pour anticiper les mouvements machines. Par exemple au passage des points P2 et P4, on constate que la vitesse de l’axe X sera toujours positive, tandis que celle de l’axe Y elle changera de sens. En ne tenant pas compte des points suivants, le système de pilotage stoppera le mouvement sur chaque points intermédiaires de la trajectoire, ce qui n’était l’idée première lors de l’élaboration de l’objet en CAO.

Pour conclure, ce type de mouvement relatif, la CAO défini une trajectoire mathématiquement et la CNC reçoit une série de points qu’elle devra reconstituer en trajectoire continue ! Ce n’est pas très optimal, mais c’est la situation actuelle !

Comme vous le savez certainement, tous les systèmes sont imparfaits (frottement, inertie, puissance, température, etc.) et donc mieux on anticipe une variation, meilleure sera la précision de la trajectoire réelle. Ce problème d’anticipation est primordial pour assurer des mouvements machines rapides et fluides.

Le G-code

Ce code G-code (ou codeG) est encore très utilisé pour les machines-outil, c’est le langage de programmation du  parcours d’outils. Ce langage est très vieux (∼ 1960) et c’est un type de codage destiné à être interprété. Il utilise des blocs de commande à réaliser les uns après les autres. Si au début des commandes numériques, ce principe avait plus d’avantages que d’inconvénients maintenant c’est l’inverse 😥 . 

Ce langage très souvent interprété ce qui pose en soit pas mal de problème pour intégrer des fonctions métier. En effet, il induit une coupure dans la transmission des informations numériques avec une grosse perte d’information (voir l’exemple ci-dessus de la courbe). On cherche donc à le remplacer, comme les initiatives STEP-NC (ou en anglais STEP-NC) ou , mais pour l’instant rien a abouti et l’avenir du G-code n’est malheureusement pas encore vraiment menacé ….. 😯 ?

Certains fabricants propose des interfaces conversationnelles sur ou pour leurs CNC, afin de palier ces pertes d’informations et améliorés les travaux (Siemens, Mazak, Fanuc, Selca, etc), mais il n’y a aucune unité entre elles, ce sont tous des systèmes propriétaires, leurs diffusions sont difficiles.  

Pour avoir quelques idées supplémentaires (en anglais et français) sur le G-code ou code-G, voir ISO-6983, NIST RS274NGCsite 1, site 2, site 3 ou site 4

Le générateur de trajectoire

Comme vous l’avez compris dans le système de pilotage de la CNC, un générateur de trajectoire est nécessaire pour compléter, définir les mouvements et les paramètres exacts que la machine doit appliquer pour obtenir l’objet désiré. Couplé à divers capteurs, ce générateur devient un élément clé des machines et sa puissance et ses possibilités augmentent sans cesse. De plus comme nous le verrons dans le prochain article, avec certaines techniques, il a encore “d’autres responsabilités”.

parcours d'outil, schéma exemple

Un petit schéma exemple pour visualiser un cas de son utilité primaire.

Le parcours d’outil demandé (transmis) est divisé en plusieurs parties. On retrouve la notion de ligne, bloc propre au G-code. Nous aurons donc pour les trois premiers blocs (lignes), une partie rectiligne (1) suivit d’un arc de cercle (2) puis un autre mouvement rectiligne (3). Vous trouverez classiquement ce type de déplacement en machine-outil. Pour une machine avec deux axes orthogonaux, il sera nécessaire, au minimum, de calculer des points intermédiaires pour réaliser l’arc de cercle. Donc du travail pour le générateur de trajectoire.

Exemple G-code

Pour finir et pour Imprimante 3Drendre notre présentation plus réaliste, voici un exemple de parcours d’outil (en G-code RS274D) reçu par une machine. J’ai choisi un fichier qui pilote une imprimante 3D de type FDM, les mouvements possibles de cette machine : les trois axes orthogonaux X, Y et Z et le déroulement du fil E .

Avant la ligne surlignée, il n’y a pas de travail effectif, pas de pièce commencée, pas de dépose de plastique “utile” (et encore la notion “utile” prête à caution). La ligne surlignée demande le déplacement des axes machines au point (X123.691, Y82.278) et de dérouler 6.9845 mm de fil de plastique. L’axe Z n’étant pas mentionné sur cette ligne (on parle de bloc) cela signifie qu’il ne bouge pas. La vitesse du déplacement de la buse de dépose par rapport à la pièce est défini par le paramètre F1800. Notez que la vitesse du déroulement du fil n’est pas fixé dans ce bloc (ligne). Autre remarque, les vitesses sont fixes pendant les mouvements définis par la ligne (bloc).  

Notez que c’est seulement petit bout du fichier, normalement il fait 6737 lignes.

/**
;FLAVOR:Repetier
;TIME:739
;Generated with Cura_SteamEngine master
M190 S60
M104 S205
M109 S205
G21 ;metric values
G90 ;absolue positioning
M82 ;set extruder to absolue mode (Prusia)
G28 X0 Y0 ;Home
G28 Z0
G1 Z15.0 F6000 ;Move the platform down 15mm
G92 E0
G1 F200 E3 ; extrude 3mm of feed stock
G92 E0
;LAYER_COUNT:40
;LAYER:0
M107
G1 F1500 E-6.5
G0 F3600 X67.692 Y82.278 Z0.3
;TYPE:WALL-OUTER
G1 F1500 E0
G1 F1800 X123.691 Y82.278 E6.9845
G1 X123.691 Y138.277 E13.96901
.....
G1 X67.692 Y88.278 E26.78734
G1 F1800 X118.14 Y108.133 E1909.13733
G0 X117.964 Y108.309
G0 F7200 X118.14 Y109.547
G1 F1800 X123.24 Y104.447 E1909.73705
...
G1 F1800 X122.388 Y137.826 E1922.53068
G0 F7200 X122.388 Y137.277
;TIME_ELAPSED:739.543901
G1 F1500 E1916.03068
M107
M104 S0
M140 S0
G1 E-1 F300
G91 ; relative positioning
G1 Z+10 E-5 F3000
M84
M104 S0
;End of Gcode
 */

Conclusions

J’espère que vous avez une meilleure vision de ce représente les instructions entrant dans une machine-outil et le traitement nécessaire que cette dernière devra effectuer avant de réaliser l’objet souhaité. Il y a encore beaucoup de d’autres éléments à tenir compte (changement outil, forme du brut et de l’outil, changement d’ambiance, etc.), mais comme premier pas c’est suffisant. 🙂 

Est-il raisonnable d’avoir un document “parcours d’outil” standard, ou tout au moins un codage des instructions, pour toutes les machines et toutes les technologies ? Difficile de répondre autant par l’affirmative que par la négative. Ce qui est sûr, c’est le besoin de synthétiser les travaux à effectuer. Les paramètres et les données transmises sont de plus en plus nombreuses et complexes afin d’y incorporer les données métiers. Quelque part l’automatisation poussée (pour ne pas parler IA) des travaux est en jeu. Ce qui sûr, c’est que le document “parcours d’outil” actuel défini avec le G-code ne donne pas entièrement satisfaction (un euphémisme), mais pour l’instant on n’a rien d’autre de vraiment utilisable !

Entre le modèle CAO de l’objet à réaliser et sa fabrication, il y a énormément de données “métier” et pour l’instant un automatisme de cette transmission et incorporation est encore très aléatoire. De plus, je passe volontairement sous silence le fait que l’élaboration du modèle CAO, inclus intrinsèquement sa fabrication. J’irais même plus loin, la plus grande partie du temps on ne construit virtuellement que ce qui pourra être fabriqué, tout au moins dans l’industrie des objets.

J’espère que vous avez compris que pour avoir la machine qui lit votre idée et la transforme toute seule en une réalité, ….. il faut encore attendre.