Go Down

Topic: Initiation CNC (Read 2273 times) previous topic - next topic

icare

Apr 17, 2014, 10:34 pm Last Edit: Apr 18, 2014, 09:21 am by icare Reason: 1
Bonsoir,
Je vais essayer, en fonction du temps disponible, d'apporter quelques principes liés aux Machines à Commande Numérique par Calculateur (MOCNC) ou plus communément CNC.
Je ne suis pas un spécialiste de la commande numérique mais un passionné de longue date par le fraisage assisté par ordinateur.
Le domaine de l'usinage est vaste et il n'est pas possible, pour moi, d'aborder toutes les facettes de ces techniques, d'autres le feront bien mieux que moi.
Saison 1 - épisode 1 ;)
Le principe de base est de pouvoir se repérer dans l'espace donc je vais commencer par les référentiels ou système d'axes.
On distingue principalement 3 systèmes d'axes, à savoir :
- les axes primaires,
- les axes secondaires,
- les axes rotatifs.
Le mieux est encore d'utiliser un petit schéma.

Les axes primaires
Le système normal de coordonnées est un trièdre orthonormé direct (X, Y, Z). Pour certain la règle des 3 doigts de la main droite mais je n'aime pas cette représentation car j'ai toujours peur que cela se termine en b... .'.......
Le sens positif est celui qui provoque un accroissement de dimension.
Dans la plupart des cas :
- l'axe Z est celui de la broche,
- l'axe X est le déplacement ayant la plus grande amplitude,
- l'axe Y forme avec X et Z le trièdre de sens direct.
Les axes secondaires
les axes U, V et W sont parallèles à X, Y et Z donc des mouvements de translation.
On ne les utilisera plus par la suite car non utilisé par les amateurs.
Les axes rotatifs
Les axes A, B et C définissent les mouvements de rotation autour des axes X, Y et Z.
Normalement ce système de coordonnées est conforme à la norme en vigueur.
Remarque : la description ci-dessus correspond à la majorité des machines amateurs mais ils existent tellement de machines différentes que le référentiel peut être adapté aux exigences particulières du matériel.

Si des points vous paraissent obscures ou erronés n'hésitez pas à me le signaler.
à suivre...
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

icare

Bonjour,
Dans le topic précédent nous avions définit le repère d'évolution de notre CNC virtuelle. Tout repère tridimensionnel n'a d'existence que si l'on a un point de repère.
Saison 1 - épisode 2
On distingue un certains nombres de points caractéristiques sur une CNC (variable en fonction de la machine et/ou du constructeur), à savoir :

- origine mesure (OM) : Cela correspond à l'origine physique des axes de la CNC. Cette origine est représentée par une butée détectée par un capteur électrique lors de l'initialisation ou d'une prise d'origine machine (POM),

- origine machine (Om) : C'est la référence des déplacements de la machine (origine absolue de la CNC sur chaque axe). Souvent OM et Om sont confondues.

- origine programme (OP) : Indépendante du système de mesure. l'OP est l'origine du trièdre de référence qui sert à à établir le programme.

- origine pièce (Op) : Indépendante du système de mesure. L'Op est définie par un point de la pièce sur lequel il est possible de se positionner. OP et Op peuvent être confondues.

- décalage d'origine pièce (PREF) : PREF représente la distance entre OM et Op. On aura donc un PREF par axe (PREFX, PREFY et PREFZ).

- décalage d'origine programme (DEC1) : DEC1 représente la distance entre Op et OP. On aura donc un DEC1 par axe (DEC1X, DEC1Y et DEC1Z).

Un petit croquis bien plus explicite.



Rq : Si OP et Op sont confondues les différents DEC1 seront nuls

Si des points vous paraissent obscures ou erronés n'hésitez pas à me le signaler.
à suivre...
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

icare

Bonjour,
Avec les 2 topics précédents, nous avons comment se déplacer et se repérer dans le volume d'action de notre CNC. Nous abordons aujourd'hui les différents ordres qui commandent le système.
Saison1 - épisode3
Le programme pièce de la machine à commande numérique est une liste d'instructions et de données transmises à l'interpréteur de codes qui pilote la machine.
Un programme est composé de blocs et de mots qui sont soumis à des règles ou format.



Les codes envoyés à la CNC sont communément connus sous le vocable de "g-code". Ce type codage se retrouve nottament dans les fichiers Gerber pour la fabication des circuits imprimé, dans les fichiers EXCELLON pour le perçage, dans les fichiers de pilotage des imprimantes 3D, etc...

- mot :
Un mot définit une instruction ou une donnée transmise au système de commande, on a :
- des mots définissant des dimensions,
- des mots définissant des fonctions.
Le format du mot définit ses caractéristiques. le nombre de caractères d'un mot est inférieur à 118.



