GCODE-pour quelle Machine

le GCODE est un langage utilisable par un très grand nombre de machines a commandes numériques.

petite précision initiale, une machine a commande numérique , est une machine piloté par un système automatique , en général un ordinateur , un calculateur ou un automate. donc une infinité de machines peuvent etre qualifiées de machines a commande numerique.

voici pèle mêle une liste non exhaustive de machines a commande numériques utilisant le GCODE:

les imprimantes 3D

les machines d’usinage ( tour et fraiseuses CN)

les machines de découpe laser

les machines de découpe a jet d’eau

les machine de soudure CN

les machine électroérosion a fil

les routeurs CNC

la liste pourrait être ainsi poursuivie longtemps , ce qu’il faut retenir c’est que le G CODE est abondamment utilisé dans l’industrie et donc sa connaissance et sa maitrise est un plus professionnel indiscutable.

ATTENTION: il est important de savoir qu’il n’y a pas un seul GCODE mais plusieurs version. en effet suivant les technologies et les machines , les constructeurs ont adapté et fait évolué le langage de façon a pouvoir l’adapter aux spécificités de leur machines, par exemple les imprimantes 3D .  De plus , suivant les soft que vous utiliserez soit pour la simulation de trajectoire, soit pour piloter la CN il vous faudra verifier quel type de commande GCODE sont acceptées par votre systeme. en effet, certains soft n’acceptent par exemple pas le GCODE parametré ou encore les sous programmes et boucles, par exemple GCODE sender, CANDLE ne savent pas gerer ces fonctions.

avant de choisir une machine et un soft d’exploitation bien verifier tout cela pour ne pas le regréter par la suite .

 

 

GCODE- le référentiel de travail

le GCODE est un langage de programmation destiné a déplacer des outils dans un espace de travail a 3 dimensions .

pour cela , il va utiliser le référentiel Cartésien classique utilisé en mathématique.

ce référentiel ,  est constitué de trois axes nommés, par convention,   X, Y et Z.  ces 3 axes perpendiculaires les uns aux autres vont permettre de matérialiser pour un point M donné, respectivement une direction pour les largeurs (X), une direction pour les profondeurs (Y)  et une direction pour les hauteurs(Z) .

dans ce repère , chaque axe est muni d’une échelle de position dont la valeur est identique sur chaque axe ( en général des mm ou des pouces suivant le système de mesure utilisé).

voici une représentation schématique en perspective du repère ainsi constitué et d’un point M positionné au hasard.

REMARQUE: par convention , les coordonnées d’un point dans le repère cartésien sont notées entre parenthésés, dans l’ordre X,Y puis Z . chaque coordonnée est séparée par une virgule. également par convention, dans tout système informatique, pour les nombres a virgule, la virgule est remplacée par un point . par exemple , le nombre 22,5 sera noté 22.5 cela évite les confusions entre les virgules de séparation des coordonnées et les fractions décimales.

pour illustrer la representation des coordonnées d’un point ,  regardons ce que cela peut donner avec quelques exemples de points dans le plan XY.  l’unite de référence dans le croquis ci dessous et le carreau=>  1 carreau=1 unité. les flèches sur les 2 axes X et Y indiquent le sens positif , l’intersection des 2 axes est l’origine du repère soit le point de coordonnée (0,0).

 

ORIENTATION DU REPERE SUR UNE CNC

sur les machines a commande numériques 3 axes , l’orientation de ce repère est en général la suivante (quand on est devant la machine):

  • axe X : sens positif de gauche a droite
  • axe Y : sens positif de devant vers l’arriere
  • axe Z: sens positif de bas en haut

pour aider a positionner visuellement ce repère on utilise  la règle dites des 3 doigts . on met sa main droite devant soi, paume en l’air, doigts ouverts et on replie l’annulaire et l’auriculaire puis on met le majeur en position verticale.

les doigts ainsi orientés matérialisent les 3 axes et le sens positif de ces axes dans la direction indiquée par le doigts concerné:

  • axe X + dans le sens du pouce
  • axe Y + dans le sens de l’index
  • axe Z+ dans le sens du majeur

ci dessous un petit croquis pour faciliter la compréhension

et un schéma des axes positionné sur une vue d’un routeur CNC 6040Z

certaines machines CN, en plus des axes X-Y et Z, ont  des axes rotatifs . ces axes rotatifs sont au nombre de 3 , chacun orienté par convention suivant les 3 axes du repère cartésien : on les appelle les axes A-B et C avec A sur l’axe X , B sur l’axe Y et C sur l’axe Z . le sens positif de chacun de ces axes ( representé sur le schema ci dessous) suit les règles d’orientation d’un repère cartésien.

