Firmware Bug for M602 command
I want to print a part filled with sand to make it heavier on my I3 Mk2 - firmware 3.1.0. If you do that right, this wouldn't be a problem and shouldn't cause a mess. If you turn the part cooling fan off until the first top layer is on the part. I program my CNC mill by hand, so it doesn't look like a big thing to do with the right documentation.
Just enter a M601 (long pause start) code where you want to fill the part followed by a M1 (wait for user) and M602 (long pause end).
But the gcode doesn't seem to work that way. Multiple problems:
Atm, the filling section of my code looks like:
; last lines of previous layer
G1 X124.009 Y196.112 E-0.31643
G1 X124.202 Y195.919 E-0.09457
G1 X124.922 Y196.112 E-0.25836
G1 E-0.13064 F2100.00000
G1 Z22.300 F7200.000
G1 X147.636 Y196.418 ; end of slic3r code
M601 ; long pause
M300 ; beep
M1 ; wait for user filling the part and press the knob
M602 ; long pause end
m106 s0 ; fan speed to 0
m107 ; turn off fan
M104 S225 ; set extruder temp
M109 S225 ; wait for extruder temp
G1 Z22.300 F7200.000 ; go to layer height
G1 X155 Y199 ; go outside print
G1 E0.80000 F2100.00000 ; undo retraction
G1 E5 ; feed filament empty to avoid gap in print
; continue slic3r code
G1 X147.636 Y196.418
G1 Z22.000
M204 S800
G1 F2400
G1 X102.893 Y196.418 E1.54482
G1 X102.359 Y199.413 E0.10503
The issue: Even if nowhere after that section an M106 appears in the code, the part cooling fan starts running after the M104/M109 and ignores the M106 s0 and M107 lines. The printer shouldn't do that. The only solution is jamming the fan with a toothpick, but that is not a proper GCode command. The other manually added commands do their job, like the G1 E5 to prefeed the filament a bit or the increased temperature. But the fan ... causes a mess, because it blows the sand all over the printer and mechanics and sand really doesn't like each other.
PS:
I tried on a test piece. There is definitively a bug in the M602 command, meaning that there is a delay for the restore while the following lines are executed. In the example above, the commands for temperature and fan, the 5 mm extrusion and the reposition moves would be executed correct. Then somewhere around the last visible line all the previous changes - like temperature and fan - would be overwritten out of the blue. And thanks to that $%/& fan, i have sand all over and in my printer, had to disassemble the z axis for cleaning and needed a recalibration.
The behaviour of M602 should be to reset the settings first, and then continue the execution of the GCode!