Wrong Feedrate with Mukti Axis G-Code
-
@jay_s_uk i's not a 3D-Printer but a Duet controlled machine. I can't go int details.
The kinematic is configured as followed:
M669
Kinematics is Cartesian, no segmentation, matrix:
1.00 0 0 0
0 1.00 0 0
0 0 1.00 0
0 0 0 1.00 -
@Philipp-R said in Wrong Feedrate with Mukti Axis G-Code:
if i run a liner axis "X" and "Y" with "G91 G1 X500 Y500 F500" then it moves 500mm in 1min 24sec.
If you move 500mm in X and 500mm in Y then the total move length is not 500mm but 707mm (500mm * √2) so it should actually take 60s * √2 = 84.85seconds so it looks like this is exactly the expected behaviour?
-
@T3P3Tony ok i see. The problem is that with the M669 ist applied, the Gcode command will be transformed to the cartesian Kinematic moves.
-
Is there a posibillity for the Duet to interpret the Gcode command for each axis indepandently?
-
Or do i have to change the matrix in a specific way to get the result i want?
-
-
@Philipp-R can you explain what result you want? It is normal to specify the movement of the "effector" whatever that is so the firmware is moving the effector at F500, no matter which axes are moving it
-
@T3P3Tony Ok, let's say the machine has two tasks to do. One is to move the X-Axis to 500mm with F500 mm/min. The second task is an interaction between the remaining axes.
So the effector movment is completly constrained on the X-Axis and is linear.I want to input the G-Code "G91 G1 X500 Y500 Z500 U-500 F500". The result should be, that X-Axis moves 500mm per minute. And the remaining axes do their movements independently.
The importand thing is, that the movements of all axes should be done simultainiously and consistent.
-
@Philipp-R sorry its unclear to me how you can have the axes moving independently but also simultaneously and consistently with each other?
Non the less this may be achievable by setting the axes to be treated as "rotational" in feed rate calculations as descriverd here:
https://docs.duet3d.com/en/User_manual/Reference/Gcodes#m584-set-drive-mapping
Wording of the NIST standard is here:
https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=823374
We do not enforce the distinction between XYZ and ABC so you are not limited to ABC to be interpreted as rotational by RRF. -
@Philipp-R an update, XYZ are set to be linear so use other axes letters to test if the idea of using rotational, not linear feedrate works.
-
@T3P3Tony i've tried the following:
first, reassign the Axes X,Y,Z to A,B,C. I tried with and without the "R" and "S" Parameter.
Then sended : G91 G1 A500 B500 F500 -> movment took 1min24sec to finish.
config.g
M584 A0.0 B0.1 C0.2 R1 S1 ; set drive mapping rotational axes M584 U0.5 E0.3:0.4 ; set drive mapping linear axes M350 A16 B16 C16 U16 E16:16 I1 ; configure microstepping with interpolation M92 A36.2 B28.5 C28.5 U15.0 E400.00:400.00 ; set steps per mm M566 A500.00 B500.00 C500.00 U500.00 E1200.00:1200.00 ; set maximum instantaneous speed changes (mm/min) M203 A20000.00 B20000.00 C20000.00 U20000.00 E1200.00:1200.00 ; set maximum speeds (mm/min) M201 A2000.00 B2000.00 C2000.00 U2000.00 E2500.00:2500.00 ; set accelerations (mm/s^2) M906 A1000 B1000 C1000 U1000 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout
and i tried to set the X,Y,Z axes as rotational axes also with the "R" and "S" Parameter.
Then sended : G91 G1 X500 Y500 F500 -> movment took also1min24sec to finish.
M584 X0.0 Y0.1 Z0.2 R1 S1 ; set drive mapping rotational axes M584 U0.5 E0.3:0.4 ; set drive mapping M350 X16 Y16 Z16 U16 E16:16 I1 ; configure microstepping with interpolation M92 X36.2 Y28.5 Z28.5 U15.0 E400.00:400.00 ; set steps per mm M566 X500.00 Y500.00 Z500.00 U500.00 E1200.00:1200.00 ; set maximum instantaneous speed changes (mm/min) M203 X20000.00 Y20000.00 Z20000.00 U20000.00 E1200.00:1200.00 ; set maximum speeds (mm/min) M201 X2000.00 Y2000.00 Z2000.00 U2000.00 E2500.00:2500.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z1000 U1000 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout
Maybe i configured it wrong?
-
@Philipp-R as i mentioned you can't configure XYZ to be treated as rotational so use ABC etc for rotational axes.
Try this. Set your X axis as X (don't specify R or S for that axis)
Set the other axes you want to test with as ABC etc, set them to be treated as rotational for feedrate calculations (S1)Then try the command with X and 1 rotational axis.
-
@T3P3Tony thanks for your reply. I will test it like you mentioned and report the result in a few days.
So i tested it with this configration, and now it works like it should:
M584 X0.0 E0.3:0.4 ; set drive mapping linear axes M584 A0.1 B0.2 C0.5 S1 ; set drive mapping rotational axes M350 X16 A16 B16 C16 E16:16 I1 ; configure microstepping with interpolation M92 X36.2 A28.5 B28.5 C15.0 E400.00:400.00 ; set steps per mm M566 X500.00 A500.00 B500.00 C500.00 E1200.00:1200.00 ; set maximum instantaneous speed changes (mm/min) M203 X20000.00 A20000.00 B20000.00 C20000.00 E1200.00:1200.00 ; set maximum speeds (mm/min) M201 X2000.00 A2000.00 B2000.00 C2000.00 E2500.00:2500.00 ; set accelerations (mm/s^2) M906 X1000 A1000 B1000 C1000 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout
My Gcode is "G91 G1 X500 A500 B500 C-500 F500" and the X-Axis moved 500mm in 1min.
@T3P3Tony Thank you very much for your help