Exemple 1 : mot définissant une dimension.



Exemple 2 : mot définissant une fonction.



- bloc :
Un bloc ou séquence définit une ligne d'instruction composée de mots codés à transmettre au dispositif de commande.



Exemple 3 : Bloc définissant la mise en rotation de la broche



Exemple 4 : Bloc définissant une trjectoire selon l'axe Z



Si des points vous paraissent obscures ou erronés n'hésitez pas à me le signaler.
Prochaine épisode - le "g-code" - à suivre...
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Heloderma-kris

j'attend la suite avec impatience! :smiley-mr-green:

icare

Bonjour,
Des membres du forum sont-ils encore intéressés par cette rubrique ?
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Heloderma-kris

oui biensur , j'ai toujours pas avancer sur mon projet CNC mais c'est avec plaisire si tu a d'autre chose! :smiley-mr-green:

weetoz

Bonjour Icare,

très intéressante ta rubrique, même si c' est un projet pour plus tard en ce qui me concerne,
je pense qu' une doc en français sur e site est une bonne chose.

Merci pour le partage.

cannard

Bonjour Icare,

En effet c'est très intéressant comme rubrique, et pour ma part ça me permet de me rappeler mes cours de DUT :smiley-mr-green:

D'ailleurs j'ai gardé mes cours, si ça t'intéresse, n'hésite-pas à me demander en MP ;)

P.S : j'espère que les contrôleurs DIY sont d'avantages standardisés que les Machine Outils, car de mémoire il y avait pas mal de différences dans le g-code d'une marque à l'autre...

the-noobuino

très intéressante cette rubrique surtout pour les gens comme comme moi qui veule construire une imprimante 3D et qui sont des noobs avec arduino mais ayant quand meme des bases en électrotechnique ,j'attend la suite ,le g-code ma l'air compliqué à première vus ^^

icare

#9
May 06, 2015, 12:37 am Last Edit: May 06, 2015, 12:47 am by icare Reason: complément
Bonsoir,
Saison1 - épisode4 : GCode
Bienvenue dans la nébuluse du GCode.
Sous le vocable GCode se cache beaucoup de choses, se terme générique regroupe souvent le gCode, le nCode, le oCode, le mCode, etc...

Les différents mots.

Un mot est une lette majuscule ou minuscule, autre que N, suivi d'un nombre réel. On sépare, la plupart du temps les lettres et les chiffres par un blanc pour améliorer la lecture mais ce n'est pas une obligation.
Les principales lettres utilisées sont :

Mot            Désignation

 F     Vitesse d'avance travail
 G     Fonction générales
 I     Décalage en X pour les arcs et dans les cycles G87
 J     Décalage en Y pour les arcs et dans les cycles G87
 K     Décalage en Z pour les arcs et dans les cycles G87
       Distance de déplacement par tour de broche avec G87
 L     Nombre de répétition dans un cycle de poche
 M     Fonction auxiliaire
 N     Numéro de ligne (pm) car n'est pas un mot au sens "gcodienne"
 P     Temporisation utilisée dans G4
       Mot clé utilisé avec G10
 R     Rayon d'arc ou plan de retrait
 S     Vitesse de rotation de la broche
 T     Numéro d'outil
 X     Axe X de la machine
 Y     Axe Y de la machine
 Z     Axe Z de la machine


Il en existe d'autres mais que nous n'aborderont pas ici (A, B, C, D, H, Q, U, V, W).
Les plus curieux pourront toujours consulter la notice RS274-NGC v3 du NIST.

Remarques sur les mots G et M :

- Normalement les GCodes se trouvent dans la plage G00 à G99 mais, dans la pratique, on va jusqu'à G999
- Normalement les MCodes se trouvent dans la plage M00 à G199 mais, dans la pratique, on va jusqu'à M999

L'imagination des constructeurs et l'explosion des imprimantes 3D ont engendré une multiplication de Mxxx et Gxxx pour leur application particulière.
Je vous rassure dans la pratique, le nombre de fonctions mises en oeuvre est bien plus faible que les 1000 Mcodes et les 1000 Gcodes. Les fonctions vraiment utilisées dans les CNC amateurs peuvent se réduire à quelques dizaines.
A titre d'exemple, GRBL traite 40 Gcodes et 10 Mcodes.

Avant d'aborder les fonctions préparatoires et auxiliaires, il faut préciser les points suivants :

Fonction préparatoire G

Fonction modale : Une fonction G modale appartient à un groupe de fonctions G qui se révoquent mutuellement. On ne peut pas travailler en mm et en pouces simultanément, de même que l'on ne peut pas utliser les coordonnées absolues et relatives simultanément, etc...

Fonction G non modale : Une fonction G non modale est uniquement valide dans le bloc où elle est programmée.