les unités utilisées sur un axe rotatif sont bien entendu des unites angulaires avec comme base les degrés ( 1 tour = 360 degres)

plus concrètement , ci dessous la vue d’un routeur 6040 Z avec l’axe A en place sur la table et parallèle a l’axe X.

 

GCODE- éditeur pour GCODE

apprendre et connaitre le GCODE c’est bien , mais pour écrire un programme GCODE et le transformer en fichier lisible par une CNC ou un logiciel de test , il faut un éditeur ( traitement de texte pour GCODE).

l’éditeur le plus simple qui existe pour écrire du GCODE et sauvegarder le fichier est rapidement accessible et gratuit , c’est tout simplement le programme  NotePad de Windows, vous le trouverez dans les accessoires de Windows( Demarrer/tous les programmes/accessoires):

une fois démarré, si vous ne l’avez jamais utilisé , c’est tout simplement un editeur de texte ultra basique :

apres avoir tapé votre programme GCODE, vous pouvez le sauvegarder au format NC avec l’option classique File/save as.

puis ensuite bien veiller a rajouter l’extension  “.nc” derriere le nom du fichier et garder le type “Text Document(*.txt)” pour le fichier dans la case “save as”.

le format .nc est l’ extension généralement utilisée pour les extensions du nom de fichier des fichier GCODE.si le fichier doit etre utilisé avec un programme nécessitant un autre type d’extension rajouter les caracteres attendus pour votre programme .

 

GCODE-simulateur

écrire du GCODE c’est une chose , mais engager le programme sur la machine et constater trop tard après une casse outil ou un axe  CNC détérioré , qu’il y avait des coquilles n’est pas la meilleure façon de faire. il existe des outils de simulation qui permettent de faire des test “virtuels” de vos programmes GCODE.

voici quelques liens ou soft utiles pour ce genre de simulation:

SImulateurs en lignes gratuits:

les simulateur en ligne sont en général des simulateurs light qui ne font que de la simulation de trajectoire. n’en attendez donc pas de visualisation 3D de pièces finies, mais ils permettent déjà de pas mal dégrossir vos trajectoires, ils fonctionnent par copier coller de votre GCODE depuis votre éditeur vers la fenêtre de l’éditeur en ligne.

voici quelques exemples :

G-code simulator:         https://nraynaud.github.io/webgcode/

NC Viewer:         https://ncviewer.com/

attention ces 2 simulateurs sont limités en ce sens qu’ils n’acceptent pas le GCODE paramétré et ne savent pas exploiter ni les sous programmes ni les boucles. a reserver a des programmes simples uniquement

 

logiciels gratuits:

CAMotics:     http://camotics.org/

si vous utilisez Fusion 360 ( version gratuite étudiant ou startup) , le soft integre un simulateur d’usinage 3D:

https://www.autodesk.com/products/fusion-360/free-trial

 

 

 

 

GCODE-la syntaxe

le GCODE est un langage informatique a syntaxe simple. il est composé d’une succession de ligne de programme comportant des commandes qui décrivent des actions  a effectuer sur la base d’un code  a partir de lettres et de chiffres.

on distingue plusieurs type de commandes dont voici les principales lettres de codage:

  • les commandes de type G =>  liées a des fonctions préparatoires : en général des consignes de déplacements (linéaires, circulaires)
  • les commandes de type X/Y/Z/A/B/C=> liées aux coordonnées des déplacements sur les axes concernés
  • les commandes de type M=>  liées a des consignes spécifiques des machines( démarrage et arrêt de broches, lubrifications, etc..)
  • les commandes de type T=> liées aux outils ( Tools en anglais )
  • les commandes de type S=>  liées aux vitesses de rotation (Speed en anglais )
  • les commandes de type F=> liées aux vitesses de déplacemnt (Feed en anglais )

prenons un exemple très simple:

G00 X10 Y20  =>  cette ligne de programme  demande d’avancer en ligne droite en mode rapide (G00), jusqu’au point de coordonnée X10 et Y20.

LES TYPES DE DEPLACEMENTS

