This is a field-tested, evergreen troubleshooting playbook built for machinists and CNC programmers who want fewer crashes, faster recoveries, and “first-try” stable programs across Fanuc, Haas, and Siemens SINUMERIK controls. Alarm numbering and exact text can vary by machine builder, options, and software version, so always confirm final details in your OEM/NC documentation, but the diagnostic logic and programming patterns below remain valid across 3-axis, 5-axis, mills, lathes, and automation cells.
1) How to Read Alarms Like a Pro (Works on Fanuc / Haas / Siemens)
A) Separate “Symptom Alarms” from “Root-Cause Alarms”
Many controls show a generic top-level alarm that is only a symptom (example: “servos off”), while the real cause is another alarm in the stack (door interlock, overtravel, encoder fault, drive fault, etc.). On Fanuc, a very common generic servo alarm is “401 / SV0401” indicating servo ready (VRDY) is not on; it often appears alongside other alarms that point to the true cause. oai_citation:0‡MRO Electric
B) Always Capture the Context
Before you reset anything, record:
- Alarm number(s) and full text
- Which axis/spindle/drive is referenced (X/Y/Z/A/B/C, spindle 1/2, turret, etc.)
- What you were doing (home return, toolchange, canned cycle, probing, spindle start, rapid move)
- Current modal state (G90/G91, active work offset, active plane, active comp, units, feed mode)
This “context snapshot” saves hours because many errors are state-related, not geometry-related.
C) Use a Three-Layer Debug Process
Layer 1 (Program/Logic): missing feed, wrong modal state, wrong cycle cancel, wrong comp entry/exit
Layer 2 (Setup/Process): wrong offset, wrong tool length, wrong fixture, wrong probe calibration
Layer 3 (Hardware/Signals): limit switch, encoder, amplifier, drive module, lubrication, air supply, interlocks
2) The Most Common Alarm Families (And What They Really Mean)
A) Servo/Drive “Not Ready” Alarms (Motion Won’t Start)
- Fanuc: SV0401 / 401 “VRDY OFF / servo not ready” (generic “servos didn’t obey” style alarm; usually accompanies a deeper cause). oai_citation:1‡MRO Electric
- Haas: Alarm 102 “SERVOS OFF” indicates servo motors are off and the machine is in a disabled state while motion is requested; it commonly appears with other conditions (E-stop, door, fault). oai_citation:2‡MDCplus
- Siemens: Drive/axis module boot or system errors (e.g., 300300/300500 series) frequently indicate mismatch/config/hardware status rather than a “program mistake.” oai_citation:3‡Siemens Destek Portalı
Fast Isolation Checklist
1) Check E-stop chain, door interlocks, air pressure, lube alarms
2) Check overtravel/limit status (machine coordinate + soft limit conditions)
3) Check drive LEDs / diagnostics page
4) Verify axes are not on a hard limit and can jog off safely
B) Encoder/Feedback Alarms (Axis Jumps, Drifts, Won’t Home, “Following Error”)
Haas commonly documents alarm groups for missing encoder channels and encoder cable faults; these are classic “bad feedback” symptoms and should trigger immediate cable/connector inspection and motor contamination checks. oai_citation:4‡Haas CNC
Typical triggers:
- Coolant intrusion into encoder
- Broken/loose encoder cable
- Bad connector pins (especially after vibration)
- Incorrect encoder counts vs ballscrew pitch (rare but critical after retrofit)
C) Overtravel / Soft Limit / Stroke Protection Alarms (You Hit a Boundary)
Root causes:
- Wrong work offset (G54/G55 etc.)
- Wrong sign on Z (Z+ vs Z-)
- Wrong tool length comp or missing tool comp
- Unsafe “return to home” calls while a transform is active (rotation, scaling, TCP, tilted plane)
Professional recovery:
- Do not “force” movement blindly
- Switch to JOG at low rate
- Confirm machine coordinate position
- Move away from limit in the safe direction
- Fix the program state so it cannot repeat
D) Program / Syntax Alarms (P/S Alarms, Improper Codes, Missing Feed)
Fanuc program alarms are often labeled P/S and include extremely common issues:
- PS010 “IMPROPER G-CODE” (unsupported or unusable G-code/function)
- PS011 “NO FEEDRATE COMMANDED” (feed missing or inadequate in cutting feed)
These are classic “modal state / syntax” faults and usually resolve by correcting the program or post settings. oai_citation:5‡kfasllc.com
3) The Viral “Top 25” G-Code Mistakes That Cause 80% of Real Crashes
Mistake 1: Using G00 Z100 (or G00 Z-100) as a “universal safe retract”
Why it fails:
- Absolute Z100 is only safe if your current work offset, tool length, and machine configuration guarantee clearance
- On tall fixtures or deep vises, Z100 may still crash
- On machines in inches, “Z100” could be catastrophic
Crash-proof alternatives (choose one consistent shop standard)
A) Machine-coordinate retract (best when allowed):
- G53 Z0. (or a verified safe machine Z position)
B) Home-return via incremental safe point (classic Fanuc-style): - G91 G28 Z0.
- G90
C) Multi-home safe park (automation cells): - G30 P2 Z0. (if configured)
Practical rule:
Never trust a “magic Z number.” Trust either machine coordinates (G53) or homed reference strategies (G28/G30) plus known safe intermediate points.
Mistake 2: No “Safe Start” line at the top of every program
Add a deterministic safe-start block (edit for your shop standards):
- G90 G17 G40 G49 G80 (cancel comp/cycles)
- G94 (feed per minute, if milling standard)
- G54 (or your required work offset)
- (units explicitly) G21 or G20
Then move to a known safe Z before any XY travel.
Mistake 3: Missing feed after a modal change (PS011 / “No feedrate commanded”)
This happens when:
- You enter G01/G02/G03 without an F
- You switch feed modes (G93/G94/G95) and forget the required style of F
Fix: enforce “F on first cut move after every toolchange and after any feed-mode change.”
Mistake 4: Forgetting to cancel canned cycles (G80)
A drilling cycle left active can turn the next rapid into a drilling plunge.
Rule: Always issue G80 before leaving a hole pattern or before any big reposition.
Mistake 5: Cutter comp entry without a lead-in (G41/G42)
If the lead-in is too short or geometry is tight, comp alarms or gouges happen.
Rule: lead-in length should typically be at least 1x tool radius (often more) and tangential where possible.
Mistake 6: Tool length comp missing or applied late (G43/H on mills)
If you rapid XY at low Z before applying tool length compensation, you can crash the tool into the part.
Rule: apply tool length comp at a safe Z before any cutting-plane movement.
Mistake 7: Plane mismatch (G17/G18/G19) causing arc errors
If your plane is wrong, G02/G03 I/J/K interpretation changes and arcs explode.
Rule: explicitly set plane in safe start and before special cycles.
Mistake 8: Mixing absolute/incremental without a reset
Classic accident:
- G91 for a retract
- Forget to return to G90
- Next move becomes incremental and crashes
Rule: anytime you use G91, explicitly return to G90 immediately after.
Mistake 9: Work offset confusion (G54 vs G55) in multi-fixture jobs
Rule: print the active offset at each operation boundary and structure programs so each vise/fixture block “owns” its offset.
Mistake 10: Transform left active (G68 rotation, TCP, tilted plane, scaling)
Rule: cancel transforms before toolchange, before home moves, and before long rapids.
4) The “Crash-Proof Patterns” Library (Copy-Paste Templates)
A) Safe Start Template (Milling)
- (OPTIONAL) M01
- G90 G17 G40 G49 G80
- G21 (or G20)
- G94
- G54
- (OPTIONAL) G53 Z0. (or G91 G28 Z0.)
- Txx M06
- S#### M03
- G43 Hxx Z(safe)
- M08
- (approach)
B) Safe End Template (Milling)
- G80
- G40 G49
- (OPTIONAL) cancel transforms (e.g., G69 if rotated)
- G53 Z0. (or G91 G28 Z0.)
- M09
- M05
- (OPTIONAL) G53 X0 Y0
- M30
C) Two-Stage Retract (Tall Fixture Insurance)
- Step 1: Z to a known clearance plane in WORK coordinates (fast and local)
- Step 2: Z to safe machine coordinate/home (global safe)
Example logic: - G00 Z(safe_clearance_in_G54)
- G53 Z0.
This reduces risk when your work offset is correct, and still protects you when it isn’t.
5) G88 / G89 Boring Cycles (Where Most People Get Burned)
Important: G88/G89 behavior varies by control brand and cycle option. Always verify your control’s cycle chart before running production. What makes these cycles “viral” is that small misunderstandings create expensive scrap fast.
A) The Universal Boring-Cycle Failure Modes
- Wrong retract style: expecting rapid retract but cycle feeds out (or vice versa)
- Tool rubs on exit: feed-out occurs with spindle stopped or wrong spindle direction
- Dwell misuse: dwell at depth causes chatter rings or tool marks
- Not canceling cycle: next position becomes a boring plunge
B) Practical “Boring Cycle Safety Rules”
1) Always dry-run above the part with a visible clearance
2) Use conservative feed-out for finish-critical bores (if your cycle feeds out)
3) Use explicit spindle commands around the cycle if your control stops the spindle in-cycle
4) Always cancel with G80 immediately after the boring block(s)
C) Real-World Debug Scenario (The “Mystery Oversize Bore”)
Symptoms:
- Bore is oversize or tapered
Common causes: - Tool deflection because the cycle uses an unexpected retract/feed-out strategy
- Dwell too long at depth creates heat growth and spring-back
- Wrong nose radius or compensation logic for the boring bar
Fix strategy: - Run the cycle at air-cut height, watch whether the tool returns rapidly or feeds out
- Remove dwell and test again
- Reduce depth per pass or use a finish-only boring pass with stable parameters
6) The Most Searched “Why Did My Machine Do That?” FAQ (Short Answers, Big Saves)
Q1) Why did my program “suddenly” ignore my feedrate?
A) You likely changed feed mode (G93/G94/G95) or entered a canned cycle that interprets F differently. Re-issue the correct mode and place F on the first cutting block after the change.
Q2) Why did G00 move slower than expected?
A) Many controls limit rapid speed near soft limits, during servo faults, or when smoothing/tolerance modes are active. Also, if a canned cycle is still active, your “rapid” might not be a rapid.
Q3) Why did my arc alarm even though it looks correct in CAM?
A) Wrong plane (G17/G18/G19), wrong I/J sign convention for your post, or a transform active (rotation/scaling) that changes arc geometry. Always set plane explicitly.
Q4) Why does “SERVOS OFF” keep showing up?
A) It’s often a symptom state (machine disabled) rather than the root cause. Look for the real companion alarm in the list (interlock, drive, encoder, overtravel). Haas Alarm 102 is commonly described as the state where servos are off while motion is attempted. oai_citation:6‡MDCplus
Q5) Why am I getting “Improper G-code”?
A) Unsupported code, wrong dialect, or post configured for a different controller. Fanuc PS010 “IMPROPER G-CODE” is a classic example of this category. oai_citation:7‡kfasllc.com
7) Fast Diagnostic Flow (Use This When You’re Under Pressure)
Step 1: Is it a safety/interlock state?
- E-stop, door, air, lube, overtravel, servo not ready
Step 2: Is it program/state? - Missing G80, missing F, wrong G90/G91, wrong plane, comp entry/exit
Step 3: Is it offset/tool data? - Wrong G54, wrong H/D, wrong tool loaded, wrong unit mode
Step 4: Is it hardware? - Encoder alarms, drive alarms, spindle faults, cable issues, contamination
8) “Zero-Crash” Programming Habits That Create Long-Term Viral Value
- Build a consistent safe start/end standard and never break it
- Never rely on absolute “magic Z values” like G00 Z100 unless your shop has proven clearance in every fixture scenario
- Always cancel cycles and comps before big moves
- Use machine-coordinate retracts/home strategies for repeatable safety
- Add “operator-proof” structure: each operation block declares its own state (offset, plane, comps, coolant, feeds)
- Log alarm events and the successful fix; your shop’s internal encyclopedia becomes your competitive advantage
If you want this page to become an evergreen traffic magnet, keep adding real incident “case cards” at the bottom (symptom → root cause → fix → prevention pattern). Search engines reward updated, experience-backed troubleshooting pages, and machinists share them because they save real money.
Leave a comment