Non-monotonousPQ BlocksWhat the F#@% does that mean?!

01 — WHAT THE ALARM MEANS

First: “monotonic” is just a fancy word for one direction.

A machined stainless-steel lathe part with stepped diameters, an undercut, and a large concave radius.

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.

You can only go one way.

TYPE I✓ SIMPLE SHAPE
Type I monotonic profileA lathe profile moving toward the chuck without an X-axis reversal.

No pockets. No X reversal.

As Z moves along the part, every new X value continues toward the centerline. Type I is happy.

TYPE II↩ HAS A POCKET
Type II non-monotonic profileA lathe profile moving toward the chuck with an X-axis reversal.

The profile comes back out.

That outward step reverses X. This is legal geometry, but it needs to be declared as Type II.

02 / THE FIX

Use 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.

BEFORECONTROL ASSUMES TYPE I
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
...
AFTERCONTROL USES TYPE II
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
...
+

Yes, the added Z can be the position you’re already at.

It does not need to create actual Z motion. Its presence in the P block is the signal that selects Type II.

03 / BEFORE YOU HIT CYCLE START

The 60-second sanity check.

  1. Find your G71 P and Q numbers.

    These are the line numbers for the start and end of the profile the canned cycle is trying to rough.

  2. Read the profile in order.

    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.

  3. Put both X and Z in the P block.

    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.

  4. Run Graphics first.

    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!

REFERENCE EXAMPLE

Steal this code.

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.200
04 / MORE DETAIL

Why not use Type II every time?

Use the simplest cycle that fits the part.

  • More tool motion. Type I uses straightforward passes and a 45-degree retract. Type II follows the P–Q contour after each pass, which can add motion and cycle time.
  • Tool nose compensation needs care. Haas warns that a Type II profile may require more than one tip direction. Angles and arcs can need manual geometry adjustment to finish on size.
  • Type II still has limits. Z must remain monotonic in G71, the X path normally cannot exceed the starting location, and nested troughs are limited.
  • But Type II has an upside. Haas says it does not leave steps before the finish cut and typically produces a better pre-finish surface.
SETTING 33: FANUC

Use X + Z in the P block.

That 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.

SETTING 33: YASNAC

Use R1 on the G71 line.

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 ↗