I have just fitted a Smoothieboard to an OX CNC 1000mm x 1500mm.
Things are going well, though I am in the process of modifying the web UI to be more CNC-like.
I have a question: Can I get the Smoothie to pause G-Code interpretation on receiving a Tool Change command?
I have another CNC with Mach3, and there I can set the machine to pause on Tn commands, so I can physically change the mill in the spindle. This is kind of useful for running jobs where I have a roughing pass then a fine detail pass.
This didn’t work for me. I wrote a little test snippet that should turn on the spindle, lift up, turn off the spindle, pause for tool change, then turn on spindle and lower back down.
M3 ; Enable spindle
G0 Z5 ; Raise of to 5mm
M5 ; Disable spindle
M600 ; Pause
M3 ; Re-enable spindle
G0 Z0 ; Lower back to zero
M5 ; Disable spindle
But it blows right through the M600 like it wasn’t there. I know it needs to run out the queue before it pauses, is it possible my test is too short?
I also tried an M25, but it seemed to abort rather than pause, That is, I couldn’t seem to resume and my GLCD went back to the watch screen. I am really looking for a way to pause with g-code and re-enable with the play/pause button. See any chance of that?
I think this means at this point there is a problem with doing this in a “played” file.
Would you please mind opening an issue ( being as complete as possible ) here : https://github.com/Smoothieware/Smoothieware/issues
Following the “How to file an issue” instructions as well as you can.
Post a link to the issue here when done ( or at least give it’s number )
I will fill out a detailed report when I’m back home. It’s strange because M25 works for a played file and it’s executed in the same switch statement as M600 (in Player.cpp).
Perhaps it’s the ten cycles of the main loop before the suspend part 2 is called that’s causing the problem in this case? I’ll also try doing something silly like a bunch of duplicate blank G0 commands, since the panel screen module is also registered for the main loop event it might be passing things to the dispatcher and robot still. It doesn’t appear to check with anyone if execution of its own command queue is supposed to be suspended.
But, I’m not going to pretend to grok the code, so I have no idea what will actually work. I just suspect the issue is arising from playing the file on the SD card from the GLCD, so I’ll also try playing the test file in a couple different ways.
I’d definitely be interested in seeing what you come up with for the web UI. I agree it feels very 3D printer oriented if you’re used to something like Mach3 for CNC.