Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous.

Utilisateur d'une Creality Ender 3-S1 fonctionnant sous Marlin 2.0.8, j'ai une magnifique barre sur l'écran m'indiquant la progression de l'impression et une autre ligne soit disant m'informant de la durée totale de cette dernière et du temps restant. 

Alors je ne suis pas un AS du Marlin, mais toutefois je sais le compiler; le 'bricoler" ayant paramétré mon imprimante à ma "main" et voilà que je me focalise sur ce temps d'impression, dont les ordres GCode gérant ces fonctions sont si je m'abuse les M31, 73, 75, 76, 77.

L'étude du GCode d'un fichier STL ordinaire, fait apparaître des lignes informatives à cause du ";"  TIME suivie d'une valeur en seconde identique à ce que Cura m'a donné, puis presque tout à la fin du même fichier TIME_ELAPSED suivie d'une valeur  identique à la première.  Et j'ai bien du mal à trouver comment Marlin lit le STL et en tire les durées d'impression qu'il peut joyeusement afficher sur l'écran de la machine. 

Car j'aimerai que ces affichages soient en relations avec les durées affichées dans Cura. 

Merci d'avances pour vos explications où ruses et astuces à ce sujet

Posté(e)

Salutation !

Je dirais que normalement le firmware marlin ne perd pas de temps et de ressources à lire les commentaires.

( Par exemple si l'on recherche la chaine "TIME_ELAPSED" dans le code source d'un firmware marlin https://github.com/search?q=repo%3AMarlinFirmware%2FMarlin TIME_ELAPSED&type=code rien ne laisse penser qu'il soit utilisé dans les parties qui "parse" (lecture et interprétation) les lignes d'instructions d'un fichier d'impression)

Donc il ne doit lire qu'éventuellement le "; TIME=".

Mais avec un écran ayant son propre microcontrôleur ou sur  OctoPrint ou un Klipper là éventuellement l'ensemble des commentaires peuvent être traités, car tourner sur un truc plus puissant en mémoire et vitesse de calculs. Et peuvent avoir des librairies pour mouliner tout cela, car non contraint par une taille mémoire d'un microcontrôleur ayant peu de ressources et devant répondre sans trop de délais pour contrôler les mouvements de manière coordonnée et sans micro-pauses)

 

Il y a 5 heures, BO105cbs a dit :

Car j'aimerai que ces affichages soient en relations avec les durées affichées dans Cura. 

Il me semble qu'il y a un plugin et/ou un script de post-traitement pour cela dans Ultimaker Cura

