In every CNC shop, the same pattern repeats: a program stops with an alarm, the spindle is in the middle of a cut, the operator freezes, and production time burns away while everyone guesses what happened. This guide turns that chaos into a system. We’ll break down the most common CNC alarms for Fanuc, Haas, and Siemens controls, show real-world examples of G-code mistakes that trigger them, and give you a repeatable troubleshooting workflow you can use on any machine in 2025 and beyond.
1. A Universal CNC Alarm Troubleshooting Workflow
Before diving into specific error numbers, you should treat every alarm the same way:
- Read the full alarm text, not just the number.
The message often tells you which axis, which tool, or which line is involved. - Note where the machine stopped.
- Current line number (N-block)
- Current modal state (G90/G91, G54–G59, G17/G18/G19, G94/G95, etc.)
- Active work offset and tool
- Ask: is this a motion problem, logic problem, or hardware problem?
- Motion → overtravel, soft limits, servo error
- Logic → illegal G-code, missing data, wrong plane
- Hardware → low air, lube fault, spindle not at speed
- Try single-block re-run (carefully).
Back up a few safe lines (usually clearance), enable single-block, dry run or air cut if needed. - Fix the root cause, not just the symptom.
Don’t just clear the alarm and press Cycle Start. Change the offsets, code, or setup so it won’t happen again.
2. Fanuc: Top Alarm Types and Real-World Fixes
Fanuc is everywhere, so understanding its alarm “families” is critical.
2.1 Servo & Overtravel Alarms (Motion Problems)
Common symptoms: axis stops mid-rapid, message mentions “SERVO ALARM” or “OVERTAVEL + / –”, machine won’t jog further in that direction.
Likely causes:
- Work offset or tool length pushes the axis past its travel limit
- Wrong sign on Z (e.g. Z-100 instead of Z+100)
- Wrong reference plane, or G91 incremental move gone wild
- Fixture too tall or part not where CAM assumed
What to check:
- Look at the current position in machine coordinates (often via a G53 screen).
- Compare last commanded moves:
- Large Z- or X+ / Y+ moves from near limit
- G91 commands like
G91 G01 Z-100. F500.instead of a safe retract - Verify your G54–G59 zero is not inside the machine casting!
Typical Fanuc overtravel scenario:
- Operator sets G54 Z0 on the table surface instead of top of part.
- Program does:
- G43 H1 Z50. (safe height above part)
- Next tool uses same H1 but longer tool
- On tool change, Z tries to move beyond machine stroke ⇒ overtravel alarm.
Fix:
- Re-touch tools correctly, or
- Re-set work offset Z to the correct reference, then
- Re-run in air to verify.
2.2 Program Structure & G-Code Format Alarms
These often mention P/S (Program Structure) alarm, illegal command, or “FORMAT ERROR”.
Typical causes:
- Wrong G-code for active plane (e.g. G02 with G18 but I/K values set as if for G17)
- Missing required arguments (e.g. G83 without Q)
- Non-modal code used incorrectly (e.g. G10 with wrong L, P, or missing address)
- Illegal combination like canned cycle + cutter comp
Example – arc format mistake:
You write a circular move in XY plane (G17):
G17
G02 X50. Y40. I-10. K0. F800.
Fanuc expects I/J in G17 (XY plane), but you used K. That can trigger an alarm.
How to fix:
- For G17 (XY): use I and J
- For G18 (XZ): use I and K
- For G19 (YZ): use J and K
Always match your I/J/K to the active plane.
2.3 Macro Alarm (#3000) – Custom “Red Screen” Messages
Fanuc macro programmers commonly use:
#3000 = 1 (TOOL LIFE EXCEEDED – CHANGE INSERT)
This triggers a “PROGRAMMABLE ALARM.” When you see this type of alarm, it is usually intentional, not a controller failure.
What to do:
- Scroll up a few lines and look for the
#3000macro line. - Read the comment – it often tells you exactly what’s wrong: tool life, missing probe, wrong pallet, etc.
- Fix the condition (change tool, correct pallet, turn on air blast), then rerun.
3. Haas: High-Frequency Alarms and Typical Causes
Haas controls show alarms with numbers and plain English messages. Here are categories you’ll see most.
3.1 Servo/Position Alarms (e.g. AXIS SERVO ERROR TOO LARGE)
Common in heavy cuts or aggressive rapids. Typical triggers:
- Tool plowing too deep → servo amp can’t keep up
- Backlash or mechanical binding
- Rapids into a hard stop or clamp
Quick triage:
- Look at the line where it stopped: was it a G00 into a clamp?
- Reduce feed or stepdown, especially in hard materials
- Check if the error only appears on one axis (loose coupler, failing ball screw)
3.2 Overtravel & Soft Limit Alarms
Haas will complain when an axis exceeds its travel envelope. Causes mirror Fanuc:
- Wrong G54 Z0 (touched the wrong surface)
- Wrong sign (Z- vs Z+)
- Moving in G91 when you thought it was G90
Best practice:
- Use
G28 G91 Z0.or equivalent to retract safely before big moves. - Verify work offsets and check the positon display in machine coordinates before running new programs.
3.3 Spindle / Lube / Air / Coolant Alarms
Many “annoying” Haas alarms are actually safety nets:
- Low air pressure alarms when drawbar may not clamp reliably
- Low lube or lube fault alarms protecting guides and screws
- Spindle not at speed when rigid tapping or gear change logic hasn’t finished
These are fixed by maintenance and setup, not by editing G-code:
- Open the lube cabinet and check reservoir
- Verify compressor pressure and dryer
- Wait for gear change to complete before starting high-load cuts
A good rule: don’t just clear these alarms—find the physical cause.
4. Siemens (840D / Sinumerik): Common Alarm Themes
Siemens alarms tend to be more text-heavy and structured into channels and NCK/PLC sections, but the root causes are similar:
- Soft limit exceeded / work area violation
- Wrong work offset, rotation, or tool length
- Channel program errors
- Invalid G-code in the active cycle, wrong syntax, missing parameters
- Drive/servo errors
- Overload, following error, drive not ready
General Siemens troubleshooting steps:
- Read the “HELP” or “MORE INFO” detail on the alarm – Siemens does a better job than most at describing context.
- Check the active frame: TRANS/ROT, TRAORI, or tilted workplane – it’s easy to forget a tilt is still active.
- For 5-axis TRAORI work, confirm that TCP and kinematics are still valid and probing hasn’t changed geometry.
5. The Most Expensive G-Code Mistakes (And How to Avoid Them)
Many alarms come from logic mistakes rather than controller bugs. These are the ones that break tools and scrap parts.
5.1 Forgetting Tool Length Compensation (G43 / H)
Classic mistake on mills:
T12 M06
G00 G90 G54 X100. Y50.
G00 Z5. (no G43 here!)
G01 Z-20. F800.
Z now uses the machine gauge line, not the tool tip. Result: tool crashes 20 mm into the workholding.
Correct pattern:
T12 M06
G00 G90 G54 X100. Y50.
G43 H12 Z50.
G01 Z-20. F800.
Always apply G43 with the correct H before moving down near the part.
5.2 Wrong Work Offset (G54–G59 / G54.1 P#)
Trying to run a second setup but forgetting to change G54 to G55 is a classic crash scenario:
- Program assumes part is under G55
- Machine still using G54 from previous job
- Rapid move goes to “correct” coordinates, but wrong physical location
Prevention:
- Put the work offset explicitly in your program header (never rely on what was active before).
- Use clearly commented lines like: (OP10 – VISE 1 – USE G54)
G90 G54 G17 G40 G49 G80 - For multiple vises, never hard-code “G54” etc. in probing macros without comments and documentation.
5.3 Inch vs Metric Confusion (G20 / G21)
Switching units without realizing it is lethal:
- CAM outputs in mm, machine running G20 inches
- Rapid moves become 25.4× too large
- Feeds make no sense (F100 = 100 in/min vs 100 mm/min)
Safe habits:
- Declare units at the top of every program:
G21orG20, never assume. - Standardize per machine: some shops run “only metric” policies to avoid mix-ups.
- Never mix G20/G21 in the middle of a program unless you fully understand all consequences.
5.4 G90 vs G91 (Absolute vs Incremental)
A single G91 left active can cause all later moves to drift relative to the last position:
- Used for drill patterns or retracts
- Forgotten when returning to normal contouring
- Plate machining suddenly “walks” away from origin
Defensive technique:
- Only use G91 in very short, tightly controlled blocks (such as
G91 G28 Z0.). - Immediately return to G90 on the next line.
- Avoid long sections of incremental code unless absolutely required.
5.5 Cutter Compensation (G41/G42) Misuse
Common issues:
- Activating G41/G42 with a line that’s too short or with no lead-in
- Turning off comp in the middle of tight arcs
- Using wrong D-offset so the profile is shifted
This can produce:
- Profile alarms
- “Interference” messages
- Parts out of tolerance with no hard alarms
Prevention:
- Always use a proper lead-in and lead-out
- Keep comp transitions away from tiny corners
- Set D values accurately and document them in the tool list
6. Classic Programming Errors That Don’t Always Alarm (But Kill Parts)
These are the silent killers that may never throw an error, but will destroy quality or tools:
- Wrong tool in the spindle
- T3 in program, T8 physically loaded
- Machine runs fine, but part is scrap
- Use tool verification and load sheets
- Missing safe Z between XY moves
- Moving in XY at low Z across clamps or studs
- No alarm—just broken cutters and fixtures
- Always retract to a known safe plane between fixtures
- Helical moves with wrong sign or wrong radius
- Tool ramps down on the wrong side of geometry
- Leads to walls being undersize or oversize
- Always visualize helixes in simulation and on the control graphics
- Wrong feed mode around G93/G94/G95
- Leaving G93 (inverse time) on for normal milling
- F values become inverse seconds and motion becomes chaotic
- Explicitly switch back:
G94orG95after 5-axis or special cycles
7. A Practical CNC Error-Prevention Checklist
Use this checklist as a pre-flight before running any new or critical job:
- Header sanity:
- Units set (G20/G21)
- Absolute mode (G90)
- Correct work offset (G54/G55/…)
- Correct plane (G17 for most milling)
- Tool logic:
- T and H/D numbers match (T12 → H12 → D12)
- G43 used before any Z– moves
- Tool list printed or visible for the operator
- Motion safety:
- First moves in air above the part
- Use of safe Z plane between features
- No unexpected G91 left active
- Canned cycles / drilling:
- Z and R values make sense
- Q peck and F feedrate appropriate for material
- G80 used to cancel cycles before new paths
- 5-axis / TCP (if applicable):
- TCP/DWO (G43.4 / G234 / TRAORI) correctly on/off
- Tilted planes (G68.2 / G268) canceled before long rapids
- Alarms during test run:
- Don’t just clear them—understand them
- Check positions, offsets, and last moves
- Make corrections in CAM or G-code so the issue never returns
8. Turning Alarms Into Data, Not Panic
Shops that grow fastest don’t treat alarms as random bad luck—they treat them as data:
- Log which alarms appear and how often
- Track which programs, tools, and offsets cause trouble
- Fix post processors, templates, and setup procedures so the same mistake never repeats
- Train new operators with actual screenshots and real alarm histories
When you combine solid knowledge of the major alarm types (servo, overtravel, soft limits, program format, macro alarms) with disciplined programming habits (correct G43 use, safe Z, proper offsets, unit and mode control), you turn your CNC from a “mystery box that sometimes crashes” into a predictable, reliable production system.
This guide is designed to be that reference you and your team keep open in a browser tab or printed on the shop wall—a living troubleshooting map for Fanuc, Haas, and Siemens controls in 2025 and beyond.
Leave a comment