Aller au contenu

Filament ABS

demandeinfos

GCODE : G0 et G1, différence ?

Messages recommandés

Bonjour,

Après des recherches infructeuses sur Internet, j'ai une question sur les vitesses G0 et G1 du GCodr.

J'ai fait plusieurs tests en rédigeant des petits GCode pour voir le comportement de la vitesse en fonction de G0 et G1 : si je mets G0 et G1, les axes se déplacent à la même vitesse et si je mets G0 F1800 ou G1 F1800, pareil, les déplacements sont de la même vitesse.

Du coup, je ne vois la différence entre utiliser G0 ou G1, pourriez-vous me donners des informations sur le sujet ?

Merci d'avance, bonne journée.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello,

Si je prends au hasard, le code source de Repetier, on peut y voir ceci :

void Commands::processGCode(GCode *com) {
    /* Blabla */
    switch(com->G) {
    case 0: // G0 -> G1
    case 1: // G1
	/* Blabla */

Ce qui montre que le firmware traite les commandes G0 comme étant des commandes G1, donc normal que tu n'observes pas de différence. La seule différence de traitement que je vois entre les deux commandes dans Repetier ce situe au niveau du laser, donc pas applicable à une imprimante 3D.

Si on lit la spec G0 & G1: Move, on y voit aussi :

Citation

The RepRap firmware spec treats G0 and G1 as the same command, since it's just as efficient as not doing so.2

Notes

2In the RS274NGC Spec, G0 is Rapid Move, which was used to move between the current point in space and the new point as quickly and efficiently as possible, and G1 is Controlled Move, which was used to move between the current point in space and the new point as precise as possible.

Au final, dans le cas d'une imprimante 3D, les deux commandes font la même chose. Ca n'a d'intérêt que si la machine dispose d'un moyen physique de se déplacer plus vite.

Partager ce message


Lien à poster
Partager sur d’autres sites

D'accord, merci pour ces précisions.

Je m'étonne juste du coup qu Reptier utilise les 2 lors de l'édition d'un fichier GCode. Mais bon en effet, j'ai constaté que c'était le même chose.

Bonne journée.

Modifié (le) par demandeinfos

Partager ce message


Lien à poster
Partager sur d’autres sites

une dernière question sur ce post

si j'utilise G1 pour X et Y qui se meuvent avec des barres lisses et G1 pour Z sur un axe filté trapézoïdale, ce ne sera pas la même vitesse ?

merci pour votre retour

Partager ce message


Lien à poster
Partager sur d’autres sites

Tout dépends de la vitesse que tu demande. C'est le plus lent des axes qui limitera la vitesse, pour que le déplacement soit toujours synchronisé.

En clair, si tu demande 100mm/s sur XYZ, ça sera plus lent que sur XY seul, mais si tu demande 10mm/s ça sera pareil.

Et il faut aussi penser que le feedrate que tu indiques est la vitesse de déplacement de la buse dans son référentiel XY, et non la vitesse des axes. Ce qui veut dire que si tu demande un déplacement de X200 à 100mm/s sur X, le moteur tournera plus vite que si tu demande un déplacement de X200 Y200 à 100mm/s car la distance à parcourir est plus longue dans le deuxième cas (283mm ==> Pythagore). Dans ce deuxième cas également, les moteurs des axes ne tournent en réalité que à 70mm/s, alors que le déplacement en diagonal lui est bien de 100mm/s. C'est pour cette raison que les imprimantes impriment toujours en diagonale, ça permet d'un côté d'utiliser le couple des deux moteurs simultanément, et d'un autre côté de les faire tourner moins vite à feedrate égal.

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci beaucoup pour ce retour, je comprends bien le principe que vous exposez dans le dernier paragraphe.

Par contre, j'ai un peu plus de mal avec cette phrase :

Il y a 5 heures, Kachidoki a dit :

En clair, si tu demande 100mm/s sur XYZ, ça sera plus lent que sur XY seul, mais si tu demande 10mm/s ça sera pareil.

Pourriez-vous me donner davantage d'informations concernant le comportement de l'axe Z ?

Merci, bonne soirée.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

Il y a 11 heures, demandeinfos a dit :

Pourriez-vous me donner davantage d'informations concernant le comportement de l'axe Z ?

La vitesse de déplacement avec une tige filetée est généralement plus faible qu'un système poulies/courroies.

Les constructeurs fixent donc des vitesses max différentes selon les axes dans le fichier de configuration de l'imprimante.

Un exemple :

Cartesian axis speed limits
x_axis_max_speed   9000     # mm/min
y_axis_max_speed   9000    # mm/min
z_axis_max_speed    600      # mm/min

Sur cet exemple tu vois donc que la vitesse max que ne peut pas dépasser l'imprimante est de 150 mm/s pour les axes x  y  et  10 mm/s pour l'axe z. Si tu demandes des valeurs supérieures, l’imprimante se limitera aux valeurs max.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @trotro, je pense que c'est plus clair maintenant.

Dans cet exemple, si tu demandes un déplacement uniquement en X et/ou Y de 6000mm/min (=100mm/s), les axes se déplaceront bien à cette vitesse.

Si maintenant tu demandes le même déplacement sur X et/ou Y ET Z, alors celui-ci sera limité à la vitesse max du plus lent des axes, ici le Z à 600mm/min (=10mm/s).

Et dernier exemple, si tu demandes un déplacement sur X et/ou Y, mais à 10mm/s, il ira bien à cette vitesse avec ou sans Z, car c'est <= à la vitesse max du plus lent des axes.

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 15/10/2018 at 16:03, Kachidoki a dit :

En clair, si tu demande 100mm/s sur XYZ, ça sera plus lent que sur XY seul, mais si tu demande 10mm/s ça sera pareil. 

Et il faut aussi penser que le feedrate que tu indiques est la vitesse de déplacement de la buse dans son référentiel XY, et non la vitesse des axes. Ce qui veut dire que si tu demande un déplacement de X200 à 100mm/s sur X, le moteur tournera plus vite que si tu demande un déplacement de X200 Y200 à 100mm/s car la distance à parcourir est plus longue dans le deuxième cas (283mm ==> Pythagore). Dans ce deuxième cas également, les moteurs des axes ne tournent en réalité que à 70mm/s, alors que le déplacement en diagonal lui est bien de 100mm/s. C'est pour cette raison que les imprimantes impriment toujours en diagonale, ça permet d'un côté d'utiliser le couple des deux moteurs simultanément, et d'un autre côté de les faire tourner moins vite à feedrate égal.

 

Bonjour,

Je pense comprendre avec ces exemples, faut que je pratique un peu.

Pour m'aider davantege, est-ce que vous pourriez illuster ces propos par des bouts de GCode correspondant aux différentes situations ?

Merci beaucoup d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Je relance le post car je ne maîtrise pas encore bien ces aspects, et je pense que des bouts de GCode correspondant aux différentes situations exposées ci-dessus pourraient m'aider.

Merci d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Sur cette page :   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×