Rotary axis feedrate calculation
-
Hello, I am working on a project to deposit filament along length of a rod. Currently I only have two axes: Axis A for rotation of the rod about its axis and Axis X for moving the extruder head along the length of the rod. The z height distance between tip on the nozzle and rod dia is adjusted manually. I have configured the rotary axis A as follows: (Using Duet3 mainboard 6HC with RRF 3.4.4)
; Drives M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.4 S0 ; physical drive 0.4 goes backwards M584 X0.0 Y0.1 Z0.2 E0.3 A0.4 ; set drive mapping M350 X16 Y16 Z16 E16 A16 I1 ; configure microstepping with interpolation M92 X1280.00 Y80.00 Z400.00 E397.00 ; set steps per mm M92 A43.3086419 ; set steps per deg for rotational A axis (0.9deg motor = 400 steps/rev; 16x microstepping = 400*16/360 = 17.7778 steps/deg; 2.436 gearing ratio) M566 X900.00 Y900.00 Z60.00 E120.00 A120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z180.00 E1200.00 A12000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E250.00 A500.00 ; set accelerations (mm/s^2) M906 X1500 Y800 Z800 E1000 A1500 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X230 Y210 Z200 S0 ; set axis maxima ; Endstops M574 X1 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in
The documentation says for rotary axis, M92 uses "steps per degree" units.
Questions:
- For a rotary axis, What are the units for M201, M203 and M566? deg/min?
- To set rotary axis for infinite rotation, I can either use large value in M208 or use G92 A0 before each move. What is max number I can use for M208 command?
- For an example linear interpolation command including linear, extruder and rotary axes: G1 A14400 X32.0 E80.0 F130
What is the speed of rotation of rotary (A) axis in this case? (based on my configuration)
Just trying to understand how feed rates work when linear and rotary axes are used in same G1 command.
Update:
After some experimentation, I noticed that changing feedrate (F) in the above G1 command involving A,X and E axes had NO effect on speed of rotation of A axis. This seems like feedrate parameter only affects linear axes. This makes me wonder how is A axis rotation speed calculated by Duet? -
@RockB said in Rotary axis feedrate calculation:
What is max number I can use for M208 command?
IIRC it was +/- 2^31 = 2.147.483.648 mm. Divide that by the circumfence of your rod and you have the number of turns.
the above G1 command involving A,X and E axes had NO effect on speed of rotation of A axis.
Maybe you have to define a tool which replaces the Y-axis with A-xis? Just guessing here...
-
@RockB hello, about your questions about rotary axes I have some information:
- the threads https://forum.duet3d.com/topic/21880/g1-feedrate and https://forum.duet3d.com/topic/21816/rotational-axis-abc-limits-behaviour have some information. There are specifications (coming from CNC, NIST: https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=823374 e.g. 2.1.2.5) which specify the feedrates if you have mixed rotary and linear axes
- the mm/s and mm/s² are degrees/s and degrees/s² respectively for rotary axes each
- axes XYZUVW are linear axes by default and ABCD are rotary ones. This can be changed by the M584 R parameter. This influences some internal calculations like distance calculations
-
@RockB said in Rotary axis feedrate calculation:
set rotary axis for infinite rotation
The M208 is the smaller problem. M208 XYZ uses print area limits in mm traditionally (because they were used for linear axes). M208 A is then e.g. in degrees, but it's not possible to set XYZ degree limits for XYZ rotary axes. This is solved for kinematics with XYZ rotary axes by other means, e.g. dedicated angle limit parameters. Not specifying A limits will probably solve the problem.
But as said, this is the smaller problem. Main problem, if you plan to have an actuator which runs all the time, is, that RRF is not designed this way. Every stepper needs to be planned in a fixed time frame, i. e. needs to end. So an unlimited movement is not possible.
There is a thread discussing whether RRF can be extended to support unlimited movements. Another possibility is to install a stepper outside of RRF with unlimited movement and control start/stop with RRF.
If you meant turning an axis more than 360 degrees with infinite, there was the thread https://forum.duet3d.com/topic/17169/what-s-the-best-way-to-set-up-a-continuous-rotation-for-an-axis?_=1592982351701
This movement will however stop after the time frame, however.