Question about coordinated motion FeedRate
Rough machine description
Goal: machine a surface into a blank
Constant speed cutting tool. Tool speed not a part of coordinated motion.
X axis moves cutting tool in X direction. The X axis carries the tool past the center of the blank.
a axis is a rotary axis mounted on X axis and rotates the tool in X-Z plane to stay roughly perpendicular to machined surface.
b axis is a rotary axis with a chuck holding the blank to be machined. b axis is mounted on the Z axis.
Z axis moves rotary axis (b) in Z direction
Tool path is overlapping cycles of motion from the center of the blank to the edge of blank and back to the center while the
blank rotates.
Currently I'm using KMOTION.NET buffered StraightFeed coordinated motion successfully for this:
StraightFeed(FeedRate,b,X,a,Z,b2,a2,0,0)
[a2 and b2 are additional axes identical in function to a and b used to machine another blank at the same time]
I've been supplying a FeedRate assuming it would produce somthing approximating a constant tool path velocity. However, I've
been wondering how FeedRate is really applied by the KFLOP. I'm guessing that something like the sum of the absolute values of
the motion of every axis is considered in developing axis velocity from the FeedRate. How right (or wrong) am I?
And a secondary question: can StraightFeed, or some other function, produce motion assuming a constant time between between
points? It could be done by supplying different FeedRates for each StraightFeed call I suppose.
Question about coordinated motion FeedRate
Moderators: TomKerekes, dynomotion
- TomKerekes
- Posts: 2677
- Joined: Mon Dec 04, 2017 1:49 am
Re: Question about coordinated motion FeedRate
Hi k1is2nd,
A diagram of video would have been helpful. I'm envisioning a hemispherical "blank"?
I assume you are not using kinematics and all axes are defined as linear distance and not angular?
If so, all axes are treated as being orthogonal. So the "length" of a segment is considered to be:
L = sqrt (X^2 + Y^2 + Z^2 + A^2 + B^2)
(see file TrajectortPlanner.cpp function FeedRateDistance.
The time for the segment will then be:
t = L / feedrate
You should be able to specify different feed rates for each motion segment.
If you specify the A and/or B axes as pure rotary they will be excluded whenever X or Y or Z is being moved.
If you added the kinematics then I think it might work for you to specify the true feedrate along the XZ motion.
A diagram of video would have been helpful. I'm envisioning a hemispherical "blank"?
I assume you are not using kinematics and all axes are defined as linear distance and not angular?
If so, all axes are treated as being orthogonal. So the "length" of a segment is considered to be:
L = sqrt (X^2 + Y^2 + Z^2 + A^2 + B^2)
(see file TrajectortPlanner.cpp function FeedRateDistance.
The time for the segment will then be:
t = L / feedrate
You should be able to specify different feed rates for each motion segment.
If you specify the A and/or B axes as pure rotary they will be excluded whenever X or Y or Z is being moved.
If you added the kinematics then I think it might work for you to specify the true feedrate along the XZ motion.
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.