le GCODE ne connais que 2 type de déplacement :

  • le déplacement linéaire  (en ligne droite d’un point a un autre) avec 2 syntaxes de base:
    1. G00: déplacement linéaire en avance rapide
    2. G01:  déplacement a vitesse lente paramétrée ( valeur a définir dans le programme)

 

  • le déplacement circulaire ( arc de cercle d’un point a un autre) avec également 2 syntaxes de base:
    1. G02: déplacement circulaire dans le sens horaire (ClockWise en anglais)
    2. G03: déplacement circulaire dans le sens antihoraire (CounterClockWise en anglais)

LES AXES DE DEPLACEMENTS

en plus des axes classiques X-Y-Z du repère cartésien, le G CODE sait commander  des axes supplémentaires ce sont les axes A-B-C qui en général sont des axes “tournants” ( indexeurs ou plateaux tournants).

il existe egalement des axes U-V-W souvent utilisés par des portiques , des tourelles porte outils, etc ..

LES VITESSES

pour fixer une vitesse d’avance, on utilise la lettre F suivie d’un nombre qui caractérise la vitesse en mm/mn (millimetres par minutes) .

pour fixer une vitesse de rotation broche, on utilise la lettre S suivie d’un nombre qui caractérise la vitesse de rotation en Tr/mn (tours par minutes) .

 

EXEMPLES :

sur le principe de ces concepts de base, prenons un exemple:

G01 F300 X25 Y55 Z12 

si l’on prend dans l’ordre les consignes ont pourrait remplacer chaque code par du texte en francais:

GO1: avance en ligne droite  a vitesse  parametrée

F300: vitesse d’avance de 300 mm/mn

X25 Y55 Z12 : jusqu’au point de coordonnées X=25mm, Y=55mm et Z=12mm

traduit en bon francais cela donnerait donc la consigne suivante:: ” avance en ligne droite a la vitesse de 300 mm/mn en direction du point de coordonnées x25mm – y55mm – z12mm”

c’est en empilant ce type de lignes de code que l’on va faire exécuter une trajectoire complexe a l’outil.

exemple de trajectoire: partant du principe que l’outil est positionné au point d’origine (0,0), pour réaliser la trajectoire ci dessous a une vitesse d’avance fixe de 300 mm/mn:

voici le GCODE correspondant:

les concepteurs du GCODE ont fait en sorte de rendre l’écriture des programmes la plus simple possible. ils ont donc fait en sorte d’eviter de devoir écrire systématiquement les redondances , par exemple , il n’est pas nécessaire de répéter systématiquement le F300 dans chaque ligne . il suffit de le prendre comme une consigne simple et en écrivant le programme comme suit on obtient le même résultat:

 une fois la vitesse d’avance fixée a 300 mm/mn , plus besoin de le repréciser tant que la vitesse n’a pas besoin d’être changée.

pour faciliter la lecture  d’un programme, on peut numéroter les lignes de programme. la numérotation utilisée pour les lignes sera du type Nxx. de façon a pouvoir éventuellement intercaler des instruction ultérieurement sans devoir changer les numéros des lignes, on prends l’habitude de numéroter de 10 en 10. ainsi l’exemple précédent devient:

autre point important , comme pour le F300 , on peut eviter de répéter les coordonnées des axes qui ne changent pas . dans l’exemple ci dessous , vous constater que rien n’est jamais précisé concernant Z . cela veut dire que le Z ne bouge pas jusqu’a ce qu’une ligne de programme avec une valeur Z soit rencontrée.

de la même façon un code G qui ne change pas , ici le code G01 a chaque ligne, n’a pas besoin d’être répété. on pourrait ainsi simplifier l’écriture de l’exemple ainsi :

en effet , une fois le G01 rencontré en ligne 20 , plus besoin de le repeter en ligne 30 -40 – 50 et 60 . l’interpréteur GCODE sait qu’il faut continuer a appliquer un G01.

commentaires dans un programme=> comme pour un programme informatique, il peut etre necessaire de commenter un programme GCODE, pour cela il suffit de rajouter le commentaire entre parenthese soit en fin de ligne d’une ligne de commande pour commenter cette ligne de commande soit seul sur une ligne pour annoncer un bloc de programme. les caracteres ainsi transcrits entre parentheses, ne seront pas pris en compte par le logiciel de pilotage de la machine.

Exemple:

N10 F300     ( vitesse d’avance parametrée a 300 mm/mn)

Nous avons fait le tour des principales notions et principes a connaitre concernant  la syntaxe d’une ligne de commande et d’un programme en GCODE .

 

 

 

 

 

 

 

 

GCODE-G00/G01

