samroesch wrote: ↑
Tue Aug 18, 2020 8:09 pm
Parallyze, thank you for the reply. To be clear, I'm raising this bug because the behaviour is not logical. I'm not saying I can't print because of it. Now that I understand what's happening, there are lots of ways to avoid this, BUT it did trip me up for 3 days of painful troubleshooting before I found the bug, so I wanted to raise it and have it corrected so no-one else has to go through what I did.
Still I don't see a "bug" here, but I admit it can take some time to realize this, especially when new to 3d printing/starting scripts and such.
In my opinion, the logical behaviour is that the Layer 0 fan setting should be written into the gcode as and when Layer 0 starts. The scope for "starting scripts" is so large and varied that S3D should not be applying layer specific settings before the "starting scripts" are executed.
The current behavior is this:
M106 S0 will be inserted, just like other commands. If fan speed is set to "0" for Layer 1, it will be set to PWM Duty 0% right
away. So the fan won't spin while doing the startup script and it won't spin when starting to print the features on layer 1.
Whenenver there's a change (25% at layer 2, 50% at layer 3 for example), this will be added right into the gcode where a
new layer starts. People usually don't want the part cooling fan enabled on the first layer because this might introduce problems
with layer/bed adhesion. And as it's the first layer anyways, there's no steep overhangs or anything which might rely on heavy
So far my experience with S3D. I set a fan speed at a certain layer and it will be set.
And that's the part I don't really understand now on your side: What exactly is the problem with the
fan set to PWM speed 0 before the start script, do you want to enable/disable it inside the start script for
a reason... like...
For all S3D knows, my starting script might be written to play a flute sonata with the cooling fan. It should set Layer 0 fan speed after starting scripts.
Please explain if you disagree with that logic, and why.
...yes. In that case S3D would insert the M106 you would change it and it would stay on whatever value you set.
But it can be done. There is just one thing you probably didn't know about, yet. Variables inside the start script.
Have a look at your start script. One thing you might notice is there's no commands to heat the bed/extruder. S3D will
insert them before your start script, because it sees they are missing.
It is exactly the same for other things, like fanspeed. If there's no M106 inside your start script, S3D will put it in before.
The solution is pretty simple if you want to handle your fan inside the start script manually:
Inside the start script, add whatever commands you'd like the fan to do:
Code: Select all
M106 S255 ; set fan to 100% pwm
G4 P5000 ; wait 5000ms
M106 S64 ; slow fan down to 25% pwm
G4 P5000; wait another 5000ms
The last line includes the variable "fan_speed_pwm". If this M106 command exists inside your starting script
S3D will not add it in front of your script later, like it does now. It will take the layer 1 temperature set on the cooling tab.
This way you should be able to do whatever you want and simply tell it at the end of your start script to
"take over" the value set for layer 1.
This is very close to another very common thing mentioned: Heating. Some people would like to heat bed/extruder in
a specific order - but unless you add those commands to your starting script they will be added automatically in front
of it, just like M106.
Here's more information on this all: viewtopic.php?f=8&t=1959&p=7574
Does this help?