Renishaw Inspection Plus adapted for Haas NGC controls. Cycles are called via G65 P98xx with the same cycle numbers as Fanuc, but variable numbering is completely different: outputs live in #185–#199 and calibration data in #556–#597. Haas uses G103 P1 for look-ahead suppression (embedded in settings macro O9724).
Haas vs. Fanuc — Key Differences
| Purpose | Haas | Fanuc |
| Output variables | #185–#199 | #135–#149 |
| Feature-to-feature storage (P1) | #180–#184 | #130–#134 |
| Skip positions | #174–#176 | #5061–#5063 |
| Calibration base | #556 (556+n) | #500 (500+n) |
| Look-ahead control | G103 P1 | Varies by version |
| Work offset S-code | S1–S6 = G54–G59; S154.01–S154.99 | S1–S6 = G54–G59; S7–S48 extended |
Settings macro #170 | 3 (radius+alarms), 19 (dia+alarms), 7 (radius+flag), 23 (dia+flag) | Similar but Fanuc-specific values |
Haas NGC Macro Variable Layout
| Range | Use |
#0–#33 | Volatile, general use (arguments + local) |
#100–#119 | Reserved for Haas |
#120–#139 | Available for user |
#140–#155 | Purchased devices (probe, bar feeder, pallet changer) |
#156–#199 | Probe use (output variables) |
#500–#519 | Reserved for Haas |
#520–#539 | Available for user (persistent) |
#540–#555 | Purchased devices (persistent) |
#556–#599 | Probe use (calibration data, persistent) |
Cycle Quick Reference
| Cycle | Name | Format |
| Calibration |
O9801 | Probe Length Calibration | G65 P9801 Zz Tt |
O9802 | Stylus X/Y Offset Calibration | G65 P9802 Dd [Zz] |
O9803 | Stylus Ball Radius Calibration | G65 P9803 Dd [Zz Ss] |
O9804 | Vector Ball Radius Calibration | G65 P9804 Dd [Zz Ss] |
| Positioning |
O9810 | Protected Positioning | G65 P9810 Xx Yy Zz [Ff Mm] |
| Standard Measuring |
O9811 | Single Surface (X, Y, or Z) | G65 P9811 Xx|Yy|Zz [opts] |
O9812 | Web / Pocket | G65 P9812 Xx|Yy [Zz] [opts] |
O9814 | Bore / Boss | G65 P9814 Dd [Zz] [opts] |
O9815 | Internal Corner | G65 P9815 Xx Yy [opts] |
O9816 | External Corner | G65 P9816 Xx Yy [opts] |
| Vector Measuring (requires O9804) |
O9821 | Angle Single Surface | G65 P9821 Aa Dd [opts] |
O9822 | Angle Web / Pocket | G65 P9822 Aa Dd [Zz] [opts] |
O9823 | 3-Point Bore / Boss | G65 P9823 Aa Bb Cc Dd [Zz] [opts] |
| Additional Cycles |
O9817 | 4th Axis X Measurement | G65 P9817 Xx Zz [opts] |
O9818 | 4th Axis Y Measurement | G65 P9818 Yy Zz [opts] |
O9819 | Bore/Boss on PCD | G65 P9819 Cc Dd Zz|Kk [opts] |
O9820 | Stock Allowance | G65 P9820 Xx|Yy|Zz Ii Jj Kk [opts] |
O9832 | Turn Probe On | G65 P9832 (no inputs) |
O9833 | Turn Probe Off | G65 P9833 (no inputs) |
O9834 | Feature-to-Feature | G65 P9834 [Xx Yy Zz Aa Dd] [opts] |
O9835 | SPC Tool Offset Update | G65 P9835 Tt Mm [opts] |
O9843 | XY Plane Angle Measure | G65 P9843 Xx|Yy Dd [opts] |
Common Optional Inputs
Most measuring cycles accept these optional letter-address inputs:
| Input | Description | Notes |
H h | Tolerance on feature dimension | Exceeding triggers #3006 alarm |
M m | True position tolerance (cylindrical zone) | Evaluated as radial error |
Q q | Overtravel distance | Default: 4 mm (Z), 10 mm (X/Y) |
S s | Work offset number to update | S1–S6 = G54–G59; S154.01–S154.99 |
T t | Tool offset number to update | Type C: E1–E100 length, E401–E500 radius |
W w | Print data (DPRNT) | W1. = feature #; W2. = component # |
E e | Experience value | Spare tool offset # storing adjustment |
F f | Percent feedback | 0–1 fraction for tool offset update |
U u | Upper tolerance limit | No offset update if exceeded |
V v | Null band | Dead zone—no offset if error within this range |
R r | Radial clearance (external features) | Default 5 mm. R-r = force internal |
Cycle Input Arguments
O9810 — Protected Positioning
Monitors probe trigger during all positioning moves. Collision triggers #3000 = 86(PATH OBSTRUCTED). Feedrate F is modal—once set, it persists across subsequent O9810 calls.
| Input | Req? | Description |
X x | Yes | Target X position |
Y y | Yes | Target Y position |
Z z | Yes | Target Z position |
F f | Modal | Feedrate for all protected moves |
M m | Opt | M1. = flag mode: sets #198 = 7 on trigger instead of alarm |
O9811 — Single Surface Measurement
| Input | Req? | Description |
X x / Y y / Z z | One required | Nominal surface position (one axis per call) |
| Plus common optional inputs: H, M, Q, S, T, W, E, F, U, V |
O9812 — Web / Pocket Measurement
| Input | Req? | Description |
X x / Y y | One required | Nominal feature size in X or Y |
Z z | Opt | Absolute Z for web (external). Omit = pocket. |
R r | Opt | Radial clearance for external. R-r = force internal. |
| Plus common optional inputs: H, M, Q, S, T, W, E, F, U, V |
O9814 — Bore / Boss Measurement
Four-touch measurement (X+, X−, Y+, Y−). Omit Z for bore; include Z for boss.
| Input | Req? | Description |
D d | Yes | Nominal diameter of feature |
Z z | Opt | Absolute Z for boss (external). Omit = bore. |
R r | Opt | Radial clearance for boss. R-r = force internal. |
| Plus common optional inputs: H, M, Q, S, T, W, E, F, U, V |
Calibration Cycles
| Cycle | Required Inputs | Purpose |
O9801 | Z z (ref surface), T t (tool offset #) | Calibrate probe length |
O9802 | D d (bore diameter), opt Z z for external | Calibrate X/Y stylus offsets → #558, #559 |
O9803 | D d (gauge diameter), opt Z z, S s | Standard ball radius → #556, #557 |
O9804 | D d (gauge diameter), opt Z z, S s | Vector ball radius → #556–#557 + #566–#573 |
Calibration order: O9801 (length) → O9802 (X/Y offsets) → O9803 or O9804 (ball radius). Use O9804 if you will use vector cycles (O9821/O9822/O9823).
Calibration Variables
Stored in persistent common variables #556–#597 (base 556). These survive power-off.
| Variable | Name | Description |
#556 | XRAD | X calibration ball radius |
#557 | YRAD | Y calibration ball radius |
#558 | XOFF | X-axis stylus offset |
#559 | YOFF | Y-axis stylus offset |
#562 | BMCF | Back-off distance (basic move control factor) |
#565 | — | Active vector radius (for O9821/O9822/O9823) |
#566–#573 | VRAD | Vector calibration radii at 30° intervals |
#574–#577 | K1 | Multi-stylus K1 store (XRAD, YRAD, XOFF, YOFF) |
#578–#581 | K2 | Multi-stylus K2 store |
#582–#589 | K11 | Vector multi-stylus K11 store |
#590–#597 | K12 | Vector multi-stylus K12 store |
Skip Signal & Internal Variables
On Haas, skip positions are stored by the basic move macro O9726 into common variables (not system variables like Fanuc):
| Variable | Description |
#174 | Stored X skip position (from O9726) |
#175 | Stored Y skip position |
#176 | Stored Z skip position |
#177 | X average skip position (from O9721 X diameter move) |
#178 | Y average skip position (from O9722 Y diameter move) |
#173 | Position zone (default 0.05 mm). Prevents false reads at accel/decel. |
Standard two-touch: gauge feedrate = 100 mm/min (3.94 in/min), measuring uncertainty ≈ 0.002 mm. One-touch option: default 500 mm/min, uncertainty proportional to feedrate.
Error & Alarm Handling
#198 — Out-of-Tolerance Flag
| Value | Meaning | Offset Update? |
| 0 | No error / no probe trigger (O9810 flag mode) | — |
| 1 | OUT OF TOL / OUT OF POS / ANGLE OUT OF TOL | Yes (after cycle start) |
| 2 | OUT OF POS | Yes (after cycle start) |
| 3 | UPPER TOL EXCEEDED | No |
| 4 | ANGLE OUT OF TOL | Yes (after cycle start) |
| 5 | DIA OFFSET TOO LARGE | Yes (after cycle start) |
| 6 | EXCESS STOCK | No |
| 7 | Probe triggered (O9810 flag mode) | — |
Flag-only mode: set #170 to 7 (radius) or 23 (diameter) to suppress alarms and only set #198. Intended for FMS/unmanned operation—your program must check #198 after each cycle.
#3000 Reset Alarms (Program Stop)
| Alarm # | Message | Cause |
| 86 | PATH OBSTRUCTED | Probe triggered during O9810 move |
| 88 | NO FEED RATE | O9810 called without F input |
| 89 | NO TOOL LENGTH ACTIVE | G43/G44 not active before probe cycle |
| 91 | FORMAT ERROR / INPUT MISSING | Required input not supplied or conflicting inputs |
| 92 | PROBE OPEN | Probe already triggered before move |
| 93 | PROBE FAIL | Probe did not trigger during move |
| 101 | PROBE START UP FAILURE | O9832 failed to activate probe after 4 attempts |
#3006 Cycle-Start-to-Continue Alarms
| Message | Condition |
| OUT OF TOL | Feature size outside H tolerance |
| OUT OF POS | Position outside M true position tolerance |
| ANGLE OUT OF TOL | Angle outside B tolerance |
| UPPER TOL EXCEEDED | Exceeds U upper tolerance (no offset update) |
| EXCESS STOCK | Stock exceeds U limit (no offset update) |
| DIA OFFSET TOO LARGE | Diameter offset correction too large |
| PROBE SWITCH OFF FAILURE | O9833 could not deactivate probe |
Output Variables by Cycle
All measuring cycles write results to #185–#199. Variables #198 (out-of-tolerance flag) and #199 (probe error flag) are set by every cycle.
O9811 — Single Surface
| Var | Output |
#185 | X position |
#186 | Y position |
#187 | Z position |
#190 | X error |
#191 | Y error |
#192 | Z error |
#195 | True position error |
#196 | Metal condition |
#197 | Direction indicator |
O9812 — Web / Pocket
| Var | Output |
#185 | X position |
#186 | Y position |
#188 | Size |
#190 | X error |
#191 | Y error |
#193 | Size error |
#195 | True position error |
#196 | Metal condition |
O9814 — Bore / Boss
| Var | Output |
#185 | X position |
#186 | Y position |
#188 | Size (diameter) |
#190 | X error |
#191 | Y error |
#193 | Size error |
#195 | True position error |
#196 | Metal condition |
O9815 — Internal Corner
| Var | Output |
#185 | X position |
#186 | Y position |
#188 | Size |
#189 | X surface angle |
#190 | X error |
#191 | Y error |
#192 | Y surface angle |
#193 | Y angle error |
#194 | X angle error |
#195 | True position error |
O9816 — External Corner
| Var | Output |
#185 | X position |
#186 | Y position |
#189 | X surface angle |
#190 | X error |
#191 | Y error |
#192 | Y surface angle |
#193 | Y angle error |
#194 | X angle error |
#195 | True position error |
O9817/O9818 — 4th Axis
| Var | Output |
#189 | 4th axis measured position |
#193 | Height error (Z1−Z2) |
#194 | Angle correction |
O9819 — PCD Bore/Boss
| Var | Output |
#185 | X position |
#186 | Y position |
#187 | PCD |
#188 | Size (diameter) |
#189 | Angle |
#190 | X error |
#191 | Y error |
#192 | PCD error |
#193 | Size error |
#195 | True position error |
#196 | Metal condition |
#197 | Hole number |
O9820 — Stock Allowance
| Var | Output |
#194 | Maximum value (metal) |
#195 | Minimum value (metal) |
#196 | Variation (stock allowance) |
O9821 — Angle Single Surface
| Var | Output |
#185 | X position |
#186 | Y position |
#190 | X error |
#191 | Y error |
#193 | Size error |
#195 | True position error |
#196 | Metal condition |
O9822 — Angle Web / Pocket
| Var | Output |
#185 | X position |
#186 | Y position |
#188 | Size |
#190 | X error |
#191 | Y error |
#193 | Size error |
#195 | True position error |
#196 | Metal condition |
#197 | Direction indicator |
O9823 — 3-Point Bore / Boss
| Var | Output |
#185 | X position |
#186 | Y position |
#188 | Size (diameter) |
#190 | X error |
#191 | Y error |
#193 | Size error |
#195 | True position error |
#196 | Metal condition |
O9834 — Feature to Feature
| Var | Output |
#185 | X incremental distance |
#186 | Y incremental distance |
#187 | Z incremental distance |
#188 | Minimum distance |
#189 | Angle |
#190 | X error |
#191 | Y error |
#192 | Z error |
#193 | Min distance error |
#194 | Angle error |
#195 | True position error |
#196 | Metal condition |
O9843 — XY Angle Measure
| Var | Output |
#189 | Measured angle |
#193 | Height error |
#194 | Angle error |
References
- Renishaw, Inspection Plus Programming Manual, Renishaw plc.
- Haas, Operator’s Manual / NGC Programming Guide, Haas Automation, Inc.