( qui en fait, insert des M117 avec comme message le pourcentage d'avancement tout le long de l'impression ... (Mais donc si on change le "feedrate percentage" M220: Set Feedrate Percentage forcement, ils seront faux s'ils affichent des durées, car ses messages de durées seront stockés en dure dans le fichier g-code... )

Posté(e)
il y a 56 minutes, PPAC a dit :

Il me semble qu'il y a un plugin et/ou un script de post-traitement pour cela dans Ultimaker Cura

Vi. Justement il y a une impression qui tourne sur la S1.

Juste avant j'ai faire un fichier gcode tout simple pour vérifier le comportement de ce script. Alors à la fin de chaque étape, il place à la fin de cette dernière un M177 affichant une durée. Comment il fait je ne sait pas mais le temps qui s'affiche est la durée restante d'impression. pour les étapes qui suivent.  😮

De série, sur l'écran de la S1, il y a deux indications de temps d'impression le PRINTING TIME et le REMAIN, Soit la durée d'impression depuis le début pour la pièce et le temps restant. Là le fameux script affiche dans la bande réservée au message. Oui ma machine me parle, enfin elle m'écrit 🤣, bref l'objet à 71 étapes, tout au début donc l'étape 1/71 le temps affiché qui est donc le global est le même que celui que Cura m'a fourni.

A un moment, mon impression est 33% d'avance sur le baregraph

Le TIME est de 1 heure et le REMAIN est de 2 heures

Le script me dit :  (11/71) 2h41mn et des secondes...

Ce que j'aimerai, souhaiterai, comme un voeux pieu, sans que cela soit la conquête du Graal 🤭 c'est ce que me donne le script actuel, Marlin me le fournisse et au bon endroit. J'ai cherché sur le web, comment le M75 fonctionne, j'ai trouvé ça et là,; qu'il débuterai avec la chauffe de quoi ? Mystère.  Bref le M75-M78.cpp fait référence à un print_job_timer que je ne trouve nulle part ailleurs.... 😬

Posté(e)

Salut,

De ce que je comprends des sources, le calcul serait donné en partie dans le fichier Marlin\src\sd\cardreader.h

#if HAS_PRINT_PROGRESS_PERMYRIAD
    static uint16_t permyriadDone() {
      if (flag.sdprintdone) return 10000;
      if (isFileOpen() && filesize) return sdpos / ((filesize + 9999) / 10000);
      return 0;
    }
  #endif
  static uint8_t percentDone() {
    if (flag.sdprintdone) return 100;
    if (isFileOpen() && filesize) return sdpos / ((filesize + 99) / 100);
    return 0;
  }

appelé dans le fichier Marlin\src\lcd\marlinui.cpp

  MarlinUI::progress_t MarlinUI::_get_progress() {
    return (
      TERN0(SET_PROGRESS_PERCENT, (progress_override & PROGRESS_MASK))
      #if ENABLED(SDSUPPORT)
        ?: TERN(HAS_PRINT_PROGRESS_PERMYRIAD, card.permyriadDone(), card.percentDone())
      #endif
    );
  }

avec le calcul du temps restant placé dans Marlin\src\lcd\marlinui.h

static uint32_t _calculated_remaining_time() {
        const duration_t elapsed = print_job_timer.duration();
        const progress_t progress = _get_progress();
        return progress ? elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress : 0;
      }

L'estimation du temps d'impression se ferait donc à la serpe, d'après la taille du fichier Gcode pondéré par le temps écoulé

  • Merci ! 1
Posté(e)

Merci de ces informations  @pommeverte, mais cela ne concerne t'il pas la fameuse barre de progrès. J'avoue que je cherche toujours c'est assez long, du fait surtout que je connais pas tellement la structure du programme Marlin et de ses sous modules avec leur classement.

Posté(e) (modifié)

Salut,

Il y a 9 heures, BO105cbs a dit :

cela ne concerne t'il pas la fameuse barre de progrès

oui, c'est utilisé pour gérer l'affichage de la barre de progression mais pas que

Rappel: le temps total = 100  x elapsed.value (=temps écoulé) / progress (=pourcentage effectué)

Modifié (le) par pommeverte
Posté(e)
Il y a 11 heures, pommeverte a dit :

oui, c'est utilisé pour gérer l'affichage de la barre de progression mais pas que

Mouaip ! 😏

J'ai aussi chercher hier un peu partout dans le Marlin, dans ceux de ta réponse y compris aussi dans les gCode concerné par le "Temps" sans vraiment trouver la logique, sûrement à cause d'un manque de connaissance de ma part. Pourtant je fais des efforts (pas violent bien sur 🤣) pour comprendre le langage et ses méandres....

Toujours est il que j'utilise le plugin de Cura, qui fonctionne parfaitement, enfin largement plus précis, étonné que le Marlin ne puisse en faire autant, ou à minima aurait une fonctionnalité permettant de récupérer cette information (en cas d'existence, car je ne sais pas si tous les "slicers" offrent la même chose) le Marlin ne "tranchants pas.... Maintenant, je cherche dans le système complexe des menus, comment supprimer l'affichage des informations enfin plutôt de la ligne fournies par Marlin. Bon évidemment, sans te commander 🙄 si tu savais ou cela se trouve, se situe, etc.... 😋 j'ai bien des idées à force mais forcément les bonnes, 😬

Enfin merci de tes réponses.

Posté(e)

Salut,

Il y a 4 heures, BO105cbs a dit :

Maintenant, je cherche dans le système complexe des menus, comment supprimer l'affichage des informations enfin plutôt de la ligne fournies par Marlin

je n'ai pas très bien compris la question. D'autant plus que tu dis: 🤨

Il y a 4 heures, BO105cbs a dit :

Toujours est il que j'utilise le plugin de Cura, qui fonctionne parfaitement

Est-ce que tu as une photo de l'écran pour comprendre de quelles informations tu parles?

De quelle version de Marlin es-tu parti? Marlin officiel ou mriscoc? Est-ce que tu peux fournir tes fichiers configuration.h et configuration_adv.h?

Posté(e)

Les trancheurs ne peuvent fournir que des temps approximatifs (une fois l'impression débutée, donc une fois les chauffes réalisées), plus ou moins exacts quand les informations d'accélérations, vitesses sont identiques entre trancheur et firmware.

Le seul réel moyen d'obtenir la durée d'impression proche de la réalité est l'analyse a posteriori du fichier gcode tranché.

Les utilisateurs de Klipper peuvent ajouter un « greffon » qui se charge d'obtenir ces durées : klipper estimator (nécessite tout de même un paramétrage pour qu'il soit vraiment efficace).

Pour Marlin, que je n'utilise quasiment plus, je ne sais s'il existe un projet semblable.

🙂

  • J'aime 1
Posté(e) (modifié)

@pommeverte

Bonjour, Oui j'utilise la base MRisCoc, arrangé à un peu à ma sauce 😋 (J'ai désactivé pas mal de bricoles et commentaires, y compris dans son /Proui) , concernant l'écran les affichages sont ceux d'origine, avec l'apparation de nombreuses autres lignes dans les menus en fait ce que Marlin offre et que Creality bride. Bref le firmware change deux choses enfin trois 😏 pour l'écran les icônes plus sympa, la police de caractères plus lisible à mon sens et dans une ligne ou les M117 s'affichent normalement, il a placé des sortes de raccourcis, que j'ai viré, enfin j'ai plutôt désactivé ces fonctionnalités qui ne me servent pas à la finale. Fichiers en pièce jointe. La base Marlin en 2.0.8 bugfix si je ne me trompe pas, en gros il fonctionne parfaitement.

