Allen-Bradley MicroLogix Fault Codes
The major error codes of Allen-Bradley MicroLogix 1000, 1100, 1200 and 1400 controllers: what each one means, which faults you can clear and which need a fix first, the likely causes, the first checks in order, and how to log it.
How a MicroLogix shows a fault
When a MicroLogix hits a major fault it sets the Major Error Halted bit S:1/13, writes a hex fault code into status word S:6, turns the outputs off and flashes the red FAULT LED, while a steady red FAULT LED with POWER on means a controller hardware fault and RUN, FORCE and FAULT all flashing means a missing or corrupt operating system.
Go online with RSLogix 500 or RSLogix Micro and open the status file to read S:6, or on a MicroLogix 1100 or 1400 open the LCD Main Menu, Advanced Set, Fault Code, where 0000h means no fault, because the LCD does not jump to that screen by itself.
Fix the cause listed for that code first, then clear the fault from the status file display by resetting S:1/13 and clearing S:6, and return the controller to Run, keeping in mind that clearing S:1/13 with the mode switch in RUN restarts the program at once.
A power cycle only clears the fault when Fault Override at Power-Up S:1/8 is set, and the controller faults again if the cause is still there. Recoverable faults can also be cleared by your own user fault routine, the program file named in S:29, while nonrecoverable faults stop the program even after that routine runs and non-user faults skip the routine completely.
Never clear a fault until you know why it happened: Rockwell's recovery steps are identify the code, correct the condition, and only then return to Run and test the system.
Before checking terminals, replacing fuses or working inside the enclosure, shut off power with the main disconnect, since Rockwell says the master control relay is not a substitute for it, and lock it out under your site procedure. Follow lockout/tagout and your site's safe-work procedures, and check the manual for your exact model before you act.
Quick lookup
Every major fault halts the program and turns the outputs off, so the machine stops and in OEE it is an availability loss; the three minor error bits only flag a problem while the program keeps running.
Type a code or a word (power loss, watchdog, memory, expansion I/O) to filter the list. Class is Rockwell's: a recoverable fault can be cleared by your user fault routine, a non-user fault needs the cause fixed and the fault cleared from the software, and a nonrecoverable fault halts the controller even after the fault routine runs.
55 codes
| Code | Class | Name |
|---|---|---|
| 0001h | Non-user | NVRAM error, default program loaded |
| 0002h | Non-user | Unexpected reset |
| 0003h | Non-user | Memory module user program is corrupt |
| 0004h | Non-user | Memory integrity error |
| 0005h | Recoverable | Retentive data lost |
| 0006h | Non-user | Memory module hardware fault |
| 0007h | Non-user | Memory module transfer error |
| 0008h | Non-user | Fatal internal software error |
| 0009h | Non-user | Fatal internal hardware error |
| 000Ah | Non-user | Operating system missing or corrupt |
| 000Bh | Non-user | Base hardware fault |
| 0012h | Non-user | Ladder program error |
| 0015h | Non-user | I/O configuration file error |
| 0016h | Recoverable | Startup protection fault after power loss |
| 0017h | Nonrecoverable | NVRAM and memory module user program mismatch |
| 0018h | Non-user | Memory module user program incompatible with OS |
| 001Ah | Non-user | User program incompatible with OS at power-up |
| 0020h | Recoverable | Minor error at end of scan |
| 0021h | Non-user | Expansion power fail (EPF) |
| 0022h | Nonrecoverable | Watchdog timer expired |
| 0023h | Recoverable | STI error |
| 0028h | Non-user | Invalid or nonexistent user fault routine value |
| 0029h | Recoverable | Instruction indirection outside of data space |
| 002Ah | Non-user | Invalid DNP3 and Recipe or Data Log configuration |
| 002Eh | Recoverable | EII error |
| 0030h | Varies | Subroutine nesting exceeds limit |
| 0031h | Non-user | Unsupported instruction detected |
| 0032h | Recoverable | SQO, SQC or SQL outside of data file space |
| 0033h | Recoverable | BSL, BSR, FFL, FFU, LFL or LFU crossed data file space |
| 0034h | Recoverable | Negative value in timer preset or accumulator |
| 0035h | Nonrecoverable | Illegal instruction in interrupt file |
| 0036h | Recoverable | Invalid PID parameter |
| 0037h | Recoverable | HSC error |
| 0038h | Not classed | Subroutine return (RET) in program file 2 |
| 003Bh | Varies | PTO or PTOX error |
| 003Ch | Varies | PWM or PWMX error |
| 003Fh | Recoverable | COP, CPW or FLL outside of data file space |
| 0042h | Recoverable | Invalid recipe number |
| 0044h | Recoverable | Invalid write to RTC function file |
| 0050h | Non-user | Controller type mismatch |
| 0051h | Non-user | Base type mismatch |
| 0052h | Non-user | Minimum series error |
| 0061h | Nonrecoverable | Embedded analog input fault |
| xx71h | Nonrecoverable | Expansion I/O hardware error (nonrecoverable) |
| xx79h | Nonrecoverable | Expansion I/O module error |
| 0080h | Non-user | Expansion I/O terminator removed |
| xx81h | Non-user | Expansion I/O hardware error (non-user) |
| 0083h | Non-user | Maximum expansion I/O cables exceeded |
| 0085h | Non-user | Maximum expansion I/O modules exceeded |
| xx86h | Non-user | Expansion I/O module baud rate error |
| xx87h | Non-user | I/O configuration mismatch |
| 1F39h | Recoverable | Invalid string length |
| S:5/0 | Minor error | Overflow trap bit (minor error) |
| S:5/2 | Minor error | Control register error (minor error) |
| S:5/11 | Minor error | Processor battery low (minor error) |
Each code: causes and first checks
0001h: NVRAM error, default program loaded
Hits OEE: AvailabilityWhat it means: The controller dropped the user program and loaded its empty default program, so your logic is no longer in the controller.[1][2][3][4][5]
Also on: MicroLogix 1000 (named DEFAULT PROGRAM LOADED), 1100, 1200, 1400 and 1500. Non-user: the fault routine does not run. On a 1400 with Auto Reset enabled, 0001h is what you get when the saved program or data backup is itself corrupt.
Likely causes
- Power was lost in the middle of a program download or a memory module transfer
- The RAM integrity test failed
- The FLASH integrity test failed (MicroLogix 1200)
- On a MicroLogix 1000, the user program was found corrupt at power-up
First checks, in this order
- Download the program again, or transfer it from the memory module
- Check that the battery is connected (1100, 1400 and 1500)
- If the code keeps coming back, contact Rockwell Automation support
0002h: Unexpected reset
Hits OEE: AvailabilityWhat it means: The controller reset itself without being told to. Depending on the model the default program is loaded or the retentive data is lost.[1][2][3][4][5]
Also on: All models. 1100, 1400 and 1500 load the default program; the 1200 loses retentive data; the 1000 keeps a valid program, uses its initial data and sets S:5/8, or loads the default program if the program is invalid. Non-user. A 1400 at firmware 21.007 or later can restart itself from this code if Auto Reset S:36/1 is enabled.
Likely causes
- Electrical noise in the panel
- Internal hardware failure
- Poor grounding or no surge suppression on inductive loads
First checks, in this order
- Check grounding and add surge suppressors per the controller user manual
- Check that the battery is connected (1100, 1400 and 1500)
- Reload the program if the default program was loaded
- Contact Rockwell Automation if it keeps happening
0003h: Memory module user program is corrupt
Hits OEE: AvailabilityWhat it means: The program stored on the plug-in memory module is damaged. It can show up at power-up or when the controller goes to Run.[1][2][3][4]
Also on: 1100, 1200, 1400 and 1500. On a MicroLogix 1000, 0003h means EEPROM MEMORY IS CORRUPT, usually noise during a power cycle; the program may be fine but retentive data is lost, so cycle power again. Non-user on all models.
Likely causes
- Memory error on the memory module
- Corrupt module program found while switching to Run
First checks, in this order
- Write the program to the memory module again
- Replace the memory module if the error comes back
0004h: Memory integrity error
Hits OEE: AvailabilityWhat it means: ROM or RAM inside the controller went bad while it was powered, or a background memory check failed.[1][2][3][4][5]
Also on: All models. On a MicroLogix 1000 it is RUNTIME MEMORY INTEGRITY ERROR, raised in Run or test mode, and it sets S:5/8 or turns into 0003h if the program is invalid. Non-user. A 1400 at firmware 21.007 or later can auto recover from it with Auto Reset S:36/1.
Likely causes
- Memory corruption found by the background integrity check
- Electrical noise or poor grounding
- Internal controller fault
First checks, in this order
- Cycle power
- Download the program again and start the system
- Check grounding and surge suppression
- Contact Rockwell Automation if it persists
0005h: Retentive data lost
Hits OEE: AvailabilityWhat it means: The data that should survive a power cycle, such as timer, counter and integer values, failed its check at power-up.[1][2][3][4]
Also on: MicroLogix 1200 and MicroLogix 1000 only; reserved and unused on the 1100 and 1400. Recoverable. On the 1200 the fault on entering Run is skipped if Fault Override S:1/8 is set.
Likely causes
- Retentive data found invalid at power-up (MicroLogix 1200)
- Data files corrupt (MicroLogix 1000)
First checks, in this order
- Cycle power
- Download the program and re-enter any setpoints or data the machine needs
- Contact Rockwell Automation if it persists
0006h: Memory module hardware fault
Hits OEE: AvailabilityWhat it means: The plug-in memory module failed, or it does not work with the operating system revision in the controller.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Failed memory module
- Memory module not compatible with the controller OS
First checks, in this order
- Upgrade the controller OS with ControlFLASH to one that suits the module
- Replace the memory module
0007h: Memory module transfer error
Hits OEE: AvailabilityWhat it means: Copying the program between the controller and the memory module failed partway through.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Transfer interrupted or failed
- Faulty memory module
First checks, in this order
- Try the transfer again
- Replace the memory module if it fails again
0008h: Fatal internal software error
Hits OEE: AvailabilityWhat it means: The controller firmware ran into a condition it did not expect and stopped.[1][2][3][4][5]
Also on: All models. On a MicroLogix 1000 it means the problem was found after the first 2 seconds of operation. Non-user. A 1400 at firmware 21.007 or later can auto recover with Auto Reset S:36/1.
Likely causes
- Unexpected internal software condition
- Electrical noise or poor grounding
First checks, in this order
- Cycle power
- Download the program again and re-enter any needed data
- Check grounding and surge suppression
- Contact Rockwell Automation if it persists
0009h: Fatal internal hardware error
Hits OEE: AvailabilityWhat it means: The controller found an unexpected problem in its own hardware.[1][2][3][4][5]
Also on: All models. On a MicroLogix 1000 it means the problem was found during the first 2 seconds of power-up. Non-user. A 1400 at firmware 21.007 or later can auto recover with Auto Reset S:36/1.
Likely causes
- Internal hardware fault
- Electrical noise or poor grounding
First checks, in this order
- Cycle power
- Download the program again and re-enter any needed data
- Check grounding and surge suppression
- Contact Rockwell Automation if it persists
000Ah: Operating system missing or corrupt
Hits OEE: AvailabilityWhat it means: The operating system firmware the program needs is missing or damaged.[1][2][3][5][6][7]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Operating system firmware is corrupt
- Operating system firmware is missing
First checks, in this order
- Look for RUN, FORCE and FAULT LEDs all flashing, the missing or corrupt OS pattern
- Load a new OS with ControlFLASH
- Ask Rockwell Automation which OS suits the controller
000Bh: Base hardware fault
Hits OEE: AvailabilityWhat it means: The controller base hardware failed or does not match the installed OS.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Base hardware failure
- Base hardware not compatible with the OS
First checks, in this order
- Upgrade the OS with ControlFLASH
- Replace the controller, or on a 1500 the base unit
- Contact Rockwell Automation
0012h: Ladder program error
Hits OEE: AvailabilityWhat it means: The ladder program in memory failed its integrity check.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Memory integrity problem in the ladder program
- Program not built or loaded with Rockwell programming software
- Electrical noise or poor grounding
First checks, in this order
- Reload the program, or recompile and reload it
- Build and load it with Rockwell software such as RSLogix 500 or RSLogix Micro
- Check grounding and surge suppression
0015h: I/O configuration file error
Hits OEE: AvailabilityWhat it means: The I/O configuration saved inside the user program is not valid.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Invalid I/O configuration in the user program
- Program not created with Rockwell programming software
First checks, in this order
- Recompile and reload the program, then go to Run
- If it repeats, rebuild and load the program with Rockwell software
0016h: Startup protection fault after power loss
Hits OEE: AvailabilityWhat it means: Startup protection S:1/9 made the user fault routine run at power-up before the main program, and the routine ended without clearing S:1/13, so the controller stayed faulted.[1][2][3][4]
Also on: All models; the MicroLogix 1000 names it STARTUP PROTECTION AFTER POWERLOSS, S:1/9 IS SET. Recoverable: the fault routine can clear S:1/13.
Likely causes
- S:1/9 Startup Protection is set and the controller powered up in Run or REM Run
- The user fault routine does not clear S:1/13 before it ends
First checks, in this order
- Decide whether startup protection is wanted; if not, clear S:1/9 and switch back to Run
- If it is wanted, make the fault routine clear S:1/13 only when a restart is safe
- On a MicroLogix 1000, check for lost retentive data when this routine has run
0017h: NVRAM and memory module user program mismatch
Hits OEE: AvailabilityWhat it means: Load Program Compare S:2/9 is on, and the program in the controller does not match the program on the memory module, so the controller refuses to run.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Nonrecoverable: the fault routine runs but cannot clear it.
Likely causes
- S:2/9 is set and the controller and memory module programs differ
- No memory module fitted while S:2/9 is set
First checks, in this order
- Check that the right memory module is fitted
- Transfer the memory module program to the controller
- Switch to Run
0018h: Memory module user program incompatible with OS
Hits OEE: AvailabilityWhat it means: The program on the memory module does not suit the operating system revision in the controller.[1][2][3][4]
Also on: 1100, 1200, 1400 and 1500, non-user. On a MicroLogix 1000, 0018h is a download error: the program has the wrong number or size of files, the default program loads, and you should check that the Bul. 1761 processor is selected. Non-user there too.
Likely causes
- Controller OS revision too old or different for the module program
- Memory module that does not suit this controller
First checks, in this order
- Upgrade the controller OS with ControlFLASH to match the memory module
- Get a new memory module
- Ask Rockwell Automation which OS the controller needs
001Ah: User program incompatible with OS at power-up
Hits OEE: AvailabilityWhat it means: At power-up the controller found that the user program does not suit its operating system.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Controller OS revision does not support the user program
- Program built for a different firmware level
First checks, in this order
- Upgrade the OS with ControlFLASH
- Ask Rockwell Automation which OS the controller needs
0020h: Minor error at end of scan
Hits OEE: AvailabilityWhat it means: A minor error bit in S:5, bits 0 to 7, was still set when the scan reached END or TND, so the controller turned it into a major fault.[1][2][3][4]
Also on: All models: 1000, 1100, 1200, 1400 and 1500. Recoverable.
Likely causes
- Math overflow or divide by zero left the overflow trap bit S:5/0 set
- A shift, FIFO, LIFO or sequencer instruction left the control register error bit S:5/2 set
- No rung unlatches the minor bit with an OTU before END
First checks, in this order
- Look at S:5 to see which minor bit is set
- Fix the instruction logic, or check and unlatch that bit before END
- Clear the fault in the status file display
- Return to Run
0021h: Expansion power fail (EPF)
Hits OEE: AvailabilityWhat it means: The expansion I/O bank lost power while the controller itself stayed powered. The fault clears itself once bank power returns.[1][2][3]
Also on: Listed as MicroLogix 1500 only; Rockwell adds that a bus hardware failure can raise it on a 1200 or 1500. Reserved on the 1100 and 1400. Non-user. If the mode switch is moved while the fault is present, the controller may not go back to Run on its own when bank power returns.
Likely causes
- No power applied to the expansion I/O bank
- Hardware failure on the expansion bus
First checks, in this order
- Restore power to the expansion I/O bank
- If bank power is fine and the fault stays, move the mode switch to PROGRAM and then back to RUN
- If it persists, cycle power and contact Rockwell Automation
0022h: Watchdog timer expired
Hits OEE: AvailabilityWhat it means: One program scan took longer than the watchdog time set in S:3H, so the controller stopped.[1][2][3][4]
Also on: All models: 1000, 1100, 1200, 1400 and 1500. Nonrecoverable: the fault routine runs but cannot clear it.
Likely causes
- Program caught in a loop
- Watchdog value in S:3H too low for the program
First checks, in this order
- Check whether the program is stuck in a loop and fix it
- Raise the watchdog value in S:3H, which counts in 10 ms steps
0023h: STI error
Hits OEE: AvailabilityWhat it means: The selectable timed interrupt (STI) function file has a setup error. The exact reason is in the STI error code word STI:0.ER.[1][2][3][4]
Also on: 1100, 1200, 1400 and 1500. Recoverable. The MicroLogix 1000 uses 0024h for an invalid STI setpoint instead.
Likely causes
- STI program file number below 3, above 255, or not created
- Other invalid STI configuration shown in STI:0.ER
First checks, in this order
- Read STI:0.ER in the STI function file
- Create the STI subroutine file or correct its number
- Reload and go to Run
0028h: Invalid or nonexistent user fault routine value
Hits OEE: AvailabilityWhat it means: Status word S:29 names a fault routine file that does not exist or is outside the allowed range.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- S:29 points to a program file that was never created
- S:29 holds a number below 3 or above 255
First checks, in this order
- Clear S:29 if you do not use a fault routine
- Or create the subroutine file that S:29 points to, numbered 3 to 255
- Download and go to Run
0029h: Instruction indirection outside of data space
Hits OEE: AvailabilityWhat it means: An indirect address in the ladder pointed past the end of all the data files.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Recoverable. On a MicroLogix 1000 the matching fault is 002Ah.
Likely causes
- Indirect address index value out of range
- Data files smaller than the logic expects
First checks, in this order
- Find the indirect reference and limit the value that drives it
- Recompile, reload and go to Run
002Ah: Invalid DNP3 and Recipe or Data Log configuration
Hits OEE: AvailabilityWhat it means: On a MicroLogix 1400, DNP3 10K events are turned on together with Recipe or Data Log in the same program, which is not allowed.[1][4]
Also on: MicroLogix 1400 meaning, non-user. On a MicroLogix 1000, 002Ah means INDEXED ADDRESS TOO LARGE FOR FILE: indexed addressing went past a file boundary; correct the program; nonrecoverable. Not listed for the 1100, 1200 or 1500.
Likely causes
- DNP3 10K events bit S:36/11 is set
- Recipe or Data Log is configured in the same program
First checks, in this order
- Remove the Recipe or Data Log configuration, then reload and Run
- Or clear S:36/11 in the program, then reload and Run
002Eh: EII error
Hits OEE: AvailabilityWhat it means: The event input interrupt (EII) function file has a setup error. The exact reason is in the EII error code word.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Recoverable.
Likely causes
- EII program file number below 3, above 255, or not created
- Invalid input selection for the EII
- Two EIIs set to the same input
First checks, in this order
- Read the error code in the EII function file
- Correct the file number or input selection
- Reload and go to Run
0030h: Subroutine nesting exceeds limit
Hits OEE: AvailabilityWhat it means: JSR calls are nested deeper than the controller allows.[1][2][3][4]
Also on: All models. Non-user on 1100, 1200, 1400 and 1500; nonrecoverable on the MicroLogix 1000.
Likely causes
- Too many levels of subroutines calling subroutines
- On a MicroLogix 1000, more than 8 levels nested from main file 2
First checks, in this order
- Reduce the nesting so it meets the JSR limits
- Reload and go to Run
0031h: Unsupported instruction detected
Hits OEE: AvailabilityWhat it means: The program contains an instruction this controller cannot run.[1][2][3][4]
Also on: All models. Non-user.
Likely causes
- Program written for a different controller or OS revision
- Instruction not available on this model, for example SVC or PID on a MicroLogix 1000
First checks, in this order
- Remove or replace the unsupported instructions
- Recompile, reload and go to Run
0032h: SQO, SQC or SQL outside of data file space
Hits OEE: AvailabilityWhat it means: A sequencer instruction's length or position points outside the data files.[1][2][3][4]
Also on: All models; the MicroLogix 1000 lists SQO and SQC crossing a data file boundary. Recoverable.
Likely causes
- Sequencer length or position set too large
- Data file too short for the sequencer
First checks, in this order
- Correct the length and position so they stay inside the data file
- Recompile, reload and go to Run
0033h: BSL, BSR, FFL, FFU, LFL or LFU crossed data file space
Hits OEE: AvailabilityWhat it means: A bit shift, FIFO or LIFO instruction has a length or position that reaches outside the data files.[1][2][3][4]
Also on: All models. Recoverable.
Likely causes
- Length parameter too large for the file
- Position parameter outside the data space
First checks, in this order
- Correct the length and position so they stay inside the data space
- Recompile, reload and go to Run
0034h: Negative value in timer preset or accumulator
Hits OEE: AvailabilityWhat it means: A negative number was written into a timer's preset or accumulated value.[1][2][3][4]
Also on: All models. Recoverable.
Likely causes
- Logic moves a negative value into a timer preset word
- Logic moves a negative value into a timer accumulator word
First checks, in this order
- Find every instruction that writes to timer preset or accumulator words and stop negative values
- Reload and go to Run
0035h: Illegal instruction in interrupt file
Hits OEE: AvailabilityWhat it means: A Temporary End (TND), Refresh (REF) or Service Communications instruction sits inside an interrupt routine (STI, EII, HSC) or the user fault routine.[1][2][3][4]
Also on: All models; on the MicroLogix 1000 it is a TND in file 3, 4 or 5 used as an interrupt. Nonrecoverable.
Likely causes
- TND, REF or SVC placed in an interrupt subroutine
- Same instructions placed in the user fault routine
First checks, in this order
- Remove the instruction from the interrupt or fault routine
- Recompile, reload and go to Run
0036h: Invalid PID parameter
Hits OEE: AvailabilityWhat it means: A PID instruction is running with a parameter value it cannot use. A detail code sits in the control block and on the PID setup screen.[1][2][3][4]
Also on: 1100, 1200, 1400 and 1500. Recoverable. The MicroLogix 1000 has no PID instruction and flags it as 0031h.
Likely causes
- Loop update time zero or above the allowed range
- Negative proportional, integral or derivative gain
- Feedforward bias out of range, or scaled setpoint minimum above maximum
First checks, in this order
- Open the PID setup screen in RSLogix 500 or RSLogix Micro and read the PID error code
- Correct the parameter it names
- Reload and go to Run
0037h: HSC error
Hits OEE: AvailabilityWhat it means: The high-speed counter function file has a setup error. The exact reason is in the HSC error code word.[1][2][3][4]
Also on: 1100, 1200, 1400 and 1500, recoverable. On a MicroLogix 1000, 0037h means invalid presets loaded to the high-speed counter C5:0, also recoverable.
Likely causes
- HSC interrupt file number below 3, above 255, or not created
- Invalid HSC mode
- High preset at or below zero or the low preset, or presets outside overflow and underflow
First checks, in this order
- Read the error code in the HSC function file
- Correct the preset, mode or file number
- Reload and go to Run
0038h: Subroutine return (RET) in program file 2
Hits OEE: AvailabilityWhat it means: A RET instruction was placed in the main program file 2, where it does not belong.[4]
Also on: MicroLogix 1000 only. Its fault classification table does not list this code.
Likely causes
- RET instruction placed in file 2
- RET is meant for subroutine files, not the main program file
First checks, in this order
- Remove the RET instruction from file 2
- Reload and go to REM Run
003Bh: PTO or PTOX error
Hits OEE: AvailabilityWhat it means: The pulse train output instruction has a configuration error. The exact reason is in the PTO or PTOX error code word.[1][2][3]
Also on: 1100, 1200 and 1500 (PTO) and 1400 (PTOX). Recoverable or non-user, depending on the function file error code.
Likely causes
- Two functions set to the same physical output
- Invalid output selected for the pulse train
- Accel or decel counts not defined when going to Run
First checks, in this order
- Read the error code in the PTO or PTOX function file
- Correct the output assignment or profile settings
- Reload and go to Run
003Ch: PWM or PWMX error
Hits OEE: AvailabilityWhat it means: The pulse width modulation instruction has a configuration error. The exact reason is in the PWM or PWMX error code word.[1][2][3]
Also on: 1100, 1200 and 1500 (PWM) and 1400 (PWMX). Recoverable or non-user, depending on the function file error code.
Likely causes
- Invalid PWM configuration
- Output conflict or invalid output shown in the PWM error code
First checks, in this order
- Read the error code in the PWM or PWMX function file
- Correct the configuration
- Reload and go to Run
003Fh: COP, CPW or FLL outside of data file space
Hits OEE: AvailabilityWhat it means: A copy or fill instruction has a length that reaches past the data space.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Recoverable.
Likely causes
- Length parameter too large
- Destination file too short for the copy or fill
First checks, in this order
- Correct the length so it stays inside the data file space
- Recompile, reload and go to Run
0042h: Invalid recipe number
Hits OEE: AvailabilityWhat it means: The number of recipes set in the program is higher than the controller allows.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Recoverable.
Likely causes
- Number of Recipes set above 256
- Recipe configuration in the program holds a count the controller cannot accept
First checks, in this order
- Correct the Number of Recipes value
- Recompile, reload and go to Run
0044h: Invalid write to RTC function file
Hits OEE: AvailabilityWhat it means: The program tried to write an impossible value to the real-time clock, such as day of week zero or February 30.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Recoverable.
Likely causes
- Invalid date or time data written to the RTC function file
- Day of week written as zero
First checks, in this order
- Correct the data written to the RTC
- Recompile, reload and go to Run
0050h: Controller type mismatch
Hits OEE: AvailabilityWhat it means: The program was set up for a different controller type than the one it was loaded into.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Wrong controller selected in the program configuration
- Program loaded into a different controller model
First checks, in this order
- Connect to the controller the program was written for
- Or change the program configuration to match the attached controller
0051h: Base type mismatch
Hits OEE: AvailabilityWhat it means: The base hardware type chosen in the program, for example AWA, BWA or BXB, does not match the real base.[1][2][3]
Also on: 1100 (AWA, BWA, BBB), 1200 and 1500 (AWA, BWA, BXB) and 1400 (AWA, BWA, BXB, AWAA, BWAA, BXBA). Non-user.
Likely causes
- Wrong base type selected in the program configuration
- Program written for another base, for example AWA instead of BWA
First checks, in this order
- Connect to the hardware the program specifies
- Or change the program configuration to match the attached hardware
0052h: Minimum series error
Hits OEE: AvailabilityWhat it means: The program asks for a newer hardware series than the controller actually is.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Minimum series in the program set higher than the real hardware
- Program written for a newer hardware series than the one fitted
First checks, in this order
- Connect to the hardware the program specifies
- Or change the program configuration to match the attached hardware
0061h: Embedded analog input fault
Hits OEE: AvailabilityWhat it means: The controller could not read its built-in analog input converter even after several retries.[1]
Also on: MicroLogix 1400 only. Nonrecoverable.
Likely causes
- Electrical noise on the analog circuit
- Poor grounding
- Controller cannot read its analog to digital converter
First checks, in this order
- Cycle power
- Check for noise and correct grounding practice
xx71h: Expansion I/O hardware error (nonrecoverable)
Hits OEE: AvailabilityWhat it means: The controller cannot talk to an expansion I/O module. xx is the module number, and 00 means it could not be traced to one module.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Nonrecoverable. xx81h is the same message classed as non-user.
Likely causes
- Loose or bad expansion connection
- Electrical noise or poor grounding
- Failed expansion module
First checks, in this order
- Check the expansion connections
- Check for noise and grounding
- Replace the module
- Cycle power
xx79h: Expansion I/O module error
Hits OEE: AvailabilityWhat it means: An expansion I/O module reported an error of its own. xx is the module number.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Nonrecoverable.
Likely causes
- Module level fault reported in the I/O module status (IOS) file
- Module specific error described in that module's manual
First checks, in this order
- Look at the I/O module status (IOS) file
- Check the manual for that I/O module to decode its error
0080h: Expansion I/O terminator removed
Hits OEE: AvailabilityWhat it means: On a MicroLogix 1500, the terminator that must sit on the last expansion I/O module is missing.[3]
Also on: MicroLogix 1500 only, non-user. 0070h is the same message classed as nonrecoverable.
Likely causes
- End terminator removed from the last expansion module
- Terminator not fitted on the last module of the bank
First checks, in this order
- Check the terminator on the last expansion I/O module
- Cycle power
xx81h: Expansion I/O hardware error (non-user)
Hits OEE: AvailabilityWhat it means: The controller cannot talk to an expansion I/O module, and the fault routine will not run. xx is the module number.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Loose or bad expansion connection
- Electrical noise or poor grounding
- Failed expansion module
First checks, in this order
- Check the expansion connections
- Check for noise and grounding
- Replace the module
- Cycle power
0083h: Maximum expansion I/O cables exceeded
Hits OEE: AvailabilityWhat it means: The expansion I/O system uses more cables than the controller allows.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Too many expansion I/O cables in the system
- Expansion layout not built within the controller limits
First checks, in this order
- Rebuild the expansion layout with an allowed number of cables
- Cycle power
0085h: Maximum expansion I/O modules exceeded
Hits OEE: AvailabilityWhat it means: More expansion I/O modules are attached than the controller allows.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user. 0084h is the matching code for too many expansion power supplies.
Likely causes
- Too many expansion I/O modules attached
- Expansion layout not built within the controller limits
First checks, in this order
- Reduce the expansion system to an allowed number of modules
- Cycle power
xx86h: Expansion I/O module baud rate error
Hits OEE: AvailabilityWhat it means: An expansion module could not communicate at the baud rate set in the program's I/O configuration. xx is the module number.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Baud rate in the I/O configuration that the module cannot use
- Failed expansion module
First checks, in this order
- Change the baud rate in the I/O configuration, then recompile, reload and Run
- Or replace the module
- Cycle power
xx87h: I/O configuration mismatch
Hits OEE: AvailabilityWhat it means: The expansion I/O listed in the program does not match what is physically attached. xx is the module number.[1][2][3]
Also on: 1100, 1200, 1400 and 1500. Non-user.
Likely causes
- Program I/O configuration differs from the real modules
- A module in the program is missing from the rack
- Configuration data for a module is bigger than it can hold
First checks, in this order
- Correct the program I/O configuration to match the hardware
- Or, with power off, change the hardware to match the program
1F39h: Invalid string length
Hits OEE: AvailabilityWhat it means: The first word of a string element, which holds its length, is negative, zero or above 82. S:5/15 is set at the same time.[1][2][3]
Also on: 1100, 1400 and 1500 (1764-LSP Series B and 1764-LRP). Recoverable.
Likely causes
- String length word overwritten with a bad value
- String data built with an invalid length
First checks, in this order
- Check the first word of the string data element
- Correct the invalid value
S:5/0: Overflow trap bit (minor error)
Warning: act before it becomes a stopWhat it means: A math instruction overflowed or divided by zero. The program keeps running, but if the bit is still set at END or TND it becomes major fault 0020h.[1][2][3][4]
Also on: All models: 1000, 1100, 1200, 1400 and 1500. Minor fault only.
Likely causes
- Math result too big for the destination
- Divide by zero
First checks, in this order
- Find the math instruction that overflowed
- Handle the condition, then unlatch S:5/0 with an OTU before END
S:5/2: Control register error (minor error)
Warning: act before it becomes a stopWhat it means: A shift, FIFO, LIFO or sequencer instruction set the error bit of its control word. The program keeps running, but if the bit is still set at END or TND it becomes major fault 0020h.[1][2][3][4]
Also on: All models: 1000, 1100, 1200, 1400 and 1500. Minor fault only.
Likely causes
- Control word error bit set by an LFU, LFL, FFU, FFL, BSL, BSR, SQO, SQC or SQL instruction
- Length or position values the instruction cannot use
First checks, in this order
- Check the control word of each of those instructions
- Take action, then unlatch S:5/2 with an OTU before END
S:5/11: Processor battery low (minor error)
Warning: act before it becomes a stopWhat it means: The controller battery is low. The program keeps running, but a dead battery puts the program and retentive data at risk at the next power loss.[1][2][3][5][6]
Also on: 1100, 1400 and 1500 (the 1200 manual lists this bit for the 1500 only). Minor fault only.
Likely causes
- Battery charge is low
- Battery at the end of its life and due for replacement
First checks, in this order
- Look for the BAT.LO indicator on the 1100 or 1400 LCD
- Install a replacement battery right away, as Rockwell instructs
Log it, or the same alarm comes back
A controller fault stops every output the program drives, so the whole machine stops: in OEE terms a breakdown. Log the code, the machine and the minutes lost, and what was done to clear it.
- Reason code: the code plus the machine, for example MicroLogix 0020h, palletizer 1, so a minor error that keeps halting one machine stands out.
- Loss bucket: a stop that needs a reset, a part or a technician is an availability loss (breakdown). Stops shorter than your micro-stop threshold go to performance (minor stops). The six big losses page shows where each one belongs.
- What to count: how often each code fires per week and the minutes it costs. Two numbers a week turn "that alarm comes up sometimes" into a ranked list. The MTBF and MTTR calculator and the downtime cost calculator do the math.
The free OEE tracker logs each stop with its reason and turns the week into a downtime Pareto, so the code that costs the most rises to the top.
For ControlLogix and CompactLogix major faults, fabrico.io has the Allen-Bradley major fault codes guide. A fault code tells you what the controller detected, not what happened on the line in the seconds before. Fabrico's camera-based OEE software syncs line camera video with machine data, so you can replay the moment the line stopped next to the fault.
Frequently asked questions
How do I clear a fault on a MicroLogix controller?
Read the code in S:6 first and fix the cause listed for it. Then go online with RSLogix 500 or RSLogix Micro, clear the Major Error Halted bit S:1/13 and the code in S:6 from the status file display, and put the controller back in Run. A recoverable fault can also be cleared by logic in the user fault routine named in S:29, but hardware and non-user faults usually need the fix in the table, such as a reload, a new module or a power cycle. Connected Components Workbench is Rockwell's software for Micro800 controllers, not for MicroLogix 1000 to 1500.
What does a flashing red FAULT LED mean on a MicroLogix?
A flashing red FAULT LED with POWER on means an application fault: the controller found a hardware or software major fault and stored its code in S:6. A steady red FAULT LED means the controller hardware itself faulted, so cycle power and call Rockwell support if it stays. RUN, FORCE and FAULT all flashing together means the operating system is missing or corrupt.
Will cycling power reset a MicroLogix fault?
Only if Fault Override at Power-Up S:1/8 is set, which clears S:1/13 at power-up and lets the mode switch and S:1/12 decide the mode. Without it, the controller powers up still faulted, and if the cause is still there it faults again either way. A MicroLogix 1400 at firmware 21.007 or later can also restart itself after 0002h, 0004h, 0008h and 0009h when Auto Reset S:36/1 is enabled, but it comes back in Program mode and run-time data is replaced by the initial data.
How do I see the fault code on a MicroLogix 1100 or 1400 display?
The LCD does not switch to the fault screen on its own; only the FAULT LED flashes. On the Main Menu choose Advanced Set, press OK, choose Fault Code and press OK again. 0000h means no fault, any other value is the S:6 code, and ESC takes you back.
What is the difference between recoverable, nonrecoverable and non-user faults?
A recoverable fault is caused by the program, and the user fault routine can fix the condition and clear S:1/13 so the machine keeps running. A nonrecoverable fault still runs the fault routine, for example to send a message to another device, but the fault cannot be cleared there. A non-user fault stops the ladder program and the fault routine does not run at all.
Sources
Codes and meanings follow the manufacturer documentation below. Wording is ours, simplified for the shop floor; the manual for your exact model and software version wins if it differs.
- MicroLogix 1400 Programmable Controllers Reference Manual, publication 1766-RM001J-EN-P (June 2023)
- MicroLogix 1100 Programmable Controllers Instruction Set Reference Manual, publication 1763-RM001D-EN-P (September 2011)
- MicroLogix 1200 and MicroLogix 1500 Programmable Controllers Instruction Set Reference Manual, publication 1762-RM001H-EN-P (July 2014)
- MicroLogix 1000 Programmable Controllers User Manual (Bulletin 1761 Controllers), publication 1761-6.3 (July 1998)
- MicroLogix 1400 Programmable Controllers User Manual, publication 1766-UM001P-EN-P (March 2024)
- MicroLogix 1100 Programmable Controllers User Manual, publication 1763-UM001G-EN-P (May 2024)
- MicroLogix 1200 Programmable Controllers User Manual, publication 1762-UM001I-EN-P (May 2024)
See the moment the line stopped
Fabrico, a light MES with computer vision, syncs camera footage with machine and timeline data, so you can replay the exact moment the line stopped and review the cause next to the controller's fault. Cameras also catch short stops and a line that is switched on but not producing, the losses nobody writes down. Machines connect through a PLC, a Fabrico IoT device or an AI camera.
Book a Fabrico demoRelated: PLC and controls troubleshooting · Allen-Bradley Kinetix fault codes · palletizer
Other alarm code lookups: FANUC: servo amplifier · spindle amplifier · robot SRVO | Siemens: MICROMASTER 440 · MASTERDRIVES · SINAMICS G120 · SINAMICS V90 servo · SINAMICS V20 | ABB: ACS550 drive · ACS800 drive · robot IRC5 | Okuma: OSP alarms | Haas: alarm lookup | Mitsubishi: MELSERVO servo · FR-D700 and FR-E700 inverters · FX PLC | Allen-Bradley: Kinetix and Ultra3000 · PowerFlex 753 and 755 · PowerFlex 70 and 700 · 1336 and 1305 | Yaskawa: V1000 drive · SERVOPACK servo · Motoman robot | Delta: VFD drives · ASDA servo | Eaton: DC1 and SVX9000 drives | Control Techniques: Commander SK and M200 | Kollmorgen: AKD servo | Lenze: SMVector, 8200, 8400, i500 | Magnetek: IMPULSE and DSD 412 | Omron: MX2 and RX inverters · G5 and 1S servo | WEG: CFW500, CFW300, CFW11, CFW08 | Hitachi: WJ200 inverter | Toshiba: E3, Q9, P9, S15, nC3, AS3 | AutomationDirect: GS10, GS20, GS4, GS1 to GS3 | SANYO DENKI: SANMOTION servo | Parker: SSD 590+, 690+, AC10 | KEB: COMBIVERT F5 | Epson: robot RC700, RC90 | B&R: ACOPOS servo | Schneider Electric: Lexium 32 servo | Bosch Rexroth: IndraDrive | Vacon: NX, VACON 100 and 20 | Fuji Electric: FRENIC-Mini, Multi, Ace, MEGA | LS Electric: S100, G100, iG5A | Panasonic: MINAS A6 and A5 servo | Invertek: Optidrive E3, P2, Eco | SEW-Eurodrive: MOVITRAC B and MOVIDRIVE B
Related tools: full troubleshooting directory · OEE calculator · downtime cost · MTBF / MTTR · glossary