Siemens Report System Error (RSE): S7-300/400 Diagnostics Guide

David Krause13 min read
SiemensTechnical ReferenceTIA Portal
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview

Report System Error (RSE) is a Siemens automation function that automatically generates standardized diagnostic messages for SIMATIC S7-300, S7-400, ET 200S, ET 200M, ET 200pro, DP/AS-i Link Advanced, and PROFINET IO stations. The function is enabled inside the STEP 7 (or TIA Portal) hardware configuration and produces WinCC / WinCC flexible alarm messages whenever a distributed I/O module, PROFIBUS slave, PROFINET device, or a CPU-detected programming/IO access error is reported. RSE eliminates the need to hand-wire message texts, FB49 instances, and SFC17/18 ALARM_S/SQ calls in user code; the engineering tool generates the diagnostic blocks and message database automatically.

The function has been part of STEP 7 since V5.3 and is carried into TIA Portal as System diagnostics with Report System Errors (S7-300/S7-400). It is the recommended way to surface channel-level diagnostics, module faults, station failures, and rack failures to the HMI without writing diagnostic code manually.

Architectural Components

RSE is not a single block - it is a generated set of objects that the engineering tool places in the S7 project and binds to the configured hardware. Understanding the components is required before configuration.

Component Type Purpose
RSE configuration HW Config property Activates the function per station/IO controller; defines text language and message behavior
FB49 (legacy S7-300/400) / SFB49 (newer) Diagnostic block Receives diagnostic events from OB82/83/84/85/86/87/121/122 and formats them
FB126 (S7-400H redundant) Diagnostic block Variant for redundant CPUs; coordinates diagnostic buffering between H-CPUs
DBs for FB49 instances Instance DB One instance per DP/PN master system and per CPU pair
OB82, OB83, OB84, OB85, OB86, OB87 Error OBs Triggered by diagnostic, insert/remove, CPU fault, rack/IO/communication faults
OB121, OB122 Error OBs Triggered by programming errors and I/O access errors
WinCC alarm logging HMI side Receives ALARM_S / ALARM_SQ messages via SFC17/18 or OPC UA

The complete OB set and FB49 (or SFB49 on newer firmware) are required for full coverage. If any error OB is missing the CPU will go to STOP when the corresponding event occurs, so leaving OBs out is not a valid simplification.

Prerequisites

  • STEP 7 V5.4 SP5 or higher, or TIA Portal V13 SP1 or higher (current recommendation: TIA Portal V20).
  • SIMATIC S7-300 CPU (3xx series, e.g. 315-2 PN/DP, 317-2, 319-3 PN/DP) or S7-400 CPU (4xx series, including 410, 412, 414, 416, 417, and S7-400H 41xH).
  • ET 200S, ET 200M, ET 200pro, ET 200SP, or DP/AS-i Link Advanced station. RSE also covers PROFINET IO on PN-capable CPUs.
  • WinCC V7.x, WinCC Professional, or WinCC flexible 2008 SP2 / SP3 for HMI display.
  • Configured PROFIBUS or PROFINET topology. RSE relies on the station/slot model to identify the failed module.
  • For S7-400H: CPU firmware that supports FB126 (typically V5.x or higher; check the SIMATIC H system manual).

Configuring RSE in STEP 7 / TIA Portal

  1. Open the S7 project in STEP 7 (HW Config) or TIA Portal (Device & Networks view).
  2. Right-click the CPU (or the IO controller) and select Object Properties > Report System Error (TIA Portal) or Properties > Diagnostics > Report System Error (STEP 7 classic).
  3. Check Activate Report System Error. The tool immediately generates the diagnostic blocks and the associated message texts.
  4. Select the message language(s) for the WinCC alarm list. STEP 7 supports German, English, French, Italian, Spanish by default; additional languages can be added by importing text libraries.
  5. Decide whether to use the standard text (short: "Module faulty, slot N") or expand custom message texts. The custom texts are stored in the project text library and exported to WinCC during compilation.
  6. Compile the HW Config (STEP 7) or the project (TIA Portal). The generated blocks (FB49, instance DBs, UDTs) are placed in the System Data folder and the Blocks container.
  7. Download the hardware configuration and the generated blocks to the CPU. The CPU is now ready to surface diagnostics.
