Hi All,

As others have said, during position-synched moves, the axes follow the
spindle position, so you don't need fine control of spindle speed. However,
you should have both a stable spindle RPM and a high-ish resolution encoder
to get the best results. John, for your example, as each encoder pulse
arrives, the TP will be constantly accelerating / decelerating to try to
track that position signal. Luckily, it can't get too far off because of
the axis acceleration limits, but the amplitude of the jitter will
definitely be higher with a low resolution encoder.

Here's how spindle synchronization broadly works from within the TP (i.e.
what occurs in motion after START_FEED_SPEED_SYNCH)

   1. The TP waits (with axes stopped) for a spindle index mark.
   2. Once the spindle has just passed the mark, the machine axes
   accelerate until they reach (spindle speed * requested units/rev).
   3. Once the axes reach the expected velocity, then synchronization is
   declared, and the TP maintains position synchronization from that point
   onwards. At higher spindle RPM, synchronization takes longer, so the
   spindle rotates farther before the axes are synchronized. Multiple
   threading passes at different spindle RPM will not quite follow the same
   path.
   4. After synchronization, the TP computes a position error based on the
   measured spindle position. The axis velocity is nominally spindle speed *
   uu / rev, but that velocity is corrected up or down as needed to drive the
   position error toward zero.

Note that multi-start threading is not currently possible (because the TP
always synchs at 0 deg, i.e. at the index mark), but we could modify the TP
to start synchronization at some angle after the index mark.

Finally, the obvious fix for the inconsistency in the acceleration phase is
to just declare synchronization at the index mark right away. With the axes
starting from rest, there would be a huge initial velocity error for the TP
to correct. It will do so eventually, but there are large position over- /
under-shoots until it stabilizes. Luckily, we know what the axis
acceleration looks like (based on axis max acceleration and nominal spindle
speed), so you can anticipate this and start the axes moving before the
spindle reaches the index mark. That way, the axes are moving at the
nominal speed just as the spindle reaches zero. This removes most of the
position error at the start, and the TP corrects for any residual error
very quickly. This is roughly the approach we used in PathPilot, and I
think LinuxCNC 2.8 or 2.9 would benefit from it as well.

Best,
Rob

On Wed, Jan 20, 2021 at 12:47 PM John Dammeyer <jo...@autoartisans.com>
wrote:

>
>
> > From: andy pugh [mailto:bodge...@gmail.com]
> >
> > On Wed, 20 Jan 2021 at 16:09, Kirk Wallace <kwall...@wallacecompany.com>
> wrote:
> >
> > > I left the trail here:
> > > >
> https://github.com/LinuxCNC/linuxcnc/blob/master/src/emc/rs274ngc/interp_convert.cc#L4881-L5028
> >
> > There seems to have been a lot of time spent investigating theory that
> > could have been settled in 5 minutes with an experiment.
> >
> > --
> > atp
>
> Dropping an apple from a tree and observing that it falls and smashes on
> the ground doesn't splatter into the words that spell out laws of motion
> made up of bits of peel and apple.
>
> I'm assuming that the authors of this code were clever enough to take into
> account the motor acceleration relative to spindle speed on each pass.  But
> that doesn't explain how they do that.
>
> And if there are 60 teeth on the spindle encoder with a single sensor then
> 120 edges are the most you get.  That's 3 degrees per edge assuming the
> slots are symmetrical and I don't think there's a rule that they must be.
> Might be 1 and 5 degrees.  So assume then an index single rising edge is
> used every 6 degrees.
>
> A half inch shaft has a circumference of 0.3925" and each 6 degree index
> is 0.00654".  The implication is depending on spindle speed and motor
> acceleration you might be off by almost 0.006".  That's a lot isn't it?
>
> John
>
>
>
>
> _______________________________________________
> Emc-users mailing list
> Emc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-users
>

_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to