Jorael Posté(e) Novembre 25, 2021 Partager Posté(e) Novembre 25, 2021 Bonjour à tous, ça fait un moment que ma X1 tourne sous klipper et Octoprint grâce au forum, mais aujourd'hui pour la première fois j'ai eu besoin d'imprimer un objet en 2 couleurs et donc implémenter la macro pour gérer le M600. De base j'avais copier coller ce qu'on trouve dans les fichiers exemples de klipper (https://github.com/Klipper3d/klipper/blob/master/config/sample-macros.cfg). A force de chercher et de tester des choses j'en suis à ça: [pause_resume] recover_velocity: 50. # Filament change [gcode_macro M600] gcode: PAUSE_MACRO #UNLOAD [gcode_macro PAUSE_MACRO] gcode: PAUSE #RESPOND TYPE=command MSG=action:paused PARK_MACRO #SET_IDLE_TIMEOUT TIMEOUT=3600 [gcode_macro RESUME_MACRO] gcode: SET_IDLE_TIMEOUT TIMEOUT=600 RESUME #RESPOND TYPE=command MSG=action:resumed [gcode_macro PARK_MACRO] gcode: {% set X = params.X|default(50)|float %} {% set Y = params.Y|default(0)|float %} {% set Z = params.Z|default(10)|float %} SAVE_GCODE_STATE NAME=PARK_MACRO_state G91 ; relative positioning G1 E-2 F1000 ; retract filament G1 Z10 ; lift z slightly G90 ; absolute positioning G1 X{X} Y{Y} Z{Z} F3000 ; park the head SET_IDLE_TIMEOUT TIMEOUT=3600 RESTORE_GCODE_STATE name=PARK_MACRO_state Seulement les problèmes que j'essaye de résoudre depuis le début : 1. à la reprise via le bouton d'octoprint, l'extruder se repositionne bien en position x et y mais pas en Z il fait une première couche dans le vide au dessus comme si la position du Z n'était pas sauvegardé 2. la mise en pause via M600 ne fonctionne que sur le premier print après un restart de klipper (p-e meme que sur le premier M600: c'est à tester tiens) les prints suivants il exécute la macro puis reprendre direct le print (donc pas le temps de changer le filament) Si vous avez des idées, elles sont bienvenues :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
fran6p Posté(e) Novembre 26, 2021 Partager Posté(e) Novembre 26, 2021 @Jorael J'ai déplacé ton intervention dans un nouveau sujet et dans la section correspondant à ta machine (qui n'est d'ailleurs pas renseignée sous ton pseudo). Lien vers le commentaire Partager sur d’autres sites More sharing options...
MrMagounet Posté(e) Novembre 26, 2021 Partager Posté(e) Novembre 26, 2021 J'en fait appel a quelqu'un qui utilise sa X1 sous klipper et qui maitrise mieux le sujet : @M1K3D0 Autant sous Marlin je t'aurais volontiers aidé, autant sous Klipper je dois y passer sur la CR10s Pro ou la prochaine mais pas encore fait. Lien vers le commentaire Partager sur d’autres sites More sharing options...
fran6p Posté(e) Novembre 26, 2021 Partager Posté(e) Novembre 26, 2021 A quoi te sert la macro RESUME_MACRO et quand est-elle appelée / activée ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
M1K3D0 Posté(e) Novembre 26, 2021 Partager Posté(e) Novembre 26, 2021 Alors désolé j'ai pas le temps aujourd'hui de t'aider à debug ta macro Mais je peux te passer la mienne qui fonctionne. Juste bien vérifier la température de ton extrudeur à la reprise il m'arrive de temps en temps (c'est très aléatoire qu'il refroidisse après la reprise de l'impression et j'ai pas pris le temps de chercher pourquoi et je n'ai eu le soucis que avec les slice IM et pas avec Susie) [gcode_macro M600] variable_hotend_temp: 0 gcode: ##### read E from pause macro ##### {% set E = printer["gcode_macro PAUSE"].extrude|float %} ##### set park positon for x and y ##### # default is your max posion from your printer.cfg {% set x_park = printer.toolhead.axis_minimum.x|float - 5.0 %} {% set y_park = printer.toolhead.axis_minimum.y|float - 5.0 %} ##### calculate save lift position ##### {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} ##### end of definitions ##### SAVE_GCODE_STATE NAME=M600_state SET_IDLE_TIMEOUT TIMEOUT=36000 PAUSE G91 G1 E-5 F2100 G1 Z{z_safe} F900 G90 G1 X0 Y0 F6000 G91 G1 E-20 F1000 SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target} M109 S0 RESTORE_GCODE_STATE NAME=M600_state En espérant que ça t'aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
fran6p Posté(e) Novembre 26, 2021 Partager Posté(e) Novembre 26, 2021 Bizarre mais si ça fonctionne. Tu mets en PAUSE mais tu ne RESUME pas ? A quoi te servent tes variables x_park et y_park ? C'est volontaire ton arrêt de chauffe ( M109 S0 ) avant de restaurer l'état avant la mise en pause ? Ma macro M600 (j'imprime très rarement voire jamais à la hauteur max du Z donc pas besoin de «sécurité») : [gcode_macro M600] gcode: {% set X = params.X|default(30)|float %} {% set Y = params.Y|default(30)|float %} {% set Z = params.Z|default(10)|float %} SAVE_GCODE_STATE NAME=M600_state PAUSE G91 G1 E-.8 F2700 G1 Z{Z} G90 G1 X{X} Y{Y} F3000 G91 G1 E-50 F1000 RESUME RESTORE_GCODE_STATE NAME=M600_state MOVE=1 Pour que l'état sauvegardé permette de reprendre correctement, il faudrait compléter le RESTORE… avec MOVE=1 (extrait de https://github.com/Klipper3d/klipper/blob/master/docs/G-Codes.md#extended-g-code-commands ) : Citation RESTORE_GCODE_STATE [NAME=<state_name>] [MOVE=1 [MOVE_SPEED=<speed>]]: Restore a state previously saved via SAVE_GCODE_STATE. If "MOVE=1" is specified then a toolhead move will be issued to move back to the previous XYZ position. If "MOVE_SPEED" is specified then the toolhead move will be performed with the given speed (in mm/s); otherwise the toolhead move will use the restored g-code speed. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorael Posté(e) Novembre 27, 2021 Auteur Partager Posté(e) Novembre 27, 2021 Oula j'ai pas été averti des réponses Alors j'ai bien essayé le RESTORE avec MOVE=1 mais il revient à la position de départ avant de faire la pause. Donc c'est un peu gênant. Demain j'essaye celle de M1K3D0 pour voir pour répondre en vrac : Il y a des macros qui ne servent plus ( commenté ). Mais tout ce que j'ai essayé a toujours eu le même résultat. Au début j'ai un truc plus simple juste le M600 . Il n'y a pas de RESUME car c'est Octoprint qui l’envoie qu'en je clique sur le bouton resume ( mon erreur est p-e à ce niveau d'ailleurs) Je n'ai pas essayé sans faire le move en Z, c'est fait pour plus de sécurité mais il y en a p-e pas besoin. Dans le dernier test j'ai fait exprès de faire monter le Z de 10cm, et c'est bien ça quand je resume depuis Octoprint , l'extruder ne revient qu'en x et y, il ne restaure pas la position du Z. J'essaye demain vos propositions enfin pas demain mais tout à l'heure Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorael Posté(e) Novembre 29, 2021 Auteur Partager Posté(e) Novembre 29, 2021 (modifié) Bonjour, J'ai testé la solution @fran6p bin ça ne fonctionne pas comme je souhaite, l'extruder se parque puis repart aussitot terminer le print il ne fait pas vraiment de pause. Edit: En supprimant le RESUME et le MOVE=1 je retrouve exactement le même fonctionnement que j'avais avec ma solution la pause fonctionne mais la premiere couche après le resume le Z ne redescend pas à la bonne hauteur. Je vais essayer la solution de M1K3D0 Avec la Solution @M1K3D0 même soucis une couche est faite en l'air il n'y a pas de restauration de l'axe Z. Et pour une raison que j'ignore le retour à X,Y se fait à 2 à l'heure... Modifié (le) Novembre 29, 2021 par Jorael Lien vers le commentaire Partager sur d’autres sites More sharing options...
M1K3D0 Posté(e) Novembre 29, 2021 Partager Posté(e) Novembre 29, 2021 Ah oui si tu utilises pas la mise à 0 de la température extrudeur tu peux enlever la ligne que signale @fran6p Pour le reste se sont les définitions que j'utilisais au début et finalement remplacé par des coordonnées X Y en dur. si je coupe la chauffe de l'extrudeur c'est tout simplement que si le m600 se produit et que je ne suis pas là, le plateau reste chaud et la buse arrête la chauffe par sécurité. C'est utile sur les longs print et que tu sais pas exactement à quelle heure il va se déclencher. tiens nous au courant @Jorael T'es macro pause et resume elles ressemblent à quoi @Jorael? Voilà les miennes [gcode_macro PAUSE] rename_existing: BASE_PAUSE # change this if you need more or less extrusion variable_extrude: 1.0 gcode: ##### read E from pause macro ##### {% set E = printer["gcode_macro PAUSE"].extrude|float %} ##### set park positon for x and y ##### # default is your max posion from your printer.cfg {% set x_park = printer.toolhead.axis_minimum.x|float - 5.0 %} {% set y_park = printer.toolhead.axis_minimum.y|float - 5.0 %} ##### calculate save lift position ##### {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} ##### end of definitions ##### SAVE_GCODE_STATE NAME=PAUSE_state BASE_PAUSE G91 G1 E-5 F2100 G1 Z{z_safe} F900 G90 G1 X0 Y0 F6000 [gcode_macro RESUME] rename_existing: BASE_RESUME gcode: ##### read E from pause macro ##### {% set E = printer["gcode_macro PAUSE"].extrude|float %} SET_IDLE_TIMEOUT TIMEOUT=600 ##### end of definitions ##### M109 S{printer["gcode_macro M600"].hotend_temp} G91 G1 E50 F100 RESTORE_GCODE_STATE NAME=PAUSE_state BASE_RESUME 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorael Posté(e) Novembre 30, 2021 Auteur Partager Posté(e) Novembre 30, 2021 Dans quel cas tu utilises le resume ? Mon erreur est p-e à ce niveau là , je pensais que le resume d'octoprint suffisait je n'ai donc pas de macro resume. [pause_resume] recover_velocity: 50. [gcode_macro M600] variable_hotend_temp: 0 gcode: ##### read E from pause macro ##### #{% set E = printer["gcode_macro PAUSE"].extrude|float %} ##### set park positon for x and y ##### # default is your max posion from your printer.cfg {% set x_park = printer.toolhead.axis_minimum.x|float - 5.0 %} {% set y_park = printer.toolhead.axis_minimum.y|float - 5.0 %} ##### calculate save lift position ##### {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} ##### end of definitions ##### SAVE_GCODE_STATE NAME=M600_state SET_IDLE_TIMEOUT TIMEOUT=36000 PAUSE #G91 G1 E-5 F2100 #G1 Z{z_safe} F900 G90 G1 X0 Y0 F6000 G91 G1 E-20 F1000 #SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target} #M109 S0 RESTORE_GCODE_STATE NAME=M600_state Voilà ce que j'ai pour le moment Lien vers le commentaire Partager sur d’autres sites More sharing options...
M1K3D0 Posté(e) Novembre 30, 2021 Partager Posté(e) Novembre 30, 2021 Le résumé est utilisé quand tu a enlevé l'ancien filament et que le nouveau est prêt à être chargé. A Ce moment là la buse est purgée a sa position de parking pour être prêt à partir directement sur la nouvelle couleur et après cette purge le print redémarrer. Sur mainsail ou klipper screen je clique sur le bouton de reprise (play ) et ça s'active. je n'utilise plus octoprint mais le comportement doit être le même je suppose sinon il faut que tu lance la macro résume je pense @Jorael Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorael Posté(e) Décembre 1, 2021 Auteur Partager Posté(e) Décembre 1, 2021 (modifié) Bon j'ai plus ou moins réussi mon test avec ça : [pause_resume] recover_velocity: 150. # When capture/restore is enabled, the speed at which to return to # the captured position (in mm/s). Default is 50.0 mm/s. [gcode_macro M600] gcode: {% set X = params.X|default(30)|float %} {% set Y = params.Y|default(30)|float %} {% set Z = params.Z|default(10)|float %} SAVE_GCODE_STATE NAME=M600_state PAUSE G91 G1 E-.8 F2700 #G1 Z{Z} G90 G1 X{X} Y{Y} F6000 G91 #G1 E-50 F1000 #RESUME RESTORE_GCODE_STATE NAME=M600_state mais j'ai du supprimer le déplacement en Z et la mega rétractation pour enlever le filament et là ça a fonctionné une fois. Je suis en train d'imprimer le vrai objet ou j'avais besoin des 2 couleurs. Je croise les doigts. Par contre je reste bloqué avec le fait de devoir redemarrer Klipper après la premiere impression car sinon la pause se "resume" tout de suite par klipper .... Modifié (le) Décembre 1, 2021 par Jorael Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorael Posté(e) Janvier 25, 2022 Auteur Partager Posté(e) Janvier 25, 2022 (modifié) Bon depuis je suis passé à Fluidd et j'ai réussi mon impression en 2 couleurs sans problème ! edit : Je ne suis pas passé à Fluidd à cause de ça ^^ mais j'ai des soucis de plantage aléatoire de mon pi4 sans explication ( j'ai checké pas mal de choses déjà) du coup pour tester et "enlever mon SSD USB chinois" de l'équation, et aussi un éventuel problème avec octoprint et mon install) je suis passé sur un autre SSD et j'ai testé fluid + moonraker et klipper dessus . Modifié (le) Janvier 25, 2022 par Jorael 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
MrMagounet Posté(e) Janvier 28, 2022 Partager Posté(e) Janvier 28, 2022 Le principal c'est que tu réussie a imprimer a présent. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouli_68 Posté(e) Juin 1, 2022 Partager Posté(e) Juin 1, 2022 Salut, je viens de finir ma voron 2.4 R2 350x350. Je suis un peu perdu avec les macros pour le changement de filament en cours d'impression. Serait-il possible de me dire ce qu'il faut ajouter au printer.cfg et les macros à creer? Je vous remercie par avance !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
MrMagounet Posté(e) Juin 1, 2022 Partager Posté(e) Juin 1, 2022 @M1K3D0 on te demande. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouli_68 Posté(e) Juin 1, 2022 Partager Posté(e) Juin 1, 2022 @MrMagounetmerci Lien vers le commentaire Partager sur d’autres sites More sharing options...
M1K3D0 Posté(e) Juin 1, 2022 Partager Posté(e) Juin 1, 2022 @Bouli_68salut Il te faut rajouter (ou tu as envi) Une macro pause Resume Et M600 Pause et resume sont utilisés par m600. Tu as un fichier dédié pour les macros ? Sur ma 2.4 j'utilise les mêmes que j'ai mi plus haut sur ma X1 à part la position de Park J'espère que ça t'aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouli_68 Posté(e) Juin 2, 2022 Partager Posté(e) Juin 2, 2022 (modifié) @M1K3D0merci pour ta réponse. J'ai directement mis dans le printer.cfg pour le moment pour tester. Le chariot se "parc" bien dans le coin devant a gauche et repart directement... Me rétracte pas le filament en place et ne demande pas d'extrusion pour le nouveau filament. Le print repart direct, fait semblant d'imprimer une couche à quelques cm du print sans extruder puis viens à la hauteur du print et la plus rien ne se passe ! mdr [gcode_macro M600] variable_hotend_temp: 0 gcode: ##### read E from pause macro ##### {% set E = printer["gcode_macro PAUSE"].extrude|float %} ##### set park positon for x and y ##### # default is your max posion from your printer.cfg {% set x_park = printer.toolhead.axis_minimum.x|float - 5.0 %} {% set y_park = printer.toolhead.axis_minimum.y|float - 5.0 %} ##### calculate save lift position ##### {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} ##### end of definitions ##### SAVE_GCODE_STATE NAME=M600_state SET_IDLE_TIMEOUT TIMEOUT=36000 PAUSE G91 G1 E-5 F2100 G1 Z{z_safe} F900 G90 G1 X0 Y0 F6000 G91 G1 E-20 F1000 SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target} M109 S0 RESTORE_GCODE_STATE NAME=M600_state [gcode_macro PAUSE] rename_existing: BASE_PAUSE # change this if you need more or less extrusion variable_extrude: 1.0 gcode: ##### read E from pause macro ##### {% set E = printer["gcode_macro PAUSE"].extrude|float %} ##### set park positon for x and y ##### # default is your max posion from your printer.cfg {% set x_park = printer.toolhead.axis_minimum.x|float - 5.0 %} {% set y_park = printer.toolhead.axis_minimum.y|float - 5.0 %} ##### calculate save lift position ##### {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} ##### end of definitions ##### SAVE_GCODE_STATE NAME=PAUSE_state BASE_PAUSE G91 G1 E-5 F2100 G1 Z{z_safe} F900 G90 G1 X0 Y0 F6000 [gcode_macro RESUME] rename_existing: BASE_RESUME gcode: ##### read E from pause macro ##### {% set E = printer["gcode_macro PAUSE"].extrude|float %} SET_IDLE_TIMEOUT TIMEOUT=600 ##### end of definitions ##### M109 S{printer["gcode_macro M600"].hotend_temp} G91 G1 E50 F100 RESTORE_GCODE_STATE NAME=PAUSE_state BASE_RESUME Modifié (le) Juin 2, 2022 par Bouli_68 Lien vers le commentaire Partager sur d’autres sites More sharing options...
M1K3D0 Posté(e) Juin 2, 2022 Partager Posté(e) Juin 2, 2022 Tu as pas des macros en double ailleurs dans un autre fichier ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouli_68 Posté(e) Juin 2, 2022 Partager Posté(e) Juin 2, 2022 j'ai ces 3 macros printer.cfg adlx.cfg mainsail.cfg Lien vers le commentaire Partager sur d’autres sites More sharing options...
M1K3D0 Posté(e) Juin 2, 2022 Partager Posté(e) Juin 2, 2022 ok dans mainsail ça te fait doublon sur pause et resume. désactive les pour voir Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouli_68 Posté(e) Juin 2, 2022 Partager Posté(e) Juin 2, 2022 C'est bon, ca marche !! En faite, j'avais pas vu que la température baissait. Il faut juste que j'extrude le nouveau filament avec mainsail . La distance de rétractation de filament est courte en "automatique", sur quelle ligne faut t il augmenter l'extrusion? Que faut il supprimer pour que la température ne baisse pas? ou on peu mettre apres 5minutes par exemple? Lien vers le commentaire Partager sur d’autres sites More sharing options...
M1K3D0 Posté(e) Juin 2, 2022 Partager Posté(e) Juin 2, 2022 dans les macro que tu as recopié plus haut tu as G1 E-20 F1000 SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target} M109 S0 change le 20 par la valeur que tu veux pour la distance c'est le M109 S0 qui coupe la chauffe de la buse enlève le si tu veux pas refroidir la buse c'est le timeout qui donne le délais j'ai mi 10h pour garder le plateau chaud et je coupe la buse par sécurité. normalement ma RESUME doit remettre l'extrudeur en chauffe à la dernière valeur avant la pause tu as gardé les macro que j'ai donné ou tu as gardé les par defaut de mainsail ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouli_68 Posté(e) Juin 2, 2022 Partager Posté(e) Juin 2, 2022 (modifié) Tu es un chef !!! Merci à toi. C'est peut être pas plus mal de mettre la buse a arrêté de chauffer, surtout si on est pas à coté !! J'ai rien toucher à mainsail.cfg et mis les tiens dans printer.cfg Je vais faire propre maintenant à faire un macro pour RESUME, PAUSE et M600 et les inclure dans printer.cfg Modifié (le) Juin 2, 2022 par Bouli_68 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant