Understanding tool offsets

So I'm about 98% complete with my Hardinge DVB-59 lathe retrofit. If you've seen my posts, you'll know that this retrofit is on a machine which was retrofitted many years ago with a Gang Tool slide. I learned to program on a Gang Tool lathe about 18 years back using a Fagor 8055T controller. The control has a very simple programming process. One of the best parts is how tools are given offsets and positioned according to the material in the spindle.

Setting the tool offset for each tool in that 8055T controller was very simple. LinuxCNC? Not so much.

What I would like to know is when a tool offset is set in LinuxCNC, when the programmed position of the tool is commanded, does the tool move to the programmed position according to the tool offset?

I hope this makes sense. Because the tool offset concept in LinuxCNC is kind of confusing in comparison to what I've learned. I'm sure it has to do with how configurable LinuxCNC is and how the controller I learned on was already configured. And it likely gets more confusing with the difference between lathes and mills.

I've done reading on the subject. But it's opened more questions than it answered.

cmorley wrote: Can you explain how you used to do it with the fagor then explain how you do it (you think it's done) with linuxcnc?

Then explain what you thought should happen vrs what you see actually happen.

Chris

Sure. And thanks for the reply, Chris.

In the Fagor environment, if I remember this correctly since it's been some years, the operator would select the edit tab on the control & this would bring up some menus to choose from. One menu was tool offsets or tool table, I can't recall which. Then the operator would then choose that. Then when the tool table or offset screen was up, the operator would enter Tx, where x is the tool number. The chosen tool could then be positioned via jogging the gang-tool slide to a position where it can touch the material in the chuck. Then each tool could be given a specific offset according to that material's diameter and how far it sticks out of the chuck.

With an arbitrary but known thickness of hardened and ground, round material - usually something like a steel dowel pin of .25" diameter - in the chuck, the operator could then jog the XZ slide which holds the tools to where the selected tool would touch the material in X. The machine would classically be in Diameter mode to make for easy programming. That's what this is really all about - ease of programming.

Since the material is of a known diameter, all the operator would have to do is enter the diameter of the material in the chuck while that tool touched the part as that tool offset for that tool in X. If it was a tool that is used in the center line, like a drill, The operator would position a piece of hardened material like a drill rod in the tool holder for that tool's position and then touch the rod to the material in the chuck in X. Then adding the diameters of each of the materials touching would result in the current position for the tool holder, in reference to the center line. The operator would enter that sum as the X offset. That tool could then be programmed to go to the zero line of the spindle, where all the code is written around.

The operator could then repeat the process for each tool and set the X value accordingly or if the material was the desired length out of the spindle, the operator could set the Z for that tool depending if the material was the desired distance out of the spindle.

What I usually did was set the first tool as the cutoff too and position that tool according to how far away from the spindle I wanted to make Z0. Then I programmed a simple program to cut the part off and set the rest of the tools to that position where the cutoff tool was offset, to. One could just as easily use the spindle as that point to touch the rest of the tools. But I chose to use piece of material I was going to turn down as the material to touch off in Z for a bunch of reasons unnecessary to this explanation.

All the tools could be given their Z offsets from the material in the chuck by repeating that process. X axis inputs were done off the hardened dowel pin. Z offsets were done from the material I cut off, though. It worked well for what I was doing. The precision required in some operations was .0002" repeated. But I programmed and measured to the .0001" increment. Touching a physical material in the chuck to a known and measured diameter allowed me to maintain that precision and minimize program editing.

I think what is supposed to happen is basically the same idea in LinuxCNC, just with a different path and a need to have a functioning "Tool Touch Off" button in the Manual Control tab of axis. 1. Select the tool through the gui. 2. Enter desired coordinates according to the tool touching the material in the chuck. 3. Move to the next tool and repeat.

But my current issue is that I cannot get the "Tool Touch Off" button to function which I'm about 98% sure I can enter the offsets so they match the desired positions in the real world. This makes for very precise parts with little editing to the programing, too. If the tool is set precisely by touching it to the part, the real world outcome is precise according to the accuracy of the XZ slide and things like spindle run out.

How I've seen examples of it working in videos in LinuxCNC is that when the Tx M6 G43 command is given in the MDI bar, the "Tool Touch off" button is supposed to be activated so the operator can enter the offsets in both X and Z for that tool through the Tool touch off dialog box and according to where the slide sits in the real world and by actually touching the tool to the work to do this.

But when I enter that command in the MDI bar, my configuration hangs up and stops me from using the manual control in any way. Bad stuff, since I can't give a reference to where the tool is supposed to be positioned and even if I could, the hang up on LinuxCNC would be even worse during a program execution. The soft estop button doesn't work when it hangs up. Sure the hard switch works. But I'd like to know I have the software helm, too.

I've been told that the LinuxCNC controller is waiting for an input while it's hanging after that MDI tool change command. And some kind folks helped me attempt to bypass the need for a machine pause during a program <I think>. But since that Tool Touch Off button cannot be selected, I can't select the tool to set to it's offset. LinuxCNC simply doesn't have the tool number, so it won't allow for the offset dialog box to come up. And "No tool" shows up at the bottom bar, where I'm pretty sure a tool number is supposed to be displayed in order to tie the tool number to the real world offset it is given. I've been wrong before, though. It just seems to be an obvious thing that I cannot verify without it functioning.

I hope this wasn't too protracted. And I hope this helps in the process to get that damned button to function. Because papa needs to make a living.

The workflow sounds about the same for setting the tools. I don't think you will have any problems with that.
So yes, the touch off button being grayed out after you issue a toolchange in MDI, is not normal. What exactly is causing that I don't understand or know. That button is normally grayed out if you didn't issue the tool change through MDI. So someone with deeper linuxcnc knowledge will have to chime in.
Can you currently run a program without a tool being programmed? Is your spindle all configured? Reason I ask is if linuxcnc is looking for a spindle at speed signal and it's not at speed, the control feels like it's hanging. I have a BP mill with encoder on the head and if I don't match the rpm to whats programmed, linuxcnc waits before executing a move. If not aware, that may appear like the machine is locked up as in program run mode not all buttons are active. If you have a vfd that is usually not a problem. I'm switching the spindle with a relay on/off only on the BP and use the varidiscs to get the correct rpm. I don't recall seeing any spindle at speed stuff in the pico config and it may or may not apply to you?

By the way, nice work on the machine, sir.

Hey thanks. Was a lot of work and still not completely done if ever...It was a hydraulic machine originally. I had to add all the screws, gang slide etc. Got my practice at hand scraping the gang table.

The process is very similar, for sure. Hoping a linux Guru will do just that and chime in because this is in the way.

"Can you currently run a program without a tool being programmed?"

Yes. Everything functions. My coolant and collet relays function and are programmable. The spindle can be commanded forward or reverse and with S commands for RPM, though I'm going to have to change the spindle motor to an inverter rated motor to give me low end torque. I learned in process, that induction 3phase motors that Hardinge used in their DVB 59 lathes don't work well with frequency control. So I have to get a replacement to do the low end threading torque and speed I need to attain for rigid inside tapping. I do really little stuff. 000-120 threads require slow speed with torque you can't stop with your hand. I can stop this spindle at 800rpm with my hand.

Both axes are snapping to very close precision at 360ipm. And I have 2 open relay sockets for more fully programmable outputs like live tooling if I want to put a vector drive on the machine.

I can program it to machine coordinates in IPM and rapids. I just can't set positions for tools for programming ease. I *guess* I could program it with no tools and just measure each point where a tool touches, then write it down and match those coordinates to the program. But that's likely to be inaccurate and a pain to write.

"Reason I ask is if linuxcnc is looking for a spindle at speed signal and it's not at speed, the control feels like it's hanging. "

I Programmed a spindle speed into the mix of 1000 and no change. It still hangs on the input of that M6 Tx G43 command I use to bring up the "Touch Tool Off" button.

"If you have a vfd that is usually not a problem. "

I have a VFD.

I'm pretty flummoxed. So if you know of any Linux Gurus who know the way to get this to work, Please share. This is a pain.

Oh, and I'm going to see if Jon has anything he can add, too. He's got the servo drive thing down, but he's got some of the same trouble as I do, albeit he's much more advanced with the coding. That's my weak point. I can program my parts and produce things quickly. But the guts of the linux code is the problem I have.