Increase maximum number of axii to 30?
-
@o_lampe If possible, I'd like to avoid a custom hardware solution, which I assume the PLL clock generator approach would require. Is it possible to buy off the shelf components to make this work?
What all would be required to drive multiple main boards from a SBC with RealTimeClock?
This approach seams like it could be a good solution.I'd like to avoid solutions that sync periodically per layer or otherwise, if possible.
@dc42 What is the limitation in supporting 30 axes with multiple main boards ganged together? It sounds like bus load is not an issue. I believe I read in a previous thread that naming convention was the primary issue but solutions were discussed like using an upper and lowercase letter in conjunction.
Thank you both for giving this some thought and providing input. I really appreciate it!
-
@Thorpydo said in Increase maximum number of axii to 30?:
What all would be required to drive multiple main boards from a SBC with RealTimeClock?
This approach seams like it could be a good solution.That's actually a far fetch.
We only discussed briefly if it would be possible to control several Duets from one SBC. Such a solution doesn't exist yet, but I remember vaguely that it should be possible.
Now you want to control the Duets in sync which is another step forward.
You'd have to send the gcode to all Duets and include a common start signal (hardware trigger or time signal)
Each Duet has a code buffer "the planner" which sends a signal to the SBC when running empty (maybe there is even an object model variable?).
That's the point where synchronization could take place.
If the Duets drift apart, the slowest Duet will be the last to ask for new gcode.
One way to sync it, would be to slightly increase the acceleration of the slowest. Since we are talking about fractions of milliseconds difference, this is the smoothest way IMHO.
It's all grey theory, increasing the number of axes might be easier? -
Okay, I see.
Perhaps then, we can determine a strategy and all sections of code that would be need to be modified to increase the maximum number of axes past 30.
For reference, the same topic has been discussed previously in these threads:
https://forum.duet3d.com/topic/16023/maximum-number-of-axis
https://forum.duet3d.com/topic/26493/axis-limitationsIn reviewing the previous discussions, lowercase letters were added to give additional axes. Since the software is not able to differentiate between upper and lower case, a single parenthesis is used to signify lower case, '.
In the same discussion, DC42 suggests that Q could be used in the same way as '.
"because currently letter Q isn't used in any commands that accept axis letters."So, perhaps a simple approach could be to use both ' and Q, instead of just '.
This approach would yield 32 unique drive letters:
X,Y,Z,U,V,W,A,B,C,D
abcdefghijkl ('A, 'B, 'C, 'D, 'E, 'F, 'G, 'H, 'I, 'J, 'K, 'L)
QX, QY, QZ, QU, QV, QW, QA, QB, QC, QDCan we simply replicate the same code that is used for ' to also work with Q?
Are there any potential 'gotchas' or problems with the suggested solution? -
@Thorpydo using Q as a prefix character would break modularity somewhat, by making the interpretation of letter Q context sensitive.
What I may do instead is to add an M-code to turn case sensitivity of GCode commands on/off so that lowercase axis letters can be used without the leading quote character.
-
@Thorpydo I have experimentally increased the maximum number of axes to
3230 in 3.5beta2 for the MB6HC and MB6XD. Lowercase letters a thru z can be used as axis names. The maximum axes plus extruders is also 32.On other boards the limitation of 15 axes and lowercase letters a-d only remains.
This change is experimental because it has a significant effect on memory usage and it may also impact performance.
-
@dc42 is there a gcode to allow the use of the lower case characters or is it still prefacing with the single quote?
-
@T3P3Tony it's still prefixing with single quote for now.
-
@dc42
That's wonderful to hear David!
I really appreciate your support in accommodating this feature so promptly.
I understand the change is still experimental and performance might be impacted.I still have some work to do with the slicer and hardware, but will report back when I have some meaningful results and can comment on any performance impact.
Thank you! You guys rock!
-
@Thorpydo said in Increase maximum number of axii to 30?:
will report back when I have some meaningful results
Video, or it didn't happen
We want to see this beast running. I have no idea what 29 axes will do simultaneously... -
@o_lampe Hah! You and me both!
@dc42 I'd like to make sure I understand the appropriate letters to be used.
My understanding is not adding up:
all lower case letters are available; 26 letters.
X,Y,Z,U,V,W,A,B,C,D uppercase letters are available; 10 letters.
It seems this nomenclature allows for 36 letters which doesn't jive with your comments of 30/32.I would like to use:
For extruders:
A,B,C,D
For motion:
X,Y,Z,U,V,W,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,tWill this letter assignment be acceptable?
-
@Thorpydo You don't have to assign multiple letters to extruders. They are just E0, E1, E2 a.s.o.
The letter "E" is the only drive letter, that allows different config values for steps/mm, motor current, acceleration a.s.o.Regarding the max axes number of 32: my best guess is that it's related to the bus width of the PWM registers or such.
Using more than 32 would mean twice the workload and memory-use I guess. -
@o_lampe Ahh, gotcha. Okay.
My modified understanding:
For extruders:
E1, E2, E3, E4
For motion:
X,Y,Z,U,V,W,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,t
(motion could use other lower case letters or A,B,C,D, but total number of axes cannot exceed3230 based on some internal limit)Thanks for clarifying!
-
@Thorpydo said in Increase maximum number of axii to 30?:
E1, E2, E3, E4
The internal extruder count starts with E0. Most slicers do the same.
@dc42 When a tool has more than one extruder, the only way of controlling them is via mixing ratio, right now?
Is there any change planned?
New nomenclatur could beG1 Xn Yn E0.3:0.0:-0.5:0.8 ; first extruder moves 0.3mm second does nothing, third retracts 0.5mm a.s.o
-
@o_lampe said in Increase maximum number of axii to 30?:
............... @dc42 When a tool has more than one extruder, the only way of controlling them is via mixing ratio, right now?
Is there any change planned?
New nomenclatur could beG1 Xn Yn E0.3:0.0:-0.5:0.8 ; first extruder moves 0.3mm second does nothing, third retracts 0.5mm a.s.o
I'd need to check but I'm 99% sure that the mixing ratio will only be applied if a G1 move contains a single En command. So I'm almost certain that your example of moving multiple extruders does already work.
-
@deckingman That would be cool, but I never stumbled across an FDM-printer with more than one nozzle per tool.
Maybe a burger-bot? To apply ketchup, mostard and special sauce in one move? -
@o_lampe said in Increase maximum number of axii to 30?:
@deckingman That would be cool, but I never stumbled across an FDM-printer with more than one nozzle per tool.
Maybe a burger-bot? To apply ketchup, mostard and special sauce in one move?Not sure I understand. I thought we were talking about tools with multiple extruders but a single nozzle. With such a set up (i.e. multiple inputs but a single output), then a G1 En command will move each extruder by whatever the mixing ratio is set to in order to extrude "n" mm of filament in total. However if the G1 command is in the format En1:En2:En3 then each extruder will move by those n1, n2 and n3 values. (At least I'm 99% sure it does).
-
@lampe
Okay, thanks, I now understand nomenclature should be E0,E1,E2,E3.What is the definition for a tool, as defined by the firmware?
Is the tool considered the XYZ motion system or is the tool considered something that can be attached or interchanged to the motion system?@deckingman
It's great to hear that there shouldn't be further issues here; that moving multiple extruders already does work.For this application, I don't want any mixing ratio applied.
I believe I want 4 tools, each with its own nozzle."... if the G1 command is in the format En1:En2:En3 then each extruder will move by those n1, n2 and n3 values ..."
Great, this is the desired output.
As I understand, Gcode output should be G1 Xn Yn En0:En1:En2:En3 -
@Thorpydo If you want to have all extruders work at the same time, you have to define one tool with 4 heaters, 4 drivers for extruders, all axis' drivers, all hotend- and partcooling-fans.
But there is of course no slicer right now able to control all the axes at once. You'd have to write your own script for that. -
@deckingman said in Increase maximum number of axii to 30?:
I thought we were talking about tools with multiple extruders but a single nozzle.
Until now, we don't know what the thread starter is planning to do. But I doubt, he needs a motion system with 25? axes to move only one nozzle?
-
@o_lampe
I might not have made it clear before:
All motion systems and all extruders moving at the same time. Multiple extruders, moving independently, extruding at the same time. Four heaters, four extruders, four filaments being driven, etc. (all at the same time)
I understand there is currently no slicer available to be able to control what I am asking.
Writing the slicer is part of my scope of work. I am writing the slicer and that's why I need to understand explicitly the proper way to communicate with RRF and command with Gcode, all four extruders, and all motion axes, simultaneously.It's still not clear to me if format should be:
G1 Xn Yn En0:En1:En2:En3
Or:
G1 Xn Yn En0:n1:n2:n3
(where n0, n1, n2, n3 represent feeding material in mm/s)Based on your input, it sounds like the later?
G1 Xn Yn En0:n1:n2:n3