Important: The automatically generated FB49 / SFB49 must not be deleted, renamed, or overwritten by user code. It is called internally by the error OBs and feeds the SFCs that emit ALARM_S messages to WinCC.

Error OB Requirements and Priority Classes

Each error event class has a dedicated OB and a default priority. RSE expects all listed OBs to be present.

OB Event Default priority (S7-300/400) Editable on S7-300?
OB1 Cyclic main 1 No (fixed)
OB10 Time-of-day 2 No
OB82 Diagnostic interrupt 26 (S7-300) / 6 (S7-400) No (S7-300 fixed; S7-400 configurable)
OB83 Insert/Remove interrupt 26 / 6 No / Yes
OB84 CPU hardware fault 26 / 6 No / Yes
OB85 Priority class error 26 / 6 No / Yes
OB86 Rack/Station failure 26 / 6 No / Yes
OB87 Communication fault 26 / 6 No / Yes
OB121 Programming error Same as OB that caused it Inherits from calling OB
OB122 I/O access error Same as OB that caused it Inherits from calling OB

The S7-300 family hardcodes OB priorities. The CPU will reject any priority change to OB82-OB87; the S7-400 family allows the priority to be modified per OB. This is the root cause of the most common RSE deployment question: does RSE work on S7-300 CPUs?

S7-300 CPU Limitations with RSE

RSE works on S7-300 CPUs, but with one important caveat that the user community has repeatedly raised: the OB priority values that the diagnostic FBs expect cannot be changed on S7-300. The error OBs (OB82-OB87) execute at fixed priority 26 on the S7-300. As long as OB1 runs at its default priority 1, the error OBs are allowed to interrupt the cyclic program and RSE delivers messages to WinCC correctly.

If the project has changed OB1 to priority 16 (a common pattern in motion and interrupt-driven applications), the error OBs at priority 26 will still preempt OB1, but OB121/OB122 inherit the priority of the OB that caused the programming or I/O access error. If that calling OB is OB1 at priority 16, OB121/OB122 will also run at priority 16 and the CPU will go to STOP because the runtime cannot process the priority 16 error OBs in the same priority class - the S7-300 will not allow OB1 to be re-entered by an error OB. The error is the classic "STOP with diagnostics buffer entry: OB121 / OB122 priority class error".

Workarounds on S7-300:

  1. Leave OB1 at the default priority 1. This is the supported configuration for RSE on S7-300.
  2. If higher cyclic priority is required, use OB35 (cyclic interrupt, default priority 12) or OB35 with priority change only on S7-400. The S7-300 OB35 priority is also fixed (12).
  3. For S7-300 CPUs that must run OB1 at priority 16, do not enable RSE; instead, hand-code diagnostic message calls in OB82/OB86/OB122 using SFC17 / SFC18 (ALARM_S / ALARM_SQ) and FB49.
  4. On the newer S7-300 firmware (CPU 31x PN/DP from V3.x onward), the priority of OB82-OB87 remains fixed. The constraints are architectural and are not relaxed by firmware updates.

S7-400H (Redundant) Considerations

For S7-400H systems (e.g. CPU 412H, 414H, 416H, 417H) the standard FB49 is replaced by FB126. FB126 coordinates the redundant diagnostic buffering so that a failure message is generated exactly once across the H-station, not twice. To use RSE on S7-400H:

  1. Both H-CPUs must be in the same project and linked to a single WinCC station.
  2. Activate RSE in the HW Config of the H-CPU pair; STEP 7 will place FB126 and its instance DBs.
  3. Verify that both H-CPUs report the same diagnostic state. The H-system synchronizes events; FB126 suppresses duplicate WinCC messages.
  4. After a Y-link or H-station switchover, the WinCC alarm list will continue to receive updates from the active CPU. No operator action is required.
  5. Ensure that the WinCC connection is configured as an H-station connection (S7-REDCONNECT) to survive CPU switchovers without losing the alarm pipe.

For a full reference on S7-400H, consult the SIMATIC S7-400H fault-tolerant systems manual linked in the references at the end of this article.

DP/AS-i Link Advanced Support