Ecran d'origine de la S1 (ce n'est pas la mienne, mais il était comme ça, seul les icônes ont changés et c'est en Français....)

 

image.jpeg.4be6d7199695dad23407776d856875d1.jpeg image.thumb.jpeg.6e9b6a3837b342cb1b1c1b6120c0a4df.jpeg

A droite mon écran, enfin celui de @fran6p 😉, l'impression démarrée il est comme ce lui de gauche, mais en Français.. (Sans les accents, je n'arrive pas à les mettre... pourtant ils existent dans le fichier font.ttf) La barre ou est noté Creality ENDER 3S1 reste et c'est la que s'affiche les messages et notamment les M177 du plug-in Cura. (Heu 5.1 c'est la dernière version de mes firmware, c'est pour me repérer, là je travaille sur la 5.2, avec la dernière version du Marlin, dont les compils échouent à chaque fois, pour des raisons inconnues encore, c'est juste pour le fun, car ma version 5.1 me va...)

En fait je veux désactiver l'affichage de PRINT TIME et REMAIN avec leur valeur en dessous.

@fran6p

Il y a 5 heures, fran6p a dit :

Les trancheurs ne peuvent fournir que des temps approximatifs

Vi. Mais je me suis toujours basé sur ce que Cura me disait, en gros de toute façon il y a très peu de différence entre la réalité et ce que Cura à prévu au départ, quelques minutes, alors qu'avec le poisson, j'ai eu sur une grosse impression une bonne surprise au début, la S1 m'affichait une durée plaisante (-55 mn) et à la finale......🤣

Bref, le plug in de Cura, je ne sais comment il fait, mais récupère les infos du tranchage, t'affiches au départ la durée totale, et ensuite la durée restante, tout en t'indiquant la phase de travail (X/XX) correspondant en fait au découpage Curatesque 😋 du fichier STL. Ca correspond presque avec la barre de progrès.

Je n'ai fait que trois impressions (15 mn, 2h30 et 3h50) plug-in activé sans noter de différences notables entre ce que j'ai relevé (Avec mon chronographe, un truc rond que l'on porte au poignet et qui n'a pas besoin d'être rechargé pour donner l'heure 🤣 ) depuis le traçage ou la première opération qui est soit la jupe soit la bordure, le décompte commence là pour lui. Chauffe et ligne de purge ne sont pas pris en compte.

Il y a 5 heures, fran6p a dit :

Pour Marlin, que je n'utilise quasiment plus, je ne sais s'il existe un projet semblable.

Bah, j'ai cherché, vu, lu sur des Github, des redit pas mal de choses au sujet des temps d'impressions, mais rien de concluant ou d'approchant ce que je souhaite, et l'étude du Marlin 😏 (si j'ose 😋) s'avère complexe, pourtant dans une vie antérieure, les joies de la programmation ne m'était pas inconnus, j'ai même peut être encore une K7 de mon Commodore 64 🤨. Donc le poisson j'en comprends la structure, le langage par contre.... Si les ordres ne me sont pas inconnus (Quoique parfois ils auraient faire plus simple, sans compter des fonctions ou des "ordres" qui sortent un peu de mes compétences..ésotérisme ? ), leur arrangement..  🤪 🙃 😶 Me prennent un peu la tête 🤣

Bon, rassure toi, je ne t'en veux pas de ne plus utiliser le Marlin 😁 Personne n'est parfait 🤣 🤣

Encore Merci de m'aider dans ma quête du temps...

Configuration.h Configuration_adv.h

Modifié (le) par BO105cbs
Posté(e) (modifié)

Je dirais que les valeurs du temps:

  • écoulé est mis à jour à la ligne suivante du fichier Marlin\src\lcd\e3v2\proui\dwin.cpp

DWINUI::drawString(hmiData.colorText, hmiData.colorBackground, 47, 192, buf);

  • restant est mis à jour à la ligne suivante du fichier Marlin\src\lcd\e3v2\proui\dwin.cpp

DWINUI::drawString(hmiData.colorText, hmiData.colorBackground, 181, 192, buf);

les titres (labels Printing time et remaining) sont créés dans le même fichier, ici:

  DWINUI::drawString( 46, 173, GET_TEXT_F(MSG_INFO_PRINT_TIME));

  DWINUI::drawString(181, 173, GET_TEXT_F(MSG_REMAINING_TIME));

Modifié (le) par pommeverte
Posté(e) (modifié)
Il y a 6 heures, pommeverte a dit :

Si tu commentes ces lignes, ce sera plus efficace 😉

😶 Heu avant de faire une connerie que veux tu dire par commentes  ?

J'ai compris le principe, j'ai trouvé aussi les lignes et d'autres ailleurs traitant du même sujet, car le fait de commenter 🙃 celles que tu m'a indiqué ne suffisait pas. Maintenant c'est OK, je n'ai plus les deux lignes. Bon, je refais tous les calibrages machine avant de poursuivre mon impression qui patientait sagement.

Encore un grand Merci @pommeverte

Modifié (le) par BO105cbs
  • Merci ! 1

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
×
×
  • Créer...