Fanuc Alarms & Diagnostics

Alarm Prefix Decode Table

Every Fanuc 30i/31i/32i alarm starts with a two-letter prefix that tells you which subsystem is complaining before you read a single word of the message. Decode the prefix first — it decides whether you're looking at a program problem, a drive problem, or a hardware problem, and whether RESET will even clear it.

PrefixSubsystemWhat it usually meansTypical clear
PSProgram & operationG-code syntax, illegal command, missing option, bad offset call — the program, not the machineFix the program, RESET
BGBackground editSame alarm numbers as PS, but raised while background editingRESET (in the background editor)
SRCommunicationSame alarm numbers as PS, raised by RS-232 / I/O device transfer (parity, overrun, framing)Fix cabling/settings, RESET
SWParameter writeOnly one member: SW0100, PWE is onSet PWE = 0, RESET
SVServo axesDrives, motors, encoders (Pulsecoders), amplifier power supply, following errorRESET for some; many need power-cycle after fixing the cause
OTOvertravel / interferenceSoft stroke limits, hard limit switches, interference checksJog off the limit, RESET
IOMemory fileCNC file system / part-program storage errors (checksum, access)Often needs memory maintenance or service
PWPower-off requiredA parameter or configuration change (or safety check) that only takes effect at bootPower-cycle only — RESET will not clear
SPSpindleSerial spindle amp, position coder, rigid tap following error, spindle communicationRESET for some (e.g. SP0754); comm/amp faults need power-cycle
OHOverheatCabinet, PCB fan, spindle overheatCool down / fix fan, RESET
DSOther (data/settings)Grab bag: absolute encoder (APC) battery and reference loss, external data I/OVaries; APC battery alarms need battery + reference return
IEMalfunction preventionThe safety cross-check caught an overtravel or accel/decel command errorRESET; PW0006 variant needs power-cycle
MCMacro alarmThe part program raised it itself via #3000 — the message is whatever the macro programmer wroteFix whatever condition the macro is checking, RESET
ER / WNPMCLadder program errors, I/O Link assignment faults (shown on the PMC alarm screen)Fix ladder/hardware; usually power-cycle

Gotcha #1: PS, BG, and SR share the same alarm numbers — the manual lists them once. PS0085 and SR0085 are the same "overrun error"; the prefix just tells you whether it fired in the foreground program, background edit, or a serial transfer.

Gotcha #2: Inside SV alarm messages, "PS" means Power Supply module (e.g. SV0437 PS OVERCURRENT), not a program alarm. If an SV alarm message starts with "PS", you are chasing the common power supply in the drive cabinet, not your G-code.

Gotcha #3: The number after MC depends on bit 1 (MCA) of parameter 6008. With MCA = 0, #3000 = 1 (ALARM MESSAGE) displays as MC3001 — the value is added to 3000, and #3000 only accepts 0–200. With MCA = 1 the value displays as-is (MC0001) and the range grows to 0–4095. So MC alarms from different machine tool builders can sit in completely different number ranges for the same macro package.

Alarms You'll Actually Hit

The full appendix runs about eighty pages. These are the ones that show up on real shop floors, with the first thing worth checking. All verified against the 30i/31i/32i-B Plus maintenance manual (B-64725EN/01, Appendix A).