Fonctions incompatibles : Une fonction G est incompatible si sa programmation avec une aure n'est pas autorisée.

Groupes modaux des Gcodes


  Signification du groupe                               Mots G

Groupe 0  - Codes non nodaux            G04, G10, G28, G30, G53, G92, G92.1, G92.2, G92.3
Groupe 1  - Mouvements                  G00, G01, G02, G03, G33, G38.x, G73, G80, G81,
                                        G82, G83, G84, G85, G86, G87, G88, G89
Groupe 2  - Choix du plan de travail    G17, G18, G19, G17.1, G18.1, G19.1
Groupe 3  - Mode de déplacement         G90, G91
Groupe 4  - Mode de déplacement en arc  G90.1, G91.1
Groupe 5  - Mode de vitesse             G93, G94, G95
Groupe 6  - Unités machine              G20, G21
Groupe 7  - Compensation de rayon       G40, G41, G42, G41.1, G42.1
            outil      
Groupe 8  - Compensation de             G43, G43.1, G49
            longueur d'outil
Groupe 10 - Plan de retrait cycle       G98, G99
            de perçage
Groupe 12 - Systèmes de coordonnées     G54, G55, G56, G57, G58, G59, G59.1, 59.2, G59.3
Groupe 13 - Mode contrôle de            G61, G61.1, G64
            trajectoire
Groupe 14 - Mode contrôle vitesse       G96, G97
            broche
Groupe 15 - Mode diamètre/rayon         G07, G08
            sur les tours


Fonction auxiliaire M

Fonction modale : Une fonction M modale appartient à un groupe de fonctions M qui se révoquent mutuellement. On ne peut pas, par exemple faire tourner la broche dans le sens horaire et anti-horaire en même temps.

Fonction M non modale : Une fonction M non modale est uniquement valide dans le bloc où elle est programmée.

Fonction "avant" : Une fonction M "avant" est exécutée avant les déplacements programmés dans le bloc.

Fonction "après" : Une fonction M "après" est exécutée après les déplacements programmés dans le bloc.

Groupes modaux des Mcodes


  Signification du groupe                               Mots M

Groupe 4  - Type de fin de programme    M00, M01, M02, M30, M60
Groupe 5  - On/off I/O                  M6 Tn
Groupe 6  - Appel outil                 M6 Tn
Groupe 7  - Commande de broche          M03, M04, M05, M19
Groupe 8  - Arrosage                    M07, M08, M09
                                        (attention : M07 et M08 peuvent être actifs en même temps)
Groupe 9  - Boutons de correction       M48, M49, M50, M51
            de vitesse
Groupe 10 - Définis par l'utilisateur   M100 à M199


Commentaires.

Des commentaires peuvent être ajoutés aux lignes de Gcodes pour clarifier le programme. Ils peuvent être placés sur une ligne en les encadrant par des paranthèses ou bien occuper tout le reste de la ligne à partir d'un point virgule.

Bonnes patiques.

- Utiliser le bon nombre de décimales : 3 chiffres après la virgule pour les mm et 4 pour les pouces.
 Les contrôles de tolérance des arcs sont faits pour 0.001 et 0.0001 selon les unités,
- Utiliser les espaces de manière cohérante,
- Utiliser de préférence le format centre pour les arcs,
- Placer les codes nodaux important en début de programme,
- Ne pas mettre trop de choses sur une ligne,
- Ne pas utiliser les numéros de ligne.

Si des points vous paraissent obscures ou erronés n'hésitez pas à me le signaler.
Prochaine épisode - Détails "g-code" - à suivre...
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

icare

#10
May 06, 2015, 11:53 am Last Edit: May 06, 2015, 05:35 pm by icare Reason: complément
Bonjour,

Saison1 - épisode5 : Premiers codes - premier programme

Le but est de mettre en route le moteur de broche à une vitesse donnée pendant un certain temps t1 puis de l'arrêter pendant t2 secondes. Ensuite, le faire tourner dans le sens inverse pendant un temps t3, suivi de l'arrêt et la fin de programme.

Commande S - vitesse de rotation de la broche
Syntaxe :

  Snnnnn avec nnnnn (tour/min) >= 0 (pour 0 la broche ne tourne pas)

Remarques :

La commande S peut être utilisée que la broche soit ON ou OFF
Dans la pratique la vitesse de rotation de la broche se situe dans la plage 0 <= nnnnn <= quelques milliers de tours/min.

Commande M03 - Mise en route broche sens horaire
Syntaxes :

  M03
  M03 Snnnnn avec nnnnn >= 0

Commande M04 - Mise en route broche sens anti-horaire
Syntaxes :

  M04
  M04 Snnnnn avec nnnnn >= 0

Commande M05 - Arrêt broche
Syntaxes :

  M05

