Multiple motion system
-
Hello,
I am trying to experiment with the second motion system. I was reading the whole documentation about the second motion system and couldn't really understand how to assign the unused axes to the second motion system. Can someone please help me understanding the concept? How do i map the unused axes to the second motion system? Thank youM596 P1 ; selects the second motion system.
I want to somehow maps the unused tool to the second motion system
-
@Alva Once the second motion system is selected, you just send Gcode commands to it as usual; you don't map them to that system as such. Once a motion system starts using an axis or extruder, it owns it until it is released, usually with M400. As it says in https://docs.duet3d.com/en/User_manual/RepRapFirmware/Multiple_motion_systems:
At any time, each motion system “owns” a set of physical axes and extruders. It may also own a tool. No other motion system can use those axes/extruders or that tool until the owning motion system releases it. See below for details of ownership of axes and extruders.
For example, if the first motion system is running commands in XYZ and for T0, you could set the second motion system to use a second extruder, and if it is on an independent axis (say U), move that too. eg
... ; moves in motion system 0 G1 X100 Y100 Z5 E0.1 F1000 G1 X110 Y100 E0.1 F1000 M596 P1 ; selects the second motion system T1 ; select tool (set temperature changes from standby to active temperature) M116 P1 ; wait for temperature to be reached G1 E5 F1000 ; prime extruder M596 P0 ; change back to first motion system, while the above happens G1 X120 Y100 E0.1 F1000 ... M400 ; wait until motion stops, release owned axes and extruders from motion systems T1 ; first motion system takes over T1, parking T0. ...
(I haven't tested the above, I'm not sure if sending M116 will cause both motion systems to pause, though I would have thought it shouldn't.)
Remember that the second motion queue only has a queue depth of 3 commands by default. Use the M595 command to lengthen it if necessary.
Edit: I've updated the wiki page with a little extra info, but waiting for @dc42 for some details.
Ian
-
@droftarts Is there any way to print back the axes used by the motion systems? I have tried the sample code that you have sent me above and it resulted in the error as shown in the figure below.
. I tested the above piece of code as a macro. In my system i have X, Y, Z, U , W axes and tool 0 is moved by u and tool 1 by w axes.echo "start testing 2nd motion system" T0 G1 X100 Y100 Z25 E0.1 F1000 G1 X110 Y100 E0.1 F1000 M596 P1 ; selects the second motion system T1 ; select tool (set temperature changes from standby to active temperature) M568 P1 S200 R200 ; wait for temperature to be reached G1 E5 F1000 ; prime extruder M596 P0 ; change back to first motion system, while the above happens G1 X120 Y100 E0.1 F1000 M400 ; wait until motion stops, release owned axes and extruders from motion systems T1 ; first motion system takes over T1, parking T0. echo "done testing 2nd motion system"
Line number 6 is selection of the tool and is clearly not X axis.
-
@Alva Do you have anything in the various tool change macros?
-
@gloomyandy i am just setting the led strip colors of the corresponding active tool and moving the u or w axes based on which tool is activated to its minimum position
-
@Alva I tried another test, while the machine was printing i trigerred daemon with a flag global.called and created the condition when global.called= true to select the second motion system and move the W axis. then the axes moved to the Y max and crashed and machine still remains in the printing state doing nothing.
-
@Alva The system staying in the printing state is to be expected when you get a motion error, it is basically partially shutdown when that error occurs. The question is why are you getting those errors. I assume if you just run whatever it is you are printing then you do not get that error. I'm not sure if running the second motion system from another gcode stream is causing a problem. From what I remember I think there may be some assumptions that both motion systems are running from the same gcode file (possibly forked using M606).
It might help if you post your config.g file and maybe a picture (or video) of your printer. I'm struggling to work out how all of this fits together, you seem to have two tools but six extruders and 5 axes. I'm also a little confused as to how the tools are controlled what moves when you command X and Y moves?
-
@gloomyandy Hello ,
Sorry for the late reply. Was on vacation for few days. I have continued the "experiment". Ignore the number of extruder drivers i had above. I rewired and reconfigured everything to the very simple set up. I have a Duet 3 mini 5+ board with CAN expansion motor board and a tool board. I have X;Y;Z set up via the motor board and the tool axes from the tool board. I have a stepper motor connected to the mini board and i configured it as U axis. It is just for the experimental set up. (My intended use is to load filament in the other tool while the machine is printing). So the U axis is my fake tool for example. I am just experimenting before i want to really implement it.
My findings so far.:- With the firmware version 3.5.3 , it is working.
- With the firmware version 3.6.0.beta1 i am getting the error that i reported before.
The video with the version 3.6 is
20241113_171849.mp4
daemon(1).g config(3).g .
Thank you .
-
@Alva I think the first step will be to wait for 3.6.0-beta.2 (due shortly I think) and test again with that. If it still fails then try and create a simple test case that recreates the problem and then we will need to try and reproduce the problem.