Coordinating more than 9 axes possible?

More
10 years 5 months ago #74538 by BartyBorris
Coordinating more than 9 axes

I have an application that will require coordinating more than 9 stepper motors and would like to know if I could use LinuxCNC. I am currently using LinuxCNC and a 5I22 to coordinate 6 axes in the typical way (X, Y, Z, A, B, C), however I need to expand this to at least 10 "axes". The MESA 5I22 has plenty of capability for the step generation, however I am not sure what to do to configure LinuxCNC beyond the 9th axis. The good news is that the 10th "axis" does not need to be precisely timed with the other axes (for example I can interleave custom M codes with the G1/G0 commands). I can do without homing, etc. If anyone can point me to a solution, or with some ideas to try I would be very grateful.

Please Log in to join the conversation.

More
10 years 5 months ago #74543 by BartyBorris
After thinking a bit more, the best I have come up with is to use M67 to externally (physically) switch the step and direction signal between stepper drivers (this can happen very quickly using transistors). Hence, if I break up the move for each G1 fine enough, I could do something like the following to drive 10 axes. Wish there was a more elegant solution I could come up with.

example:
M67 E1 Q0 ; set to drive 9 steppers (switches on the 9 step/dir signals and off for the step/dir signal for the 10th motor)
G1 X1 Y1 Z1 A1 B1 C1 U1 V1 W1 F100
M67 E1 Q1; set to drive 10th stepper only (switches off the 9 step/dir signals and connects the step/dir signal for the 10th motor)
G1 X1
M67 E1 Q0; set to drive 9 steppers
G1 X2 Y2 Z2 A2 B2 C2 U2 V2 W2 F100
etc.

Please Log in to join the conversation.

More
10 years 5 months ago #74545 by Todd Zuercher
The G-code and the interpreter only supports 9 axis names, but the number of stepgens available I think is more. I'm not sure just how many your 5i22 can support, but I do know that the software stepgen component can do up to 16.

Are all of the joints you want to control independent, or are some of them going to be slaved to another like in a gantry?

M67/M68 could have up to 16 analog output pins (default is 4) that could be used to send commands directly to the stepgens no need to swap anything.

Please Log in to join the conversation.

More
10 years 5 months ago #74564 by andypugh

BartyBorris wrote: I have an application that will require coordinating more than 9 stepper motors and would like to know if I could use LinuxCNC.


The 9-axis limit is a consequence of G-code limitations. No letters are available other than XYZABCUVW.
However, if you are prepared to say use:
M68 E0 Q60 ; set stepper 10 feed rate
M67 E1 Q212 ; set stepper 10 target position
G1 F60 X100 Y200 Z100.....

Then the extra axis will move a the specified rate, with the start of the move (but almost certainly not the end) synchronised with the other axis moves.

You would need to have
net motion.analogout-00 => hm2_5i22.0.stepgen.10.maxvel
net motion.analogout-01 => hm2_5i22.0.stepgen.10.position-cmd
For it to work, of course.

You can increase the number of analogout pins, it is a parameter to the motion module: num_aio and can be as high as 64.
linuxcnc.org/docs/2.7/html/man/man9/motion.9.html

Please Log in to join the conversation.

More
10 years 5 months ago #74634 by BartyBorris
That makes perfect sense. The more I become familiar with LinuxCNC the more I like it. Thanks so much guys!

Please Log in to join the conversation.

More
6 years 1 month ago #184366 by Karempudi
Being new in this Forum, My questions may be very basic.

What about Gantry Axes, Is it considered a single axis or a two axes. Suppose there is a CNC machine with each axis run on two motors ( Gantry style), is it possible now to control 10axes?

Please Log in to join the conversation.

More
6 years 1 month ago #184370 by andypugh

Karempudi wrote: What about Gantry Axes, Is it considered a single axis or a two axes. Suppose there is a CNC machine with each axis run on two motors ( Gantry style), is it possible now to control 10axes?


Note that this thread was very old, and things have changed since my previous reply.

linuxcnc.org/docs/devel/html/man/man9/motion.9.html

Indicates that up to 16 joints can be declared in the motion module.

Also see section 13.3.3 here: linuxcnc.org/docs/devel/html/getting-sta...dating-linuxcnc.html

I don't fully understand how it all fits together now, but looking at the trivkins code (which is the bit that matters)
github.com/LinuxCNC/linuxcnc/blob/master...inematics/trivkins.c
it clearly does handle EMC_MAX_JOINTS joints, so you should be able to handle 16 joints, so potentially 8 dual-motor gantries.

Please Log in to join the conversation.

More
6 years 1 month ago #184408 by Todd Zuercher

Karempudi wrote: Being new in this Forum, My questions may be very basic.

What about Gantry Axes, Is it considered a single axis or a two axes. Suppose there is a CNC machine with each axis run on two motors ( Gantry style), is it possible now to control 10axes?


In a nutshell it would be 1 axis with two joints. The whole gantry is the "axis" and the two motors are the "joints".

You can only have 9 axis, but you can have more joints (up to 16). And the joints don't necessarily have to have any direct coorilation to do with Cartesian axis movements. For example imagine a serial robot arm composed of a number of rotary joints.

Please Log in to join the conversation.

More
6 years 1 month ago #184425 by cmorley
IIRC axes A,B and C are assumed rotary in most code.
It would be interesting to confirm what does and doesn't assume this.

Please Log in to join the conversation.

More
6 years 4 weeks ago #184446 by Karempudi
Thank You. That was helpful.

Please Log in to join the conversation.

Time to create page: 0.102 seconds
Powered by Kunena Forum