Siemens supports the Report System Error function on the DP/AS-i Link Advanced (6GK1415-2BA10 / 6GK1415-2BA20). The Link Advanced acts as a PROFIBUS DP slave to the S7-300/400 CPU and as an AS-i master to the lower-level AS-i network. RSE on the Link Advanced surfaces:

  • DP slave diagnostics from the PROFIBUS side (station failure, diagnostic interrupt from the Link itself).
  • AS-i slave diagnostics propagated into the Link's PROFIBUS slot model.
  • AS-i power, configuration, and peripheral fault flags, which the Link translates into a standardized diagnostic alarm that flows up to FB49.

Configuration steps: open the Link Advanced in HW Config, go to Properties > Operating Mode, enable Report System Error for the DP slave interface, and recompile. The AS-i slaves must be configured in the Link Advanced's AS-i configuration tool so that the slot mapping is consistent; otherwise the diagnostic text will not resolve to a real AS-i address.

HMI Integration with WinCC and WinCC flexible

After the S7 side is compiled, the diagnostic messages are exported into a WinCC text library or alarm logging DB.

  1. In TIA Portal, compile the HMI station. The text library and alarm configuration are merged automatically; the ALARM_S messages generated by the CPU are routed to the HMI connection.
  2. In WinCC flexible, run Tools > Compile OS or Project > Compiler > All in STEP 7 classic to push the messages to the HMI project. WinCC flexible imports the texts from the S7 project's text library.
  3. Insert an Alarm view or Alarm line on the desired screen. The alarm view will display coming and going events with timestamp, station, slot, and message text.
  4. Configure the Alarm logging service on the WinCC server (for WinCC V7) to retain diagnostics in the SQL database for later analysis.
  5. Optionally configure the Alarm Control Center to acknowledge, clear, or hide individual messages.

If messages do not appear, check the WinCC connection diagnostics and the OPC / S7 channel status first - the most common failure is a missing or mis-numbered DB number in the HMI connection configuration.

Verification Procedure

  1. Download the project to the CPU and place it in RUN.
  2. Open WinCC Runtime and confirm the alarm view is populated (initially empty in steady state).
  3. Pull a PROFIBUS connector on an ET 200S station. Within 2-3 seconds a "Station failure" message must appear in the WinCC alarm list with the configured station name and DP address.
  4. Reconnect. A "Station return" message must appear.
  5. Trigger a channel fault on an analog input (e.g. open a 4-20 mA loop on a SM 331 AI 8x13 bit). A "Channel fault" message must appear with the channel number.
  6. Insert a programming error (e.g. divide by zero in a transient section). The CPU must NOT go to STOP because OB121 is present and RSE captures the message. The WinCC alarm list must show "Programming error, OB number, block number, address".
  7. Repeat with an I/O access error (e.g. access to a slot that is not physically present). OB122 must handle it; a "I/O access error" message must appear.
  8. Verify the S7 diagnostic buffer (online > PLC > Diagnostic buffer) shows the RSE-generated ALARM_S8 events. This confirms the CPU side is producing the messages; if the WinCC side is silent, the issue is on the HMI pipeline.

Troubleshooting Matrix

Symptom Likely Cause Diagnostic Corrective Action
CPU goes to STOP, diagnostic buffer shows OB85 priority class error OB85 missing or priority mismatch on S7-300 Online > Blocks; verify OB85 exists Regenerate HW Config so RSE inserts OB85
CPU goes to STOP, "OB121 priority class error" on S7-300 OB1 priority changed to 16 CPU properties > Priority Restore OB1 priority to 1 or use FB49 in user OBs
No messages in WinCC despite CPU in RUN WinCC connection not bound to the right DB / wrong slot WinCC Channel Diagnostics Re-compile OS, verify connection in HMI station
Messages appear but text is empty Text library not compiled to WinCC WinCC Text Library Re-import text library from S7 project
Duplicate messages on S7-400H FB49 used instead of FB126 Blocks container Delete FB49, regenerate from H-CPU properties
Channel fault does not trigger an alarm Channel diagnostics disabled in module Module properties > Diagnostics Enable "Channel diagnostics" for the affected channel
OB86 fires but no WinCC message RSE not enabled for the station, only the CPU Station properties > Report System Error Enable RSE on the DP/PN master system
AS-i slave faults not visible AS-i slaves not configured in Link Advanced AS-i Configuration tool Run AS-i configuration upload and reassign

