Tool table

If you're running more than one tool, you need a tool table. It stores the offset and nose radius for each tool — so when you switch tools, the controller knows exactly where the new tool tip is without re-measuring.

Set up your tools once, and the FluidBoard remembers them — even across power cycles, thanks to state persistence.

How it works

Each tool has offsets for all axes (X, Y, Z, A, B, C) and a nose radius. When you call a tool change (M6), the controller applies the stored offsets automatically. This is standard on industrial lathes and mills, and it means no more re-touching tools every time you power on.

Setting tool offsets

The easiest way: jog the tool to a known surface, then tell the controller "this tool tip is right here":

T1 M6               ; Load tool 1
G10 L10 P1 X0 Z0    ; Set tool 1 offset so current position = X0 Z0

Do this for each tool against the same reference surface, and all your offsets are consistent.

Step by step: touching off on a lathe

The most accurate reference is a surface you just cut, measured with a micrometer:

  1. Chuck a piece of scrap and load the first tool (T1 M6, or M61 Q1 if you put it in by hand).
  2. X: take a light skim along the diameter. Without moving X, back off in Z and stop the spindle. Measure the diameter you just turned, then enter it: G10 L10 P1 X24.96 for a measured 24.96 mm in diameter mode (G7). In radius mode (G8), enter half the diameter.
  3. Z: take a light facing cut. Without moving Z, back off in X and enter G10 L10 P1 Z0.
  4. Next tools: load each tool and bring it to the same diameter and the same face. Touch lightly with the spindle running, or use a strip of paper or a feeler gauge and add its thickness to the value you enter. Enter the same X and Z values with that tool's number in P.
  5. Check: jog each tool away and back to the reference surface. The position readout should show the diameter you measured and Z0 for every tool.

If the X readout shows double or half the diameter you measured, the touch-off was done in the other programming mode. Pick one mode, set it in your program header, and use the same mode for touch-off.

Correcting for insert wear

The tool table holds one offset per axis per tool; there is no separate wear column. When parts start measuring large because the insert has worn, or after you change an insert, repeat step 2 for that tool on a test cut. That replaces the old X offset with one that matches the edge as it is now. Do the same after an insert change; don't assume the new edge sits exactly where the old one did.

Part zero and tool offsets

Tool offsets describe where each tool is relative to the others. The work offset (G54 and up) describes where the part is. For a new job, set Z0 on the face of the new stock with one tool (for example G10 L20 P1 Z0 to set G54), and every other tool follows, because its offset is relative. You don't need to touch off the whole turret for every job.

Direct entry

If you know the exact offsets (from a tool presetter or previous measurement):

G10 L1 P1 X60.212 Z0 R0.4      ; Tool 1: X=60.212, Z=0, nose radius=0.4mm
G10 L1 P3 X61.908 Z-0.5 R0     ; Tool 3: X=61.908, Z=-0.5

Using tools in a program

T1 M6               ; Select and load tool 1; its offsets are applied automatically
G95                 ; Feed per revolution (F is mm/rev)
G1 Z-30 X20 F0.15   ; Cut with tool 1

T3 M6               ; Switch to tool 3; tool 3's offsets replace tool 1's
G1 Z-30 X20 F0.15   ; Cut with tool 3

G49                  ; Cancel tool length offset when done

Tool table commands

Manage the tool table from the console:

Command What it does
$TT Display the full tool table
$TTL Reload the tool table from file
$TTS Save the tool table to file

If you edited the file by hand, run $TTL so the controller uses your changes. If you changed offsets with G10 and also want them in the file (as a backup, or to edit them there), run $TTS first. Reloading overwrites what is in the controller with what is in the file.

File format

The tool table is stored as a YAML file. You can also edit it directly:

tool1:
  name: "SCLCR 1010"
  x: 60.212
  z: 0
  radius: 0.4

tool3:
  name: "SDNCN Threading"
  x: 61.908
  z: -0.5
  radius: 0

turret:
  position1: 1
  position2: 3
  position3: 5

G-code reference

G-code What it does
G10 L1 P# Set tool offset directly
G10 L10 P# Set offset from current work position
G10 L11 P# Set offset relative to G59.3
G43 H# Apply a tool's offsets manually (M6 and M61 already do this)
G49 Cancel tool length offset
T# Pre-select tool number
M6 Execute tool change
M61 Q# Set current tool number (no physical change)

Troubleshooting

Symptom Likely cause Fix
One tool cuts a different diameter than the others Touched off against a different surface, or measured the wrong diameter Touch it off again against the reference diameter
X off by exactly half or double Touch-off and program in different modes (G7/G8) Use the same mode for both
Offsets don't seem to apply The T number doesn't match the tool table entry, or a G43 H#/G49 later in the program overrides it Check the tool number, and remove stray G43/G49 lines
Offsets reverted to older values $TTL reloaded an older file Run $TTS after setting offsets you want to keep in the file
Controller thinks the wrong tool is loaded Tool swapped by hand Tell it with M61 Q#

Next steps

With your tool table set up, you can use cutter radius compensation to program part geometry directly, or set up an automatic tool changer for hands-free operation. For threading, feed per revolution and diameter mode, see the lathe G-codes.

Copyright (c) 2024 by NubiloSoft, all rights reserved.
Accepted payment methods