GCODE-Codes G et M spécifiques

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:

  • filtetage sur un tour a commande numerique => l’avance outil doit etre synchronisée avec la rotation broche
  • filetage synchronisé sur une fraiseuse CN

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.

GCODE- M98:sous programmes et boucles

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:

GCODE- #nn : des variables dans le GCODE

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.

 

GCODE-perçage paramétré

premier exemple simple d’utilisation de paramètres pour créer des modules d’usinage paramétrés ; le cas d’un perçage avec cycle de débourrage.

le perçage avec débourrage consiste a percer non pas en une seule course de descente du foret mais a faire des incréments de passes avec retrait du foret pour « débourrer » les copeaux qui s’accumulent dans le trou d’où le nom de cycle de « débourrage ».

nous allons faire un cycle de perçage parametré avec débourrage paramétré.

petit croquis pour schématiser l’objectif du programme avec les variables qui seront utilisées, la piece (cadre rouge) est vue du dessus , l’origine piece est fixée dans le coin en bas a gauche, le plan Z zero est fixé sur le dessus de la pièce:

le cycle de perçage sera le suivant :

  1. positionnement au point (0,0,20)
  2. déplacement rapide au point de perçage (#1,#2,20)
  3. descente vitesse travail a Z=0
  4. passage en mode relatif pour pouvoir faire des boucles a parametres identiques
  5. initialisation d’une variabl#3 a 1pour incrémenter un compteur de nbre de cycle pour calculer/incrémenter  la profondeur de débourrage [ #3 x #33]. la variable #33 est calculée en divisant la profondeur finale #11 par le nombre de débourrage voulu #12
  6. appel sous programme 1000 et boucle de valeur #12 ( nombre de débourrage) avec descente en Z de [ #3 x #33] en mode travail puis remontée  de la même valeur en vitesse rapide( le mode relatif permet d’utiliser la même valeur systématiquement). a chaque boucle on incrémente #3 de 1 pour le calcul de profondeur suivante.
  7. une fois les #12 cycles effectués , repassage en coordonnées absolues pour remonter a la cote Z =5 ( 5 mm au dessus de la surface) en mode rapide.

voici le programme résultant:

lien vers le fichier programme GCODE format ZIP: perçage parametre.ZIP

et une petite video du resultat en simulation CUTVIEWER mode acceléré:

GCODE-perçage polaire paramétré

a partir du programme de  perçage avec cycle de débourrage paramétré (exemple précédent) , il est relativement simple de concevoir un programme de perçage polaire  en utilisant les coordonnées polaires. ici l’objectif est également de paramétrer le nombre de trous et le rayon de perçage.

petit croquis pour schématiser l’objectif du programme avec les variables qui seront utilisées, la pièce (cadre rouge) est vue du dessus , et  le centre du cercle de perçage est supposé être a l’origine du référentiel pièce. le  plan Z zero est fixé sur le dessus de la pièce:

pour faire ce cycle de perçage , il faut faire 2 sous programmes en boucle imbriquée.

1 premier sous programme O1000 qui va gérer une boucle de répétition de positionnement angulaire de perçage en utilisant les coordonnées polaires soit une commande GCODE du type:

  • G16 (coordonnées polaires)
  • G01 X#30 Y#n   ou #30 est le rayon de perçage et Y#n un angle de perçage calculé a partir d’une compteur incrémenté par la boucle d’appel du sous progamme.

le sous programme O1000 appelle le sous programme O2000 qui lui réalise une boucle de cycle de débourrage .

ci dessous le programme complé proposé pour réaliser la fonction:

lien vers le fichier GCODE (ZIP): perçage polaire parametre debourrage.ZIP

video de la simulation sur CUTVIEWER:

GCODE-fraisage surfacique paramétré

Dans cet exemple nous allons développer un projet de Module de fraisage surfacique paramétré.

l’idée est la suivante : proposer un programme  pour fraiser une surface plane rectangulaire de longueur et largeur donnée avec une fraise de diamètre donnée.

a priori , les premiers paramètres sont:

#11 #12: longueur X et largeur Y de la surface à fraiser

#20 : diametre de fraise

#30 #31: profondeur a fraiser et nombre de passes

un petit croquis en vue de dessus pour fixer les idées.

la stratégie de fraisage sera la suivante:

  • surface piece a Z=0
  • un fraisage en avalant par passes d’une valeur du 1/4 de largeur de fraise maxi suivant l’axe X
  • en tournant autour de la surface de l’extérieur vers l’intérieur pour maintenir le fraisage en avalant.
  • la fraise démarre en dehors de la piece d’une valeur de 5mm et ressort de l’autre coté de la meme valeur

un petit croquis pour éclairer le principe: les trajectoire d’usinage( flèches bleues) se font en avance travail, les trajectoire hors pièce (flèches rouges) se font à vitesse rapide.

position des points d’entrée et sortie dans les cas extrêmes:

Xmax=#11 + 5 +(#20/2) + 5 +(#20/2) = 10 + #11 + #20

Ymax=#12 + (#20/4) + (#20/4) = #12 + (#20/2)

Principe du programme:

pour simplifier la programmation , on va travailler en mode relatif et donc choisir un point d’origine permettant des boucles a variables identiques . ce point d’origine est  la position de fraise en bleu dans le schéma ci dessus. position qui est dans l’axe de symétrie de la pièce sur Y. les trajectoire aller et retour suivant X auront donc une position symétrique de même valeur Yn mais positive ou négative suivant que l’on est dans le sens aller ou retour .

la valeur Yn sera calculé a partir de Ymax et du nombre de passe. ce nombre de passes  déterminera le nombre d’incrément de cycle et la valeur à retrancher à Ymax pour chaque cycle.

le point de départ selon X est toujours avec une valeur a 0 , et le point de fin de course X toujours constant et égal à Xmax.

calcul du nombre de passes sur 1/2 largeur de piece:

1/2 largeur de piece = #12/2

valeur d’une passe = diametre fraise/4 = #20/4

nombre de passes = (#12/2) / (#20/4) = 2*(#12 / #20)

le nombre de passes trouvé va service d’incrément pour le nombre de répétition de boucle du programme GCODE, ce nombre doit être un entier. le résultat de la division de #12 par #20 a de grande chance d’être un nombre a virgule nous allons donc créer une variable entière qui sera calculée a partir de la valeur entière supérieur du résultat , il faut donc utiliser la fonction mathématique FUP[arg].

nous allons donc créer 3 variable supplémentaire : #1 ,  #2 et #3

variable #1: incrément de passe=(diamètre fraise/4)

#1 = #20/4

variable #2: nombre d’itérations

#2 = FUP [2*(#12 / #20)]

variable #3: compteur d’iteration pour le calcul de Yn

et pour eviter les formules compliquées , nous allons créer 2 variables #5 et #6 pour Xmax et Ymax/2

#5 = Xmax = 10 + #11 + #20

#6 = Ymax/2 = (#12 + (#20/2))/2

pour la gestion du nombre de prise de passe en Z il faut rajouter un parametre:

#33=#30/#31

une fois tout cela fixé , voila le programme complet:

et un lien vers le  fichier GCODE au format ZIP:    fraisage plan parametree.ZIP

et le résultat en simulation sur CUTVIEWER MILL:

MACH3-le Port parallèle

Aujourd’hui, la majeure partie des utilisateurs de MACH3 utilisent des PC avec port parallèle appelé aussi port LPT.

un port LPT se reconnait facilement en regardant l’arrière du PC . c’est en général un connecteur large à 25 broches et de couleur rose comme sur la photo ci dessous.

pour pouvoir utiliser MACH3 avec ce type de ports Parallèle, il faut avoir un driver de port installé. Pour cela , vous devez impérativement veiller a ce que le systeme d’exploitation  de votre PC soit  une version Windows 32 Bits (XP-32bit, vista-32bits ou Window7-32bits).

 il est important de savoir que le port parallèle n’est pas géré par les systèmes d’exploitation WINDOWS 64 bits .

donc si vous installez MACH3 sur un PC avec port parallèle mais tournant sur une version de Windows 64 bits , cela ne marchera pas car le système d’exploitation ne reconnaitra pas le port LPT meme monté en carte d’extension PCI. votre PC sera donc incapable de communiquer avec votre CNC .

trouver l’Adresse Hexa du Port LPT:

pour la configuration de MACH3 (voir vignettes spécifique), vous aurez besoin de l’adresse Hexa du port LPT. pour trouver cette adresse hexa , appliquez la méthode décrite pas à pas ci dessous:

  1. Via  le menu Démarrer de Windows, sélectionner le  Panneau de configuration.
  2. Double-cliquez sur l’icône Système.
  3. Sélectionnez le Gestionnaire de périphériques (Device Manager)
  4. dans la liste qui s’affiche, double-cliquez sur la rubrique Ports (COM & LPT1) puis encore sur Port imprimante (LPT1).
  5. Enfin sélectionnez l’onglet Ressources dans la fenêtre qui s’affiche.
  6. notez la première Plage d’entrée/sortie. Vous allez trouver en général par exemple : 0378 – 037F.

 

L’adresse de base est ici 378 (en hexadécimal).

dans MACH3 il faudra saisir comme adresse : 0x378 ( voir tuto MACH3-Configurations primaires).

MACH3-les différents écrans

voici une petite présentation des différents écrans qui s’affichent en fonction de l’onglet sélectionné dans la barre d’onglets haute:

nous reviendrons sur l’utilisation des ces différents écrans dans la rubrique « MACH3 – utilisation » du tutoriel.

 

onglet « Program Run Alt-1« : c’est l’écran qui s’affiche a l’ouverture de MACH3. il  est principalement dédié au lancement de programme avec quelques configurations initiales dont remise a zero des axes , mise en reference, etc…

 

Onglet « MDI Alt2« : MDI est l’abréviation anglaise de Manual Data Input . cet écran sert principalement a l’entrée de commande GCODE a la main . pour cela on utilise la fenêtre de saisie à droite de « Input ». cet écran comporte aussi un mode apprentissage (touche « start teach ») et un mode éditeur.

 

Onglet « ToolPath Alt4« : cet ecran est l’affichage en mode « tool path » soit « trajectoire outil ». il est dédie a la visualisation de trajectoires , soit avant de lancer le programme soit en cour de travail .

 

Onglet « Offsets Alt5« : cet ecran permet la saisie des Offsets (décalages) utilisés pour certaines fonctions ( palpage outils, origines pieces, coordonnées machine, etc…).

 

Onglet « Settings Alt6« : cet écran sert a saisir un certain nombre de parametres (position d’encodeurs, poulies de reduction de vitesses, etc..)

 

Onglet « Diagnostics Alt7« : ici on va trouver l’etat de certains parametres et des entrées sorties , c’est un ecran permettant de faire un certain nombre de diagnostics en cas de probleme.

 

 

 

MACH3-la manette JOG

un des outils les plus utilisés avec MACH3 est la manette JOG. la manette JOG de MACH3 est l’équivalent « virtuel » d’une manette JOG de CNC.

manette JOG pour CN

une manette JOG est un petit boitier muni de boutons, d’un écran et d’une manivelle électronique. la manette JOG sert a déplacer manuellement les axes. pour cela on choisis l’axe a déplacer en appuyant sur le bouton concerné, on choisis une unité/echelle de déplacement, puis on tourne la manivelle ce qui fait avancer l’axe concerné . la rotation dans un sens fait avancer d’un coté et la rotation dans l’autre sens fait avancer dans l’autre sens.

le JOG virtuel de MACH3 fonctionne de la même façon mais en cliquant avec la souris du PC sur les zones écrans concernées.

pour faire apparaitre la manette virtuelle, il faut actionner la touche TAB du clavier du PC.

celle ci apparait ensuite dans la partie droite de l’écran.

contrairement a une vraie manette la manette virtuelle n’a pas de bouton tournant mais des flèches avec les sens des axes concernés.

un nouvel appui sur la touche TAB fait disparaitre la manette JOG.  concernant ses différentes fonctions,  nous verrons tout cela plus en détail  dans la rubrique utilisation.

MACH3-Configurations primaires

étape préliminaire à un bon fonctionnement de mach3, la configuration du soft, des entrées sorties et des moteurs d’axes sont une base indispensables avant de démarrer l’utilisation de mach3 connecté à votre CNC.

les principales étapes minimales de configuration   sont dans l’ordre de priorité:

  1. Configuration des ports et de la vitesse du Noyau.
  2. configuration des unités de travail.
  3. configuration des signaux de sorties des broches de moteurs d’axes.
  4. configuration des signaux d’entrées.

ces différentes configurations sont accessibles dans le menu du haut de l’ecran via l’option « Config »:

qui une fois développé quand on clique dessus avec la souris donne :

 

reprenons ces différents Items point par point et de façon plus détaillée :

Configuration des ports et de la vitesse du noyau:

il faut sectionner l’option « Ports and Pins » du menu « Config ».

la fenêtre ci dessous apparait , il faudra renseigner les zones en rouge de l’onglet « port Setup and Axis selection« .

en général , les valeurs de la copie d’écran ci dessous sont les bonnes .

le port LPT standard sur un PC est en général le port d’adresse 0x378.  si le port ne fonctionne pas , voire la vignette « MACH3 – Port parallèle » . la page de tuto explique comment trouver l’adresse du port parallèle (LPT) d’un PC.

de la même façon , la vitesse noyau est en général fixée automatiquement a l’installation et a l’ouverture de mach3. elle détermine la fréquence maximale des signaux envoyés sur les broches moteur et donc la vitesse max des moteurs pas a pas. si des troubles de fonctionnement sont constatés par la suite, réduire cette vitesse au minimum (25000Hz) et refaire des tests. une fois les valeur saisie , valider en cochant sur « Apply » en bas a droite:

puis sauvegarder vos données de config:

cette manipulation de sauvegarde des paramètres  est a faire systématiquement après toutes les modifications ( donc aussi sur celles décrites ci dessous).

Configuration des Unités de travail des axes:

il faut sectionner l’option « Select Natives Units » du menu « Config ».

puis au message qui apparait cliquer sur OK

puis choisir son systeme d’unité ( pour les moteurs d’axes)

Configuration des Signaux de sorties:

il faut sectionner l’option « Ports and Pins » du menu « Config ».

puis dans l’onglet »Motor Outputs » completer ls données correspondant a chaque axe utilisable :

il faut cocher « enable » sur tous les axes de votre machine ( dans le cas présent  4 axes : X-Y-Z mais aussi un 4° axe tournant A) et préciser le numero des  broches step et dir de chaque moteur d’axe sur le connecteur LPT ( voir la doc technique de votre carte d’axe ou lire directement sur votre carte si c’est possible).

2 exemples de cartes 5 axes low cost Chinoises:

pour savoir comment cocher   les colonnes Dir Low ou Step Low, cela se fera avec des essais . en première approximation laisser comme sur l’image plus haut et si les axes n’avancent pas dans le bon sens , changer la coche dans la colonne « Dir Low Active » cela changera le sens de rotation du moteur d’axe correspondant et donc le sens de déplacement de l’axe.

Configuration des Signaux d’entrées:

à la première utilisation de mach3 , le signal d’entrée le plus important a configurer est le signal du bouton d’arrêt d’urgence => en général , le gros Bouton Rouge sur un boitier Jaune qui déclenche l’arrêt de la machine quand on appuie dessus.

pour cela ,  il faut sectionner l’option « Ports and Pins » du menu « Config ».

puis dans l’onglet »Input Signal » qui s’affiche il faut descendre en utilisant le bouton a droite

jusqu’à rencontrer la ligne « Estop » (Emergency Stop). ici il faut cocher la colonne Enable , et comme pour les moteurs d’axe , préciser le numero de broche du port LPT sur lequel est connecté le  bouton d’arrêt d’urgence . ici il faudra choisir la coche ou pas de la colonne Active Low en fonction du résultat des essais.

penser a sauvegarder les paramètres .