Print queue feature for true sequential printing
-
I have recently embarked on a printer SCARA printer which can print in a full circle/donut, meaning that it would be possible to print files one after the other as the arm moves around the circle. I was looking for a way to create a print queue where one print would finish and then another print would start automatically in a different zone of the print area.
As of now I have done some research about the HTML responses that RRF uses to tell DWC what the current status of the printer is. I was thinking that it may be possible to either have some external server which polls the status of the printer, and if the printer is not actually printing, it would send a command to begin the next print in the queue and so forth.
I was also looking at MultiDuetWebMonitor to see if some sort of print queue could be added to that. Has anyone ever attempted something like this and/or is it even possible?
-
Maybe you could implement zones using G10 workplace coordinate offsets? It should work well for mutually exclusive fixed size zones. Trickier bit would be a way to track which zones are ready to go and which are already used.
I know Ultimaker has a print queue already implemented, you can enqueue several jobs, and the only user interaction after is a confirmation that the print area is ready to go (i.e. print removed, bed prepped between jobs). iirc It even supports multiple printers so you can just send all your jobs to a central queue from which they are dispatched to any available machine. Pretty nice.
-
@nhof That Ultimaker queue feature sounds almost exactly like what I need, the only difference being that I wouldn't have to manually tell the printer to go.
The cool thing about how the arm would rotate is that it could move to a completely unique position where it is impossible for it to interfere with the previous print (depending on the arm and previous print it could be 10-15° away from the previous print). The printer would print in zones to the left or right of the previous one so there really is not need to keep track of zones due to the nature of the machine.
-
@koaldesigns
You can use the end-gcode of the slicer to have your arm move nn degree to one side and call it your new 0,0 (or whatever your homing position is) with G92.... or use the aforementioned workspace ccordsThen automatically start the file you want to print next, with M98 P"filename.g"
This method would run eternally without asking for confirmation.
With the new access to variables, you could also add a while-(iteration)-loop to limit the number of prints. -
@koaldesigns If you want to explore your original idea, my NodeDSF solution can help with monitoring the status and triggering actions based on criteria. It works for both standalone Duet & Duet+SBC(DSF) configurations.
It runs on node-red so its easy to configure, plus node-red can run almost anywhere (docker, pi, windows etc) on your LAN. If your interested and need some assistance let me know.
There is a full wiki on the repo (see my sig for link).
-
@mintytrebor That sounds cool, I'll check it out. Is there anything I should know beforehand and/or a good way to implement the queue system.
@o_lampe The plan was to use the G92 command to "recenter" or home the printer after it had moved to the next position, so it would be something like G1 H2 X(however many degrees you want the offset to be) and then G92 H2 X0.
-
@koaldesigns
Here is a simple queue I put together with NodeDSF & BtnCmd. It just simulates each job as its a P.O.C, but it gets the idea across.Short video of it running here
And here is what it looks like in nodered with NodeDSF
Edit: forgot to add, it triggers the next job in the Q when the system detects a status change to idle.