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

Reply via email to