ci dessous un petit memento des différentes instructions et références pour le GCODE.
en dessous de la liste , lien vers le fichier PDF.
site de tutoriels techniques
ci dessous un petit memento des différentes instructions et références pour le GCODE.
en dessous de la liste , lien vers le fichier PDF.
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:
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.
le GCODE ne connais que 2 type de déplacement :
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 ..
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 .
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))
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
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:
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:
et le résultat serait le suivant :
la même commande en mode relatif avec les 2 lignes de code suivantes:
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:
certains code G et codes M simple sont utilisés dans des cas particuliers, ils sont regroupés dans cette section.
G17-G18-G19:
certaines fraiseuses sont équipées de têtes rotatives ou birotatives en bout de portique:
dans ce cas d’équipement , il est nécessaire de connaitre le plan de travail et/ou l’axe des cycles de perçage ou taraudage synchronisé de façon a travailler soit dans le plan soit sur l’axe adéquat. c’est à cela que servent les codes G17-G18-G19:
G17 : travail dans le plan XY et axe d’outil sur Z
G18 : travail dans le plan ZX et axe d’outil sur Y
G19 : travail dans le plan YZ et axe d’outil sur X
quand rien n’est spécifié , le travail est considéré dans le plan XY et l’axe outil suivant Z. il peut être également nécessaire d’utiliser ces instruction sur les fraiseuses CN classiques a tête d’usinage horizontale.
G20-G21:
ces 2 codes G permettent de préciser si les unités de travail sont en Pouces ou en mm. on place ce code en début de programme.
G20: travail/programme en pouces
G21 : travail/programme en mm
G94-G95:
ces 2 codes G permettent de préciser les unités d’avance. on place ce code en début de programme.
G94: avances en unités par minutes
G95 : avances en unités par tour
G94 est l’instruction la plus courante mais certaines operations necessitent des avances par tour par exemple:
G28:
le G28 permet un retour a la position d’origine. il est équivalent a la ligne GCODE suivante G01 X0 Y0 Z0.
M30-M99:
M30: indique la fin d’un programme.
M99: indique la fin d’un sous programme
%:
le caracter % indique le début et la fin d’un programme GCODE . son utilisation n’est pas obligatoire.
en programmation GCODE, il peut être intéressant de faire appel à des sous programmes. c’est l’instruction M98 qui permet cela , elle a en plus la possibilité d’incrementer un compteur de boucle via la variable L permettant de répéter plusieurs fois le sous programme.
la syntaxe d’une commande M98 avec boucle de comptage est la suivante:
M98 Pxxx Ln
Pxxx appelle le sous programme numero xxx et va répéter n fois cet appel au sous programme. quand le nombre de rappel aura ete fait , le programme GCODE passera a la ligne suivante apres le M98 Pxxx Ln
le sous programme xxx lui va va être écrit après le corps de programme principal et sera inclus entre 2 ligne de code de ce type :
Oxxx (numero du sous programme)
ligne de codes
M99 ( fin du sous programme Oxxx et retour au pgme principal
rien de mieux qu’un exemple concret pour illustrer ce principe, soit le programme ci dessous
reprenons le en version ligne a ligne commentée:
la boucle de sous programme 01000 a pour effet de tracer la figure suivante:
et le L4 de M98 P1000 L4 combinée au mode relatif a pour effet de répéter 4 fois la figure en partant de la dernière position de la boucle précédente soit au final la figure ci dessous:
voila un moyen simple de faire un programme de balayage de surface avec une fraise. il suffit de faire varier la valeur de Y et de X ( fonction du diamètre de fraise ) ainsi que le nombre de répétitions pour générer n’importe quelle fraisage de surface .
à partir de ce principe, on pourrait rajouter une boucle de sous programme qui décrémente le Z pour réaliser les prises de passes . voici ce que pourrait être le programme pour obtenir ce resultat:
la particularité ici est d’avoir 2 boucles imbriquées. la premiere instruction M98 P1000 L5 appelle 5 fois le sous programme 01000 qui lui meme appelle 4 fois le sous programme 02000. dans 01000 , une fois que O2000 a ete fait 4 fois , l’outil revient en arriere de 40mm et descends de 2 mm ce qui effectue la prise de passe. le pointeur de programme retourne dans le programme principal a l’instruction M98 P1000 L5 et recommence le cycle une seconde fois et ainsi de suite jusqu’a effectuer 5 fois ce cycle soit 5 passes de 2mm, ce qui fait une profondeur finale de 10mm.
vue ISO de la trajectoire outil ( en bleu) une fois le programme GCODE chargé dans le logiciel MACH3:
comme dans une multitude de langage de programmation , il est possible d’utiliser des variables dans un programme GCODE.
pour designer une variable on utilise le caracter “#” suivi d’un numero de variable puis la valeur de la variable .
petit exemple de programme pour illustrer cela :
on peut utiliser les opérations de base ( addition, soustraction, multiplication et division). cela permet de faire des programmes passe partout type cycle de fraisage ou il ne reste plus qu’a rentrer les valeurs de paramètres en début de programme pour obtenir différentes variantes de fraisages .
petit exemple du fraisage d’une rainure rectangulaire paramétrée:
l’ecriture du programme GCODE de fraisage paramétré pourrait ainsi être la suivante:
pour faire varier la taille et la position de la rainure , il n’y a plus qu’a changer les valeurs des variables sans avoir à refaire tout le programme.
NOTA: le GCODE à quelques limitations sur l’utilisation des variables:
#1 à #33 pour des variables locales
#100 à #199 pour des variables utilisateurs ( remises a zero apres RESET)
#500 à #999 pour des variables système (mémorisées après RESET ou coupure CNC).
outre les opérations de base, il est possible de faire des calculs évolués sur les variables. Dans la syntaxe GCODE, les parenthèse étant réservées aux commentaires , pour les formules , ou les calcul complexes nécessitant classiquement des parenthèses, ils faudra remplacer ces parenthèses () par des crochets [ ]. le GCODE reconnait egalment un certain nombre de fonctions mathematiques simples dont voici la liste:
pour des exemples de calculs sur les variables voir la rubrique EXEMPLES du chapitre sur le GCODE.