No pockets. No X reversal.
As Z moves along the part, every new X value continues toward the centerline. Type I is happy.
Have you ever received a “Non-Monotonous PQ Blocks” alarm on a Haas lathe—Alarm 602 in X or Alarm 603 in Z on many controls? This is what it is and how to fix it.
In CNC programming, a line of code is called a block.
P and Q are just line-number references. They tell the canned turning cycle which section of your program to read. For example, G71 P100 Q160 means: start reading the finished-part profile at N100 and stop at N160.
In a G71 Type I roughing cycle, Haas expects the X values in that P-to-Q profile to keep traveling in the same direction.
If the contour steps inward and then back outward—like a pocket, groove, or undercut—the X axis reverses. That profile is “non-monotonic.” If the control thinks you asked for Type I, it stops and throws the alarm instead of guessing.
As Z moves along the part, every new X value continues toward the centerline. Type I is happy.
That outward step reverses X. This is legal geometry, but it needs to be declared as Type II.
P only points to the first numbered block of the profile. Haas looks at what is programmed in that starting block: an X-axis location only means Type I; having both an X and Z location move means Type II.
G00 X2.100 Z0.100
G71 P100 Q160 U.010 W.005 D.080 F.012
N100 G00 X1.800 (X ONLY)
N110 G01 Z-0.500
...G00 X2.100 Z0.100
G71 P100 Q160 U.010 W.005 D.080 F.012
N100 G00 X1.800 Z0.100
N110 G01 Z-0.500
...It does not need to create actual Z motion. Its presence in the P block is the signal that selects Type II.
These are the line numbers for the start and end of the profile the canned cycle is trying to rough.
If X changes direction anywhere, you need Type II. Z must still travel one way. Trace it out with pen and graph paper if it helps.
Add a Z move to the line with the N number that is the same as the P number. The Z coordinate can match your current Z position. That is enough to select Type II.
Verify the toolpath, clearances, allowances, signs, and start position before cutting metal. Cutting air is easy, cheap, and more difficult to crash—but not impossible!
The important part is the highlighted idea: the P block contains both an X and a Z address.
G00 X2.100 Z0.100
G71 P100 Q160 U.010 W.005 D.080 F.012
N100 G00 X1.800 Z0.100 (X + Z = TYPE II)
N110 G01 Z-0.500
N120 X1.500
N130 Z-0.800
N140 X1.700 (X REVERSES)
N150 Z-1.200
N160 X1.200That is the method shown above and the normal fix on a control set to FANUC programming conventions. Setting 33 is set to FANUC by default on most Haas lathes.
In YASNAC mode, R1 selects Type II instead. Check Setting 33 before changing code blindly.
Built from the Haas Lathe Programming Workbook, pp. 78–90. Want the current grown-up version? Read the official Haas G71 documentation ↗