CNC machining centers provide users with three compensation types: tool length compensation, cutter radius compensation and fixture offsets. Similarly, CNC turning centers provide wear offsets, geometry offsets and tool nose radius compensation.
Each compensation type references the values stored in an offset. For example, a Fanuc control uses an H word to specify the offset number used with tool length compensation. When a G43 command is specified in the program (including an H word and a Z- axis departure), the machine will reference the value stored in the offset and use it for compensation purposes.
With each built-in compensation type, the application for the compensation is quite rigid. With tool length compensation, the goal is to keep the programmer from having to know the precise length of each tool as the program is written. The setup person will measure and enter tool length compensation values during setup, and the machine’s Z axis will move appropriately based upon the value of the offset.
While there is some flexibility related to how each compensation type is used, the rules governing its use are quite rigid. Again, tool length compensation is only intended to help you deal with variations in tool lengths.
With custom macro B (and most versions of parametric programming), you have access to all offsets within your CNC machine. Even from within a program, you can write to offsets (as you can with G10) and you can read from them. This has fantastic implications. Combined with other features of custom macro B, it allows you to create your own compensation types.
For example, consider wear offsets used on turning centers. An operator on a turning center simply enters the amount of deviation from the machined size to the needed size—meaning that a small value is placed in the wear offset.
Most machining centers do not have wear offsets. With tool length compensation, you must manipulate a large tool length offset. This requires the operator to calculate the needed value for the tool length compensation offset.
Consider these commands:
N145 G54 G90 G00 X1.0 Y1.0 S200 M03 (Move to XY position, start spindle)
N150 G43 H05 Z0.1 M08 (Instate tool length compensation, turn on coolant)
N155 G01 Z-[0.5-#2035] F4.0 (Feed in Z to appropriate depth)
(Perform appropriate machining operation)
In line N155, the end point in Z will vary based upon the value of offset 35. If offset 35 is zero, then the tool will plunge to a depth of 0.5". If offset 35 is 0.01, then the tool will plunge to a depth of 0.490. If this value is -0.01, then the tool will plunge to 0.510. Again, this nicely simulates wear offsets.
Here is another—more complex—example. Look at the shaft collar in Figure 1. Maybe a lathe is machining the round blank and a machining center is milling the slot and machining the clamping hole. Notice that for the machining center operation, the workpieces are stacked in a vise (Figure 2) and machined ten at a time. This means that the overall length (0.5" ±0.002) is critical for the lathe operation. If this dimension varies for a group of workpieces, then the clamping holes will not be centered in the shaft collar during the machining center operation.The first hole may be centered, but with each successive workpiece, centering will get progressively worse.
Rather than reduce the tolerance for the lathe operation, we can invent a compensation type for the machining center. We’ll call it workpiece length compensation. We’ll pick a special offset (we’ll use offset number 99) and place the actual length of the workpiece (for this group of workpieces) in the offset. It is likely that a large number of workpieces in a group will have been machined to the same length during the lathe operation. If the workpiece length measures 0.501" (well within its tolerance band), then we’ll place a value of 0.501" in offset number 99).
If the workpieces run along the X axis, then the X coordinate for each hole must reflect the actual lengths of the workpieces. One of the many ways to handle this problem is to machine the holes in the incremental mode. If program zero in X is the left end of the left-most workpiece, then the first hole will be at a position of X[#2099/2] (in the absolute mode). From this position, each successive hole will be spaced at the value of #2099 (again, the workpiece length). While I don’t show the entire program, you should be able to get the idea.