supermerill / SuperSlicer

G-code generator for 3D printers (Prusa, Voron, Creality, etc.)
4.09k stars 518 forks source link

Travel with marlin #1649

Open supermerill opened 2 years ago

supermerill commented 2 years ago

VanessaE — Hier à 21:02 @merill just a reminder: travel acceleration needs to be M204 Txxxx when using Marlin, but you're using M204 Pxxxx, which is only for print moves (see https://marlinfw.org/docs/gcode/M204.html) for example, here's an excerpt from a benchy slice (5000 being travel accel, 1000 being 'default', all other accels are at 0): G1 X130.153 Y150.335 E9.97628 G1 X131.248 Y149.269 E10.03379 M204 P5000 G1 X131.433 Y149.411 F30000 M204 P1000 G1 X131.618 Y149.553 G1 F1800 G1 X132.367 Y149.053 E10.06767 G1 X133.239 Y148.629 E10.10415

sliced with Slic3r/merill-merge updated 20 mins ago (and with that one last commit that's still in SuperSlicer/dev merged on top) VanessaE — Hier à 22:38 Also, about the thing where you switch acceleration half-way along a move in anticipation of the accel that next print move will use... remember when I asked about shifting to the slower print accel when ending a travel move that started with a fast accel? It turns out that it is needed, so that such fast-accel travels transition smoothly into low-accel print moves. One could just set a slow travel accel, but that unnecessarily nerfs the entire travel move (which will definitely add up), when only the end of the move needs to be adjusted. and slow travel moves also means more ooze, which will usually manifest as either stringing or as starved lines, depending on the geometry of the part, how many perimeters it can fit, etc. VanessaE — Hier à 22:50 To my knowledge, Marlin can't do this sort of thing on its own (it only handles speed changes between segments, but it doesn't anticipate the need for accel changes), so the slicer has to explicitly order it.

macchinette commented 1 year ago

What happened?

Hello SuperMerill, I don't understand if the acceleration commands that are generated in Marlin 2 Firmware mode are correct for the moves that the printer must perform.

Let me explain better, here below a piece of the G-code of about one layer, where you can see the acceleration commands of M204 which are used both Pxxxx and Txxxx at the same time.

Calculating that Pxxxx is to be used for extrusion moves and Txxxx for displacement moves without extrusion, so they are generated and conflict with each other, I would expect only Pxxxx for extrusion and only Txxxx for displacement in M204 commands.

Thanks for any explanation you can give me.

;LAYER_CHANGE ;Z:0.32 ;HEIGHT:0.16 ; custom gcode: before_layer_gcode ;BEFORE_LAYER_CHANGE G92 E0 ;0.32 ; custom gcode end: before_layer_gcode ; stop printing object Z_wobble_test_tube_cut.stl id:0 copy 0 M486 S-1 M204 P1500 T1250 ; adjust acceleration G1 Z0.32 F360 ; move to next layer (1) ; custom gcode: layer_gcode ;AFTER_LAYER_CHANGE ;0.32 ; custom gcode end: layer_gcode M104 S240; set temperatures M140 S70; set bed temperatures G1 E-5 F2400 ; retract G1 Z1.12 F360 ; lift Z ; printing object Z_wobble_test_tube_cut.stl id:0 copy 0 M486 S0 ; acceleration to travel G1 X114.9439 Y115.2289 F6000 ; move to first perimeter point (acceleration) ; decel to extrusion G1 X121.3682 Y116.3722 ; move to first perimeter point (deceleration) ; end travel M204 P800 T1250 ; adjust acceleration G1 Z0.32 F360 ; restore layer Z G1 E5 F2400 ; unretract ;TYPE:Internal perimeter ;WIDTH:0.834336 G1 X105.6318 Y116.3722 E0.83743 ; perimeter G1 X105.6318 Y100.6278 E0.83785 ; perimeter G1 X121.3682 Y100.6278 E0.83743 ; perimeter G1 X121.3682 Y116.2922 E0.8336 ; perimeter ; acceleration to travel

Project file & How to reproduce

Project file renamed .3mf test_M204.zip

Version 2.5.59.2

Operating system Windows 10