Siemens vs Allen-Bradley PLC Error Code System Comparison Guide: Reading Faults Across Both Platforms

Siemens vs Allen-Bradley PLC error code system comparison guide — PLC Diagnostics

You have just started a new role at a manufacturing plant that runs a mix of Siemens S7-1200 and Allen-Bradley CompactLogix controllers — sometimes on the same production line, communicating via OPC-UA. The Siemens side is reporting diagnostic buffer event 16#EE:0501 and the CompactLogix is in FAULT showing Type 4, Code 42. Both faults occurred within 10 minutes of each other. Your previous plant ran only Siemens; your colleague has only ever worked with Allen-Bradley. You need to diagnose both systems, compare whether the faults are related, and explain the differences in the fault architecture to a colleague who has never touched a Siemens controller. This Siemens vs Allen-Bradley PLC error code system comparison guide covers the structural differences between the two fault systems, the equivalent concepts between platforms, and a side-by-side comparison of how each platform represents the same categories of fault conditions.



Fault Architecture Overview: Two Different Design Philosophies

Siemens and Allen-Bradley approached PLC fault architecture with fundamentally different design philosophies that reflect when each company developed its flagship platforms:

Siemens philosophy (S7 family, TIA Portal): faults are events that are logged in a timestamped diagnostic buffer. The CPU responds to fault events by calling specific Organization Blocks (OBs) — interrupt service routines that give the user program an opportunity to respond to the fault programmatically. If the required OB is not in the program, the CPU defaults to STOP. This “interrupt-driven fault response” architecture gives the program programmer complete control over the fault handling strategy.

Allen-Bradley philosophy (Logix5000 family, Studio 5000): faults are categorized into a hierarchical Type+Code+Sub-code taxonomy. The controller always enters a FAULT state when a major fault occurs, halting scan cycle execution. The program cannot prevent the FAULT state, but it can be designed to resume from a known safe state after the fault is cleared. Minor faults are logged but do not halt execution.

The key practical difference: on Siemens, programming OB80 (cycle time exceeded) prevents the CPU from stopping on the first occurrence. On Allen-Bradley, no programming can prevent a Type 4 Code 42 (watchdog timeout) from faulting the controller — only fixing the root cause can prevent it.

Beyond a code-to-code lookup table: matching a Siemens event class to its Allen-Bradley Type/Code equivalent answers what each fault means on its own platform — it does not answer what a technician moving between the two systems needs, which is what to do when there is no equivalent at all. This guide goes a step further than a side-by-side table in two places: the Cross-Platform Migration section maps the specific program-level replacement for a Siemens OB that has no Allen-Bradley counterpart (OB80, OB82, OB86 — not just the codes, but the tag-monitoring pattern that replicates the interrupt-driven behavior on Studio 5000), and the Legacy Platform Comparison section extends the same structural comparison to S7-300/S7-400 and SLC 500/MicroLogix, where the fault systems are old enough that even the diagnostic tools required for first-response differ (a PC with STEP 7 versus a controller’s built-in LCD).


The Siemens Fault System: Event Classes and OBs

The Siemens S7 fault system (applicable to S7-300, S7-400, S7-1200, S7-1500) uses a two-component fault representation:

