When an SLC 500 processor hits a major error, it sets bit S:1/13 (Major Error Halted) and writes a hex error code to word S:6 in the status file. The processor then either puts all outputs in a safe state and turns on the fault LED, or (SLC 5/02 and higher) runs the user fault routine with outputs still active (
Where a major fault shows
- S:1/13: set by the processor on every major error. For the processor to accept a mode change, you must correct the condition and clear this bit (p.
B-12 ). - S:6: the major error code. The processor stores and displays it in hex (p.
B-26 ). To compare it in ladder logic, convert it to decimal. For example, an EQU that catches error 0016 uses S:6 as Source A and 22 as Source B (p.B-26 ). - S:5, bits 0–7: the minor error bits. If any of them is still set at the end of the scan, the processor turns it into major error 0020 (p.
B-21 ). - S:1/0–S:1/4: the processor mode code. The fault mode is S:1/13 set together with the Remote Program or Suspend Idle code or, on processors with a keyswitch, the PROGram or RUN code (p.
B-6 ). - S:20 and S:21: the rung (S:20) and file (S:21) the processor last executed before a major error or power-down. On an SLC 5/02 they work only if the program was saved with Test Single Step selected. On SLC 5/03 and higher they are built in (pp.
B-41 ,11-2 ). - FLT LED: on SLC 5/03 and higher, all LEDs flash once at power-up, the processor runs its self test, and the LEDs flash again. Then RUN is on if the program is running, and FLT is on if the processor has a fault (p.
16-15 ).
Three fault types: does the fault routine run?
The S:6 table in appendix B puts the codes in three classes (pp.
| Class | Fault routine |
|---|---|
| Non-user fault | Does not run |
| Non-recoverable user fault | Runs once; it can send a MSG to another node to report the fault condition |
| Recoverable user fault | Can clear the fault by clearing S:1/13 |
The code tables below give this class in the "Fault routine" column. A "—" means the appendix B table marks no class for that code.
Many codes share one list of causes. In the tables, "noise/power" stands for the list the manual gives: noise, lightning, improper grounding, no surge suppression on outputs with inductive loads, or a poor power source.
Powerup errors
| Code (hex) | Meaning | Manual's action | Fault routine |
|---|---|---|---|
| 0001 | NVRAM error. Cause: noise/power, or loss of battery or capacitor backup | Correct the cause, reload the program and run. Autoload from a memory module can reload the program and enter Run automatically | Does not run |
| 0002 | Unexpected hardware watchdog timeout. Cause: noise/power | As 0001 | Does not run |
| 0003 | Memory module memory error; can also occur when going to REM Run. The memory module is corrupted | Re-program the memory module; replace it if the error stays | Does not run |
| 0007 | Failure during memory module transfer. The memory module is corrupted | As 0003 | Does not run |
| 0008 | Internal software error. Cause: noise/power | As 0001; if it recurs, contact your Rockwell representative | Does not run |
| 0009 | Internal hardware error. Cause: noise/power | As 0001; if it recurs, contact your Rockwell representative | Does not run |
| (no code) | Keyswitch in RUN but the processor powers up in a non-RUN state. The keyswitch may be damaged | Connect RSLogix 500. If the status shows "Remote Download in Progress" and bits S:1/0–4 are all cleared, contact your Rockwell representative | — |
Source: pp.
Going-to-run errors
| Code (hex) | Meaning | Manual's action | Fault routine |
|---|---|---|---|
| 0010 | The processor does not meet the revision level the program requires: the program was developed for another revision | Ask your Rockwell representative for an upgrade kit for the processor | Does not run |
| 0011 | Executable program file 2 is absent. The program is incompatible or corrupt | Reload the program or reprogram | Does not run |
| 0012 | The ladder program has a memory error. Cause: noise/power | Correct the cause, reload and run; if it stays, develop and load the program with current programming software | Does not run |
| 0013 | A memory module the program requires is absent, or S:1/10 or S:1/11 is not set as the program requires | Install a memory module, or upload the program from the processor to the memory module | Can clear |
| 0014 | Internal file error. Cause: noise/power | As 0012 | Does not run |
| 0015 | Configuration file error. Cause: noise/power | As 0012 | Does not run |
| 0016 | Startup protection after power loss: S:1/9 is set and power went down while running | Reset S:1/9 if that fits the application and go back to run, or clear S:1/13 before the end of the first scan | Can clear |
| 0017 | NVRAM and memory module programs differ while S:2/9 is set | Transfer the memory module program to NVRAM, then go to Run | Runs once |
| 0018 | Incompatible user program, operating system type mismatch; can also occur at power-up. The program is too advanced for the operating system | Ask your Rockwell representative for an upgrade kit for the processor | Does not run |
| 0019 | Duplicate or missing label in a subroutine | Remove the duplicate label or add a label | Runs once |
Source: pp.
Run errors
| Code (hex) | Meaning | Manual's action | Fault routine |
|---|---|---|---|
| 001F | Program integrity problem during online editing: noise, communication loss or a power cycle during the edit | Reload the program and redo the online changes | Does not run |
| 0004 | Memory error in Run mode. Cause: noise/power | As 0001 | Does not run |
| 0020 | A minor error bit in the low byte of S:5 is set at the end of the scan: math or FRD overflow, a sequencer or shift register error, a major error while executing the user fault routine, or |
Correct the program, reload and enter Run | Can clear |
| 0021 | Remote power failure of an expansion I/O chassis | SLC 5/02 and higher and FRN 5 SLC 5/01: re-apply power to the expansion chassis; this is the only self-clearing code. Fixed and FRN 1–4 SLC 5/01: cycle power on the local chassis | Does not run |
| 0022 | User watchdog scan time exceeded: watchdog set too low or the program caught in a loop | Increase the watchdog in S:3H or correct the program | Runs once |
| 0023 | Invalid or missing STI file: an STI file number was assigned but the file not created, or file 0, 1 or 2 was assigned | Disable STI (setpoint S:30, file number S:31) or create the STI file; the file number must not be 0, 1 or 2 | Runs once |
| 0024 | Invalid STI interval (negative or above the limit) | Disable STI (S:30, S:31) or create an STI routine for the file number in S:31 | Runs once |
| 0025 | Excessive stack depth/JSR calls for the STI routine: a JSR calls a file assigned to the STI routine | Correct the program to meet the JSR restrictions, reload and run | Runs once |
| 0026 | As 0025, for an I/O interrupt routine | As 0025 | Runs once |
| 0027 | As 0025, for the user fault routine | As 0025 | Runs once |
| 0028 | Invalid or missing "startup protection" fault routine file: S:29 holds a file number but the file was not created, or it is 0, 1 or 2 | Disable the fault routine (S:29) or create a fault routine for the file number in S:29 | Does not run |
| 0029 | Indexed address outside the whole data file space (B3:0 to the last file) | Correct and reload the program; writing to the index register S:24 does not fix it. After recovery the faulted instruction uses an index value of zero | Can clear |
| 002A | Indexed address beyond the referenced data file | Correct the program, allocate more data space with the memory map, or re-save the program allowing file boundaries to be crossed; reload. Writing S:24 does not fix it | Runs once |
| 002B | The file number of an indirect address has the wrong file type or does not exist | Check the file type or create the file | Can clear |
| 002C | The indirectly referenced element does not exist (the file exists and has the right type), for example T4:[N7:0] with N7:0 = 10 when T4 only goes to T4:9 | Create the referenced element | Can clear |
| 002D | A subelement referenced incorrectly, or an indirect reference to an M-file | Correct the references | Can clear |
| 002E | Invalid DII input slot: the slot is empty or holds a non-discrete card | Change the input slot to a discrete I/O card | Can clear |
| 002F | Invalid or missing DII interrupt file | Disable DII by writing a zero, or change it to a valid ladder file (3–255) | Runs once |
Source: pp.
User program instruction errors
| Code (hex) | Meaning | Manual's action | Fault routine |
|---|---|---|---|
| 0030 | Too many nested subroutine levels (4; 8 on a 5/02 or 5/03), or a nested subroutine calls one of a previous level (recursion) | Correct the program to meet the JSR restrictions, reload and run | Runs once |
| 0031 | Unsupported instruction: the processor type or series does not support an instruction in the program, or a constant is the first operand of a compare | Replace the processor with one that supports the program, or change the program so every instruction is supported | Runs once |
| 0032 | A sequencer length/position parameter points past the end of a data file | Correct the program or allocate more data file space with the memory map, reload and run | Can clear |
| 0033 | The length of an LFU, LFL, FFU, FFL, BSL or BSR points past the end of a data file | As 0032 | Can clear |
| 0034 | Negative timer accumulator or preset. Fixed processors with 24 VDC inputs: negative or zero HSC preset (valid 1–32767) | If the program moves values into a timer ACC or PRE (or an HSC preset), make sure they cannot be negative and stay in the valid range; correct, reload, run | Can clear |
| 0035 | TND, SVC or REF called within an interrupt or user fault routine | Correct the program, reload and run | Runs once |
| 0036 | Invalid PID instruction parameter | The detailed code (11H, 12H…) is in the high byte of the second word of the PID control block; see Table 9.36 (p. |
Can clear |
| 0038 | RET instruction in a non-subroutine file (the main program) | Correct the program, reload and run | Does not run |
| xx39 | Invalid string length: the first word of the string is negative, zero or above 82 (xx = data file number) | Check the first word of the string elements and correct the data | Can clear |
| 003A | Write through an indirect address to a file with constant data file protection | Remove the protection and retry | — |
| 003B | Motherboard and daughter card firmware do not match, because they were not flashed as a pair | Flash both motherboard and daughter card to the latest version | — |
| 003C | STI watchdog timeout: STI setpoint too low, the processor could not service the STI interrupt in time | Increase the STI setpoint (S:30) | — |
| 003D | J4 jumper in the wrong position (only in the appendix B table, for 5/03 and 5/04) | The manual gives no action | — |
| 005F | Invalid rack ID (appendix B adds "handshake error") | Multi-rack system: configure no more than three racks. Single-rack system: replace the rack, it may be bad | Does not run |
Source: pp.
I/O errors and the xx slot convention
In the I/O codes, xx is the slot number in hex: slot 10 is 0A, slot 16 is 10, slot 30 is 1E. If the processor cannot determine the slot, chapter 16 says xx becomes 03 on fixed controllers and 1F on modular controllers (p.
On SLC 5/02 and higher, many I/O faults are recoverable: the user fault routine must disable slot xx, or the processor faults at the end of the scan. A severely damaged I/O card can make the processor report an error in slot 1 even when the card sits in another slot (pp.
| Code (hex) | Meaning | Manual's action | Fault routine |
|---|---|---|---|
| xx50 | Chassis data error. Cause: noise/power | Correct the cause, clear the fault and re-enter Run | Can clear |
| xx51 | "Stuck" runtime error on an I/O module. Discrete module: a noise problem. Specialty module: see its user manual | Cycle system power; if that does not fix it, replace the module | Runs once |
| xx52 | A module the program requires is missing or removed | Disable the slot in S:11 and S:12, or insert the required module | Can clear |
| xx53 | A slot declared unused holds a module, or a module reset itself. SLC 5/03 and higher: run or test mode attempted with an empty chassis | Disable the slot (S:11, S:12), remove the module, or change the I/O configuration and reload; if the module reset itself, clear the major fault and run. Empty chassis: disable all its slots | Can clear |
| xx54 | The module in the slot is a different type from the configuration | Fit the correct module, clear the fault and run; or change the slot configuration, reload and run | Can clear |
| xx55 | Discrete module with a different I/O count from the configuration, or an incorrect specialty card driver | Fit a module with the configured count, or change the configuration to match; for a specialty card see its user manual | Can clear |
| xx56 | The chassis configuration in the program does not match the hardware (appendix B lists it as 0056) | Correct the chassis configuration, reload and run | Does not run |
| xx57 | A specialty module did not answer a Lock Shared Memory command in time | Cycle chassis power; if that does not fix it, see the module's user manual; the module may need replacing | Can clear |
| xx58 | A specialty module reports a generic fault: the card fault bit in its status byte is 1 | As xx57 | Runs once |
| xx59 | A specialty module did not complete a processor command in time | See the module's user manual; the module may need replacing | Can clear |
| xx5A | Hardware interrupt problem. Discrete module: a noise problem | Cycle chassis power, check for noise and proper grounding; for a specialty module see its manual, it may need replacing | Runs once |
| xx5B | The program's G file size exceeds the module's capacity | Reconfigure the G file as the module manual says, reload and run | Can clear |
| xx5C | The |
Reconfigure the |
Can clear |
| xx5D | The module requests an interrupt service the processor does not support | Check in the module manual which processors support it; change to one of them | Can clear |
| xx5E | Processor I/O driver (software) error | Reload the program with RSLogix | Can clear |
| xx60–xx6F | I/O module specific recoverable major error | See the module's user manual | Can clear |
| xx70–xx7F | I/O module specific non-recoverable major error | See the module's user manual | Runs once |
| xx80–xx8F | Specialty module specific major error | See the module's user manual | Does not run |
| xx90 | A specialty module requested service while its slot was disabled | See the module's user manual; the module may need replacing | Runs once |
| xx91 | A specialty module in a disabled slot has faulted | Cycle chassis power; if that does not fix it, see the manual, the module may need replacing | Runs once |
| xx92 | The I/O configuration or interrupt subroutine (ISR) file information for a specialty module is wrong | Correct the I/O configuration and ISR file per the module manual, reload and run | Runs once |
| xx93 | The processor does not recognize the error code a specialty module sent | See the module's user manual | Runs once |
| xx94 | A module was inserted under power in run or test mode, or a module reset itself | Never insert a module in a powered chassis. If the module is not damaged: remove it, clear the fault and run; or add it to the I/O configuration, reload and run | Runs once |
| 00A0, 00A1, 00A2 | Communication channel hardware fault on an SLC 5/04 (channel 1, DH+) or SLC 5/05 (channel 1, Ethernet) | A write to the status file can clear the fault, but Ethernet, DH+ and |
Does not run |
Source: pp.
LEDs on SLC 5/03 and higher when the operating system fails
An operating system download takes up to 90 seconds. During it, RUN and FLT stay off and the RS232,
| LEDs on | Meaning |
|---|---|
| FAULT, FORCE, |
Fatal hardware error |
| FAULT, FORCE, RS232, |
Hardware watchdog timeout |
| FAULT, BATT | NVRAM error |
| FAULT, BATT, RS232 | Operating system memory module contents corrupt |
| FAULT, BATT, |
Downloaded operating system not compatible with the hardware |
| FAULT, BATT, RS232, |
Download attempted onto write-protected memory |
| FAULT, BATT, FORCE | Flash EEPROM failure |
| FAULT, BATT, FORCE, RS232 | Failure while transmitting the operating system |
| FAULT, BATT, FORCE, |
Operating system missing or corrupt |
Bit S:5/13 is set when an operating system load from a memory module fails: the protection jumper is in the protect position or missing, or the module is not compatible with the processor hardware. Bit S:5/11 is set while the Battery Low LED is on (p.
Checks, step by step
- Record before clearing: S:6, S:1, the low byte of S:5, S:20 and S:21, and the LED states. The processor never clears S:6 (p.
B-26 ). - Code 0020: find which S:5 bit is set. S:5/0 is overflow, S:5/2 a control register error from LFU, LFL, FFU, FFL, BSL, BSR, SQO, SQC or SQL, S:5/3 a major error while executing the user fault routine, S:5/4 an
M0-M1 reference to a disabled slot (pp.B-22 –B-23 ). - I/O codes: convert xx from hex to the slot number and go to that slot. If the code points to slot 1 and that card looks fine, remember that a severely damaged card in another slot can report as slot 1 (p.
16-11 ). - Codes with the "noise/power" cause (0001, 0002, 0004, 0008, 0009, 0012, 0014, 0015, xx50): check grounding, surge suppression on outputs with inductive loads and the power source; for 0001 also the battery or capacitor backup (pp.
16-3 –16-12 ). - Memory module codes: for 0003 and 0007, re-program the memory module and replace it if the error stays; for 0013, install the memory module or upload the program from the processor to it (the cause is S:1/10 or S:1/11 set differently in the processor and module programs); for 0017 (S:2/9 set, programs differ), transfer the memory module program to NVRAM, then go to Run (pp.
16-3 –16-5 ). - Code 0021: check the expansion chassis power. An over-voltage or over-current in a power supply turns its LED off and can produce an I/O error code instead of 0021 (p.
16-7 ). - Code 0022: compare the scan time with the S:3H watchdog and look for a loop in the program (pp.
16-7 ,B-20 ).
Clearing faults and returning to Run
Manual clear (p.
Warning: on SLC 5/03 and higher, clearing these bits with the keyswitch in RUN puts the processor straight into Run. Online with the keyswitch in RUN, the clear major fault key warns you that the processor will enter Run once the fault clears (p.
Automatic clear (pp.
- S:1/8 (Fault Override at Powerup): at power-up the processor clears S:1/13 and S:5/0–7 and tries to enter REM Run, if it was in REM Run and faulted. The bit is off by default. The user program must not be corrupt.
- S:1/9 (Startup Protection): after a power loss in REM Run, the processor runs the fault routine before the first scan, with S:6 = 0016. If the fault routine does not clear S:1/13, the processor goes to fault mode.
- S:1/10, S:1/11, S:1/12: the autoload bits, set in the program stored in the memory module. S:1/10 transfers the module program when a memory error is found at power-up, then enters REM Run. S:1/11 and S:1/12 overwrite the program, data tables included, at every power cycle; S:1/12 also puts the processor in REM Run every time.
Fault routine (pp.
Application-defined faults: write your own value to S:6, then set S:1/13. Do not reuse system codes; the manual recommends FF00–FF0F (pp.
When it is hardware
- 0008 or 0009 recurring after the noise causes are dealt with and the program is reloaded: contact your Rockwell representative (p.
16-4 ). - 0003 or 0007 still there after re-programming the memory module: replace the memory module (p.
16-3 ). - xx51 still there after a power cycle: replace the module in slot xx (p.
16-12 ). - 005F on a single-rack system: replace the rack (p.
16-10 ). - Keyswitch in RUN but the processor powers up outside RUN, status "Remote Download in Progress", S:1/0–4 cleared: the keyswitch may be damaged, contact your Rockwell representative (p.
16-4 ).
Planning the replacement
According to the end-of-life pages on this site, Rockwell lists these SLC 500 processors as discontinued:
| Processor | Discontinued | Replacement per Rockwell |
|---|---|---|
| 31/03/2024 | ||
| 31/03/2024 | ||
| 31/03/2024 | ||
| 31/12/2021 | ||
| 31/03/2024 | ||
| 31/03/2024 |
How the program moves to Logix (the same approach applies to SLC 500) is covered in
Frequently asked questions
Where do I find the fault code on an SLC 500?
The major error code is in status file word S:6, in hex. Bit S:1/13 shows that the processor has halted on a major error. The processor never clears S:6 (
What is error 0020 on an SLC 500?
A minor error bit in S:5/0–7 is still set at the end of the scan, for example a math overflow or a sequencer or shift register error. Find which S:5 bit is set, correct the program, reload and enter Run (pp.
What do codes like 0A52 or 1F53 mean?
The first two characters are the slot number in hex, the last two the error type. 0A52 is a required module missing in slot 10. 1F means a modular processor could not determine the slot (pp.
Does turning the keyswitch from RUN to PROG and back clear the fault?
Yes on SLC 5/03 and higher: it clears S:1/13 and S:6. Correct the condition first, and expect the processor to run again as soon as the keyswitch is back in RUN (pp.
How do I fix watchdog error 0022 on an SLC 500?
The scan time has exceeded the S:3H watchdog, because the watchdog is set too low or the program is caught in a loop. Increase S:3H (default 10 ticks of 10 ms, maximum 250) or correct the program (pp.
Sources
- Rockwell Automation,
1747-RM001G-EN-P , SLC 500 Instruction Set Reference Manual, 11/2008 — chapter 9 (p.9-21 ); chapter 11 (pp.11-2 –11-3 ); chapter 16 "Troubleshooting Faults" (pp.16-1 –16-16 ); appendix B "SLC Status File" (pp.B-6 –B-12 ,B-20 –B-34 ,B-41 ,B-44 )
Read 15 November 2026. This article paraphrases the sources and does not quote them; read the original documents before designing or working on a system. Links open the latest edition in Rockwell's literature library; page numbers refer to the edition cited.