les codes G00 et G01 permettent de programmer des trajectoires lineaires, donc des droites. ces 2 instructions ont exactement la meme action a la difference pret que l’une se fait a vitesse maxi de la machine et l’autre a vitesse programmée ( il faudra préciser une vitesse d’avance).

G00: avance en ligne droite a vitesse max du point courant au point de destination

G01 : avance en ligne droite a vitesse programmée du point courant au point de destination

la syntaxe de chacune est du type :

G01  Xn Yn Zn

ou XnYnZn sont les coordonnées du point a atteindre .

pour illustrer , prenons un petit exemple simple en 2 dimensions dans le plan XY (croquis ci dessous): l’objectif étant de partir du point A(5,7) pour aller au point B(9,3)  .

suivant le type de code G la ligne GCODE va être la suivante:

pour une avance a vitesse max:

G00 X9 Y3

pour une avance a vitesse de 200mm/mn:

G01  F200 X9 Y3

NOTA: la vitesse d’avance maxi est la vitesse configurée dans le logiciel de pilotage de la CN ( Mach3 par exemple) . le GCODE n’a pas besoin de connaitre cette vitesse , c’est le logiciciel de pilotage qui en recevant l’instruction G00 applique automatiquement la vitesse max configurée.

voici maintenant l’exemple d’un petit cycle carré programmé en empilant quelques lignes GCODE. l’objectif est , partant du point 1 de faire le tour par les points 2, 3 et 4 pour revenir au point 1 a vitesse constante de 30 mm/mn.

le point courant au demarrage etant le point (3,3) le programme sera le suivant ( on numerote les ligne et on specifie la vitesse d’avance en debut de programme):

N10 F30                         ( vitesse d’avance parametrée a 30mm/mn)

N20 G01 X3 Y9        ( avance au point (3,9))

N30 GO1 X9 Y9       ( avance au point (9,9))

N40 G01 X9 Y3       ( avance au point (9,3))

N50 G01 X3 Y3       ( avance au point (3,3))

comme expliqué dans le chapytre BASES, l’ecriture du programme peut etre simplifiée de la façon suivante:

N10 F30                         ( vitesse d’avance parametrée a 30mm/mn)

N20 G01 X3 Y9         ( avance au point (3,9))

N30 X9                           ( avance au point (9,9))

N40 Y3                           ( avance au point (9,3))

N50 X3                           ( avance au point (3,3))

GCODE-G02/G03

les codes G02 et G03 permettent de programmer des trajectoires en arcs de cercles. ces 2 instructions se distingues de par le sens de rotation de l’arc de cercle concerné.

G02 : permet de faire des arcs de cercle dans le sens horaire (CW = Clock Wise en anglais).

G03 : permet de faire des arcs de cercle dans le sens anti horaire (CCW= Counter Clock Wise en anglais).

la syntaxe de chacune est du type :

G02 Fnnn  Xn Yn Zn Inn Jnn Knn

ou XnYnZn sont les coordonnées du point a atteindre et  InnJnnKnn les coordonnées du centre de rotation exprimées en coordonnées relatives par rapport au point courant (point de départ). la coordonnée I est suivant l’axe X, la coordonnée J suivant l’axe Y , et la coordonnée K suivant Z .

pour illustrer , prenons un petit exemple simple en 2 dimensions dans le plan XY (croquis ci dessous): l’objectif étant de partir du point A(5,7) pour aller au point B(9,3) dans le sens horaire en tournant autour du point bleu à la vitesse d’avance de 200mm/mn . la ligne GCODE va être la suivante:

G02 F200 X9 Y3 I0 J-4

quelques explications sont nécessaire , le point de départ A est le point courant ( position actuelle de l’outil) . le point de destination est le point B(9,3). c’est donc les coordonnées de B qui vont apparaitre dans la ligne de commande. le point de rotation (I,J) doit être spécifié en coordonnées relatives par rapport au point courant A(point de départ). refaisons le croquis précédent en faisant figurer le repère IJ pour aider a la compréhension :

dans le cas présent, le point de rotation (rond bleu)  est sur la même coordonnée que A sur l’axe I donc la distance sur I est nule . par contre le point de rotation est 4 cases en dessous de A donc suivant J il faut descendre de 4 unités , il est donc a une coordonnées relative de A de -4 suivant J . d’ou les valeurs rentrées dans l’instruction:

G02 X9 Y3 IO J-4

dans l’exemple suivant nous allons tourner dans le sens anti horaire mais ce coup ci en partant du point A vers le Point B . ce sera donc une instruction G03 qu’il faudra .

