-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
G33 issue with Ver 2.7 TP #68
Comments
…e (i.e. G33 moves) Fixes issue LinuxCNC#68 by preventing any blending between position-synced motions (G33) and other motion modes (velocity-sync and normal): Current behavior: Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | no all others | yes Note that this is more conservative than LinuxCNC 2.6: Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | *yes* all others | yes This patch ensures that the start and end of a sequence of G33 motions will be exact-stop. Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
This looks reproducible in simulation using your example code. The reason this occurs is because the 2.7 trajectory planner allows blending between synced motions. Here's a comparison of the axis accelerations with and without your dwell: Without the dwell (with over-acceleration in the X axis): With the dwell, only Z axis acceleration: The cause of this difference is that the 2.7 TP allows blending between normal feed moves (G1, G2, etc) and position-synced moves (G33). This results in a small blend arc (as you observed). Looking into this a little further, I found that (as expected) the 2.6 TP does not allow blending when starting a G33 move. However, it does allow blending at the end of a G33 move. This G-code snippet shows the behavior in the axis sim config. In 2.6, there will be an exact stop after N5, but there will be a blend between N6 and N7.
So, from the G-code example, the 2.6 TP applies the following rules when blending with position-sync enabled:
I have a fix for this in a hotfix branch based on the latest 2.7. Unfortunately, there is a more subtle issue that may arise as a edge case. Take the following G-code example, which follows a zig-zag path in spindle-sync: G20 G64 G8 G18 Between the bolded lines, even though the feed is very slow, the blend arcs created are quite large: The arcs are large because the TP has no knowledge of the planned spindle speed for the position-sync motions. Instead, it uses the maximum possible velocity for the segment. We could fix this by preventing arc-blends entirely during spindle-synchronized motion, but still allowing parabolic blends. With that change, we'd have stock 2.6 behavior for all position sync motions. Another, slightly more involved approach, would be to pass the planned spindle speed to the TP using something like state tags. Knowing the desired spindle speed lets us predict the target velocity, and size blend arcs to match (instead of assuming the worst). @SebKuzminsky @cradek What do you think of either of these fixes? |
I think it would probably be good in 2.7 to have a 2.6-style blend at the end of a spindle-sync move, only because that sounds simple and easy to get right in the stable branch, and it's known to give good results for thread pullouts. Not stopping at the end of the synced move is important, as I tried to explain here. |
@cradek Your explanation makes sense, and my hotfix branch should now be updated to reflect 2.6 behavior. Do you know if there is any demand for position-synced motion along complex paths? If not, we can solve the large blend arc issue by restricting position-sync motions to use parabolic blends. It will result in a slightly longer lead-in motion, however, since the acceleration will be cut in half. |
Does tolerance effect the blending on spindle synced motion? (g64Px.xxx).. If you wanted the path to follow better (or try to) could you just specify it? |
I think synced motion along a complex path is extremely rare, but it has been used. The longer lead-in you mention is more important, but I think it would be fine; I have not ever heard someone say they could not manage a lead-in because of limited space. I guess the nature of threads is that one end is exposed... |
I have cut multiple taper threads that look like a big sheet metal screw and of course end taper on pipe threads. |
As far as leadin goes. Some cnc lathes like to run in rev (M4) when threading. You then must start the thread in a groove and feed Z+. In this case leadin should be short as possible. I'd say less than 2 or 3 mm at 400 to 500 RPM. |
Fixes issue LinuxCNC#68 by preventing any blending between position-synced motions (G33) and other motion modes (velocity-sync and normal), according to this table. Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | yes all others | yes These now cases match 2.6.x behavior, though the blending itself can be done with tangent / arc blends. Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
I have an experimental branch here that will fix this issue, and improve blending performance with G33 motion: https://github.com/robEllenberg/linuxcnc-mirror/tree/feature/nominal-vel-during-sync See #164 for details on the performance improvement |
Fixes issue LinuxCNC#68 by preventing any blending between position-synced motions (G33) and other motion modes (velocity-sync and normal), according to this table. Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | yes all others | yes These now cases match 2.6.x behavior, though the blending itself can be done with tangent / arc blends. Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
Fixes issue LinuxCNC#68 by preventing any blending between position-synced motions (G33) and other motion modes (velocity-sync and normal), according to this table. Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | yes all others | yes These now cases match 2.6.x behavior, though the blending itself can be done with tangent / arc blends. Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
Fixes issue LinuxCNC#68 by preventing any blending between position-synced motions (G33) and other motion modes (velocity-sync and normal), according to this table. Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | yes all others | yes These now cases match 2.6.x behavior, though the blending itself can be done with tangent / arc blends. Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
Is this the same as #704 ? My proposal for 704 is to document the behaviour. I don't think it makes sense to pause between two spindle-synched moves, What is the best way to force synch-to-index between two consecutive G33 moves? |
I wonder if there is a way to detect the motion queue was emptied and waiting since the last spindle sync - indicating there has been a pause in movement while threading - an error.
But I agree it's weird to try to do continuous threading with multi lines in MDI.
Chris
…________________________________
From: andypugh <notifications@github.com>
Sent: April 3, 2020 11:11 AM
To: LinuxCNC/linuxcnc <linuxcnc@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Subject: Re: [LinuxCNC/linuxcnc] G33 issue with Ver 2.7 TP (#68)
Is this the same as #704<#704> ?
My proposal for 704 is to document the behaviour. I don't think it makes sense to pause between two spindle-synched moves,
What is the best way to force synch-to-index between two consecutive G33 moves?
I will try to test whether a dummy G0 or G1 exits G33 "mode"
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub<#68 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABYGWNJMGAGPUJK2EWYFCYLRKW74LANCNFSM4CGPVNKQ>.
|
I'm not sure if this is the same issue, but it should definitely not happen
regardless of what the user does. Position synch always stops at the end of
a move unless it's immediately followed by another. Interp wraps every call
to a synched move with a start / stop synch command, and it's only when
they're queued in succession that stop / start cancel out and it doesn't
drop out of synch. This is definitely a TP bug.
…On Fri, Apr 3, 2020, 7:23 AM c-morley ***@***.***> wrote:
I wonder if there is a way to detect the motion queue was emptied and
waiting since the last spindle sync - indicating there has been a pause in
movement while threading - an error.
But I agree it's weird to try to do continuous threading with multi lines
in MDI.
Chris
________________________________
From: andypugh ***@***.***>
Sent: April 3, 2020 11:11 AM
To: LinuxCNC/linuxcnc ***@***.***>
Cc: Subscribed ***@***.***>
Subject: Re: [LinuxCNC/linuxcnc] G33 issue with Ver 2.7 TP (#68)
Is this the same as #704<#704>
?
My proposal for 704 is to document the behaviour. I don't think it makes
sense to pause between two spindle-synched moves,
What is the best way to force synch-to-index between two consecutive G33
moves?
I will try to test whether a dummy G0 or G1 exits G33 "mode"
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub<
#68 (comment)>,
or unsubscribe<
https://github.com/notifications/unsubscribe-auth/ABYGWNJMGAGPUJK2EWYFCYLRKW74LANCNFSM4CGPVNKQ
>.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
<#68 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAJHUPDFE5OQ5KOI24H23XTRKXBMZANCNFSM4CGPVNKQ>
.
|
…e (i.e. G33 moves) Fixes issue LinuxCNC#68 by preventing any blending between position-synced motions (G33) and other motion modes (velocity-sync and normal): Current behavior: Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | no all others | yes Note that this is more conservative than LinuxCNC 2.6: Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | *yes* all others | yes This patch ensures that the start and end of a sequence of G33 motions will be exact-stop. Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
What is the status of this now? |
…e (i.e. G33 moves) Fixes issue LinuxCNC#68 by preventing any blending between position-synced motions (G33) and other motion modes (velocity-sync and normal): Current behavior: Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | no all others | yes Note that this is more conservative than LinuxCNC 2.6: Mode Transitions | blending allowed --------------------+----------------- normal -> position | no position -> normal | *yes* all others | yes This patch ensures that the start and end of a sequence of G33 motions will be exact-stop. Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
Hopefully fixed by #890 |
Here are the steps I follow to reproduce the issue:
G20 G64 G8 G18
M3 S400
G0 x.5 z.21
G1 x.490 z.2
/G4 P.01 ( need pause or G0 above for ver 2.7 TP)
G33 k.086 x.500 z-.550
G0 x.510
G0 z.21
m5
m2
This is what I expected to happen:
This is what happened instead:
G1 moves toward G33 start point makes a radius then 'Z' over accelerates then slows.
After the over accel it slows to proper rate for the remainder of G33 move.
It worked properly before this:
In previous versions or with old (Pre 2.7) TP
Information about my hardware and software:
Machine 1: Using version 2.7.4 Ubuntu Lucid with new TP, Mesa 5i20 & servo card
Machine 2: Using version 2.7.4 Debian Wheezy with new TP, Mesa 5i25/7i77
The text was updated successfully, but these errors were encountered: