Table of Contents
ToggleA PLC fault stops or disrupts the scan cycle and requires a structured response before the controller returns to normal operation.
Understanding whether a fault is major or minor, recoverable or non-recoverable, determines the correct recovery procedure.
This guide covers the PLC fault classification system, the most common fault codes, and the step-by-step recovery procedure used in the field.
A major PLC fault halts program execution immediately and puts the controller into faulted mode. All outputs go to their configured fault state and the machine stops.
A minor fault is logged but does not stop the program. Reading the fault code before touching anything is the most important step in any PLC fault recovery.

PLC Fault Classification: Major, Minor and I/O Faults
Every PLC fault is assigned a type number and a code number. The type identifies the category of fault. The code identifies the specific condition within that category.
These two numbers together tell you exactly what went wrong, where it happened in the program, and whether the controller can recover without a download or hardware intervention.
This log is your first diagnostic resource whenever a PLC fault occurs. Engineers often clear the fault immediately under production pressure — and then lose this information permanently.
Always read and record the full fault log entry (type, code, description, timestamp) before pressing any clear or reset button. A screenshot takes 5 seconds. It can save hours of guesswork when the fault returns.
Major PLC Fault: What Happens and Common Fault Codes
When a major PLC fault occurs, the controller immediately stops the program. The scan cycle does not complete the current rung.
Outputs go to their configured fault state — typically de-energised, or held at the last value depending on module configuration.
The controller status LED changes from green (RUN) to flashing red (FAULTED). The controller will not re-enter RUN mode until an operator or engineer explicitly clears the fault.
Common Major PLC Fault Codes (Allen-Bradley Logix)
| Type | Code | Description | Common Cause |
|---|---|---|---|
| Type 4 | Code 4 | Array subscript out of range | Index variable exceeds the defined array bounds. Common in FOR loops iterating beyond the array size. |
| Type 4 | Code 20 | Divide by zero | A division instruction executes when the divisor tag equals zero. Common in ratio or averaging calculations. |
| Type 4 | Code 31 | Stack overflow | Too many nested subroutine calls. Recursive calls that never return are the most common cause. |
| Type 1 | Code 16 | Watchdog timeout | Program scan took longer than the configured watchdog time. Common during complex calculations or long FOR loop iterations. See the watchdog timer guide for details. |
| Type 6 | Code 1 | Power supply voltage low | DC bus voltage fell below the minimum threshold. Check the power supply and backplane connections. |
| Type 8 | Code 4 | Flash update required | Firmware version mismatch between CPU and installed modules. Update firmware to matching versions. |
| Type 2 | Code 1 | I/O module connection lost | An I/O module stopped communicating during RUN mode. Cable, module failure, or chassis seat issue. See the communication protocols guide. |
Type 4 Code 4 (array subscript out of range) and Type 4 Code 20 (divide by zero) together account for the majority of major program faults on production controllers.
Both are preventable with defensive programming. For array access: verify the index tag cannot exceed the array bound before the instruction executes. For division: add a zero-check rung before any DIV instruction. If the divisor equals zero, the rung branches to a safe default rather than allowing the division to execute.
Minor PLC Fault: Behaviour and Common Codes
A minor fault does not stop the program. It sets a bit in the controller's minor fault status word and logs the event in the fault register. The program continues scanning normally.
The value of a minor fault depends entirely on whether the program contains logic to act on the minor fault status word.
Without fault-handling logic, a minor fault is logged but nothing else happens — no alarm, no indication to the operator, no corrective action.
| Type | Code | Description | Notes |
|---|---|---|---|
| Type 4 | Code 3 | Arithmetic overflow | Result of a calculation exceeded the data type range. The result is clamped; the program continues. |
| Type 4 | Code 7 | Illegal instruction | An instruction that is not valid for the current controller firmware was encountered. |
| Type 2 | Code 1 | I/O connection fault (minor) | I/O module fault that has been configured as minor rather than major. The module's "Major Fault On Controller" option was disabled in module properties. |
| Type 3 | Code 1 | Battery low or missing | The controller's internal battery voltage is low. Program memory is at risk if power is lost. Replace the battery promptly. |
| Type 10 | Code 10 | Output point fuse blown | An output module's electronic fuse has tripped. The specific output point is identified in the code details. |
The minor fault routine runs once when a minor fault occurs, before the next scan cycle begins. Use it to copy the minor fault type and code to a DINT tag pair, trigger an alarm output, and write the event to a log array.
Without this routine, a Type 3 Code 1 battery low fault will sit silently in the fault register for weeks. The battery will eventually die and the program may be lost during the next power interruption. A minor fault routine with a horn or HMI alarm page turns this from a silent risk into an immediate action item.
PLC Fault Recovery: Step-by-Step Procedure
The recovery procedure has seven steps. Never skip Step 1 — reading the fault information before clearing it is the most critical discipline in PLC fault handling.
The fault routine can read the fault type and code using a GSV (Get System Value) instruction targeting the CONTROLLER object's MAJORFAULTBITS and MINORFAULTBITS attributes. It can then write these values to a DINT pair, trigger a horn output, or copy a safe state to all outputs before the controller halts.
If the fault routine successfully executes without faulting itself, it can even clear the fault using a CLF (Clear Fault) instruction and return the controller to RUN mode automatically — making the fault self-recovering for known, safe transient conditions.
PLC Fault Diagnosis Tool
Watch: PLC Fault Finding in RSLogix 5000
PLC Fault Handling Questions
External References
- Logix5000 Controllers Major and Minor Faults Programming Manual | Rockwell Automation (Publication 1756-PM014)
- PLC Troubleshooting Guide: Step-by-Step Fault Finding | Control System Guide (2026)
What We Learn Today
- A major PLC fault halts the scan and puts the controller in faulted mode. A minor fault is logged but does not stop the program. Always read the Type and Code numbers from the fault log before clearing — this information is your root cause starting point.
- Type 4 faults (program execution) are the most common in the field. Code 4 (array out of bounds) and Code 20 (divide by zero) are both prevented by defensive programming: bounds checks and zero-checks before the critical instruction.
- The 7-step recovery procedure is: read, classify, find root cause, confirm process safety, clear, fix, verify. Clearing without fixing guarantees a repeat fault on the next scan cycle.
