Information on the distribution of calculations on Duet cards
-
Hello everyone,
I'm going to add 3 new boards to one of my machines.
- 3HC
- 2 x 1XD
And I'm in dire need of information that I can't seem to find or understand.
I'm trying to find out how (in a rather basic way) data is shared and processed in a Duet environment with expansion boards.
-
My first question arose from the fact that my machine, equipped with a single Duet 3 Mini 5+ card, shows artifacts when turning at “high speed”. I've carried out numerous speed and acceleration tests, and yet (without exceeding the mechanical limits of my printer) at high speed, it still lets gohsting appear in combined/complex movements such as bends, exceeding 120mm/s. So I wanted to know if it's possible to saturate the Cortex M4? And if so, does it simplify calculations for the various movements? In my case, there are two X and Y motors set at 400 steps/mm for a speed of more or less 120 to 150 mm/s for a slicer part with Cura, which has a motion resolution setting of 0.01mm.
-
My second question is whether there's a way / a calculation to know if the calculations required of the processor by GCode are too complicated or not?
-
In the case of expansion board connections, a 3HC, which board will perform PWM, motors and temperature monitoring calculations? In a certain logic, each board only performs the calculations for its own sub-components (except for the main board, which also reads the code and compiles the information received by the CAN to display it on the screen)?
-
SBC mode can help relieve the main board of certain calculations?
-
My machine will soon have two servomotors in a loop connected to a 1XD daughter board, and I'm wondering if there might be a slight latency between the two 1XD boards (the X-axis and the Y-axis)? Especially in combined movements ...
-
Finally, I can't quite figure out who sends the correction command to the motor in the event of an error between the 1XD and the integrated box (for example, with a Cl-42-T box or much more powerful industrial boxes).
Many thanks for helping me out on this front.
-
@Esteban said in Information on the distribution of calculations on Duet cards:
My first question arose from the fact that my machine, equipped with a single Duet 3 Mini 5+ card, shows artifacts when turning at “high speed”. I've carried out numerous speed and acceleration tests, and yet (without exceeding the mechanical limits of my printer) at high speed, it still lets gohsting appear in combined/complex movements such as bends, exceeding 120mm/s.
Which firmware version are you using? 3.6 series firmware is much more effective at reducing ghosting on bends than 3.5 series is.
@Esteban said in Information on the distribution of calculations on Duet cards:
So I wanted to know if it's possible to saturate the Cortex M4? And if so, does it simplify calculations for the various movements?
It's likely that you can saturate it by sending a lot of GCode commands in succession each of which commands a very small movement. If that happens then the print would slow down and perhaps get a little jerky. The only simplification that it performs is that when the microstep rate gets very high, it calculates the interval between steps every 2, 4 or 8 steps instead of every step and then interpolates the timings of the other steps.
@Esteban said in Information on the distribution of calculations on Duet cards:
My second question is whether there's a way / a calculation to know if the calculations required of the processor by GCode are too complicated or not?
You can get an idea of this by running the print in simulation mode. RRF will do most of the same calculations but it won't generate the steps.
@Esteban said in Information on the distribution of calculations on Duet cards:
In the case of expansion board connections, a 3HC, which board will perform PWM, motors and temperature monitoring calculations? In a certain logic, each board only performs the calculations for its own sub-components (except for the main board, which also reads the code and compiles the information received by the CAN to display it on the screen)?
The main board does all the GCode processing and queues the commanded moves. For motors connected to expansion boards, the expansion board applies input shaping and generates the step pulses. On Duets, all PWM output is done by hardware. Management of heaters is done by the board that the heater is connected to.
@Esteban said in Information on the distribution of calculations on Duet cards:
SBC mode can help relieve the main board of certain calculations?
In SBC mode the parsing of GCode files, the management of the filesystem and typically the user interface are tasks managed by the SBC. The Duet main board still calculates the moves.
@Esteban said in Information on the distribution of calculations on Duet cards:
My machine will soon have two servomotors in a loop connected to a 1XD daughter board, and I'm wondering if there might be a slight latency between the two 1XD boards (the X-axis and the Y-axis)? Especially in combined movements ...
In a CAN-connected system, moves are sent to CAN-connected expansion boards a few tens of milliseconds in advance of when they are scheduled to start. A time sync protocol keeps the clocks of all the boards in sync with the main board. So using expansion boards doesn't introduce any differential latency. However, your servomotors may introduce latency.
@Esteban said in Information on the distribution of calculations on Duet cards:
Finally, I can't quite figure out who sends the correction command to the motor in the event of an error between the 1XD and the integrated box (for example, with a Cl-42-T box or much more powerful industrial boxes).
Please explain what you mean by "correction command". It is the job of the servo motor to maintain the correct position. Servos typically have an error output that can be used to signal to the 1XD that they have been unable to maintain position. Such an error can be captured by an event handler in RRF. After fixing whatever caused the error, you would generally need to re-home the axis before continuing.
BTW when using servos or other external motor controllers to drive the main axes of a machine, we recommend using the Duet 6XD main board instead of 1XD expansion boards because it achieves higher step rates. It also has a more powerful processor than the Duet 3 Mini.
-
Thank you very much for all your answers, they help me a lot to understand the various functions.
So far I'm still on 3.5 but I'm going to switch to 3.6 with the installation of the new cards.
When I talk about “error correction”, I'm talking about holding in position. I didn't know if it was the 1XD that took care of this or if it was the boxes of the different external controller kits. But now I know.
Indeed, on a CL-42-T controller I dismantled, I couldn't find much electronics, which is where this question came from.
On the other hand, one last question: for very complex machines with a large number of axes, would it be more “efficient” to have a main 6XD and then add 1XDs and another 6XD in daughter mode? -
@Esteban said in Information on the distribution of calculations on Duet cards:
On the other hand, one last question: for very complex machines with a large number of axes, would it be more “efficient” to have a main 6XD and then add 1XDs and another 6XD in daughter mode?
If all the axes and extruders use servomotors then you should start with a 6XD. If there are more than 6 servos to connect then you will need another 6XD or some 1XD boards to drive them. If the additional axes need high step rates then another 6XD would give better performance than 1XDs.
-
undefined Esteban has marked this topic as solved