Modern CNC alarms and “mystery crashes” usually come from a small set of root causes: wrong coordinate mode, wrong offset, unsafe rapid moves, incorrect compensation (tool length or cutter radius), feed mode confusion, or axis limits/kinematics issues. This guide is written to be used like a shop-floor playbook. Alarm numbering and wording can vary by machine builder, options, and control generation (even within Fanuc/Haas/Siemens), so treat the exact text on your screen as the final authority—but the failure patterns below are consistently “the real reason” behind most alarms.
Quick rule before anything else: never keep resetting and rerunning. If you don’t know why it stopped, you’re gambling with a crash. Capture the alarm text, the line number, and the last motion command that executed, then diagnose.
SECTION A — THE MOST COMMON ALARM “FAMILIES” (AND WHAT THEY REALLY MEAN)
1) Overtravel / Soft Limit / Stroke Limit (often shown as OT, Over Travel, Stroke Limit, Travel Exceeded, Axis Limit)
What it usually means: a commanded position is outside allowable machine travel, or a transformed move (rotation/tilt) pushed the machine beyond limits.
Common triggers: wrong work offset (G54/G55…), wrong sign on Z, using G91 incremental unexpectedly, calling G28/G30 without safe intermediate, leaving G68 rotation active, or probing values writing offsets incorrectly (G10 misuse).
Fast checks: verify active coordinate system and mode (G90/G91), confirm current work offset values, confirm tool length offset is correct, and check whether any transforms are active (rotation/tilt modes).
Safe recovery: jog away in JOG mode with feed hold mindset; clear transforms; re-home only if required by your procedure; re-run from a safe block, not from the alarm line.
2) Servo Following Error / Excess Error / Position Deviation (often “excess error,” “following error,” “servo alarm,” “position error”)
What it usually means: the axis could not follow the commanded path within tolerance.
Common triggers: too aggressive accel/jerk for the toolpath (tiny segments at high feed), mechanical drag, worn ways, bad lubrication, loose couplings, collision damage, over-tight gibs, rotary axis brake issues, or unrealistic CAM post settings.
Program-side fixes: reduce feed, use smoothing/high-precision modes correctly, increase tolerance in CAM (avoid millions of tiny line segments), avoid instant direction changes, avoid entering cutter comp into a corner, add arcs where possible.
Machine-side checks: axis load history, lubrication, ballscrew noise, axis backlash, rotary clamp/unclamp, servo tuning history.
3) Spindle Alarms (overload, overheat, orientation fail, speed not reached)
What it usually means: spindle couldn’t reach/hold commanded speed/torque or orientation.
Common triggers: too heavy cut, dull tool, wrong S range, gear range mismatch, rigid tapping configuration wrong, M19 orientation conflicts, coolant or chips in spindle encoder sensor area (machine dependent).
Program-side fixes: reduce DOC/WOC, correct S and feed, verify tapping cycles (pitch vs feed mode), ensure correct M-codes for gear/range (if applicable).
4) Program / Parameter / Format Errors (often “illegal command,” “format error,” “P/S alarm,” “syntax error,” “unknown G-code”)
What it usually means: controller rejected a block because of incorrect syntax or illegal state.
Common triggers: missing decimal points where required, illegal G-code in current mode, using G53 with incremental incorrectly, using arc commands with invalid I/J/K, using compensation without a lead-in, mixing modal groups incorrectly.
SECTION B — THE TOP G-CODE MISTAKES THAT CAUSE REAL CRASHES (WITH SHOP-PROVEN FIXES)
1) The “G00 Z100 / G00 Z-100” misunderstanding (absolute vs incremental)
This is one of the most common and expensive mistakes. The same-looking line can be safe or catastrophic depending on G90/G91 and the active work offset.
Scenario A (Safe): G90 active, G54 Z0 is top of part, and you know Z100 is a clear retract plane above everything.
Scenario B (Crash): G91 active (incremental) and you do G00 Z-100, which drives the tool down 100 mm from wherever it currently is—possibly straight into the part/fixture.
Best practice: always “force” the mode you assume before critical rapids. Example approach: set G90 explicitly, retract Z to a known safe plane, then reposition XY.
Safe pattern example (conceptual, adapt to your control): force G90, retract to a safe Z (work coordinate or machine coordinate), then move XY. If you use machine coordinate retracts, ensure no coordinate rotation/tilt is active and you understand how your control interprets G53.
2) Forgetting the current mode is G91 (incremental)
Many crashes come from one leftover G91 line in a subprogram or probing macro.
Symptom: the program “walks away” from expected locations or jumps unexpectedly.
Fix: at the top of every program and every subprogram, explicitly set the required modes (G90, plane, units, comp cancels, feed mode). Do not assume.
3) Work offset confusion (G54/G55/G54.1 Pn)
Root cause: running the right program with the wrong offset, or probing updated the wrong offset register.
Fix: include an on-screen “hard check” comment in the program header listing required offset and fixture ID; standardize offsets by fixture; use consistent naming; and if you use G10 for offset writing, isolate it in a clearly labeled “SETUP” section and lock it down.
4) Tool length comp mistakes (G43 / H number mismatch)
The classic: tool T12 is in the spindle but H07 is active, or the tool length table has a wrong sign/entry.
Symptom: Z moves are consistently wrong—often by a large amount.
Fix: enforce the rule “T and H match” (T12 uses H12) unless your shop has a documented exception. Add a mandatory safe-height move immediately after applying G43 and before approaching the part, so you can visually confirm.
5) Cutter comp mistakes (G41/G42 entry/exit)
Alarms and gouges happen when you enter comp without adequate lead-in, enter at a sharp corner, or cancel comp incorrectly.
Fix: always use a lead-in move that is long enough (typically longer than tool radius), enter comp on a straight segment, and cancel comp on a straight lead-out. If CAM output is too tight, redesign lead-ins.
6) Arc errors (G02/G03 “radius too small,” “non-tangent,” “end point error”)
Root cause: inconsistent I/J/K vs start/end points, unit mismatch, rounding errors from post, or mixing incremental arc centers with unexpected coordinate transforms (rotation/tilt).
Fix: standardize arc output style, verify units (G20/G21), remove active transforms before arcs if your post is not transform-aware, and tighten CAM arc filtering only if your machine/control supports it reliably.
7) Feed mode confusion (G93 inverse time vs G94 per minute vs G95 per rev)
This causes “way too fast” or “way too slow” motion that looks like a machine problem but is actually a modal state problem.
Fix: explicitly set feed mode in headers and before multi-axis segments. Always reset to G94 at the end of 5-axis inverse-time sections unless your post manages it perfectly.
SECTION C — “TOP ALARM CODES” YOU’LL SEE (BY BRAND) AND THE REAL DIAGNOSIS FLOW
Fanuc (common families you’ll recognize on-screen)
- SV (servo-related) alarms: focus on following error, overload, encoder feedback, axis friction, tuning, or motion aggressiveness.
- OT (overtravel) alarms: verify coordinates, offsets, transforms, and safe retract strategy.
- PS / P/S (program/sequence) alarms: typically syntax/state errors, illegal G-code in mode, missing parameters, or prohibited operations.
Pro workflow: identify the axis and the exact block; confirm G90/G91, active work offset, active comp, active transforms; then check the last commanded target position vs machine travel.
Haas (typical shop-floor patterns)
- Overtravel / “axis drive fault” style messages: commonly caused by wrong offset, wrong sign, or a runaway incremental move.
- Spindle orientation / rigid tapping issues: often M19/tapping configuration, encoder feedback, or incorrect cycle parameters.
- Servo alarms: can be mechanical load, too aggressive feed/accel, or issues after a crash.
Pro workflow: check offsets and tool length first; check whether a macro or probing wrote offsets; verify safe start blocks; then reduce feed and test the motion in air.
Siemens (typical patterns)
- Axis monitoring / following deviation: similar root causes—motion aggressiveness vs machine limits, plus kinematics issues on multi-axis.
- Transformation/kinematics-related stops: often related to active transformations, wrong pivot/kinematic calibration, or tool length/geometry mismatches.
Pro workflow: verify active kinematic mode, tool data, and transformation status; then confirm the NC line’s target is physically reachable without violating axis limits.
SECTION D — REAL “SAVE THE PART” CHECKLIST (DO THIS IN ORDER)
1) Freeze the scene: record alarm text, line number, current tool, active offset, active modes if displayed.
2) Identify whether it’s a motion safety issue (overtravel/collision risk) vs a control/syntax issue.
3) Confirm modes: G90/G91, G20/G21, plane (G17/G18/G19), feed mode (G93/G94/G95), compensation states (G40/G41/G42, G49/G43), transforms (rotation/tilt).
4) Verify offsets: correct work offset active, and the values make physical sense.
5) Verify tool data: correct tool loaded, correct H/D offsets, tool length not obviously wrong.
6) Dry-run strategy: single block, feed hold ready, optional stop on, run above the part first (safe Z), then step down.
7) Only after program-side checks: investigate machine health (lubrication, axis load, backlash, clamps, encoders).
SECTION E — VIRAL “MOST-MADE” PROGRAMMING ERRORS (WITH FIX PATTERNS YOU CAN COPY)
Error: Rapid XY at low Z (the “vise jaw killer”)
Fix pattern: always retract Z to a known safe plane before any XY rapid. Put it in every tool change block.
Error: Starting mid-program without restoring modal states
Fix pattern: create a “SAFE START” block for every tool: set modes, cancel comps, apply correct offsets, go to safe Z, then approach.
Error: Leaving coordinate rotation/tilt active
Fix pattern: explicitly cancel transforms (e.g., cancel rotation/tilt modes) before tool change, probing, homing, or machine coordinate moves.
Error: Entering cutter comp on a corner
Fix pattern: linear lead-in, then comp, then profile. Never comp directly into a corner.
Error: Mixing probing macros with production moves without isolating them
Fix pattern: put probing in a dedicated section that ends by restoring modes and confirming offsets/tool data are consistent.
SECTION F — MINI “AIR-CHECK” TEST YOU SHOULD RUN BEFORE YOU CUT METAL
Run above the part with Z safely high: confirm XY positions, confirm the toolpath stays within expected envelope, confirm comp behaves correctly, confirm feed mode isn’t inverse-time unexpectedly, then slowly step down while single-blocking.
Final note: the fastest shops don’t “know every alarm code by heart”—they use a repeatable diagnostic workflow that catches the same five root causes every time. If you standardize safe-start blocks, enforce explicit modal resets, and design safe rapid strategies (especially around commands like G00 Z100 / G00 Z-100 and G90/G91), you eliminate the majority of real-world crashes and the most common alarm loops.
Leave a comment