The MicroLogix 1400 does not use the Type+Code+Sub-code fault system of the ControlLogix and CompactLogix platforms — it uses a different error architecture with a two-register fault system stored in Integer File S (System File), specifically S:1 (Major Fault Word) and S:6 through S:8 (error codes and additional data). Every technician who works on both MicroLogix 1400 and ControlLogix systems needs to know this distinction, because interpreting S:1 bits with ControlLogix logic leads to completely wrong diagnostics. This Allen-Bradley MicroLogix 1400 error codes complete list and fix guide covers the complete MicroLogix 1400 error reference with all S:1 fault bits, S:6 error code table, and the RSLogix 500 diagnostic path for each fault type.
- MicroLogix 1400 S-File Error Architecture
- S:1 Major Fault Word — Bit-by-Bit Reference
- S:6 Error Code Reference — Complete List
- How to Read Error Codes in RSLogix 500
- Most Common MicroLogix 1400 Fault Codes with Fix
- Minor Faults vs Major Faults on MicroLogix 1400
- Clearing Faults on MicroLogix 1400 — Two Methods
- Technical Validation
- Frequently Asked Questions
MicroLogix 1400 S-File Error Architecture
The MicroLogix 1400 (catalog prefix 1766) uses the classic Allen-Bradley SLC 500 / MicroLogix Integer file system. All fault information is stored in the System Integer File (S File), accessible in RSLogix 500 as data file S2:x (where S2 is the System File designator):
Key S-File registers for fault diagnosis:
| Register | Description | Access |
|---|---|---|
| S:1 | Major Fault Word — bits indicate fault type | RSLogix 500 → Data Monitor → S File |
| S:5 | Minor Fault Word — lower-priority fault indicators | RSLogix 500 → S File |
| S:6 | Fault code — specific error number | RSLogix 500 → S File |
| S:7 | Fault address word 1 — address of instruction that caused fault | RSLogix 500 → S File |
| S:8 | Fault address word 2 — additional address data | RSLogix 500 → S File |
The complete fault picture requires reading S:1 (to identify which fault category is active), S:6 (to get the specific error code), and S:7/S:8 (to identify the program location of the fault). Without reading all three, the fault is incompletely characterized.
S:1 Major Fault Word — Bit-by-Bit Reference
S:1 is a 16-bit integer. Each bit represents a specific fault category:
| S:1 Bit | Fault Type | Description | Controller Behavior |
|---|---|---|---|
| 0 | Reserved | Not used | — |
| 1 | Program Checksum Fault | Program memory corruption | Controller FAULT |
| 2 | I/O Fault | I/O module error | Controller FAULT |
| 3 | Program Fault | Illegal instruction or illegal data access | Controller FAULT |
| 4 | Watchdog Fault | Scan time exceeded (S:11 value) | Controller FAULT |
| 5 | Power Up / Power Loss Fault | Power loss detected during scan | Controller FAULT |
| 6 | Memory Module Access Fault | Memory module read/write error | Controller FAULT |
| 7 | Communication Fault | Serial/Ethernet communication error | Controller FAULT or WARNING depending on config |
| 8 | Arithmetic Fault | Division by zero, overflow | Controller FAULT if configured to halt |
| 9 | Instruction Fault | Unsupported instruction for controller type | Controller FAULT |
| 10 | Address Fault | Indirect address out of range | Controller FAULT |
| 11 | DH485/SLC Communication Fault | DH-485 or SLC Link network fault | WARNING (may not halt) |
| 12 | I/O Slot Configuration Fault | Configured I/O doesn’t match detected hardware | Controller FAULT |
| 13 | Battery Low | Battery below threshold | WARNING only |
| 14 | User Minor Fault | Programmatic S:5/14 bit set by program | Minor fault latch |
| 15 | User Major Fault | Programmatic S:1/15 bit set by program | Controller FAULT if configured |
Reading S:1: when the MicroLogix 1400 is in FAULT, open RSLogix 500, go to the S file data monitor, and read S:1 as a hex or binary value. Any non-zero bit identifies the active fault category.
MicroLogix 1400 Fault Code Quick Fix Reference
| Fault Type | S:1 Bit | S:6 Code | Cause | Fix |
|---|---|---|---|---|
| Watchdog timeout | 4 | 0001h | Scan time exceeded S:11 × 10 ms watchdog | Increase watchdog (S:11 value) or optimize program to reduce scan time; check for runaway loops |
| I/O module missing or failed | 2 | 0001h | Module absent or hardware failure | Re-seat module; check power budget; verify module catalog matches I/O configuration |
| Element number beyond maximum | 3 | 0002h | Array index exceeds file size | Check indirect address in the instruction identified by S:7 rung location; validate loop counter limits |
| Division by zero | 8 | 0002h | DIV or CPT instruction with zero divisor | Add pre-check: IF N7:divisor <> 0 THEN execute DIV |
| Battery low | 13 | — | Battery below threshold | Replace battery; check battery jumper setting in RSLogix 500 Channel 0 config (warning only — does not halt controller) |
S:6 Error Code Reference — Complete List
S:6 contains a numeric code that identifies the specific fault within the category flagged by S:1:
Watchdog and Scan Faults (S:1/4):
| S:6 Code | Description |
|---|---|
| 0001h | Scan time exceeded scan cycle watchdog (S:11 in 10ms units) |
Program Faults (S:1/3):
| S:6 Code | Description | Common Cause |
|---|---|---|
| 0001h | File number beyond maximum | Instruction references a file that doesn’t exist |
| 0002h | Element number beyond maximum | Array index exceeds file size |
| 0003h | Subroutine nesting level exceeded | Too many nested JSR/RET levels (max 7) |
| 0004h | No return from subroutine | JSR called but no corresponding RET found |
| 0005h | Invalid file type | Instruction applied to wrong data file type |
| 0006h | FIFO/LIFO stack full or empty | FIFO/LIFO queue overflow or underflow |
I/O Faults (S:1/2):
| S:6 Code | Description | Common Cause |
|---|---|---|
| 0001h | I/O module missing or failed | Module absent or hardware failure |
| 0002h | Duplicate node address | Two devices on DH-485 with same address |
| 0004h | Output energy loss | 24VDC output supply failure |
Arithmetic Faults (S:1/8):
| S:6 Code | Description | Common Cause |
|---|---|---|
| 0001h | Integer overflow | Result exceeds 32767 or -32768 |
| 0002h | Division by zero | DIV or CPT instruction with zero divisor |
| 0003h | Floating point overflow | Result exceeds floating point range |
| 0004h | Negative square root | SQR instruction with negative argument |
| 0005h | SQRT or LOG undefined | LOG of zero or negative number |
How to Read Error Codes in RSLogix 500
RSLogix 500 → Online (connect to MicroLogix 1400) →
Data Monitor →
Select: Data File: S (System) →
View S:1 (Major Fault Word) as Binary to see which bits are set
View S:6 (Error Code) as Hex — compare to tables above
View S:7 and S:8 (Fault Address) — identifies file number and element of the instruction that faulted
Interpreting S:7 and S:8: S:7 contains the file number of the instruction that caused the fault (in the low byte) and the ladder rung number (in the high byte). S:8 provides additional position data within the rung. Together, S:6 + S:7 + S:8 identify the exact instruction that caused the fault.
Example: S:1 = 0008h (bit 3 set = program fault), S:6 = 0002h (element number beyond maximum), S:7 = 0305h (file 3, rung 5) → fault is in data file 3 (typically B3 or an Integer file), rung 5, where an array access instruction is referencing an element number beyond the file size.
For comparison with the ControlLogix Type+Code+Sub-code fault system, see Allen-Bradley Controllogix Fault Codes Complete List Studio 5000. For how the SLC 500 S:1 system compares to the MicroLogix implementation, see Allen-Bradley Slc 500 Error Codes Fault File S:1 Diagnosis Rslogix 500.
Most Common MicroLogix 1400 Fault Codes with Fix
| Fault Pattern | S:1 Bits | S:6 Code | Fix |
|---|---|---|---|
| Scan time exceeded | Bit 4 | 0001h | Increase watchdog (S:11 × 10ms) or reduce program size |
| Array index out of bounds | Bit 3 | 0002h | Check indirect address in instruction using S:7 for rung location |
| Division by zero | Bit 8 | 0002h | Add pre-check: IF N7:divisor <> 0 THEN DIV … |
| I/O module missing | Bit 2 | 0001h | Check module seating; verify module type matches I/O configuration |
| Memory module access fault | Bit 6 | 0001h | Re-seat the program memory module; replace if persistent |
| Floating point overflow in compute | Bit 8 | 0003h | Check for unbounded floating point accumulation in the CPT block at S:7 address |
Minor Faults vs Major Faults on MicroLogix 1400
The MicroLogix 1400 distinguishes major faults (controller stops scanning, FAULT LED activates) from minor faults (controller continues scanning, minor fault latch bit set in S:5):
Major faults (indicated by S:1): halt the controller and require the fault to be cleared before RUN can resume.
Minor faults (indicated by S:5): logged in S:5 bit positions, controller continues running. The program can read S:5 bits to respond to minor faults programmatically.
Configuring fault response: some fault types can be configured as major or minor through the RSLogix 500 Controller Properties dialog (I/O → Processor Type → General tab → Fault handling). For example, arithmetic overflow can be configured to generate either a major fault (controller FAULT) or a minor fault (S:5 bit set, controller continues) depending on the application’s safety requirements.
Clearing Faults on MicroLogix 1400 — Two Methods
Method 1 — RSLogix 500 Software:
RSLogix 500 → Online (connected to MicroLogix 1400 in FAULT) →
Controller Properties → General →
Click [Clear Faults] button
Controller transitions to STOP
Set controller to RUN: Controller → Run
Method 2 — Hardware button (Toggle RUN/STOP): On the MicroLogix 1400 front panel: locate the RUN/STOP toggle switch (a small recessed switch). Toggle from RUN to STOP → back to RUN. The fault is cleared, and the controller restarts. This method requires physical access to the controller but does not require a connected programming workstation.
After clearing: if the fault condition was not resolved (the program bug or hardware issue is still present), the controller will fault again in the same location. Verify S:1 and S:6 values return to zero after clearing. The fault history is not preserved across a clear — record S:1, S:6, S:7, S:8 values before clearing. In RSLogix 500, use the Data Monitor view to display S:1, S:5, S:6, S:7, and S:8 simultaneously as a single table, making it practical to photograph or transcribe all five diagnostic registers in one step before executing the clear operation.
Fault Routine (advanced fault handling without stopping production): the MicroLogix 1400 supports a configurable Fault Routine — a dedicated LAD file executed automatically when a major fault is detected. If the Fault Routine clears the fault condition before it completes, the controller continues running without entering FAULT state. Configure in RSLogix 500: Controller Properties → Advanced → Fault Routine → select the LAD file number. Within the fault routine, use XIC/XIO rungs to test specific S:1 bits and selectively clear recoverable faults. For example, arithmetic overflow faults (S:1/8) can be auto-cleared if the application can tolerate and recover from that condition, while program checksum faults (S:1/1) should never be auto-cleared and should always halt the controller.
For the complete 8-step diagnostic framework that provides context for MicroLogix fault diagnosis alongside ControlLogix fault diagnosis, see Plc Diagnostic Troubleshooting Systematic 8-Step Guide Industrial.
Technical Validation
MicroLogix 1400 error code definitions and fault code classification from Rockwell Automation Support Knowledgebase MicroLogix 1400 Error Code List. MicroLogix 1400 S-file register reference and fault data file structure from Allen-Bradley MicroLogix 1400 User Manual (ManualsLib). Industrial PLC maintenance and legacy controller training from Moraine Park Technical College PLC manufacturing boot camps.
Frequently Asked Questions
Can the MicroLogix 1400 be programmed in Studio 5000, or does it require RSLogix 500?
The MicroLogix 1400 requires RSLogix 500 — it is not compatible with Studio 5000 (Logix Designer). Studio 5000 is exclusively for the Logix5000 platform (ControlLogix, CompactLogix, GuardLogix). The MicroLogix 1400 uses the SLC 500 instruction set, which RSLogix 500 supports. For technicians working with both platforms, RSLogix 500 (for MicroLogix and SLC 500) and Studio 5000 (for ControlLogix and CompactLogix) must be installed separately.
The MicroLogix 1400 FAULT LED is on but RSLogix 500 shows S:1 = 0 (all zeros). How is this possible?
If the FAULT LED is active but S:1 reads 0, the fault condition cleared during the connection attempt and the fault latch was reset before the value was read, OR the visible FAULT LED is from a previous power cycle that was not yet cleared. The most diagnostic approach: clear the fault, set controller to RUN, and monitor S:1 in RSLogix 500 real-time. If the FAULT LED re-activates, S:1 will be non-zero at that moment. Also check S:5 (Minor Fault Word) — some LED indicators on MicroLogix 1400 respond to both major and minor fault conditions.
How does the MicroLogix 1400’s watchdog compare to the ControlLogix watchdog? Is the S:11 register the same concept as the ControlLogix task watchdog?
S:11 on the MicroLogix 1400 is the scan cycle watchdog in units of 10 ms — S:11 = 25 means a 250 ms watchdog. This is conceptually the same as the ControlLogix task watchdog: if the scan cycle takes longer than S:11 × 10 ms, a watchdog fault is generated (S:1 bit 4 set, S:6 = 0001h). The implementation differs: the ControlLogix watchdog operates per task (up to 32 tasks with individual watchdog settings), while the MicroLogix 1400 has a single global watchdog for its single continuous scan task. The MicroLogix 1400 does not support periodic tasks, event tasks, or multiple task priorities — it executes OB1-equivalent (single continuous scan) only.
After a scan time exceeded fault on MicroLogix 1400, the controller was cleared and restarted. It ran for 2 hours then faulted again with the same code. How do you find which instruction is causing intermittent scan time overruns?
For intermittent scan time overruns on MicroLogix 1400, the approach is programmatic monitoring: use the SCAN instruction (an undocumented but functional instruction in RSLogix 500) to read the scan time into a timer accumulator each cycle, then compare against a threshold. When the scan time approaches the watchdog limit (S:11 × 10 ms), set a latch bit and capture the current rung execution position. Alternatively, add a timestamp comparison at the beginning and end of each major subroutine call (using READ REAL TIME CLOCK SFC) to measure which subroutine is consuming excessive time. The most common cause of intermittent scan time overruns on MicroLogix 1400 is a variable-length loop (FOR or STL loop) where the loop count variable is written by external data and occasionally receives a very large value.