G-code
Supported G-code

G38.2 (Straight Probe)

5min

The Straight Probe Command

Program G38.2 X... Y... Z... A... to perform a straight probe operation. The rotational axis words are allowed, but it is better to omit them. If rotational axis words are used, the numbers must be the same as the current position numbers so that the rotational axes do not move. The linear axis words are optional, except that at least one of them must be used. The tool in the spindle must be a probe.

It is an error if:

  • The current point is less than 0.254 millimeters or 0.01 inches from the pro­grammed point
  • G38.2 is used in inverse time feed rate mode
  • Any rotational axis is commanded to move
  • No X, Y, or Z-axis word is used

In response to this command, the machine moves the controlled point (which should be at the end of the probe tip) in a straight line at the current feed rate toward the programmed point. If the probe trips, the probe is retracted slightly from the trip point at the end of the command execution. If the probe does not trip even after overshooting the programmed point slightly, an error is signaled.

After successful probing, variables #5061 to #5066 will be set to the program coordinates of the location of the controlled point at the time the probe tripped. Variables #5051 to #5056 will contain the machine coordinates. Useful for measuring tools in absolute machine positions. G53 G38.2 will move in machine coordinates.

Using the Straight Probe Command

Using the straight probe command, if the probe shank is kept nominally parallel to the Z-axis (i.e., any rotational axes are at zero) and the tool length offset for the probe is used so that the controlled point is at the end of the tip of the probe:

  • Without additional knowledge about the probe, the parallelism of a face of a part to the XY-plane may, for example, be found.
  • If the probe tip radius is known approximately, the parallelism of a face of a part to the YZ or XZ-plane may, for example, be found.
  • If the shank of the probe is known to be well-aligned with the Z-axis and the probe tip radius is known approximately, the center of a circular hole, may, for example, be found.
  • If the shank of the probe is known to be well-aligned with the Z-axis and the probe tip radius is known precisely, more uses may be made of the straight probe command, such as finding the diameter of a circular hole.

If the straightness of the probe shank cannot be adjusted to high accuracy, it is desirable to know the effective radii of the probe tip in at least the +X, -X, +Y, and -Y directions. These quantities can be stored in variables either by being included in the variables file or by being set in an RS274/NGC program.

Using the probe with rotational axes not set to zero is also feasible. Doing so is more complex than when rotational axes are at zero, and we do not deal with it here.

Example Code

As a usable example, the code for finding the center and diameter of a circular hole is shown below. For this code to yield accurate results, the probe shank must be well-aligned with the Z-axis, the cross-section of the probe tip at its widest point must be very circular, and the probe tip radius (i.e., the radius of the circular cross-section) must be known precisely. If the probe tip radius is known only approximately (but the other conditions hold), the location of the hole center will still be accurate, but the hole diameter will not.

In the code below, an entry of the form <description of number> is meant to be replaced by an actual number that matches the description of the number. After this section of code has been executed, the X-value of the center will be in variable #1041, the Y-value of the center in variable #1022, and the diameter in variable #1034. In addition, the diameter parallel to the X-axis will be in variable #1024, the diameter parallel to the Y-axis in variable #1014, and the difference (an indicator of circularity) in variable #1035. The probe tip will be in the hole at the XY center of the hole.

The example does not include a tool change to put a probe in the spindle. Add the tool change code at the beginning, if needed.

N010 (probe to find the center and diameter of circular hole) N020 (This program will not run as given here. You have to) N030 (insert numbers in place of <description of number>.) N040 (Delete lines N020, N030, and N040 when you do that.) N050 G0 Z <Z-value of retracted position> F <feed rate> N060 #1001=<nominal X-value of hole center> N070 #1002=<nominal Y-value of hole center> N080 #1003=<some Z-value inside the hole> N090 #1004=<probe tip radius> N100 #1005=[<nominal hole diameter>/2.0 - #1004] N110 G0 X#1001 Y#1002 (move above nominal hole center) N120 G0 Z#1003 (move into the hole - to be cautious, substitute G1 for G0 here) N130 G38.2 X[#1001 + #1005] (probe +X side of hole) N140 #1011=#5061 (save results) N150 G0 X#1001 Y#1002 (back to the center of the hole) N160 G38.2 X[#1001 - #1005] (probe -X side of hole) N170 #1021=[[#1011 + #5061] / 2.0] (find pretty good X-value of hole center) N180 G0 X#1021 Y#1002 (back to the center of the hole) N190 G38.2 Y[#1002 + #1005] (probe +Y side of the hole) N200 #1012=#5062 (save results) N210 G0 X#1021 Y#1002 (back to center of hole) N220 G38.2 Y[#1002 - #1005] (probe -Y side of the hole) N230 #1022=[[#1012 + #5062] / 2.0] (find very good Y-value of hole center) N240 #1014=[#1012 - #5062 + [2 * #1004]] (find hole diameter in Y-direction) N250 G0 X#1021 Y#1022 (back to the center of the hole) N260 G38.2 X[#1021 + #1005] (probe +X side of hole) N270 #1031=#5061 (save results) N280 G0 X#1021 Y#1022 (back to the center of the hole) N290 G38.2 X[#1021 - #1005] (probe -X side of the hole) N300 #1041=[[#1031 + #5061] / 2.0] (find very good X-value of hole center) N310 #1024=[#1031 - #5061 + [2 * #1004]] (find hole diameter in X-direction) N320 #1034=[[#1014 + #1024] / 2.0] (find average hole diameter) N330 #1035=[#1024 - #1014] (find difference in hole diameters) N340 G0 X#1041 Y#1022 (back to the center of the hole) N350 M2 (Probing ended)