How do I do a manual tool change?

29 Mar 2012 00:59 #18843 by arch dude
I have written a trivial G code program that requires a tool change in the middle. I have defined 3 tools ("no tool", tool 1, tool 2) I manually start my machine with "no tool."

the program issues an M6T1, and the manual tool changer window pops up. I dutifully install tool one, but I then have no way to touch off: neither MD5 nor manual control is possible until I hit the "continue" button in the manual tool changer window. My question is very simple: how am I supposed to touch off my new tool? I tried adding an "M1" to pause the program, but it is ignored. M0 explicitly locks out changes, and M60 is effectively undocumented. I must be missing something obvious.

My machine is a simple hobbyist XYZ mill using a wood router as the spindle, so I really do need to touch off after each tool change, right?
29 Mar 2012 08:17 - 29 Mar 2012 11:15 #18845 by Rick G

so I really do need to touch off after each tool change, right?

If you have set up your tool table with the correct offsets and you can load your different tools in the exact same height each time in the spindle then no you would not need to touch off again when changing tools.
If however you install a different tool (router bit) and do not have a way to make sure it is loaded exactly the same then you would need to touch off again.

In this case I actually find it easier to break the program into seperate programs, one for each tool.

You may also want to look here...

Rick G
Last Edit: 29 Mar 2012 11:15 by Rick G.
29 Mar 2012 14:19 #18848 by arch dude
Thanks! This is exactly what I needed to know. I have already realized that I could use two programs, but this seemed to be inelegant. Since I am using a wood router, each "tool change" involves removing a bit from the router and installing a new one, and this is not precise enough to do without a touch-off. I guess I thought that this must be a very typical application, but I now see that the very low end mills are not a huge part of the user community and therefore stuff like this is sometimes done as a add-on.

This is an important piece of information: I can quit beating my head against the wall looking for the "right" solution, and simply implement the correct add-on.
29 Mar 2012 16:51 - 29 Mar 2012 16:55 #18852 by ArcEye

You may also want to look here...

As per a recent discussion on the users list, this script is now out of date and will not work 'as is' due to changes with the NML file requirement.

Attached is a modified version I made which does work with v2.4 and higher, albeit it is still a little quirky and you need to play with it to get used to it.
(just remove the .txt extension )

Last Edit: 29 Mar 2012 16:55 by ArcEye. Reason: upload error
29 Mar 2012 16:56 #18853 by ArcEye
OK try again, didnt like the .py extension

File Attachment:

File Name: hal_manual...ange.txt
File Size:2 KB
29 Mar 2012 18:22 #18855 by BigJohnT
Manual tool change is designed around machines that have tooling that can be preset and use the tool table for offsets. It's far more elegant to run two programs as you have to be there to change the tool and set the Z offset of that tool.

31 Mar 2012 01:27 #18883 by arch dude
"Elegance" is in the eye of the beholder. I suspect that you have a better appreciation of the real world of machining than I do, but I would much prefer to have a single .ngc file with explicit tool changes rather than multiple files. Why? because that same script can run on big machines with automatic tool changers or little machines that require manual intervention. If I must use multiple scripts to describe a job, then I must have some separate method, outside of the .ngc file itself, to describe the job as a whole.
31 Mar 2012 09:00 #18884 by cncbasher
i have in the past used comments in the ngc file to describe loading of the next file , the only way you will acheive is to have some quick release toolchangers so you can preload and set the tools
or fit a tool probe . to probe z tool height at the begining of each file and toolchange . and use M0 to pause the machine and then comments as to what to carry out and have a cycle start button to re start from pause

running the same script on big machines or small as you suggest is fraught with problems cnc code is not uniform across machines , it's best to have scripts specific to the job and machine

it can be done but with a lot of hand editing of code , i'd rather be cutting , than typing
and of course having a tool probe and or repeatable tool changing
03 Apr 2012 23:44 #18954 by arch dude
Thanks! I installed this file and I can now jog and reset Z before continuing after a tool change.

I'm still a bit confused about the proper sequence of steps to take during the tool change, but At least now I can take those steps after I figure them out.

So far:
At code design time, decide on a zero. (I'm using the top of my workpiece, and the program is written relative to this.)
before the job starts, zero X, Y, Z.

I have a tool change as a very early command in my sequence, to change to the first tool.

at each tool change:
1)physically turn the spindle off for safety.
2)remove old tool and install new tool
3)re-zero Z
4) raise Z somewhat
5)physically turn the spindle power on (AXIS still has it powered off with a relay)
6) hit "continue"

I have some kind of funniness about tool length, probably because I was messing with "touch off" and I do not understand "touch off" yet. I have a touch plate ( a piece of copper-clad PC card) that (together with the milling bit) acts as a switch connected to a parallel port input pin, but I do not yet understand how Axis interprets this. I would like to use this in the sequence above.
04 Apr 2012 08:43 - 04 Apr 2012 08:51 #18958 by ArcEye

Thanks! I installed this file and I can now jog and reset Z before continuing after a tool change.

You're welcome.

I have a touch plate ( a piece of copper-clad PC card) that (together with the milling bit) acts as a switch connected to a parallel port input pin, but I do not yet understand how Axis interprets this.

The short answer is that Axis doesn't interpret it, you have to do something with it.

The simplest would be to create a pyvcp LED linked to that input and then when that activates you can set your Z height to the thickness of the touch off plate (assuming it sits directly on the work piece).

You might need to try interposing a debounce component for a consistent on/off.
I know from experience using electromechanical touch sensors, that atmospheric humidity, dust or moisture on the cutter or sensor, all cause inconsistencies in touching off, despite the most careful cleaning.
It often takes several touches and back-offs to arrive at a mean, where you have a consistent full illumination of the led for a given position.

A more complicated version of this could set the Z tool height automatically to the plate thickness, but that would require a bit more programming.

This facility will be very useful to you for tool setting.

However the more you use your machine, unless it is just for repetition component production, the more you will come back to what John and Rick were saying about just splitting your program.
I have a lathe with 8 station ATC, but rarely actually program a tool change mid-program, because apart from anything else, I want to double check the work piece dimensions before moving to the next stage.

If I had a rock steady proven program, bar feed and hundreds of components to make that would be different, but I seldom make more than a couple of the same thing!

Last Edit: 04 Apr 2012 08:51 by ArcEye.
Time to create page: 0.155 seconds
Powered by Kunena Forum