1. Event Class (16#XX): identifies the category of the fault. The event class is a hexadecimal byte value where the format 16#EE:NNNN encodes the full diagnostic event. Breaking this down: – 16#EE = event class byte (defines the fault category) – NNNN = event number (specific fault code within that category)

Common Siemens event classes: | Event Class | Category | Example Event | |————-|———|————–| | 16#02 | I/O access error | 16#02:42:00 = I/O module access error | | 16#03 | Peripheral access error | 16#03:38:00 = analog module error | | 16#38 | Diagnostic interrupt | Module sent diagnostic interrupt to CPU | | 16#82 | I/O module error | Expansion module fault | | 16#C0 | CPU-internal state change | Mode change, startup, STOP |

2. Organization Block (OB) called in response: the CPU’s fault response mechanism. The program developer writes application-specific fault handling code in the OB, or leaves it empty (which still prevents STOP on the first occurrence).

For the complete S7-1200 event class reference, see Siemens S7-1200 Error Codes Complete List. For S7-300 diagnostic buffer reading, see Siemens S7-300 Sf Led Error Diagnosis Step By Step Fix.


The Allen-Bradley Fault System: Types, Codes, and Sub-codes

The Allen-Bradley Logix5000 fault system (ControlLogix, CompactLogix, MicroLogix 1500) uses a hierarchical three-level taxonomy:

Type — the highest level category (1–7 for ControlLogix): – Type 1: Non-recoverable hardware fault (CPU hardware failure) – Type 2: Non-recoverable firmware or application fault – Type 3: I/O fault (module connection lost) – Type 4: Program execution fault (watchdog, illegal instruction) – Type 6: I/O module hardware fault – Type 7: Motion fault

Code — the specific fault within the Type (e.g., Code 42 = watchdog timeout for Type 4).

Sub-code — additional context within the Code (e.g., Type 4, Code 42, Sub-code 1 = specific task that exceeded its watchdog).

Fault location: for Type 4 program faults, Studio 5000 identifies the specific Task, Program, Routine, and Rung where the fault occurred — enabling direct navigation to the faulting instruction.

For the complete ControlLogix fault code reference, see Allen-Bradley Controllogix Fault Codes Complete List Studio 5000. For CompactLogix-specific Type 4 faults, see Compactlogix Major Fault Type 4 Code 20 Illegal Instruction Fix.


Side-by-Side Comparison Table: Same Fault, Two Systems

Fault Condition Siemens Representation Allen-Bradley Representation Key Difference
Scan/cycle time exceeded OB80 called; event class 16#35 (S7-300) or 16#EE:AAAA (S7-1200) Type 4, Code 42 Siemens allows OB80 to prevent STOP; AB always faults
I/O module connection lost Event class 16#02:42:00 or 16#EE:0501 Type 3, Code 16 Siemens logs event with slot/address; AB logs with slot
I/O module hardware fault OB82 called; event class 16#38:xx Type 6 Both log module address; Siemens calls OB82
Illegal program instruction STOP with diagnostic buffer entry 16#C0:xx Type 4, Code 20 Siemens: diagnostic buffer; AB: Task+Routine+Rung identified
Communication network fault OB86 called; PROFIBUS/PROFINET event Type 3, Code 16/17 (EtherNet/IP) Siemens: protocol-specific OB; AB: generic I/O fault
Power supply fault OB81 called; event class 16#29xx Type 6 (power supply) OB81 (Siemens) does not halt CPU; AB Type 6 may halt
Motion/drive fault Not a standard S7 OB; drive-specific diagnostic Type 7 Both require drive-specific diagnostics
Memory fault OB84 called; event class 16#C0 Type 1 or Type 2 Both: hardware replacement may be required

Cycle Time Exceeded: Siemens OB80 vs Allen-Bradley Type 4 Code 42

This is the most structurally different fault response between the two platforms:

Siemens OB80 Cycle Time Exceeded: – The CPU calls OB80 when the scan cycle exceeds the configured watchdog time – If OB80 is programmed: the program handles the event, and the CPU continues running (on S7-1200 V4.1: 2nd occurrence STOP; on S7-1200 V4.4+: 1st occurrence is immediate STOP) – If OB80 is NOT programmed: immediate STOP on first occurrence – The program can log the event, activate an alarm, and choose to reset the scan timer

Allen-Bradley Type 4, Code 42 Watchdog Timeout: – The controller enters FAULT immediately when the task exceeds its watchdog – No programming can prevent the FAULT state – After clearing the fault and returning to RUN, the fault is logged in the Fault History – The fault identifies which specific task exceeded its watchdog (Sub-code identifies the task)

Diagnostic approach comparison: For Siemens: check the OB80 occurrence count in the diagnostic buffer. If OB80 has been called thousands of times without STOP, the scan is marginally exceeding the limit intermittently — a performance issue, not a critical fault. For Allen-Bradley: every Type 4 Code 42 forces a FAULT state, so each occurrence is immediately visible and counts as a production-stopping event.

For Siemens OB80 complete diagnosis: Siemens Ob80 Cycle Time Exceeded S7-1200 S7-1500 Fix. For Allen-Bradley watchdog fix: Controllogix Watchdog Timeout Fault Type 4 Code 42 Fix Studio 5000.



I/O Module Fault: Siemens 16#EE:0501 vs Allen-Bradley Type 3 Code 16

Both platforms generate an I/O fault when a module is not responding, but the representation and the automatic response differ significantly:

Siemens S7-1200/S7-1500: – Event class 16#EE (or 16#02 in S7-300) indicates an I/O access error – Event number encodes the specific I/O type (PROFINET, local, distributed) – The CPU can continue running if the fault is handled (OB82 is called for module diagnostic interrupts) – I/O values for the faulted module are set to the “substitute value” configured in TIA Portal (default: 0 for digital, configured value for analog)

Allen-Bradley ControlLogix/CompactLogix: – Type 3, Code 16: module connection failed – The faulted module’s I/O tags are set to their last value (for input modules) or held at last commanded state (for output modules) by default – The module appears with a red fault indicator in Studio 5000 I/O tree – The controller continues running in RUN mode (I/O fault is non-stopping for Type 3 by default)

Key similarity: both systems allow the controller to continue running with a failed I/O module, and both provide the specific slot/address of the failed module. The structural difference is in how the module fault interacts with the I/O data — Siemens’s substitute value configuration gives explicit control over what value the program “sees” for a failed input; Allen-Bradley uses last-known value logic.


Communication Fault: Siemens PROFINET 16#02:47:04 vs Allen-Bradley EtherNet/IP Type 3

Both platforms use Ethernet-based industrial protocols, but PROFINET (Siemens) and EtherNet/IP (Allen-Bradley) have architectural differences that affect how communication faults are reported:

PROFINET station failure (Siemens): – Event code 16#02:47:04 identifies a specific PROFINET IO device by device name and IP address – The CPU calls OB86 if programmed – The device name is embedded in the event additional information — identifying exactly which device failed – LLDP topology data (S7-1500, S7-1200 V5.x) can identify the physical port where connectivity was lost

EtherNet/IP connection timeout (Allen-Bradley): – Type 3 fault with Code 16 or 17 identifies the failing device by I/O tree position (slot, chassis) – The controller does not call a specific “communication fault OB” — the fault is logged as an I/O fault – RSLinx Classic / Studio 5000 show the module with a red fault indicator – No LLDP equivalent in the standard EtherNet/IP diagnostic framework (some managed switches support LLDP separately)

For Siemens PROFINET station failure complete diagnosis: Siemens Profinet Station Failure 16#02:47:04 Diagnosis Fix. For Allen-Bradley EtherNet/IP timeout: Allen-Bradley Ethernet/Ip Connection Timeout Fault Controllogix Fix.


Diagnostic Tools Comparison: TIA Portal vs Studio 5000

Feature Siemens TIA Portal Allen-Bradley Studio 5000
Fault history storage Diagnostic buffer (100–3200 entries, persists through power cycles) Fault History tab (16 entries, persists through power cycles)
Fault timestamp Yes (requires RTC battery for accuracy) Yes (controller system clock)
Fault location (program) OB call stack in additional information Task + Program + Routine + Rung
Online fault monitoring Module Information → Diagnostic Buffer Controller Properties → Faults / Fault History
Cross-reference to faulting instruction Diagnostic buffer → navigate to OB Fault History → Go To Rung (direct navigation)
I/O module diagnostics Module Information → specific module Module Properties → Diagnostics
Network topology visualization LLDP Topology view (TIA Portal) None in Studio 5000 (requires separate network management tool)
Fault simulation Not available in standard TIA Portal Not available in standard Studio 5000
Remote diagnostic access Via Siemens Remote Support (S7 Web Server) Via FactoryTalk Remote Access or VPN to RSLinx

Legacy Platform Comparison: S7-300/S7-400 vs SLC 500/MicroLogix

The comparison between Siemens and Allen-Bradley fault systems is most acute in legacy installations, where both platforms use older architectures with different diagnostic capabilities than their modern successors:

S7-300/S7-400 vs SLC 500: Diagnostic Buffer Depth and LED Signaling

Feature Siemens S7-300/S7-400 Allen-Bradley SLC 500
Fault history depth 100 entries (S7-300) / 3200 entries (S7-400) 64-entry fault file (STC file) in EEPROM
Fault timestamp accuracy Yes — requires backup battery for RTC during power loss Yes — requires 1747-BA lithium battery
Software for fault reading STEP 7 Classic (v5.x) — Module Information → Diagnostic Buffer RSLogix 500 — Controller Diagnostics → Error Code
Physical fault indicator SF (System Fault) LED — red, solid FAULT LED — red, solid
Bus fault indicator BF (Bus Fault) LED — red for PROFIBUS DH+ LED activity indicator (not a fault LED)
Fault code format 16#EE:NNNN (hex event class + event number) Integer error code (e.g., 0020h for “Program File Not Found”)
User program response to fault OB1, OB80, OB82, OB86 etc. — interrupt-driven No interrupt OBs — fault halts scan and requires manual clear
Online connection method MPI, PROFIBUS DP, or Ethernet (S7-300 with CP module) DH+, RS-232 (DF1), EtherNet (SLC 5/05 only)

S7-400 H-System distinction: the S7-400 H-System (high-availability redundant CPUs) has no Allen-Bradley equivalent in the SLC 500 family. The S7-400 H fault system adds redundancy-specific event codes (Master/Reserve switchover events) that require filtering when reading the diagnostic buffer.

MicroLogix vs S7-300: Compact Controller Fault Handling

For compact-format legacy controllers, the diagnostic philosophy difference becomes even more pronounced:

Siemens S7-300 compact CPUs (312C, 313C, 314C): the integrated I/O channels on compact CPUs can generate OB82 diagnostic interrupts for the onboard analog and digital channels. The LADDR for onboard channels is fixed and visible in HW Config. The S7-300 compact CPU retains the full STEP 7 diagnostic buffer with 100 entries.

Allen-Bradley MicroLogix 1400: the MicroLogix does not support interrupt-driven fault response — all faults (major and minor) halt the scan cycle and require manual clearance. The fault code is displayed on the MicroLogix 1400’s integrated LCD display, eliminating the need for software connection for initial fault reading. The MicroLogix fault code taxonomy uses a simpler Major Error Code / Minor Error Code structure without the Type+Code+Sub-code hierarchy of ControlLogix. For the complete MicroLogix fault code reference, see Allen Bradley Micrologix 1400 Fault Codes Error Recovery.

The key cross-platform insight for legacy systems: Siemens S7-300 installations generally require a PC with STEP 7 to read fault detail, while MicroLogix 1400 installations can be initially diagnosed from the controller’s built-in LCD — a practical difference in field tools required for first-response diagnosis.


Cross-Platform Migration: Mapping Error Handling from One System to Another

When migrating a system from Siemens to Allen-Bradley (or vice versa), fault handling code requires explicit mapping:

OB80 (Siemens cycle time) → Studio 5000: there is no Allen-Bradley equivalent to OB80. The ControlLogix controller always faults on watchdog timeout. A Siemens OB80 that was catching and logging scan time events must be replaced with a separate diagnostic task (with a longer RPI than the main task) that monitors the main task’s scan time and logs when it approaches the watchdog limit.

OB82 (Siemens I/O module diagnostic) → Studio 5000: the Allen-Bradley equivalent is to monitor the module’s [ModuleName]:S.Fault tag in the program. Configuring FactoryTalk Alarms to trigger on this tag provides a functional equivalent to the OB82 notification.

OB86 (Siemens station failure) → Studio 5000: monitor the EtherNet/IP device connection status tag ([DeviceName]:C.PrimaryOperationStatus) and implement programmatic alarm logic when this tag indicates a connection fault.

For the firmware version comparison that affects both Siemens and Allen-Bradley diagnosis, see Plc Firmware Mismatch Error Fix Tia Portal Studio 5000 Guide. For the S7-400 H-System fault codes that have no Allen-Bradley equivalent, see Siemens S7-400 Cpu Fault Codes Step 7 Diagnostic Buffer Complete.


Technical Validation

Allen-Bradley Logix5000 fault type, code, and sub-code taxonomy reference from Rockwell Publication 1756-PM014. Siemens S7 diagnostic system overview — event classes, OB fault response structure, and diagnostic buffer architecture from Siemens Industry Online Support Document 109752283 Diagnostics Overview. Cross-platform industrial PLC training from Cincinnati State Workforce Development Center PLC programs.


Frequently Asked Questions

Is there a single software tool that can read both Siemens and Allen-Bradley PLC diagnostic buffers from one interface?

Yes — OPC-UA clients and SCADA systems with multi-vendor connectivity can read diagnostic tags from both platforms simultaneously. Ignition SCADA (Inductive Automation), FactoryTalk Historian, and Siemens WinCC all support OPC-UA connections to both Siemens S7-1200/S7-1500 (which have a native OPC-UA server) and Allen-Bradley ControlLogix (which requires an OPC-UA server such as Kepware or MatrikonOPC). The diagnostic buffer content from both platforms is accessible as OPC-UA variables. However, the interpretation of the fault data (event classes for Siemens, Type/Code for Allen-Bradley) still requires platform-specific knowledge.

When comparing fault frequency between a Siemens and an Allen-Bradley line, how do you normalize the comparison when Siemens logs informational events and Allen-Bradley only logs actual faults?

This is a genuine data normalization challenge. The Siemens diagnostic buffer logs both fault events (incoming) and recovery events (outgoing), plus informational events (startup, mode changes) that have no Allen-Bradley equivalent. To compare apples-to-apples: filter the Siemens diagnostic buffer to show only event classes that correspond to actual production-stopping or production-impacting events (16#35, 16#36 for STOP conditions; 16#02:4x for I/O failures) and exclude informational entries (16#4A startup events, 16#C0 mode changes). Count only the Incoming events (fault onset), not the Outgoing events (fault cleared). Compare this filtered count to the Allen-Bradley Fault History entry count for the same time period.

Does the Siemens S7-1500 have a concept equivalent to the Allen-Bradley “controller fault handler” routine that runs before the controller faults?

The Allen-Bradley Logix5000 “Controller Fault Handler” is a special routine that executes once when a major fault occurs, giving the program the opportunity to save data before the controller halts. The Siemens equivalent is the OB called for the specific fault type (OB82, OB86, etc.) — these OBs execute in response to the fault event and allow the program to take action. However, there is no Siemens equivalent to a “catch-all” fault handler that executes for any fault type. For a single Siemens equivalent to the AB Controller Fault Handler concept, the closest is OB85 (Priority Class Error OB, called when errors occur in interrupt classes) or programming a watchdog timer in OB100 (startup OB) that detects abnormal restarts — but neither is a true functional equivalent to the AB fault handler. The most functional Siemens approximation is to implement the DB_DiagAlarmLog pattern described in the OB82 programming tutorial — a retain DB that captures all OB-level events at the moment they occur — and combine it with OB80, OB82, OB86, and OB81 each writing to the same shared log DB. This gives the Siemens system a historical record of all fault-type OB invocations, which is functionally analogous to what the Allen-Bradley Controller Fault Handler records for the specific moment of major fault occurrence. For the OB82 implementation with retain DB logging, see Siemens S7-1500 Ob82 Diagnostic Interrupt Programming Guide.


Marcus Webb — Industrial Automation Engineer, PLC Systems Specialist
More about the author →