Field-Proven Caveats

  • Compiling a project that already has hand-written FB49 instances will cause a duplicate block number. Delete the user FB49 before activating RSE so the tool can re-create it.
  • RSE messages use ALARM_S, which is connection-oriented. If the HMI connection drops, messages are lost. Use WinCC redundancy or S7-REDCONNECT for S7-400H to avoid message loss during switchover.
  • RSE does not replace custom user messages. It only reports standardized module/station/IO errors. Process alarms must still be configured in the user program.
  • On TIA Portal V20, the function is renamed in places to System diagnostics with Report System Errors, but the configuration path remains the same: CPU properties > System diagnostics > Report System Errors.
  • For S7-1500 CPUs the equivalent function is System Diagnostics with the automatically generated RDREC/WRREC mechanism, not the legacy RSE. RSE is reserved for S7-300/400 and ET 200S.
  • When migrating an S7-300 project that uses RSE to TIA Portal, the function will re-generate the blocks. Manual edits to FB49 will be lost; export them to a UDT before migration if you have extensions.

Reference Architecture

+--------------------+         +-------------------+         +------------------+
|  S7-300/400 CPU    |  S7    |  WinCC Station    |  TCP/   |  Engineering     |
|  (with FB49 /      +-------->  (Alarm view,     <--------+  Station (TIA    |
|   FB126, OB82-87)  |  OPC    |   logging DB)     |  MPI   |  Portal V20)     |
+---------+----------+         +---------+---------+         +------------------+
          | PROFIBUS / PROFINET
          v
+--------------------+         +-------------------+
|  ET 200S / ET 200M |         |  DP/AS-i Link Adv |
|  (digital, analog) |         |  (AS-i slaves)    |
+--------------------+         +-------------------+

On any module fault the CPU calls OB82/OB86; FB49 (or FB126) formats the event and triggers SFC18 / SFC17 (ALARM_S/ALARM_SQ). The message crosses the S7 connection to the WinCC alarm list, which tags the entry with the station/slot identifier. The operator can acknowledge or clear from the HMI.

FAQ

Does Report System Error work on S7-300 CPUs?

Yes. RSE is supported on S7-300 CPUs (3xx series) as long as OB1 keeps its default priority 1. The S7-300 family hardcodes OB82-OB87 priorities at 26, so user changes to OB1 priority (e.g. setting it to 16) will cause STOP with OB121/OB122 priority class errors.

Which OB numbers does RSE require on the S7-300/400?

RSE expects OB82 (diagnostic interrupt), OB83 (insert/remove), OB84 (CPU hardware fault), OB85 (priority class error), OB86 (rack/station failure), OB87 (communication fault), plus OB121 (programming error) and OB122 (I/O access error). All must be downloaded to the CPU; otherwise the CPU will STOP on the first event of the missing class.

Which FB does RSE generate for S7-400H redundant systems?

RSE generates FB126 (and its instance DBs) for S7-400H systems. The standard FB49 is used on single S7-300/400 CPUs. Using FB49 on S7-400H produces duplicate messages because both H-CPUs report the same diagnostic event.

How do I enable RSE for a DP/AS-i Link Advanced?

Open the Link Advanced in HW Config, select the DP slave interface, enable Report System Error in the diagnostics properties, and recompile the project. Ensure the AS-i slaves are configured in the Link Advanced so the slot mapping resolves correctly; otherwise the diagnostic text will show "Unknown AS-i slave".

Why are my WinCC alarm messages empty even though the CPU is in RUN?

Empty message text usually means the WinCC text library was not refreshed. Re-compile the HMI station (TIA Portal: Compile > Software (fully); STEP 7 classic: Compile OS), then download the HMI project. Also verify the WinCC connection points to the correct S7 connection and that the ALARM_S messages are enabled on the connection properties.

Can I use RSE on an S7-1500 CPU?

No. The S7-1500 family uses a different diagnostic concept called System Diagnostics that is enabled by default and uses the standard RDREC / WRREC record mechanism. RSE is reserved for S7-300/S7-400 and ET 200S. Migrating an S7-300 RSE project to S7-1500 will require manual rework.

Back to blog