AlarmMessageCauseFirst check
Program & operation (PS)
PS0010IMPROPER G-CODEG code the control doesn't have (often a missing option)Typo first, then option list
PS0011FEED ZERO (COMMAND)Cutting move with F0 or no active feedrate; also undersized F in rigid tappingF word in the block and modal F state
PS0020OVER TOLERANCE OF RADIUSArc start/end radii disagree beyond parameter 3410I/J/K or R values from the CAM post
PS0060 / PS0078SEQUENCE NUMBER NOT FOUNDGOTO / M99 P__ / search target N number doesn't existThe N number in the macro or restart search
PS0090REFERENCE RETURN INCOMPLETERef return started too close to home or too slowJog away from home, retry the reference return
PS0092ZERO RETURN CHECK (G27) ERRORG27 check axis didn't land on zeroWork offsets / program path back to home
PS0224ZERO RETURN NOT FINISHEDCycle start attempted before reference return (ZRNx = 0)Home the machine
PS5010END OF RECORDEOR (%) hit mid-block — classic truncated drip-feed or bad transferRe-send the program; check the file tail
Custom macro math & syntax (PS)
PS0110 / PS0111OVERFLOW :INTEGER / :FLOATINGAn integer (or floating-point value) went out of range during macro arithmeticThe calculation feeding the variable — usually a runaway loop counter or bad argument
PS0112ZERO DIVIDEA custom macro divided by zeroThe divisor variable — often an argument the caller never passed (#0 vacant)
PS0114 / PS0115ILLEGAL EXPRESSION FORMAT / VARIABLE NO. OUT OF RANGEMalformed macro expression, or a variable number that doesn't exist on this control/option setBracket balance and variable numbers vs. installed options (there is no PS0113 — the list skips it)
Communication (SR) & parameter write (SW)
SR0085OVERRUN ERROROverrun/parity/framing on reader-punch channel 1 — baud/handshake mismatchBaud rate + stop bits both ends (parameters 0101/0103)
SW0100PARAMETER ENABLE SWITCH ONPWE = 1 — parameter writing is enabled, control reminds you constantlySet PWE back to 0, RESET. Not a fault.
Servo (SV)
SV0401IMPROPER V_READY OFFVelocity ready dropped while position ready was on — amp MCC dropped out, E-stop chain, or an alarm on another axis of a multi-axis ampAmp STATUS LED, E-stop / MCC chain; look for a buddy alarm (SV0007)
SV0404IMPROPER V_READY ONVelocity ready on when it should be off — usually amp or axis-assignment faultFSSB/axis settings, amplifier
SV0410EXCESS ERROR (STOP)Following error at standstill exceeded parameter 1829 — axis being pushed, brake, or tuningMechanical load on the axis; DGN 300
SV0411EXCESS ERROR (MOVING)Following error in motion exceeded the limit — overload, lube, crash, or undersized rapid on a cold machineWay lube / binding; DGN 300 while jogging
SV0417ILL DGTL SERVO PARAMETERA digital servo parameter is out of rangeDGN 203 bit 4, then DGN 352 for the culprit
SV0430SV MOTOR OVERHEATServo motor thermal tripDuty cycle, motor temp (DGN 308), fan/covers
SV0436SOFTTHERMAL (OVC)Software thermal — sustained overcurrent, axis working too hardMechanical drag, cutting load, accel/decel settings
SV0438SV ABNORMAL CURRENTMotor overcurrent — shorted cable/motor phase or ampMegger motor + power cable
SV0453SPC SOFT DISCONNECT ALARMBuilt-in Pulsecoder soft disconnectPower off, reseat the encoder cable; recurs → replace Pulsecoder
SV0301–SV0306APC ALARM (comm/timing/parity...)Absolute encoder data garbled — encoder, cable, or interface moduleEncoder cable and connectors first
Overtravel (OT)
OT0500 / OT0501+/− OVERTRAVEL (SOFT 1)Axis commanded past stored stroke check 1Work offset vs. machine envelope; jog back, RESET
OT0506 / OT0507+/− OVERTRAVEL (HARD)Physical limit switch tripped — machine is at the stroke endJog off the switch (may need OT-release mode), then RESET
Power-off required (PW)
PW0000POWER MUST BE OFFA parameter flagged "power must be off" was changed — expected after setup workFull power-cycle; RESET will never clear it
Spindle (SP)
SP1220NO SPINDLE AMP.Serial spindle amp not connected or its fiber/cable is brokenFiber optic / cable to the spindle amp, amp power
SP0740 / SP0741RIGID TAP ALARM: EXCESS ERRORSpindle following error blew the limit during rigid tapping (stopped / moving)Spindle-axis gain match, orient, tap condition
SP1225–SP1228CRC / FRAMING / RECEIVING / COMM ERRORCNC-to-spindle-amp serial communication faultsFiber optic cable, connectors, noise/grounding
SP0754ABNORMAL TORQUEAbnormal load detected on the spindle motorCrash/stall evidence; clears with RESET
Overheat (OH) & data/settings (DS)
OH0700LOCKER OVERHEATCNC cabinet over temperatureCabinet fans, filters, ambient temp, door left open with AC off
OH0701FAN MOTOR STOPPCB cooling fan failedReplace the fan unit — don't run without it
DS0300APC ALARM: NEED REF RETURNAbsolute encoder lost its zero reference — often follows a battery alarmRe-establish the reference position
DS0306 / DS0307APC BATTERY VOLTAGE 0 / LOWAbsolute encoder backup battery dead (0) or dying (LOW)Replace batteries with the control powered on or positions are lost

Old vs. New Numbering: Reading a Mixed Fleet

The two-letter prefixes only exist on the 30i/31i/32i generation and the modern 0i controls that share its software. Everything before — 16i/18i/21i, 0i-A/B, 15, 0 — used a single shared number space where the number range itself was the category. The 16i/18i-B operator's manual (B-63534EN/02) documents the bands:

Old number bandCategoryModern prefix
000–255 and 5000+P/S alarm (program errors)PS (mostly; see exceptions below)
300–349Absolute pulse coder (APC)Split: SV (comm faults) and DS (battery / reference loss)
350–399Serial pulse coder (SPC)SV
400–499ServoSV
500–599OvertravelOT
700–739OverheatOH
740–748Rigid tappingSP
749–799SpindleSP
900–999SystemSystem alarm screen (SYS_ALARM)

A P/S number raised during background editing displayed as "BP/S" with the same number — the ancestor of today's BG prefix. The good news for shops running both generations: in most cases the old number survives as the digits after the prefix. The classics map like this:

Old (16i/18i-B and earlier)Meaning30i / modern 0i
P/S 000 PLEASE TURN OFF POWERPower-off-required parameter changedPW0000 POWER MUST BE OFF
P/S 100 PARAMETER WRITE ENABLEPWE is onSW0100 PARAMETER ENABLE SWITCH ON
P/S 101 PLEASE CLEAR MEMORYPower lost mid-edit, program memory corruptNo direct successor in the 30i-B Plus alarm list
P/S 010 IMPROPER G-CODEUnknown / un-optioned G codePS0010 (same number)
P/S 5010 END OF RECORDEOR mid-block, truncated transferPS5010 (same number)
3000–3200 (no prefix)Macro alarm from #3000 (displayed as 3000 + n)MC3001-style (MCA = 0) or MC0001-style (MCA = 1)
401 SERVO ALARM: VRDY OFFAmp ready signal droppedSV0401
410 / 411 EXCESS ERRORFollowing error at stop / in motionSV0410 / SV0411
500 / 501 OVER TRAVEL ±Stored stroke limit 1OT0500 / OT0501
506 / 507 OVER TRAVEL ±Hardware limit switchOT0506 / OT0507
700 / 701 OVERHEATControl unit / fan motorOH0700 / OH0701
740 / 741 RIGID TAP EXCESS ERRORSpindle following error tapping (stop / move)SP0740 / SP0741 — note the move to the spindle prefix
300 APC: origin return neededAbsolute encoder lost referenceDS0300
306 / 307 APC battery 0 / lowAbsolute encoder battery dead / dyingDS0306 / DS0307 — battery alarms moved from the 3xx band to DS
301–304 APC comm/timing/framing/parityAbsolute encoder data garbledSV0301–SV0304 — comm faults moved to SV

Macro alarms are the biggest translation trap. On a 16i, #3000 = 1 (TOOL NOT FOUND) puts a plain 3001 TOOL NOT FOUND on the screen — operators learn it as "P/S 3001" (n limited to 0–200, message to 26 characters). On a 30i the same line displays MC3001 TOOL NOT FOUND — and if the builder set MCA (bit 1 of parameter 6008) to 1, the same probe or tool-change package alarms as MC0001 instead. Same macro, three different numbers across a mixed fleet.

The Diagnostic (DGN) Screen

The diagnosis screen is the control's live internals view — read-only, so you can't break anything by looking. Press the SYSTEM function key, then soft key [DIAGNOSIS], and key in a diagnosis number followed by [NO.SRH]. These are the numbers worth knowing cold:

DGNNameUse it when
000CNC internal state 1Machine won't move on a command. Shows a 1 next to the reason: in-position check running, feedrate override 0%, jog override 0%, interlock/start lock on, waiting for spindle speed arrival, waiting for the one-rotation signal (threading), waiting on the position coder (feed-per-rev), feed stop
002Dwell executionDisplays 1 while a G04 dwell runs — the "is it stuck or dwelling?" check
200 / 201Servo alarm detail bitsAn SV alarm is up and you need the flavor: DGN 200 bits flag overload (OVL), low voltage (LV), overcurrent (OVC), abnormal current (HCA), overvoltage (HVA), discharge (DCA), disconnection (FBA), overflow (OFA). DGN 201 ALD/EXP bits split overload into motor-vs-amp overheat and disconnection into built-in vs. separate Pulsecoder, hard vs. soft
300Position error (per axis)Following-error in detection units — the single most useful servo number. Watch it while jogging: it should sit near the predicted value and drop to ~0 at rest
301Machine positionDistance from reference position, per axis, in detection units
308Servo motor temperatureMotor temp in °C — sanity check before/after SV0430 overheat trips

Expected steady-state position error while feeding is predictable — if DGN 300 reads wildly above this while cutting, the axis is fighting something mechanical or the loop gain is off:

position error  =        feedrate (mm/min)          x      1
------------------------------       ----------------
60 x servo loop gain (1/sec)        detection unit

Rule of thumb: at loop gain 30 (parameter 1825 = 3000) and 1 μm detection, 1000 mm/min shows roughly 555 counts. In-position is declared when DGN 300 falls below the in-position width in parameter 1826.

Reading SV Alarms: What Servo Alarms Usually Mean

Most SV alarms sort into four buckets. Bucket first, then the specific number:

BucketTypical alarmsWhere to look
Feedback / encoderSV0301–0307 (APC), SV0364–0369 (built-in Pulsecoder), SV0380 (separate detector), SV0453Encoder cables and connectors first — they fail far more often than the encoders. Coolant intrusion in connectors is the classic. Then the Pulsecoder itself
Overload / overcurrentSV0410/0411 (excess error), SV0430, SV0436 (OVC), SV0438Mechanical: lube, binding, chip packing, crash damage, brake not releasing. DGN 200/201 splits motor vs. amp; DGN 300 shows the axis struggling in real time
Power / amplifierSV0401/0404 (V-ready), SV-alarms with "PS" messages (SV0431–0433, 0437, 0439), SV0010–0018Drive cabinet: E-stop and MCC chain, amp STATUS LED code, incoming power quality, regen resistor. "PS" here = the common power supply module
Setup / parameterSV0417, SV0006, SV0032/0033Almost always after servo parameter or FSSB changes — diff against your last parameter backup

Deep servo tuning (gain, filters, HRV) is its own discipline with its own screens (SERVO GUIDE / the SV setting pages) — beyond alarm-clearing scope. If a machine needs its loop retuned to stop alarming, something mechanical usually changed first.

Practical Triage: Before You Call Service

The control already recorded what happened. Pull it before anything gets reset or power-cycled away:

StepActionWhy
1Photograph the active alarm screen (MESSAGE key)Full prefix + number + message + axis/path; phones don't typo
2Open the alarm history: MESSAGE key → soft key [HISTRY]Chronological list with date, time, alarm type, number, and message — shows the first alarm in a cascade, which is the real one (e.g. SV0007 fingering another axis behind an SV0401)
3Note what the machine was doingProgram name/block, cold start vs. mid-shift, after a crash, after parameter work, after a battery change
4Capture the relevant DGN valuesDGN 300 for excess-error alarms, DGN 200/201 for servo detail, DGN 000 for won't-move complaints
5Check the amp STATUS LEDs in the cabinetServo/spindle amps display their own alarm character codes — service will ask
6Only then RESET or power-cycleOne RESET is diagnostic (does it clear? does it come right back?). Repeated blind resets just wear out the button

History caveats: the [ALL CLEAR] soft key (only shown when bit 7 (EKE) of parameter 3195 = 1) wipes all history types at once — alarms, operator messages, operations, and I/O signals live in one shared storage area, and there is no per-type delete. Don't clear it while troubleshooting. Because that storage is shared, a chatty machine can push old alarms out; bit 2 (SAH) of parameter 11354 reserves a dedicated area that always keeps the last 50 alarms. To get external/macro alarm messages (#3000) recorded with their text, set bit 3 (EAH) of parameter 3112 to 1 and bit 7 (HAL) of parameter 3196 to 0. On the 16i/18i generation the equivalent history lives under the same MESSAGE key but only holds the last 25 alarms.

See also: Fanuc Parameters for PWE and the parameter number map, and Fanuc System Variables for macro alarm generation via #3000.

References

  • Fanuc, Series 30i/31i/32i-MODEL B Plus Maintenance Manual, B-64725EN/01, FANUC Corporation. (Appendix A alarm list; Section 1.3 diagnosis function; Section 1.10.6 alarm history.)
  • Fanuc, Series 30i/31i/32i-MODEL B Plus Operator’s Manual (Common to Lathe System/Machining Center System), B-64724EN/01, FANUC Corporation. (Chapter 7 alarm and self-diagnosis functions; Section 16.2 macro alarm system variable #3000.)
  • Fanuc, Series 16i/18i/160i/180i-MODEL B Operator’s Manual (Machining Center), B-63534EN/02, GE Fanuc. (Section 7.1 error-code bands; Appendix G alarm list; Section 15.2 macro alarms.)
  • Fanuc, Series 16i/18i/21i-MODEL B Maintenance Manual, B-63525EN/02, GE Fanuc. (Diagnostic page and position-error formula.)

Have a question or want to contribute?

Contact us with corrections, additions, or topics you'd like covered.

Get in Touch