Hi Bing!
On 04.02.2025 11:37, Toby Dickenson wrote:
[...]
> A refactoring of feeder classes feels overdue. There are lots of
> features in common, but not much code in common. And the code it does
> have in the common base class is mostly a liability (I was looking at
> usage of the Location attribute yesterday :-(
I was thinking exactly the same: we have a tone of different feeder
types in very different states ranging from very advanced (like
ReferencePushPullFeeder) to shall-be-considered-deprecated. This makes
maintenance very difficult, increases the frustration for users not
knowing which feeder to choose, causes desires to port certain features
and causes increased support.
To me - bare with me if my understand is incorrect - the auto feeder
and the reference push pull feeder are not that different in their
working principle. Both use actuators to advance the tape. The auto
feeder sends a trigger signal to a controller requesting the feed while
the push pull feeder uses a head mounted actuator to perform the feed.
If we'd combine them into one, the feed action would be the only thing
that's different.
We could then take this one step ahead: the difference between such a
new auto-push-pull-feeder and a strip feeder is also very little: the
strip feeder does not support a feed feature. Hence it would just not
provide any feed configuration options. This this, we'd likely cover
most of the feeders that are commonly used today. (I currently don't see
how tube and tray feeders could be integrated as well.)
For personal interest I'd add a drag-feeder option to such a new class:
like push-pull feed option but with much less parameters and instead
additional peeler configuration.
This sounds very appealing to me. However, I've to admit, that this
might be difficult to add if we'd try to avoid breaking existing setups
(using a commit() overwrite will very likely solve that).
Concerning your 2mm/4mm feed question: the referencePushPullFeeder uses
feedCount to handle pitch != feed. I'd suggest to do the same for
autoFeeder to support the best user experience. I'd say that it shall be
possible to either expect the sprocket hole at a certain location
(including 2mm part pitch awareness) or to extend the detection to
automatically handle 2mm offsets using a single vision location.
Jan