I spent some more time looking into this and it appears to be a problem
with M72. My tool change sub uses M73 to save feed rate, units etc so it
can do the tool change moves without affecting the main running code. At
the end I had M72 to restore everything before my G43. That causes G43
to act strangely. I moved the core tool change functionality to another
sub then called that in my main toolchange sub before the G43. It now
behaves correctly.
What I think is happening is that if you use M73 the state is always
restored at the end of the sub, even if you use M72. This means that the
state gets restored again after the G43:
O<toolchange> sub
M73 (state is stored)
....tool change code
M72 (stored state is restored)
G43H#5400 (offsets are applied)
O<toolchange> endsub (previously stored state is restored again, messing
up the offsets)
If you use M72 it should not try to restore the state again at the end
of the sub. Actually that explains some odd behaviour on my mill with
it's tool setter as well.
What my new code does:
O<toolchange> sub
O<do_toolchange> call
G43H#5400
O<toolchange> endsub
O<do_toolchange> sub
M73 (state is stored)
....tool change code
O<do_toolchange> endsub (state is restored)
Tool changing is working great now. It even has an automatic tool
setter. If you change to a tool that hasn't previously been checked it
will use the tool setter. To save time the next time you select that
tool it won't bother to use the tool setter. Aborting at any time or
manually taking a tool out of the head will force all tools to be
checked next time they are changed.
Les
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users