Need Custom Pricing? Request a Quote!
Request a free quote for bulk orders or repairs—response in 24 hours. Or get tailored advice and a quote for your automation needs.
Get Your Free Quote!
When your ControlLogix controller trips a Major Fault, the program stops executing, the outputs go to their configured fault state, and your machine or process comes to a halt. You need answers fast — what caused it, what does the fault code mean, and how do you clear it and get running again?
This quick-reference guide covers the most common ControlLogix Major Fault types and codes, their root causes, and the steps to diagnose and resolve each one.
ControlLogix organizes faults into three categories:
Every Major Fault has two identifiers:
You can read these in Studio 5000 under Controller Properties → Major Faults, or programmatically via the GSV (Get System Value) instruction using the FAULTLOG or MAJORFAULTRECORD objects.
| Type | Name | Description | Severity |
|---|---|---|---|
| 1 | Power-Up | Controller powered up with no program or after firmware update | Low — usually clears by downloading program |
| 3 | I/O | Critical I/O module error or loss of communication | Medium — check module and connections |
| 4 | Program Execution | Errors during ladder/FB/ST execution (divide by zero, array out of bounds, etc.) | High — program bug, must fix logic |
| 5 | Watchdog | Task execution exceeded its configured watchdog timer | High — task taking too long |
| 6 | Stack | Unrecoverable error related to the controller's internal stack | Critical — possible hardware issue |
| 7 | Communications | Error in controller-to-controller communications | Medium — network or MSG instruction error |
| 8 | Diagnostics | Battery failure, memory errors, or firmware corruption | Critical — may need hardware replacement |
| 11 | Motion | Fatal motion group or axis error | High — check servo/drive configuration |
| 14 | Safety | Safety task fault (GuardLogix only) | Critical — safety integrity compromised |
| Code | Cause | Fix |
|---|---|---|
| 1 | Power-up after power loss; no program in memory | Download program from Studio 5000 or restore from SD/CF card; switch to RUN |
| 60 | Firmware update completed; controller needs to be put into RUN | Verify firmware version, then switch to RUN mode |
| 61 | Non-recoverable controller fault detected at power-up | Cycle power. If repeats, replace controller |
| Code | Cause | Fix |
|---|---|---|
| 16 | I/O module not responding (connection lost) | Check module seating, backplane connection, and power supply. Verify the module is configured in the I/O tree. |
| 20 | I/O module reported a fatal fault | Check the specific module's channel-level fault data. Replace module if hardware failure is confirmed. |
| 23 | I/O connection failed during program execution | Check EtherNet/IP network health, cable connections, and switch status. Reduce network traffic if needed. |
Pro tip: For intermittent Type 3 faults, check the backplane power supply. A marginal 1756-PA72 or 1756-PB72 can cause random I/O drops that look like module failures. Try swapping the power supply first.
Type 4 faults are the ones you will encounter most often. They indicate a bug or unexpected condition in your program logic.
| Code | Cause | Fix |
|---|---|---|
| 4 | Array subscript out of range | Check all indirect addressing (array[variable]). Ensure the index variable cannot exceed the array dimension. |
| 20 | Stack overflow — too many nested JSR (Jump to Subroutine) calls | Reduce nesting depth. Refactor deeply nested JSR chains. Check for recursive JSR calls. |
| 21 | Return (RET) without matching JSR | Verify every RET instruction has a corresponding JSR. Check for conditional logic that could bypass the JSR but still reach RET. |
| 31 | Divide by zero (DIV, MOD, or CPT instruction) | Add a pre-check: if divisor = 0, branch around the divide instruction. |
| 34 | Timer or counter preset value negative or overflowed | Verify .PRE and .ACC values are within valid ranges. Check for uninitialized tags. |
| 42 | User-defined fault (via programmatic Major Fault instruction) | Search your program for GSV/SSV or the "Major Fault" instruction to find where this is triggered intentionally. |
| 82 | Instruction execution error (invalid operand) | Check the operand types and sizes. This often happens when a string instruction gets a null or oversized string. |
| 84 | FOR/NEXT loop exceeded maximum iteration count | Review the FOR instruction's parameters. Ensure the loop counter and limit are set correctly. |
| Code | Cause | Fix |
|---|---|---|
| 1 | Task watchdog timer expired — task execution exceeded the configured time |
|
Quick check: In Studio 5000, go to Controller Properties → Tasks. Compare the "Max Scan Time" to the "Watchdog" value. If they are close, you are one heavy scan away from a fault. Increase the watchdog to 2x the max observed scan time as a minimum.
| Code | Cause | Fix |
|---|---|---|
| 1 | Internal stack overflow — unrecoverable | Cycle power. If fault repeats, it may indicate a firmware bug or hardware failure. Update firmware to latest version. If the problem persists, replace the controller. |
| Code | Cause | Fix |
|---|---|---|
| 1 | Non-volatile memory (NVS) fault — memory corruption or write failure | Re-download the program. If fault persists, replace the SD/CF card and retry. If the controller memory itself is corrupted, replace the controller. |
| 9 | Battery low or missing | Replace the 1756-BA1 or 1756-BA2 battery. Clear the fault and verify the battery status in Controller Properties. |
Every production ControlLogix program should include a Controller Fault Handler. This is a special program/routine that executes when a Major Fault occurs, giving you a chance to:
Configure it under Controller Properties → General → Controller Fault Handler. Assign it to a dedicated program and routine.
Need a replacement ControlLogix processor or module? Browse our 1756 inventory — we stock CPUs from the 1756-L61 through the latest 1756-L85E, all with a 2-year warranty.
Type 4 (Program Execution) faults are the most common in the field. Among those, Code 4 (array subscript out of range) and Code 31 (divide by zero) account for the majority of cases. Both are preventable with defensive programming — bounds checking on array indices and zero-checking before division operations.
No. A Major Fault is a software-level protection mechanism. It stops the program to prevent unpredictable behavior, but it does not damage the processor or modules. The exception is Type 6 and Type 8 faults, which may indicate actual hardware issues — but the fault itself is not the cause of the damage.
You cannot prevent the controller from entering Faulted mode on a Major Fault. However, you can create a Controller Fault Handler routine that captures the fault and clears it programmatically, allowing the controller to automatically return to RUN mode. This should only be done for faults you fully understand — blindly clearing faults can lead to unsafe conditions.
In Studio 5000, go to Controller Properties → Major Faults tab. This shows the most recent fault. For a complete history, use the GSV instruction to read the FAULTLOG object in your program, or check the controller's diagnostic log via FactoryTalk Diagnostics if available on your network.