supermerill / SuperSlicer

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

Starting Gcode ignores M106 command under certain conditions #4411

Open Rattiputz opened 2 months ago

Rattiputz commented 2 months ago

What happened?

Behaviour

The "Start G-code" ignores M106 when expressed as a decimal number between 0 and 1: M106 Since this doesn't concern the cooling or toolhead fans, I cannot work around this bug in the filament cooling menu.

This does not happen with values large enough (20 for example): M106_20 I guess this avoids PWM values that are too low for a fan to spin (0-255).

I am aware that this has been an issue before (https://github.com/supermerill/SuperSlicer/issues/834#issue-774962065), but I presume the fix was only applied to numbers between 0 and 255. A suitable fix would be to allow the number range between 0 and 1 (on a Duet 6hc running RepRap Firmware this command is recognized) or prevent the user from exporting the gcode as long as the argument is not in the correct range.

Project file & How to reproduce

  1. Enter a M106 command into the custom gcode section with S#.## as a decimal number between 0 and 1 (for example M106 P2 S0.7)
  2. Export the gcode and skip to the custom gcode section
  3. The M106 command will not be there

Version

2.5.59

Operating system

Windows 10

Printer model

Voron 2.4r2 with Duet 6hc+3hc running RepRap Firmware

shcad commented 2 months ago

Its somehow expected behaviour. According to the standard the M106 gcode the S parameter number has to be an integer from 0 to 255 (0 for 0% speed and 255 for 100%). So what is Your goal? To set to some percentage of full speed (like 0.2 which represents 20% of full speed)?

Rattiputz commented 2 months ago

The duet documentation states that values between 0.0 and 1.0 can be used, as well as 0-255.

M106

My goal is to use the first interval since it is much more intuitive (70% is S0.7 or S179, 15% is S0.15 or S38, you chose which fits you the best). Since this is supported at least on Duet boards (M106 P2 S0.7 sets fan 2 to 70%) it would be best that SS didn't ignore the parameter completely if the chosen interval is 0.0-0.1 (without any warning your part cooling fan could be off for the entire print, for example).

shcad commented 2 months ago

Duet support means Reprap type gcode extension. I still use SS 2.4.58.5 and this version exports custom start gcode with M106 S0.2 (I have checked with gcode flavours set to Reprap, Klipper and Marlin). So it is (was) possible.

I think we have to wait for Meril to make it clear (bug or intentional change).

Have You set gcode flavour to Reprap in Your SS version?

Rattiputz commented 2 months ago

I came to the same conclusion, my custom gcode was from way earlier when the fans still started. I guess somehow this snuck its way into SS again in the meantime. I also checked beforehand that RepRap Firmware flavor was indeed selected.

I hope this can help people that are now having the same issue!