Notifications
Clear all

Firmware Bug for M602 command  

  RSS
StephanB
(@stephanb)
Active Member
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:

  • After the pause, the printer waits until the extruder temp is reached again. But then, the part cooling fan starts, regardless of an M107 or M106 S0 command. It does that with or without an additional M104/M109 command. It looks like M602 is a macro containing these commands, and somehow that includes restarting the fan.

  • The flow of filament needs a little headstart, because for the first millimeters of the E steps, nothing comes out and so, part of your part is missing

  • because the part cooled down a bit, you need to increase the temp for the first following layer
  • 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!

    Posted : 11/09/2018 4:44 pm
    Share: