Aller au contenu

GO Print

Aide sur Gcode de fin


Messages recommandés

Bonjour,

J'utilise Cura et je n'arrive pas à comprendre pourquoi j'ai des instructions Gcode après la séquence supposée de fin.

Voici ce que je mets comme séquence de fin :

;Dual end
G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X0 Y240 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning
T0 
G1 X-62 
T1 
G1 X362 
G1 Y{machine_depth} ;Present print
M106 S0 ;Turn-off fan
M104 T0 S0 ;Turn-off hotend 0
M104 T1 S0 ;Turn-off hotend 1
M140 S0 ;Turn-off bed
M84 X Y E ;Disable all steppers but Z
M109 T0 S40 ;Waiting for hotend 0 temp = 40°
M109 T1 S40 ;Waiting for hotend 1 temp = 40°
M81 ;Turn-off printer

 

Et voici ce que j'ai à la fin du fichier slicé :

;Dual end
G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X0 Y240 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning
T0
G1 X-62
T1 
G1 X362
G1 Y302 ;Present print
M106 S0 ;Turn-off fan
M104 T0 S0 ;Turn-off hotend 0
M104 T1 S0 ;Turn-off hotend 1
M140 S0 ;Turn-off bed
M84 X Y E ;Disable all steppers but Z
M109 T0 S40 ;Waiting for hotend 0 temp = 40°
M109 T1 S40 ;Waiting for hotend 1 temp = 40°
M81 ;Turn-off printer
M82 ;absolute extrusion mode
M104 S0
;End of Gcode
;SETTING_3 {"extruder_quality": ["[general]\\nversion = 4\\nname = \\u00c9bauche
;SETTING_3  custom 1\\ndefinition = SV04_Dual_Mode\\n\\n[metadata]\\nsetting_ver
;SETTING_3 sion = 16\\ntype = quality_changes\\nintent_category = default\\nqual
;SETTING_3 ity_type = draft\\nposition = 0\\n\\n[values]\\ninfill_pattern = tria
;SETTING_3 ngles\\ninfill_sparse_density = 20\\nmagic_fuzzy_skin_outside_only = 
;SETTING_3 True\\nmaterial_final_print_temperature = 195\\nmaterial_print_temper
;SETTING_3 ature = 195\\nmaterial_standby_temperature = 185\\nsupport_angle = 52
;SETTING_3 \\n\\n", "[general]\\nversion = 4\\nname = \\u00c9bauche custom 1\\nd
;SETTING_3 efinition = SV04_Dual_Mode\\n\\n[metadata]\\nsetting_version = 16\\nt
;SETTING_3 ype = quality_changes\\nintent_category = default\\nquality_type = dr
;SETTING_3 aft\\nposition = 1\\n\\n[values]\\ninfill_pattern = triangles\\ninfil
;SETTING_3 l_sparse_density = 20\\nmaterial_final_print_temperature = 195\\nmate
;SETTING_3 rial_print_temperature = 195\\n\\n"], "global_quality": "[general]\\n
;SETTING_3 version = 4\\nname = \\u00c9bauche custom 1\\ndefinition = SV04_Dual_
;SETTING_3 Mode\\n\\n[metadata]\\nsetting_version = 16\\ntype = quality_changes\
;SETTING_3 \nintent_category = default\\nquality_type = draft\\n\\n[values]\\nad
;SETTING_3 hesion_type = raft\\nsupport_enable = True\\n\\n"}

J'aimerais bien savoir à quel endroit sont ajoutées les dernières instructions, c'est-à-dire à partir du dernier M82.

Je m'étais rendu compte d'un problème parce que seul un des 2 hotend était refroidi et qu'en plus l'imprimante n'était jamais éteinte. Or je voulais être sûr que les 2 extrudeuses étaient refroidies avant d'éteindre automatiquement l'imprimante.

Par avance, merci de votre aide.

Amitiés

Michel

Modifié (le) par mich0111
Lien vers le commentaire
Partager sur d’autres sites

Pour chacun de tes extrudeurs, leur section Gcode de fin est vide ?

🙂

Lien vers le commentaire
Partager sur d’autres sites

Non, mais rien qui ne corresponde.

La séquence est identique pour les 2 extrudeuses.

G92 E0
G1 Z{retraction_hop_height_after_extruder_switch} F12000
G1 E-{switch_extruder_retraction_amount}
G92 E0

D'ailleurs, si j'ajoute l'instruction M82 dans mon gcode de fin avant le M81, est-ce que cela ne réglera pas le problème ?

Le 2ème M104 sera en surplus mais ne devrait pas gêner il me semble avec l'imprimante déjà éteinte.

Sachant que je ne sais pas à quoi servent les instructions SETTING qui sont toutes mises en commentaire.

Modifié (le) par mich0111
Lien vers le commentaire
Partager sur d’autres sites

Salut @mich0111,

Je vais sûrement dire de grosses bêtises, mais au moins, tu es prévenu 😅.

Il y a 19 heures, mich0111 a dit :

J'aimerais bien savoir à quel endroit sont ajoutées les dernières instructions, c'est-à-dire à partir du dernier M82.

Je pense que c'est à la fin de la fonction "FffGcodeWriter::finalize" du fichier FffGcodeWriter.cpp, dans les sources de Cura_SteamEngine:

Citation
// set extrusion mode back to "normal"
const bool set_relative_extrusion_mode = (gcode.getFlavor() == EGCodeFlavor::REPRAP);
gcode.writeExtrusionMode(set_relative_extrusion_mode);
for (size_t e = 0; e < Application::getInstance().current_slice->scene.extruders.size(); e++)
{
gcode.writeTemperatureCommand(e, 0, false);
}
 

gcode.writeComment("End of Gcode");

Ce qui peut être intéressant, c'est le commentaire qui suit ces lignes

Citation

the profile string below can be executed since the M25 doesn't end the gcode on an UMO and when printing via USB.

La question est: est-ce qu'un M25 à la fin de ton Gcode de fin changerait quelque chose? 🤔

Il y a 18 heures, mich0111 a dit :

D'ailleurs, si j'ajoute l'instruction M82 dans mon gcode de fin avant le M81, est-ce que cela ne réglera pas le problème ?

Je ne vois pas pourquoi, donc non 😅

Il y a 18 heures, mich0111 a dit :

Sachant que je ne sais pas à quoi servent les instructions SETTING qui sont toutes mises en commentaire.

Sûrement pour une analyse / pour information

Il y a 19 heures, mich0111 a dit :

seul un des 2 hotend était refroidi

Tu pourrais essayer de forcer les commandes avec:

T0
M104 T0 S0 ;Turn-off hotend 0
T1
M104 T1 S0 ;Turn-off hotend 1
M140 S0 ;Turn-off bed
M84 X Y E ;Disable all steppers but Z
T0
M109 T0 S40 ;Waiting for hotend 0 temp = 40°
T1
M109 T1 S40 ;Waiting for hotend 1 temp = 40°

Il y a 19 heures, mich0111 a dit :

en plus l'imprimante n'était jamais éteinte

As-tu vérifier que la PS_ON_PIN est correctement définie et câblée?

Modifié (le) par pommeverte
  • J'aime 1
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

il y a 37 minutes, pommeverte a dit :

Je pense que c'est à la fin de la fonction "FffGcodeWriter::finalize" du fichier FffGcodeWriter.cpp,

Bonjour et merci pour ton analyse.

Donc, c'est mort puisque je ne vais pas prendre le risque de modifier les sources et les recompiler puisqu'à chaque nouvelle release il faudra penser à le refaire.

il y a 39 minutes, pommeverte a dit :

Je ne vois pas pourquoi, donc non 😅

Jee suis mal exprimé. Je voulais dire qu'en ajoutant le M82 manquant dans mon code de fin, avant l'exécution du M81, je complétais la séquence et donc il ne manquait rien par rapport à ce que proposait cura en standard.

La question que je me pose est, que se passe-t-il lorsqu'on envoie une instruction à une imprimante éteinte ?.

Est-ce que cela ne va pas bloquer l'exécution du fichier puisqu'il n'aura plus de réponse ?

il y a 43 minutes, pommeverte a dit :

Tu pourrais essayer de forcer les commandes avec:

Est-ce que ce n'est pas la même chose que ce que j'ai écrit ? Je veux dire que mettre des Tx

il y a 46 minutes, pommeverte a dit :

 

entre les instructions ou les incorporer dans les instructions ce n'est pas pareil ?

C'est une vraie question, je ne suis pas spécialiste du gcode.

il y a 48 minutes, pommeverte a dit :

As-tu vérifier que la PS_ON_PIN est correctement définie et câblée?

Pour le coup, je ne comprends même pas la question

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, mich0111 a dit :

La question que je me pose est, que se passe-t-il lorsqu'on envoie une instruction à une imprimante éteinte ?

La communication sera perdue donc, après, c'est la gestion des erreurs de communication du logiciel qui envoie les commandes (Pronterface, octopi,...) qui prend le relai.

Il y a 3 heures, mich0111 a dit :

Est-ce que ce n'est pas la même chose que ce que j'ai écrit ? Je veux dire que mettre des Tx

En théorie si, mais peut-être qu'il faut bien lui hurler dans les oreilles pour que le microcontrôleur comprenne 🤣

Il y a 3 heures, mich0111 a dit :

Pour le coup, je ne comprends même pas la question

Je ne l'ai jamais testé, mais de ce que j'imagine, la commande M81 change l'état de la broche n° PS_ON_PIN du microcontrôleur. Du coup, c'est sur cette broche/connecteur qu'il faut brancher ton relai qui éteint l'alimentation de l'imprimante.

Modifié (le) par pommeverte
Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, pommeverte a dit :

Du coup, c'est sur cette broche/connecteur qu'il faut brancher ton relai qui éteint l'alimentation de l'imprimante.

Mais c'est vraiment galère, j'espère ne pas être obligé de brancher le relais sur cette pin. Je vais faire un essai avec ce gcode et voir ce que ça donne.

Je reviendrais donner le résultat.

Bon WE et merci encore

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, pommeverte a dit :

 

Il y a 19 heures, mich0111 a dit :

Sachant que je ne sais pas à quoi servent les instructions SETTING qui sont toutes mises en commentaire.

Sûrement pour une analyse / pour information

Cela permet éventuellement de réimporter les modification d'un profil d'impression sous Ultimaker Cura ...

image.png.c14c61fb18b69bb92f6457d1e8a057fa.png

Et comme ce sont des commentaires cela n'a normalement pas d'influence lors de l'impression.

 

Après pour l'histoire de l'imprimante qui ne s’arrête pas là il faudrait plus de détail ... (si vraiment il y a un relais d’arrêt 🙂 )

 

Aussi il me semble que pour attendre le refroidissement des buses, il faut plutôt utiliser le 'R' pour attendre le refroidissement et non 'S' qui lui continue dé que l'on dépasse la température ...

https://marlinfw.org/docs/gcode/M109.html

Citation

Usage

..

[R<temp>]

Target temperature (wait for cooling or heating).

[S<temp>]

Target temperature (wait only when heating). Also AUTOTEMP: The min auto-temperature.

...

Examples

...

Set target temperature, wait even if cooling

M109 R120
Modifié (le) par PPAC
  • +1 1
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

il y a 5 minutes, PPAC a dit :

si vraiment il y a un relais d’arrêt

Perso, j'en doute, vu la réponse faite 😁. @mich0111 devait penser que c'était intégré 🤔...

il y a 5 minutes, PPAC a dit :

Aussi il me semble que attendre le refroidissement des buses, il faut plutôt utiliser le 'R' pour attendre le refroidissement et non 'S' qui lui continue dé que l'on dépace la température ...

Bien vu 😉, je crois que l'affaire est résolue. Une nouvelle fois, le coupable se situait entre l'écran et la chaise 😜

Modifié (le) par pommeverte
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Il y a 22 heures, mich0111 a dit :

Sachant que je ne sais pas à quoi servent les instructions SETTING qui sont toutes mises en commentaire.

Elles servent par exemple quand on veut réutiliser un profil de tranchage qu'on a pas enregistré 😉

Un fichier gcode tranché via Cura peut être réutilisé pour ajouter un profil (cette dernière section n'est pas bien difficile à analyser, il n'y a en fait que les différences par rapport à un profil standard).

Quant aux M80/M81 il faut pour que ça fonctionne ou que la carte soit  capable de les gérer directement ou via un relai genre BTT ou, c'est que j'utilise, des prises connectées (commandées via Tasmota (Sonoff)) qui possèdent une adresse IP: je peux éteindre l'imprimante (M81 ad.res.se.ip ) après avoir attendu que la buse soit repassée sous les 50°C (M109 R50)

🙂

Modifié (le) par fran6p
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

J'ai modifié le gcode de fin pour en faire ceci :

 

;Dual end
G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X0 Y240 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning
T0
G1 X-62
T1
G1 X362
G1 Y{machine_depth} ;Present print
M106 S0 ;Turn-off fan
T0
M104 S0 ;Turn-off hotend 0
T1
M104 S0 ;Turn-off hotend 1
M140 S0 ;Turn-off bed
M84 X Y E ;Disable all steppers but Z
T0
M109 R40 ;Waiting for hotend 0 temp = 40°
T1
M109 R40 ;Waiting for hotend 1 temp = 40°
M82 ;Absolute extrusion mode
M81 ;Turn-off printer

Résultat des courses, sitôt son travail terminée et même si l'extrudeuse 2 a encore des impressions à faire, l'extrudeuse 1 reçoit la commande "M104 S0".

De son côté, l'extrudeuse 2 termine et, sitôt fait, reçoit le même "M104 S0", en même temps qu'un "M140 S0" est envoyé.

Ensuite, l'extrudeuse 1 reçoit "M109 R40", l'imprimante attend cette température puis envoie la même commande à l'extrudeuse 2.

Une fois cette température atteinte, l'impression est terminée mais l'imprimante n'est pas éteinte.

Je vérifie l'exécution des commandes à l'aide de l'écran sur lequel je vois afficher les consignes demandées.

Quand à la fin de l'impression, je m'en rends compte par l'extinction de la lumière qui est synchronisée sur la fin de l'impression.

Conclusion, le M81 n'est pas pris en compte.

Donc, question subsidiaire, existe-t-il un plugin me permettant d'éteindre l'imprimante une fois ces températures atteintes ?

Ce n'est pas possible avec octorelay ni avec enclosure. Si j'utilise PSU control avec du Gcode, il est fort probable que j'ai le même comportement.

Donc je sèche.

Si vous avez des idées, je suis preneur.

Amitiés

Michel

Il y a 4 heures, pommeverte a dit :

Perso, j'en doute, vu la réponse faite 😁. @mich0111 devait penser que c'était intégré

En fait, si le M81 ne marche pas, je peux également utiliser le relais intégré au RPI3 d'octopi pour allumer/éteindre l'imprimante

Modifié (le) par mich0111
Lien vers le commentaire
Partager sur d’autres sites

il y a 32 minutes, mich0111 a dit :

Donc, question subsidiaire, existe-t-il un plugin me permettant d'éteindre l'imprimante une fois ces températures atteintes ?

Le plus gros soucis, c'est qu'il n'y a pas beaucoup d'infos sur ta carte-mère, qui est apparemment une creality V2.5.1 (info trouvée ici). Donc c'est franchement compliqué de répondre, d'autant plus que ça dépend aussi du firmware installé.

Effectivement, la solution de passer par le RPi est largement plus envisageable à mon avis.

Lien vers le commentaire
Partager sur d’autres sites

il y a 12 minutes, pommeverte a dit :

Le plus gros soucis, c'est qu'il n'y a pas beaucoup d'infos sur ta carte-mère, qui est apparemment une creality V2.5.1

Que puis-je te fournir comme informations supplémentaires ?

Lien vers le commentaire
Partager sur d’autres sites

Malheureusement aucune puisque je ne pense pas que tu disposes des sources du firmware ni du schéma de la carte. Sinon, on aurait pu activer le GCode M43 qui aurait donné l'info du n° de la broche PS_ON_PIN. Tu peux toujours essayer d'envoyer le Gcode et de croiser tout ce que tu peux pour avoir une réponse 🤣😩...

Le Rpi me parait être la seule solution (que je ne connais pas 😅, mais que d'autres ont déjà utilisée 😉).

Lien vers le commentaire
Partager sur d’autres sites

Mince, j'm'attendais à ce que tu répondes, "ben, pas grave" 🤣...

Dans les sources, PS_ON_PIN n'a pas de n° de patte attribuée donc, c'est mal parti... 😅 je poursuis en te donnant des infos, mais sans matos pour tester de mon coté, je trouve ça très risqué de continuer dans cette voie 🥴:

D'après la photo ci-dessous, les connecteurs Z1-, Z2-, J1, J2 ne sont pas câblés. Mais j'imagine que des entrées du microcontrôleur le sont via la nappe multicolore. D'après les sources, tu possèdes un BLtouch cablé sur la patte PD12 du microcontroleur, ce qui laisserait l'entrée Z- libre qui pourrait être utilisée pour piloter un relai.

J'ai donc préparé un firmware où j'ai activé le Gcode M43 et affecté PS_ON_PIN à Z1- (théoriquement 😅).

Après avoir flashé le firmware, tu envoies un M43 qui devrait te retourner une liste d'entrées/sorties dont PS_ON_PIN avec un n° de broche suivi de PE1.

Le test pour valider la sortie sera donc de mesurer la tension sur la broche du milieu, je pense (en tout cas, pas celle reliée à la masse ou au 3.3V), du connecteur Z1- :

  • Pour mettre la sortie à 1, tu envoies en remplaçant xx par le n° que tu as lu dans la réponse au M43:M42 Pxx S1
  • Pour mettre la sortie à 0, tu envoies en remplaçant xx par le n° que tu as lu dans la réponse au M43:M42 Pxx S0

PS: tu les as trouvé où ces sources? peut-être qu'il y a d'autres infos utiles au même endroit?

Citation

Sovol-SV04-Board-Creality-V5.2.1-3.jpg_resultat.thumb.jpg.e572741530c0ed5b9412be5f87745f1a.jpg

 

firmwareV1.bin

Modifié (le) par pommeverte
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Je les ai trouvé sur le site de Sovol.

Je n'ai pas été cherché bien loin.

Ceci étant, ce que tu me proposes est bien trop compliqué pour moi, ou plutôt trop risqué. Je risque de faire des bêtises. Même si je comprends l'idée générale, ça reste assez touchy.

Merci quand même pour tous les efforts fournis.

Je vais chercher du côté des plugins. Comme tu le disais, il doit y sûrement y avoir du monde qui a dû y arriver.

Bon dimanche.

Lien vers le commentaire
Partager sur d’autres sites

As-tu lu / testé le sujet suivant ?

🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 53 minutes, fran6p a dit :

As-tu lu / testé le sujet suivant ?

🙂

Salut,

Oui j'ai lu tout le sujet et je n'ai pas vu de gestion de température.

Ceci étant, je crois que le plugin PSU control est parfait pour ça. Il me reste quelques réglages à trouver et notamment concernant le paramètre sensing.

En dehors de ça, ça a l'air de fonctionner. Je reviendrais poster avec la solution complète quand je l'aurais totalement validée.

Bonne fin de WE et merci encore

Lien vers le commentaire
Partager sur d’autres sites

il y a 49 minutes, mich0111 a dit :

je n'ai pas vu de gestion de température.

Tu entends quoi exactement par «gestion de températures» ?

Un simple M109 Rtemp_souhaitee ne suffit pas avant de lancer la commande d'extinction (quelle qu'elle soit) ?

🙂

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, fran6p a dit :

Tu entends quoi exactement par «gestion de températures» ?

Le refroidissement des buses.

Effectivement le M109 fonctionne mais, en revanche, le M81 derrière n'éteint pas la machine.

Ceci étant, j'ai trouvé la solution en utilisant des plugins standards sans rien ajouter ni câbler.

J'ai fait un post là-dessus.

https://www.lesimprimantes3d.fr/forum/topic/47584-octoprint-utilisation-du-plugin-psu-control/?do=findComment&comment=495996

Et mon gcode de fin devient :

;Dual end
G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X0 Y240 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning
T0
G1 X-62 
T1
G1 X362
G1 Y302 ;Present print
M106 S0 ;Turn-off fan
T0
M104 S0 ;Turn-off hotend 0
T1
M104 S0 ;Turn-off hotend 1
M140 S0 ;Turn-off bed
M84 X Y E ;Disable all steppers but Z

A+

Modifié (le) par mich0111
Lien vers le commentaire
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.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...