Commande G04 - Temporisation
Syntaxe :

  G04 Pmmm avec mmm (sec) > 0

Remarque :

L'ommission du paramètre P génère une erreur

Commande M02 - Fin de programme
Syntaxe :

  M02

La mise en oeuvre de ces différentes commandes pour réaliser le but recherché (rotation broche) est représentée ci-dessous.


  (Premier programme - mise en route de la broche)
  N10 S1000 (vitesse broche 1000 tr/min)
  N20 M03 (Broche ON sens horaire)
  N30 G04 P10 (Pause 10 sec)
  N40 M05 (Broche OFF)
  N50 G04 P5 (Pause 5 sec)
  N60 M04 S500 (Broche ON sens anti-horaire a la vitesse de 500 tr/min)
  N70 G04 P9.5 (Pause 9.5 sec)
  N80 M05 (Broche OFF)
  N90 M02 (Fin programme)


Si des points vous paraissent obscures ou erronés n'hésitez pas à me le signaler.
Prochaine épisode - D'autres "g-codes" - à suivre...
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

icare

Bonjour,

Saison1 - épisode6 : Les déplacements

Pour l'instant, il n'y avait pas de mouvements mais on va changer cela.

Commande G00 - Interpolation linéaire en vitesse rapide
Syntaxe :

    G00 Xxxx Yyyy Zzzz avec au moins un des paramètres présents (les paramètres absents gardent les valeurs précédentes)

Remarques :

La commande G00 permet le déplacement rapide en X, Y et Z (paramètres de G00) depuis la position courante.
X, Y et Z sont exprimées en mm ou pouces (pour l'instant on utilisera que les mm)

Commande F - vitesse d'avance de travail
Syntaxe :

    Fnnn avec nnn (mm/min) > 0

Remarques :

La vitesse d'avance peut être exprimée en inverse du temps ou en unité par tour de broche mais c'est une autre histoire.
Dans laa pratique la vitesse d'avance est comprise entre quelques mm/min à plus de 1000 mm/min (60 m/h). Avec ses vitesses, on comprend mieux la nécessité des rampes d'accélération ou de décélération pour éviter les pertes de pas.

Commande G01 - Interpolation linéaire en vitesse de travail
Syntaxe :

    G01 Xxxx Yyyy Zzzz avec au moins un des paramètres présents (les paramètres absents gardent les valeurs précédentes)

Remarques :

La commande G01 permet l'usinage jusqu'au point (X, Y et Z) (paramètres de G01) depuis la position courante.
X, Y et Z sont exprimées en mm ou pouces (pour l'instant on utilisera que les mm)

La mise en oeuvre de ces différentes commandes pour réaliser un usinage est représentée ci-dessous.


  (Deuxieme programme - usinage simple)
  N010 G00 X0 Y0 Z10 (deplacement rapide en 0, 0, 10)
  N020 S1000 (vitesse broche 1000 tr/min)
  N030 F250 (vitesse d'avance 250 mm/min)
  N040 G00 X10 Y10 (deplacement rapide en 10, 10, 10)
  N050 M03 (Broche ON sens horaire)
  N060 G01 Z0 (descente de la broche *** voir image 1 ***)
  N070 G01 Y50 Z-1 (usinage du point (10,10,0) jusqu'au point (10,50,-1)
  N080 G01 X90 (usinage du point (10,50,-1) jusqu'au point (90,50,-1 *** voir image 2 ***)
  N090 G01 Y10 (usinage du point (90,50,-1) jusqu'au point (90,10,-1)
  N100 G01 X50 Y30 Z0 (usinage du point (90,10,-1) jusqu'au point (50,30,0 *** voir image 3 ***)
  N110 G01 Z1 (degagement broche)
  N120 M05 (arret broche)
  N130 G00 X0 Y0 Z10 (deplacement rapide en 0,0,10)
  N140 M02 (Fin programme)


Quelques représentations graphiques :

image 1 - Fin ligne N060



image 2 - Ligne N080 en cours



image 3 - Fin ligne N100



Si des points vous paraissent obscures ou erronés n'hésitez pas à me le signaler.
Prochaine épisode - Usinage circulaire - à suivre...
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

trimarco232

Bonjour Icare,
merci pour cette passionnante rubrique, de quoi me forcer à faire l'acquisition d'une CNC !
impatient de voir la suite (dont le rapport entre les tr/min et mm avec les volts et les pas) !

icare

Re,
Bonjour Icare,
merci pour cette passionnante rubrique, de quoi me forcer à faire l'acquisition d'une CNC !
impatient de voir la suite (dont le rapport entre les tr/min et mm avec les volts et les pas) !
Merci pour l'intérêt, ce que tu attends va venir.
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

icare

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Go Up