si comme précédemment on rajoute le repère IJ sur le point courant pour aider a la comprehension, le croquis devient :

les coordonnées du point bleu ( centre de rotation) dans le repere IJ sont (-4,0) , l’instruction GCODE du mouvement a 200mm/mn sera donc:

G03 F200 X5 Y7 I-4 J0

en synthese , bien retenir que les coordonnées du point de destinations X/Y/Z sont en coordonnées absolues ( sauf si instruction GCODE spécifique=> voir code G correspondant) , mais les coordonnées I/J/K du centre de rotation sont en coordonnées relatives par rapport au point courant ( point de départ).

prenons un dernier exemple un peu plus compliqué pour enfoncer le clou une dernière fois .

dans l’exemple ci dessous pour aller de A a B a 300 mm/mn l’instruction est:

G03 F300 X-7 Y-1 I3 J-4

GCODE-G90/G91

les codes G90 et G91 sont des codes qui permettent de préciser quel type de coordonnées de déplacements sont utilisées , a savoir coordonnées absolues ou coordonnées relatives . le mode de déplacement en coordonnées relatives est aussi appelé mode incrémental .

les programmes Gcodes utilisent majoritairement les déplacements en coordonnées absolues mais par sécurité , même en mode absolu il vaut mieux systématiquement préciser le mode choisis (G90)  en début de programme .

le mode de déplacement relatif est simple dans son principe , les coordonnées du point a atteindre sont exprimées en valeur de décalage suivant les axes par rapport au point courant. le trajet vers le point suivant est donc systématiquement exprimé en valeur de décalage par rapport au point précedent.

prenons 2 exemples pour expliquer et illustrer la différence entre déplacement en coordonnées absolues et coordonnées relatives .

premier exemple simple:

faire la trajectoire ci dessous à 200 mm/mn, en partant du point d’origine (0,0).

le programme en coordonnées absolues est le suivant:

en mode incrémental ( coordonnées relatives) , le programme devient:

deuxième exemple:

prenons la trajectoire ci dessous ( exemple utilisé dans le chapitre bases/syntaxe)

en mode coordonnées absolues , a vitesse de déplacement de 200mm/mn, si on part du point d’origine, le programme est le suivant:

passons maintenant en mode incrémental ( coordonnées relatives), le programme devient:

 

GCODE-G15/G16 mode cartésien / polaire

la programmation GCODE se fait généralement en coordonnées cartésiennes. mais le GCODE offre la possibilité de travailler en coordonnées polaires.

le système de coordonnées polaire , utilise un systeme de coordonnées basé sur le rayon  R entre l’origine et le point et l’angle A entre l’axe des X et la droite formée par l’origine et le point considéré . les angles positifs vont dans le sens trigonométrique ce qui correspond au  sens antihoraire (CCW = Counter Clock Wise en anglais).

ainsi  en coordonnées polaires les points 1 et 2 du schéma ci dessous auront pour coordonnées 1 ( R1,A1) et 2 (R2,A2)

pour spécifier un mode de coordonnées polaires en GCODE ou utilise le code G16.

pour revenir au système cartésien après un passage en polaire on utilisera le code G15.

en mode polaire (G16) on conserve le X et le Y comme lettres de valeur de coordonnées sauf que le X matérialise le rayon R et le Y l’angle A .  et les coordonnées des points 1 et 2 du croquis sont donc 1(X1,Y1°) et 2(X2,Y2°) ou X et Y sont respectivement les rayons et angles .

comme en coordonnées cartésiennes les Modes G90 (coordonnées absolues) et G91 (coordonnées relatives) s’appliquent.

prenons un exemple: supposons que nous sommes au point courant de coordonnées (10,0°) en coordonnées polaires  et que nous souhaitons aller en ligne droite en coordonnées absolues (G90) et mode  travail au point de coordonnées (5,60°) . les lignes GCODE seraient:

  • G90 G16
  • G01 X5 Y60

et le résultat serait le suivant :

 

la même commande en mode relatif avec les 2 lignes de code suivantes:

  • G91 G16
  • G01 X5 Y60

donneraient le résultat du croquis ci-dessous:

 

l’intérêt des coordonnées polaires concerne principalement toutes les opérations centrées sur un point donnée ( perçage circulaires, fraisage d’hexagones ou polygones réguliers, etc..).

exemple:

le petit programme ci dessous fait le fraisage d’un 6 pans sur un rayon de 20mm.

petite vidéo  du résultat dans CUTVIEWER MILL: